{
  "version": 3,
  "sources": ["../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@hotwired/turbo-rails/node_modules/@rails/actioncable/src/index.js", "../../../node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js", "../../../node_modules/jquery/dist/jquery.js", "../../../node_modules/trix/dist/trix.js", "../../../node_modules/moment/moment.js", "../../../vendor/assets/javascripts/fullcalendar/main.min.js", "../../../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../node_modules/intl-tel-input/build/js/intlTelInput.js", "../../../node_modules/intl-tel-input/index.js", "../../../node_modules/jquery-minicolors/jquery.minicolors.js", "../../../node_modules/q-flat/src/index.ts", "../../../node_modules/tom-select/src/contrib/microevent.ts", "../../../node_modules/tom-select/src/contrib/microplugin.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/diacritics.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/utils.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/sifter.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/contrib/highlight.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/defaults.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/getSettings.ts", "../../../node_modules/tom-select/src/tom-select.ts", "../../../node_modules/tom-select/src/plugins/change_listener/plugin.ts", "../../../node_modules/tom-select/src/plugins/checkbox_options/plugin.ts", "../../../node_modules/tom-select/src/plugins/clear_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/drag_drop/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_header/plugin.ts", "../../../node_modules/tom-select/src/plugins/caret_position/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_input/plugin.ts", "../../../node_modules/tom-select/src/plugins/input_autogrow/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_backspace_delete/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_active_items/plugin.ts", "../../../node_modules/tom-select/src/plugins/optgroup_columns/plugin.ts", "../../../node_modules/tom-select/src/plugins/remove_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/restore_on_backspace/plugin.ts", "../../../node_modules/tom-select/src/plugins/virtual_scroll/plugin.ts", "../../../node_modules/tom-select/src/tom-select.complete.ts", "../../../node_modules/flatpickr/dist/plugins/monthSelect/index.js", "../../../node_modules/froala-editor/js/froala_editor.min.js", "../../../node_modules/froala-editor/js/plugins/align.min.js", "../../../node_modules/froala-editor/js/plugins/colors.min.js", "../../../node_modules/froala-editor/js/plugins/image.min.js", "../../../node_modules/froala-editor/js/plugins/link.min.js", "../../../node_modules/froala-editor/js/plugins/special_characters.min.js", "../../../node_modules/froala-editor/js/plugins/draggable.min.js", "../../../node_modules/froala-editor/js/plugins/font_size.min.js", "../../../node_modules/froala-editor/js/plugins/lists.min.js", "../../../node_modules/froala-editor/js/plugins/paragraph_format.min.js", "../../../node_modules/froala-editor/js/plugins/help.min.js", "../../../node_modules/froala-editor/js/plugins/quick_insert.min.js", "../../../node_modules/froala-editor/js/plugins/video.min.js", "../../../node_modules/froala-editor/js/plugins/table.min.js", "../../../node_modules/froala-editor/js/plugins/url.min.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/src/util.js", "../../../node_modules/preact/src/options.js", "../../../node_modules/preact/src/create-element.js", "../../../node_modules/preact/src/component.js", "../../../node_modules/preact/src/diff/props.js", "../../../node_modules/preact/src/create-context.js", "../../../node_modules/preact/src/diff/children.js", "../../../node_modules/preact/src/diff/index.js", "../../../node_modules/preact/src/render.js", "../../../node_modules/preact/src/clone-element.js", "../../../node_modules/preact/src/diff/catch-error.js", "../../../node_modules/preact/hooks/src/index.js", "../../../node_modules/preact/compat/src/util.js", "../../../node_modules/preact/compat/src/PureComponent.js", "../../../node_modules/preact/compat/src/memo.js", "../../../node_modules/preact/compat/src/forwardRef.js", "../../../node_modules/preact/compat/src/Children.js", "../../../node_modules/preact/compat/src/suspense.js", "../../../node_modules/preact/compat/src/suspense-list.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/compat/src/portals.js", "../../../node_modules/preact/compat/src/render.js", "../../../node_modules/preact/compat/src/index.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/factoryWithThrowingShims.js", "../../../node_modules/@fortawesome/react-fontawesome/node_modules/prop-types/index.js", "../../../node_modules/react/index.js", "../../../node_modules/@stripe/react-stripe-js/dist/react-stripe.umd.js", "../javascripts/cable.js", "../../../node_modules/jstz/dist/jstz.js", "../../../node_modules/jstz/index.js", "../../../node_modules/local-time/app/assets/javascripts/local-time.js", "../../../node_modules/json-stringify-pretty-compact/index.js", "../../../node_modules/select2/dist/js/select2.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/turbo_power/dist/turbo_power.js", "../../javascript/application.js", "../../javascript/initializers/jquery.js", "../../../vendor/assets/javascripts/voltage.js", "../../javascript/initializers/voltage.js", "../javascripts/collapse_expand.js", "../../javascript/initializers/collapse_expand.js", "../../javascript/helpers/trix_helper.js", "../../javascript/initializers/trix.js", "../javascripts/school/bizbuilders.js", "../../javascript/initializers/bizbuilders.js", "../javascripts/school/bizbuilder/landing_pages/trial_memberships.js", "../../javascript/initializers/trial_memberships.js", "../javascripts/school/bizbuilder/landing_pages/programs.js", "../../javascript/initializers/programs.js", "../javascripts/school/bizbuilder/landing_pages/scheduler.js", "../../javascript/initializers/scheduler.js", "../../javascript/initializers/moment.js", "../../javascript/initializers/fullcalendar.js", "../javascripts/forms.js", "../../javascript/initializers/forms.js", "../javascripts/init_modal_content.js", "../../javascript/initializers/modal_content.js", "../javascripts/lazy_load.js", "../../javascript/initializers/lazy_load.js", "../javascripts/school/students.js", "../../javascript/initializers/students.js", "../javascripts/support.js", "../../javascript/initializers/support.js", "../javascripts/adobe_pdf.js", "../../javascript/initializers/adobe_pdf.js", "../javascripts/clipboard.js", "../../javascript/initializers/clipboard.js", "../javascripts/custom_list_view.js", "../../javascript/initializers/custom_list_view.js", "../javascripts/embedded.js", "../../javascript/initializers/embedded.js", "../javascripts/is_mobile.js", "../../javascript/initializers/is_mobile.js", "../javascripts/signature.js", "../../javascript/initializers/signature.js", "../javascripts/school/navbar_highlight.js", "../../javascript/initializers/navbar_hightlight.js", "../javascripts/school/people/profile/student_user_account.js", "../../javascript/initializers/student_user_account.js", "../javascripts/school/people/profile.js", "../../javascript/initializers/profile.js", "../javascripts/school/bizbuilder/landing_pages/inventory.js", "../../javascript/initializers/inventory.js", "../javascripts/school/bizbuilder/landing_pages.js", "../../javascript/initializers/landing_pages.js", "../../../node_modules/signature_pad/src/point.ts", "../../../node_modules/signature_pad/src/bezier.ts", "../../../node_modules/signature_pad/src/signature_event_target.ts", "../../../node_modules/signature_pad/src/throttle.ts", "../../../node_modules/signature_pad/src/signature_pad.ts", "../../javascript/initializers/signature_pad.js", "../../../vendor/assets/javascripts/voltage-themes/pallette.js", "../../javascript/initializers/pallette.js", "../javascripts/school/bizbuilder/landing_pages/create_prospect.js", "../../javascript/initializers/create_prospect.js", "../../javascript/initializers/rails_ujs.js", "../../javascript/initializers/intl_tel_input.js", "../javascripts/layout.js", "../../../node_modules/bootstrap-sass/assets/javascripts/bootstrap.js", "../../../node_modules/bootstrap-toggle/js/bootstrap-toggle.js", "../../../vendor/assets/javascripts/jquery.gauge.js", "../../../vendor/assets/javascripts/intl-tel-input/utils.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/helpers/fetch_helper.js", "../../javascript/controllers/application_controller.js", "../../../node_modules/hotkeys-js/dist/hotkeys.esm.js", "../../../node_modules/stimulus-use/dist/index.js", "../../javascript/controllers/click_outside_controller.js", "../../javascript/helpers/confirmation_submit_helper.js", "../../javascript/helpers/modal_helper.js", "../../javascript/controllers/confirmation_submit_controller.js", "../../javascript/controllers/dashboard_module_controller.js", "../../../node_modules/sortablejs/modular/sortable.core.esm.js", "../../javascript/helpers/sortable_helper.js", "../../javascript/controllers/drop_sortable_controller.js", "../../../node_modules/just-extend/index.esm.js", "../../../node_modules/dropzone/dist/src/dropzone.js", "../../../node_modules/dropzone/dist/src/emitter.js", "../../../node_modules/dropzone/dist/src/options.js", "../../../node_modules/dropzone/dist/node_modules/@parcel/runtime-js/lib/bundles/runtime-044f6de40395a564.js", "../../javascript/controllers/dropzone_controller.js", "../../javascript/helpers/visibility_helper.js", "../../javascript/controllers/embedded/lp_navigation_controller.js", "../../javascript/controllers/embedded/lp_payment_controller.js", "../../javascript/controllers/embedded/lp_scheduler_controller.js", "../../javascript/controllers/embedded/program_signup_controller.js", "../../javascript/controllers/embedded/public_controller.js", "../../javascript/controllers/schools/recent_activity_filter_controller.js", "../../javascript/controllers/focus_controller.js", "../../javascript/controllers/form_sortable_controller.js", "../../javascript/controllers/icon_loading_controller.js", "../../../node_modules/imask/esm/_rollupPluginBabelHelpers-a0b34764.js", "../../../node_modules/imask/esm/core/utils.js", "../../../node_modules/imask/esm/core/action-details.js", "../../../node_modules/imask/esm/core/change-details.js", "../../../node_modules/imask/esm/core/continuous-tail-details.js", "../../../node_modules/imask/esm/core/holder.js", "../../../node_modules/imask/esm/masked/base.js", "../../../node_modules/imask/esm/masked/factory.js", "../../../node_modules/imask/esm/masked/pattern/input-definition.js", "../../../node_modules/imask/esm/masked/pattern/fixed-definition.js", "../../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js", "../../../node_modules/imask/esm/masked/regexp.js", "../../../node_modules/imask/esm/masked/pattern.js", "../../../node_modules/imask/esm/masked/range.js", "../../../node_modules/imask/esm/masked/date.js", "../../../node_modules/imask/esm/controls/mask-element.js", "../../../node_modules/imask/esm/controls/html-mask-element.js", "../../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js", "../../../node_modules/imask/esm/controls/input.js", "../../../node_modules/imask/esm/masked/enum.js", "../../../node_modules/imask/esm/masked/number.js", "../../../node_modules/imask/esm/masked/function.js", "../../../node_modules/imask/esm/masked/dynamic.js", "../../../node_modules/imask/esm/masked/pipe.js", "../../../node_modules/imask/esm/index.js", "../../javascript/controllers/imask_controller.js", "../../javascript/controllers/inline_edit_controller.js", "../../javascript/controllers/modal_controller.js", "../../javascript/controllers/preferences_controller.js", "../../javascript/controllers/radio_btn_controller.js", "../../javascript/controllers/radio_btn_group_controller.js", "../../javascript/controllers/schools/class_events_controller.js", "../../javascript/controllers/schools/class_registrations_controller.js", "../../javascript/controllers/schools/event_type_toggler_controller.js", "../../javascript/controllers/schools/hovercard_controller.js", "../../javascript/controllers/schools/membership_templates_controller.js", "../../javascript/controllers/schools/mini_calendar_controller.js", "../../javascript/controllers/schools/pagination_controller.js", "../../javascript/controllers/schools/pretty_checkbox_controller.js", "../../javascript/controllers/schools/programs_controller.js", "../../javascript/helpers/gray_out_helper.js", "../../javascript/helpers/belt_graphic_preview_helper.js", "../../javascript/controllers/schools/ranks_controller.js", "../../javascript/controllers/schools/recurring_classes_controller.js", "../../javascript/controllers/schools/students_filter_controller.js", "../../javascript/controllers/select2_controller.js", "../../components/time_field/component.js", "../../javascript/controllers/toggle_class_controller.js", "../../javascript/controllers/schools/signups/programs_and_ranks_step_controller.js", "../../javascript/controllers/schools/signups/calculate_membership_totals_controller.js", "../../javascript/controllers/toggle_disable_controller.js", "../../javascript/helpers/flatpickr_helper.js", "../../javascript/controllers/toggle_form_submit_controller.js", "../../javascript/controllers/tom_select_controller.js", "../../javascript/controllers/tooltip_controller.js", "../../javascript/controllers/url_field_controller.js", "../../javascript/controllers/replace_on_change_controller.js", "../../javascript/controllers/payment_form_controller.js", "../../javascript/controllers/lazy_image_controller.js", "../../javascript/helpers/cookies.js", "../../javascript/controllers/pwa_controller.js", "../../javascript/controllers/beacon_controller.js", "../../../node_modules/flatpickr/dist/esm/types/options.js", "../../../node_modules/flatpickr/dist/esm/l10n/default.js", "../../../node_modules/flatpickr/dist/esm/utils/index.js", "../../../node_modules/flatpickr/dist/esm/utils/dom.js", "../../../node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../node_modules/flatpickr/dist/esm/utils/dates.js", "../../../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../node_modules/flatpickr/dist/esm/index.js", "../../../node_modules/stimulus-flatpickr/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/stimulus-flatpickr/src/utils.js", "../../../node_modules/stimulus-flatpickr/src/config_options.js", "../../../node_modules/stimulus-flatpickr/src/events.js", "../../../node_modules/stimulus-flatpickr/src/elements.js", "../../../node_modules/stimulus-flatpickr/src/strftime_mapping.js", "../../../node_modules/stimulus-flatpickr/src/index.js", "../../javascript/controllers/flatpickr_controller.js", "../../../node_modules/stimulus-carousel/node_modules/ssr-window/ssr-window.esm.js", "../../../node_modules/stimulus-carousel/node_modules/dom7/dom7.esm.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/dom.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/utils.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/get-support.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/get-device.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/get-browser.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/modules/resize/resize.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/modules/observer/observer.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events-emitter.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSize.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSlides.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateAutoHeight.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSlidesOffset.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSlidesProgress.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateProgress.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateSlidesClasses.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateActiveIndex.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/updateClickedSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/update/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/getTranslate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/setTranslate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/minTranslate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/maxTranslate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/translateTo.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/translate/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/setTransition.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/transitionEmit.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/transitionStart.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/transitionEnd.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/transition/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideTo.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideToLoop.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideNext.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slidePrev.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideReset.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideToClosest.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/slideToClickedSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/slide/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/loop/loopCreate.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/loop/loopFix.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/loop/loopDestroy.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/loop/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/grab-cursor/setGrabCursor.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/grab-cursor/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onTouchStart.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onTouchMove.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onTouchEnd.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onResize.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onClick.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/onScroll.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/events/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/breakpoints/setBreakpoint.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/breakpoints/getBreakpoint.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/breakpoints/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/classes/addClasses.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/classes/removeClasses.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/classes/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/images/loadImage.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/images/preloadImages.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/images/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/check-overflow/index.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/defaults.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/moduleExtendParams.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/core/core.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/virtual/virtual.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/keyboard/keyboard.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/mousewheel/mousewheel.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/create-element-if-not-defined.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/navigation/navigation.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/classes-to-selector.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/pagination/pagination.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/scrollbar/scrollbar.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/parallax/parallax.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/zoom/zoom.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/lazy/lazy.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/controller/controller.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/a11y/a11y.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/history/history.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/hash-navigation/hash-navigation.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/autoplay/autoplay.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/thumbs/thumbs.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/free-mode/free-mode.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/grid/grid.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/appendSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/prependSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/addSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/removeSlide.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/methods/removeAllSlides.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/manipulation/manipulation.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/effect-init.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/effect-target.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/effect-virtual-transition-end.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-fade/effect-fade.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-cube/effect-cube.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/shared/create-shadow.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-flip/effect-flip.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-creative/effect-creative.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/modules/effect-cards/effect-cards.js", "../../../node_modules/stimulus-carousel/node_modules/swiper/swiper-bundle.esm.js", "../../../node_modules/stimulus-carousel/dist/stimulus-carousel.es.js", "../../components/sidebar/component_controller.js", "../../components/collapse/component_controller.js", "../../components/dropdown/component_controller.js", "../../components/tray/component_controller.js", "../../components/address_field/component_controller.js", "../../components/editable_logo/component_controller.js", "../../components/payment_methods/component_controller.js", "../../components/tokenizer/component_controller.js", "../../components/stripe_form/component_controller.js", "../../components/basys_form/component_controller.js", "../../components/usa_epay_form/component_controller.js", "../../components/password_field/component_controller.js", "../../components/phone_field/component_controller.js", "../../components/confirmable_button/component_controller.js", "../../components/gauge/component_controller.js", "../../components/searchable_person_field/component_controller.js", "../../components/preferrable_collapse/component_controller.js", "../../components/modal/component_controller.js", "../../components/modal_form/component_controller.js", "../../components/wizard_modal/component_controller.js", "../../components/countable_text_field/component_controller.js", "../../components/expandable_text_display/component_controller.js", "../../components/filter/component_controller.js", "../../components/did_you_know/component_controller.js", "../../javascript/controllers/student_view/scheduler_controller.js", "../../javascript/controllers/schools/student_controller.js", "../../javascript/controllers/scroll_to_controller.js", "../../javascript/controllers/toggleable_input_controller.js", "../../javascript/controllers/toggleable_frame_controller.js", "../../javascript/controllers/copyable_input_controller.js", "../../javascript/controllers/turbo_pagination_controller.js", "../javascripts/school/prospects.js", "../../javascript/controllers/schools/prospect_controller.js", "../../javascript/controllers/duplicate_fieldset_controller.js", "../../javascript/controllers/auto_sort_controller.js", "../../components/text_editor/component_controller.js", "../../javascript/controllers/add_on_select_controller.js", "../../components/transition_button/component_controller.js", "../../components/auto_sort_list/component_controller.js", "../../components/money_field/component_controller.js", "../../components/percentage_field/component_controller.js", "../../components/integer_field/component_controller.js", "../../javascript/controllers/required_field_checkbox_controller.js", "../../javascript/controllers/toggle_select_controller.js", "../../javascript/helpers/rounding_helper.js", "../../javascript/controllers/line_item_calculate_controller.js", "../../javascript/controllers/calculate_invoice_totals_controller.js", "../../javascript/controllers/calculate_invoice_due_date_controller.js", "../../javascript/controllers/change_due_controller.js", "../../javascript/controllers/turbo_stream_controller.js", "../../javascript/controllers/payment_processing_controller.js", "../../javascript/controllers/stripe_controller.js", "../../javascript/controllers/basys_controller.js", "../../javascript/controllers/usa_epay_controller.js", "../../javascript/controllers/print_controller.js", "../../javascript/controllers/money_distributor_controller.js", "../../javascript/controllers/money_controller.js", "../../javascript/controllers/remove_line_item_controller.js", "../../javascript/controllers/recurring_billings_controller.js", "../../components/image_cropper/component_controller.js", "../../javascript/channels/consumer.js", "../../javascript/controllers/quick_action_progress_controller.js", "../../javascript/controllers/state_transitions_controller.js", "../../javascript/controllers/remove_notice_controller.js", "../../components/filterable_list/component_controller.js", "../../components/filterable_list/sorter/component_controller.js", "../../components/filterable_list/search/component_controller.js", "../../components/filterable_list/action/component_controller.js", "../../components/filterable_list/selection_banner/component_controller.js", "../../javascript/controllers/attendances_controller.js", "../../javascript/controllers/share_and_sign_agreement_controller.js", "../../components/pdf_viewer/component_controller.js", "../../components/wysiwyg/component_controller.js", "../../javascript/controllers/agreement_preview_controller.js", "../../javascript/controllers/trial_membership_form_controller.js", "../../javascript/controllers/signup_membership_controller.js", "../../components/filter_section/component_controller.js", "../../components/filter_section/group/component_controller.js", "../../components/filter_section/filter/component_controller.js", "../../javascript/controllers/recurring_billings_index_controller.js", "../../javascript/controllers/edit_membership_controller.js", "../../javascript/controllers/backdated_payments_controller.js", "../../javascript/controllers/reactivate_membership_controller.js", "../../javascript/controllers/form_controller.js", "../../components/payment_method_selector/component_controller.js", "../../javascript/controllers/adjust_invoice_balance_controller.js", "../../javascript/controllers/reecurring_billing_duration_controller.js", "../../javascript/controllers/membership_attendance_controller.js", "../../javascript/controllers/new_student_controller.js", "../../components/universal_search_field/component_controller.js", "../../javascript/controllers/classes_details_controller.js", "../../javascript/controllers/promotions_controller.js", "../../javascript/controllers/promotions_progress_controller.js", "../../../node_modules/fuse.js/dist/fuse.mjs", "../../javascript/controllers/quicklinks_controller.js", "../../javascript/controllers/new_attendance_controller.js", "../../javascript/controllers/edit_person_attendances_controller.js", "../../components/file_field/component_controller.js", "../../javascript/controllers/new_family_member_controller.js", "../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../javascript/controllers/person_hovercard_controller.js", "../../javascript/controllers/schools/modules_nav_controller.js", "../../javascript/controllers/accounts_controller.js", "../../javascript/controllers/family_management_invites_send_modal_controller.js", "../../../node_modules/tabbable/src/index.js", "../../../node_modules/focus-trap/index.js", "../../components/popover/component_controller.js", "../../components/expandable_list_display/component_controller.js", "../../javascript/controllers/schools/turbo_form_submit_redirect_controller.js", "../../components/profile_field/component_controller.js", "../../javascript/controllers/toggle_visibility_controller.js", "../../javascript/controllers/hideable_form_controller.js", "../../javascript/controllers/searchable_list.js", "../../javascript/controllers/toggle_save_visibility_controller.js", "../../javascript/controllers/safe_submit_controller.js", "../../javascript/controllers/lcf_preview_controller.jsx", "../../javascript/components/lead_capture_form.jsx", "../../javascript/components/address_field.jsx", "../../javascript/components/landing_page.jsx", "../../../node_modules/@preact/signals/src/index.ts", "../../../node_modules/@preact/signals-core/src/index.ts", "../../javascript/components/landing_pages/sign_up.jsx", "../../javascript/components/landing_pages/membership.jsx", "../../../node_modules/@fortawesome/fontawesome-svg-core/index.mjs", "../../../node_modules/@fortawesome/react-fontawesome/index.es.js", "../../../node_modules/react/index.mjs", "../../javascript/components/landing_pages/collapsible.jsx", "../../javascript/components/landing_pages/cart.jsx", "../../javascript/components/landing_pages/error.jsx", "../../javascript/components/select.jsx", "../../javascript/components/landing_pages/classes.jsx", "../../javascript/components/landing_pages/merchandise.jsx", "../../javascript/components/landing_pages/confirmation.jsx", "../../javascript/components/landing_pages/confirmation/generic.jsx", "../../javascript/components/landing_pages/confirmation/members.jsx", "../../javascript/components/landing_pages/confirmation/cart.jsx", "../../javascript/components/landing_pages/confirmation/payment.jsx", "../../javascript/components/landing_pages/confirmation/basys.jsx", "../../javascript/components/landing_pages/tokenizers/basys.js", "../../javascript/components/landing_pages/confirmation/stripe.jsx", "../../javascript/components/landing_pages/confirmation/usa_epay.jsx", "../../javascript/components/landing_pages/tokenizers/usa_epay.js", "../../javascript/components/landing_pages/step_tracker.jsx", "../../javascript/components/agreements.jsx", "../../javascript/components/phone_field.jsx", "../../javascript/controllers/new_promotion_controller.js", "../../javascript/controllers/schools/profile_setting_controller.js", "../../components/color_field/component_controller.js", "../../javascript/controllers/keyed_visibility_controller.js", "../../javascript/controllers/swap_visibility_controller.js", "../../javascript/controllers/required_checkbox_group_controller.js", "../../javascript/controllers/mark_checked_controller.js", "../../javascript/controllers/sync_checkboxes_controller.js", "../../javascript/controllers/account_registrations_controller.js", "../../javascript/controllers/landing_page_programs_controller.js", "../../javascript/controllers/index.js", "../javascripts/index.js", "../javascripts/accounts.js", "../javascripts/calendar.js", "../javascripts/user_sessions.js", "../javascripts/school/add_new_modal_submission.js", "../javascripts/school/add_new_modal.js", "../javascripts/school/calendar.js", "../javascripts/school/dashboard.js", "../javascripts/school/fixable_header.js", "../javascripts/school/notifications.js", "../javascripts/school/search.js", "../javascripts/school/theme.js", "../javascripts/school/bizbuilder/lead_capture_forms.js", "../javascripts/school/bizbuilder/landing_pages/add_new_agreement.js", "../javascripts/school/bizbuilder/landing_pages/add_new_trial_membership.js", "../javascripts/school/bizbuilder/landing_pages/confirmation_email.js", "../javascripts/school/bizbuilder/landing_pages/quick_connect.js", "../javascripts/school/bizbuilder/landing_pages/redirect.js", "../javascripts/school/configuration/dashboard.js", "../javascripts/school/people/comments.js", "../javascripts/school/people/profile_photo.js", "../javascripts/school/people/profile_sidebar.js", "../javascripts/school/people/profile/agreements.js", "../javascripts/school/people/profile/history.js", "../javascripts/school/people/profile/promotions.js", "../javascripts/school/students/profile/programs_modal.js", "../javascripts/channels/attendances_delete_notifications.js", "../javascripts/channels/person_comment_delete_notifications.js", "../javascripts/channels/prospects_bulk_edit_notifications.js", "../javascripts/channels/student_restore_notifications.js", "../javascripts/channels/students_bulk_edit_notifications.js", "../javascripts/billing/ks_basys.js", "../javascripts/billing/ks_stripe.js", "../javascripts/billing/ks_usa_epay.js", "../../javascript/helpers/html_helper.js", "../../components/confirm_button_to/component.js", "../../../node_modules/fast-json-patch/module/core.mjs", "../../../node_modules/fast-json-patch/module/helpers.mjs", "../../../node_modules/fast-json-patch/module/duplex.mjs", "../../../node_modules/fast-json-patch/index.mjs", "../../../node_modules/vega/build/vega.module.js", "../../../node_modules/vega-util/build/vega-util.module.js", "../../../node_modules/d3-dsv/src/dsv.js", "../../../node_modules/topojson-client/src/identity.js", "../../../node_modules/topojson-client/src/transform.js", "../../../node_modules/topojson-client/src/reverse.js", "../../../node_modules/topojson-client/src/feature.js", "../../../node_modules/topojson-client/src/stitch.js", "../../../node_modules/topojson-client/src/mesh.js", "../../../node_modules/d3-array/src/ascending.js", "../../../node_modules/d3-array/src/descending.js", "../../../node_modules/d3-array/src/bisector.js", "../../../node_modules/d3-array/src/number.js", "../../../node_modules/d3-array/src/bisect.js", "../../../node_modules/d3-array/src/variance.js", "../../../node_modules/d3-array/src/deviation.js", "../../../node_modules/d3-array/src/fsum.js", "../../../node_modules/internmap/src/index.js", "../../../node_modules/d3-array/src/permute.js", "../../../node_modules/d3-array/src/sort.js", "../../../node_modules/d3-array/src/ticks.js", "../../../node_modules/d3-array/src/max.js", "../../../node_modules/d3-array/src/min.js", "../../../node_modules/d3-array/src/quickselect.js", "../../../node_modules/d3-array/src/quantile.js", "../../../node_modules/d3-array/src/mean.js", "../../../node_modules/d3-array/src/median.js", "../../../node_modules/d3-array/src/merge.js", "../../../node_modules/d3-array/src/range.js", "../../../node_modules/d3-array/src/sum.js", "../../../node_modules/d3-array/src/intersection.js", "../../../node_modules/d3-array/src/union.js", "../../../node_modules/d3-format/src/formatDecimal.js", "../../../node_modules/d3-format/src/exponent.js", "../../../node_modules/d3-format/src/formatGroup.js", "../../../node_modules/d3-format/src/formatNumerals.js", "../../../node_modules/d3-format/src/formatSpecifier.js", "../../../node_modules/d3-format/src/formatTrim.js", "../../../node_modules/d3-format/src/formatPrefixAuto.js", "../../../node_modules/d3-format/src/formatRounded.js", "../../../node_modules/d3-format/src/formatTypes.js", "../../../node_modules/d3-format/src/identity.js", "../../../node_modules/d3-format/src/locale.js", "../../../node_modules/d3-format/src/defaultLocale.js", "../../../node_modules/d3-format/src/precisionFixed.js", "../../../node_modules/d3-format/src/precisionPrefix.js", "../../../node_modules/d3-format/src/precisionRound.js", "../../../node_modules/d3-time/src/interval.js", "../../../node_modules/d3-time/src/millisecond.js", "../../../node_modules/d3-time/src/second.js", "../../../node_modules/d3-time/src/minute.js", "../../../node_modules/d3-time/src/hour.js", "../../../node_modules/d3-time/src/day.js", "../../../node_modules/d3-time/src/week.js", "../../../node_modules/d3-time/src/month.js", "../../../node_modules/d3-time/src/year.js", "../../../node_modules/d3-time/src/ticks.js", "../../../node_modules/vega-time/build/vega-time.module.js", "../../../node_modules/d3-time-format/src/locale.js", "../../../node_modules/d3-time-format/src/defaultLocale.js", "../../../node_modules/vega-format/build/vega-format.module.js", "../../../node_modules/vega-loader/build/vega-loader.browser.module.js", "../../../node_modules/vega-dataflow/build/vega-dataflow.module.js", "../../../node_modules/vega-transforms/build/vega-transforms.module.js", "../../../node_modules/vega-statistics/build/vega-statistics.module.js", "../../../node_modules/vega-view-transforms/build/vega-view-transforms.module.js", "../../../node_modules/d3-shape/src/constant.js", "../../../node_modules/d3-shape/src/math.js", "../../../node_modules/d3-path/src/path.js", "../../../node_modules/d3-shape/src/path.js", "../../../node_modules/d3-shape/src/arc.js", "../../../node_modules/d3-shape/src/array.js", "../../../node_modules/d3-shape/src/curve/linear.js", "../../../node_modules/d3-shape/src/point.js", "../../../node_modules/d3-shape/src/line.js", "../../../node_modules/d3-shape/src/area.js", "../../../node_modules/d3-shape/src/symbol/circle.js", "../../../node_modules/d3-shape/src/symbol.js", "../../../node_modules/d3-shape/src/noop.js", "../../../node_modules/d3-shape/src/curve/basis.js", "../../../node_modules/d3-shape/src/curve/basisClosed.js", "../../../node_modules/d3-shape/src/curve/basisOpen.js", "../../../node_modules/d3-shape/src/curve/bundle.js", "../../../node_modules/d3-shape/src/curve/cardinal.js", "../../../node_modules/d3-shape/src/curve/cardinalClosed.js", "../../../node_modules/d3-shape/src/curve/cardinalOpen.js", "../../../node_modules/d3-shape/src/curve/catmullRom.js", "../../../node_modules/d3-shape/src/curve/catmullRomClosed.js", "../../../node_modules/d3-shape/src/curve/catmullRomOpen.js", "../../../node_modules/d3-shape/src/curve/linearClosed.js", "../../../node_modules/d3-shape/src/curve/monotone.js", "../../../node_modules/d3-shape/src/curve/natural.js", "../../../node_modules/d3-shape/src/curve/step.js", "../../../node_modules/vega-canvas/build/vega-canvas.browser.module.js", "../../../node_modules/d3-scale/src/init.js", "../../../node_modules/d3-scale/src/ordinal.js", "../../../node_modules/d3-interpolate/src/index.js", "../../../node_modules/d3-color/src/define.js", "../../../node_modules/d3-color/src/color.js", "../../../node_modules/d3-color/src/math.js", "../../../node_modules/d3-color/src/lab.js", "../../../node_modules/d3-color/src/cubehelix.js", "../../../node_modules/d3-interpolate/src/basis.js", "../../../node_modules/d3-interpolate/src/basisClosed.js", "../../../node_modules/d3-interpolate/src/constant.js", "../../../node_modules/d3-interpolate/src/color.js", "../../../node_modules/d3-interpolate/src/rgb.js", "../../../node_modules/d3-interpolate/src/numberArray.js", "../../../node_modules/d3-interpolate/src/array.js", "../../../node_modules/d3-interpolate/src/date.js", "../../../node_modules/d3-interpolate/src/number.js", "../../../node_modules/d3-interpolate/src/object.js", "../../../node_modules/d3-interpolate/src/string.js", "../../../node_modules/d3-interpolate/src/value.js", "../../../node_modules/d3-interpolate/src/discrete.js", "../../../node_modules/d3-interpolate/src/hue.js", "../../../node_modules/d3-interpolate/src/round.js", "../../../node_modules/d3-interpolate/src/transform/decompose.js", "../../../node_modules/d3-interpolate/src/transform/parse.js", "../../../node_modules/d3-interpolate/src/transform/index.js", "../../../node_modules/d3-interpolate/src/zoom.js", "../../../node_modules/d3-interpolate/src/hsl.js", "../../../node_modules/d3-interpolate/src/lab.js", "../../../node_modules/d3-interpolate/src/hcl.js", "../../../node_modules/d3-interpolate/src/cubehelix.js", "../../../node_modules/d3-interpolate/src/piecewise.js", "../../../node_modules/d3-interpolate/src/quantize.js", "../../../node_modules/d3-scale/src/constant.js", "../../../node_modules/d3-scale/src/number.js", "../../../node_modules/d3-scale/src/continuous.js", "../../../node_modules/d3-scale/src/tickFormat.js", "../../../node_modules/d3-scale/src/linear.js", "../../../node_modules/d3-scale/src/identity.js", "../../../node_modules/d3-scale/src/nice.js", "../../../node_modules/d3-scale/src/log.js", "../../../node_modules/d3-scale/src/symlog.js", "../../../node_modules/d3-scale/src/pow.js", "../../../node_modules/d3-scale/src/quantile.js", "../../../node_modules/d3-scale/src/quantize.js", "../../../node_modules/d3-scale/src/threshold.js", "../../../node_modules/d3-scale/src/time.js", "../../../node_modules/d3-scale/src/utcTime.js", "../../../node_modules/d3-scale/src/sequential.js", "../../../node_modules/d3-scale/src/diverging.js", "../../../node_modules/vega-scale/build/vega-scale.module.js", "../../../node_modules/vega-scenegraph/build/vega-scenegraph.module.js", "../../../node_modules/vega-encode/build/vega-encode.module.js", "../../../node_modules/vega-geo/build/vega-geo.module.js", "../../../node_modules/d3-geo/src/math.js", "../../../node_modules/d3-geo/src/noop.js", "../../../node_modules/d3-geo/src/stream.js", "../../../node_modules/d3-geo/src/area.js", "../../../node_modules/d3-geo/src/cartesian.js", "../../../node_modules/d3-geo/src/bounds.js", "../../../node_modules/d3-geo/src/centroid.js", "../../../node_modules/d3-geo/src/compose.js", "../../../node_modules/d3-geo/src/rotation.js", "../../../node_modules/d3-geo/src/circle.js", "../../../node_modules/d3-geo/src/clip/buffer.js", "../../../node_modules/d3-geo/src/pointEqual.js", "../../../node_modules/d3-geo/src/clip/rejoin.js", "../../../node_modules/d3-geo/src/polygonContains.js", "../../../node_modules/d3-geo/src/clip/index.js", "../../../node_modules/d3-geo/src/clip/antimeridian.js", "../../../node_modules/d3-geo/src/clip/circle.js", "../../../node_modules/d3-geo/src/clip/line.js", "../../../node_modules/d3-geo/src/clip/rectangle.js", "../../../node_modules/d3-geo/src/graticule.js", "../../../node_modules/d3-geo/src/identity.js", "../../../node_modules/d3-geo/src/path/area.js", "../../../node_modules/d3-geo/src/path/bounds.js", "../../../node_modules/d3-geo/src/path/centroid.js", "../../../node_modules/d3-geo/src/path/context.js", "../../../node_modules/d3-geo/src/path/measure.js", "../../../node_modules/d3-geo/src/path/string.js", "../../../node_modules/d3-geo/src/path/index.js", "../../../node_modules/d3-geo/src/transform.js", "../../../node_modules/d3-geo/src/projection/fit.js", "../../../node_modules/d3-geo/src/projection/resample.js", "../../../node_modules/d3-geo/src/projection/index.js", "../../../node_modules/d3-geo/src/projection/conic.js", "../../../node_modules/d3-geo/src/projection/cylindricalEqualArea.js", "../../../node_modules/d3-geo/src/projection/conicEqualArea.js", "../../../node_modules/d3-geo/src/projection/albers.js", "../../../node_modules/d3-geo/src/projection/albersUsa.js", "../../../node_modules/d3-geo/src/projection/azimuthal.js", "../../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js", "../../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js", "../../../node_modules/d3-geo/src/projection/mercator.js", "../../../node_modules/d3-geo/src/projection/conicConformal.js", "../../../node_modules/d3-geo/src/projection/equirectangular.js", "../../../node_modules/d3-geo/src/projection/conicEquidistant.js", "../../../node_modules/d3-geo/src/projection/equalEarth.js", "../../../node_modules/d3-geo/src/projection/gnomonic.js", "../../../node_modules/d3-geo/src/projection/identity.js", "../../../node_modules/d3-geo/src/projection/naturalEarth1.js", "../../../node_modules/d3-geo/src/projection/orthographic.js", "../../../node_modules/d3-geo/src/projection/stereographic.js", "../../../node_modules/d3-geo/src/projection/transverseMercator.js", "../../../node_modules/d3-geo-projection/src/math.js", "../../../node_modules/d3-geo-projection/src/mollweide.js", "../../../node_modules/vega-projection/build/vega-projection.module.js", "../../../node_modules/vega-force/build/vega-force.module.js", "../../../node_modules/d3-force/src/center.js", "../../../node_modules/d3-quadtree/src/add.js", "../../../node_modules/d3-quadtree/src/cover.js", "../../../node_modules/d3-quadtree/src/data.js", "../../../node_modules/d3-quadtree/src/extent.js", "../../../node_modules/d3-quadtree/src/quad.js", "../../../node_modules/d3-quadtree/src/find.js", "../../../node_modules/d3-quadtree/src/remove.js", "../../../node_modules/d3-quadtree/src/root.js", "../../../node_modules/d3-quadtree/src/size.js", "../../../node_modules/d3-quadtree/src/visit.js", "../../../node_modules/d3-quadtree/src/visitAfter.js", "../../../node_modules/d3-quadtree/src/x.js", "../../../node_modules/d3-quadtree/src/y.js", "../../../node_modules/d3-quadtree/src/quadtree.js", "../../../node_modules/d3-force/src/constant.js", "../../../node_modules/d3-force/src/jiggle.js", "../../../node_modules/d3-force/src/collide.js", "../../../node_modules/d3-force/src/link.js", "../../../node_modules/d3-dispatch/src/dispatch.js", "../../../node_modules/d3-timer/src/timer.js", "../../../node_modules/d3-timer/src/interval.js", "../../../node_modules/d3-force/src/lcg.js", "../../../node_modules/d3-force/src/simulation.js", "../../../node_modules/d3-force/src/manyBody.js", "../../../node_modules/d3-force/src/x.js", "../../../node_modules/d3-force/src/y.js", "../../../node_modules/vega-hierarchy/build/vega-hierarchy.module.js", "../../../node_modules/d3-hierarchy/src/cluster.js", "../../../node_modules/d3-hierarchy/src/hierarchy/count.js", "../../../node_modules/d3-hierarchy/src/hierarchy/each.js", "../../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js", "../../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js", "../../../node_modules/d3-hierarchy/src/hierarchy/find.js", "../../../node_modules/d3-hierarchy/src/hierarchy/sum.js", "../../../node_modules/d3-hierarchy/src/hierarchy/sort.js", "../../../node_modules/d3-hierarchy/src/hierarchy/path.js", "../../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js", "../../../node_modules/d3-hierarchy/src/hierarchy/descendants.js", "../../../node_modules/d3-hierarchy/src/hierarchy/leaves.js", "../../../node_modules/d3-hierarchy/src/hierarchy/links.js", "../../../node_modules/d3-hierarchy/src/hierarchy/iterator.js", "../../../node_modules/d3-hierarchy/src/hierarchy/index.js", "../../../node_modules/d3-hierarchy/src/accessors.js", "../../../node_modules/d3-hierarchy/src/constant.js", "../../../node_modules/d3-hierarchy/src/lcg.js", "../../../node_modules/d3-hierarchy/src/array.js", "../../../node_modules/d3-hierarchy/src/pack/enclose.js", "../../../node_modules/d3-hierarchy/src/pack/siblings.js", "../../../node_modules/d3-hierarchy/src/pack/index.js", "../../../node_modules/d3-hierarchy/src/treemap/round.js", "../../../node_modules/d3-hierarchy/src/treemap/dice.js", "../../../node_modules/d3-hierarchy/src/partition.js", "../../../node_modules/d3-hierarchy/src/stratify.js", "../../../node_modules/d3-hierarchy/src/tree.js", "../../../node_modules/d3-hierarchy/src/treemap/slice.js", "../../../node_modules/d3-hierarchy/src/treemap/squarify.js", "../../../node_modules/d3-hierarchy/src/treemap/index.js", "../../../node_modules/d3-hierarchy/src/treemap/binary.js", "../../../node_modules/d3-hierarchy/src/treemap/sliceDice.js", "../../../node_modules/d3-hierarchy/src/treemap/resquarify.js", "../../../node_modules/vega-label/build/vega-label.module.js", "../../../node_modules/vega-regression/build/vega-regression.module.js", "../../../node_modules/vega-voronoi/build/vega-voronoi.module.js", "../../../node_modules/robust-predicates/esm/util.js", "../../../node_modules/robust-predicates/esm/orient2d.js", "../../../node_modules/robust-predicates/esm/orient3d.js", "../../../node_modules/robust-predicates/esm/incircle.js", "../../../node_modules/robust-predicates/esm/insphere.js", "../../../node_modules/delaunator/index.js", "../../../node_modules/d3-delaunay/src/path.js", "../../../node_modules/d3-delaunay/src/polygon.js", "../../../node_modules/d3-delaunay/src/voronoi.js", "../../../node_modules/d3-delaunay/src/delaunay.js", "../../../node_modules/vega-wordcloud/build/vega-wordcloud.module.js", "../../../node_modules/vega-crossfilter/build/vega-crossfilter.module.js", "../../../node_modules/vega-expression/build/vega-expression.module.js", "../../../node_modules/vega-selections/build/vega-selection.module.js", "../../../node_modules/vega-functions/build/vega-functions.module.js", "../../../node_modules/vega-runtime/build/vega-runtime.module.js", "../../../node_modules/vega-view/build/vega-view.module.js", "../../../node_modules/vega-event-selector/build/vega-event-selector.module.js", "../../../node_modules/vega-parser/build/vega-parser.module.js", "../../../node_modules/vega-interpreter/build/vega-interpreter.module.js", "../../../node_modules/vega-lite/src/index.ts", "../../../node_modules/vega-lite/src/logical.ts", "../../../node_modules/vega-lite/src/util.ts", "../../../node_modules/vega-lite/src/channel.ts", "../../../node_modules/vega-lite/src/aggregate.ts", "../../../node_modules/vega-lite/src/bin.ts", "../../../node_modules/vega-lite/src/expr.ts", "../../../node_modules/vega-lite/src/title.ts", "../../../node_modules/vega-lite/src/vega.schema.ts", "../../../node_modules/vega-lite/src/compile/common.ts", "../../../node_modules/vega-lite/src/log/message.ts", "../../../node_modules/vega-lite/src/log/index.ts", "../../../node_modules/vega-lite/src/datetime.ts", "../../../node_modules/vega-lite/src/timeunit.ts", "../../../node_modules/vega-lite/src/predicate.ts", "../../../node_modules/vega-lite/src/type.ts", "../../../node_modules/vega-lite/src/scale.ts", "../../../node_modules/vega-lite/src/mark.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/valueref.ts", "../../../node_modules/vega-lite/src/compile/format.ts", "../../../node_modules/vega-lite/src/sort.ts", "../../../node_modules/vega-lite/src/spec/facet.ts", "../../../node_modules/vega-lite/src/channeldef.ts", "../../../node_modules/vega-lite/src/axis.ts", "../../../node_modules/vega-lite/src/spec/unit.ts", "../../../node_modules/vega-lite/src/compositemark/base.ts", "../../../node_modules/vega-lite/src/encoding.ts", "../../../node_modules/vega-lite/src/compositemark/common.ts", "../../../node_modules/vega-lite/src/compositemark/boxplot.ts", "../../../node_modules/vega-lite/src/compositemark/errorbar.ts", "../../../node_modules/vega-lite/src/compositemark/errorband.ts", "../../../node_modules/vega-lite/src/compositemark/index.ts", "../../../node_modules/vega-lite/src/guide.ts", "../../../node_modules/vega-lite/src/header.ts", "../../../node_modules/vega-lite/src/legend.ts", "../../../node_modules/vega-lite/src/selection.ts", "../../../node_modules/vega-lite/src/parameter.ts", "../../../node_modules/vega-lite/src/spec/concat.ts", "../../../node_modules/vega-lite/src/spec/base.ts", "../../../node_modules/vega-lite/src/config.ts", "../../../node_modules/vega-lite/src/spec/layer.ts", "../../../node_modules/vega-lite/src/spec/repeat.ts", "../../../node_modules/vega-lite/src/spec/map.ts", "../../../node_modules/vega-lite/src/stack.ts", "../../../node_modules/vega-lite/src/compile/mark/init.ts", "../../../node_modules/vega-lite/src/normalize/pathoverlay.ts", "../../../node_modules/vega-lite/src/normalize/repeater.ts", "../../../node_modules/vega-lite/src/normalize/ruleforrangedline.ts", "../../../node_modules/vega-lite/src/normalize/core.ts", "../../../node_modules/vega-lite/src/transform.ts", "../../../node_modules/vega-lite/src/normalize/selectioncompat.ts", "../../../node_modules/vega-lite/src/normalize/toplevelselection.ts", "../../../node_modules/vega-lite/src/normalize/index.ts", "../../../node_modules/vega-lite/src/spec/toplevel.ts", "../../../node_modules/vega-lite/src/compile/split.ts", "../../../node_modules/vega-lite/src/compile/data/index.ts", "../../../node_modules/vega-lite/src/data.ts", "../../../node_modules/vega-lite/src/compile/selection/assemble.ts", "../../../node_modules/vega-lite/src/compile/data/dataflow.ts", "../../../node_modules/vega-lite/src/compile/data/timeunit.ts", "../../../node_modules/vega-lite/src/compile/selection/project.ts", "../../../node_modules/vega-lite/src/compile/selection/scales.ts", "../../../node_modules/vega-lite/src/compile/selection/interval.ts", "../../../node_modules/vega-lite/src/compile/selection/point.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/conditional.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/text.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/tooltip.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/aria.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/nonposition.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/color.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/zindex.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/offset.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/position-point.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/position-align.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/position-range.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/position-rect.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/base.ts", "../../../node_modules/vega-lite/src/compile/mark/encode/defined.ts", "../../../node_modules/vega-lite/src/compile/selection/nearest.ts", "../../../node_modules/vega-lite/src/compile/selection/inputs.ts", "../../../node_modules/vega-lite/src/compile/selection/toggle.ts", "../../../node_modules/vega-lite/src/compile/selection/clear.ts", "../../../node_modules/vega-lite/src/compile/selection/legends.ts", "../../../node_modules/vega-lite/src/compile/selection/translate.ts", "../../../node_modules/vega-lite/src/compile/selection/zoom.ts", "../../../node_modules/vega-lite/src/compile/selection/index.ts", "../../../node_modules/vega-lite/src/compile/data/expressions.ts", "../../../node_modules/vega-lite/src/compile/data/filter.ts", "../../../node_modules/vega-lite/src/compile/selection/parse.ts", "../../../node_modules/vega-lite/src/compile/predicate.ts", "../../../node_modules/vega-lite/src/compile/axis/assemble.ts", "../../../node_modules/vega-lite/src/compile/axis/config.ts", "../../../node_modules/vega-lite/src/compile/axis/properties.ts", "../../../node_modules/vega-lite/src/compile/data/calculate.ts", "../../../node_modules/vega-lite/src/compile/header/common.ts", "../../../node_modules/vega-lite/src/compile/header/component.ts", "../../../node_modules/vega-lite/src/compile/header/assemble.ts", "../../../node_modules/vega-lite/src/compile/layoutsize/assemble.ts", "../../../node_modules/vega-lite/src/compile/layoutsize/component.ts", "../../../node_modules/vega-lite/src/compile/guide.ts", "../../../node_modules/vega-lite/src/compile/resolve.ts", "../../../node_modules/vega-lite/src/compile/legend/component.ts", "../../../node_modules/vega-lite/src/compile/legend/encode.ts", "../../../node_modules/vega-lite/src/compile/legend/properties.ts", "../../../node_modules/vega-lite/src/compile/legend/parse.ts", "../../../node_modules/vega-lite/src/compile/legend/assemble.ts", "../../../node_modules/vega-lite/src/compile/projection/assemble.ts", "../../../node_modules/vega-lite/src/projection.ts", "../../../node_modules/vega-lite/src/compile/projection/component.ts", "../../../node_modules/vega-lite/src/compile/projection/parse.ts", "../../../node_modules/vega-lite/src/compile/data/bin.ts", "../../../node_modules/vega-lite/src/compile/data/aggregate.ts", "../../../node_modules/vega-lite/src/compile/data/facet.ts", "../../../node_modules/vega-lite/src/compile/data/formatparse.ts", "../../../node_modules/vega-lite/src/compile/data/identifier.ts", "../../../node_modules/vega-lite/src/compile/data/graticule.ts", "../../../node_modules/vega-lite/src/compile/data/sequence.ts", "../../../node_modules/vega-lite/src/compile/data/source.ts", "../../../node_modules/vega-lite/src/compile/data/optimizer.ts", "../../../node_modules/vega-lite/src/compile/data/optimizers.ts", "../../../node_modules/vega-lite/src/compile/data/joinaggregate.ts", "../../../node_modules/vega-lite/src/compile/data/stack.ts", "../../../node_modules/vega-lite/src/compile/data/window.ts", "../../../node_modules/vega-lite/src/compile/data/subtree.ts", "../../../node_modules/vega-lite/src/compile/data/optimize.ts", "../../../node_modules/vega-lite/src/compile/signal.ts", "../../../node_modules/vega-lite/src/compile/scale/domain.ts", "../../../node_modules/vega-lite/src/compile/scale/assemble.ts", "../../../node_modules/vega-lite/src/compile/scale/component.ts", "../../../node_modules/vega-lite/src/compile/scale/range.ts", "../../../node_modules/vega-lite/src/compile/scale/properties.ts", "../../../node_modules/vega-lite/src/compile/scale/type.ts", "../../../node_modules/vega-lite/src/compile/scale/parse.ts", "../../../node_modules/vega-lite/src/compile/model.ts", "../../../node_modules/vega-lite/src/compile/data/density.ts", "../../../node_modules/vega-lite/src/compile/data/extent.ts", "../../../node_modules/vega-lite/src/compile/data/filterinvalid.ts", "../../../node_modules/vega-lite/src/compile/data/flatten.ts", "../../../node_modules/vega-lite/src/compile/data/fold.ts", "../../../node_modules/vega-lite/src/compile/data/geojson.ts", "../../../node_modules/vega-lite/src/compile/data/geopoint.ts", "../../../node_modules/vega-lite/src/compile/data/impute.ts", "../../../node_modules/vega-lite/src/compile/data/loess.ts", "../../../node_modules/vega-lite/src/compile/data/lookup.ts", "../../../node_modules/vega-lite/src/compile/data/quantile.ts", "../../../node_modules/vega-lite/src/compile/data/regression.ts", "../../../node_modules/vega-lite/src/compile/data/pivot.ts", "../../../node_modules/vega-lite/src/compile/data/sample.ts", "../../../node_modules/vega-lite/src/compile/data/assemble.ts", "../../../node_modules/vega-lite/src/compile/header/parse.ts", "../../../node_modules/vega-lite/src/compile/layoutsize/parse.ts", "../../../node_modules/vega-lite/src/compile/facet.ts", "../../../node_modules/vega-lite/src/compile/data/joinaggregatefacet.ts", "../../../node_modules/vega-lite/src/compile/data/parse.ts", "../../../node_modules/vega-lite/src/compile/concat.ts", "../../../node_modules/vega-lite/src/compile/axis/component.ts", "../../../node_modules/vega-lite/src/compile/axis/encode.ts", "../../../node_modules/vega-lite/src/compile/axis/parse.ts", "../../../node_modules/vega-lite/src/compile/layoutsize/init.ts", "../../../node_modules/vega-lite/src/compile/mark/arc.ts", "../../../node_modules/vega-lite/src/compile/mark/area.ts", "../../../node_modules/vega-lite/src/compile/mark/bar.ts", "../../../node_modules/vega-lite/src/compile/mark/geoshape.ts", "../../../node_modules/vega-lite/src/compile/mark/image.ts", "../../../node_modules/vega-lite/src/compile/mark/line.ts", "../../../node_modules/vega-lite/src/compile/mark/point.ts", "../../../node_modules/vega-lite/src/compile/mark/rect.ts", "../../../node_modules/vega-lite/src/compile/mark/rule.ts", "../../../node_modules/vega-lite/src/compile/mark/text.ts", "../../../node_modules/vega-lite/src/compile/mark/tick.ts", "../../../node_modules/vega-lite/src/compile/mark/mark.ts", "../../../node_modules/vega-lite/src/compile/unit.ts", "../../../node_modules/vega-lite/src/compile/layer.ts", "../../../node_modules/vega-lite/src/compile/buildmodel.ts", "../../../node_modules/vega-lite/src/compile/compile.ts", "../../../node_modules/vega-schema-url-parser/parser.ts", "../../../node_modules/vega-themes/build/vega-themes.module.js", "../../../node_modules/vega-tooltip/src/formatValue.ts", "../../../node_modules/vega-tooltip/src/style.ts", "../../../node_modules/vega-tooltip/src/defaults.ts", "../../../node_modules/vega-tooltip/src/position.ts", "../../../node_modules/vega-tooltip/src/Handler.ts", "../../../node_modules/vega-tooltip/src/index.ts", "../../../node_modules/vega-embed/node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../node_modules/vega-embed/node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../node_modules/vega-embed/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../node_modules/vega-embed/node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/vega-embed/node_modules/yallist/iterator.js", "../../../node_modules/vega-embed/node_modules/yallist/yallist.js", "../../../node_modules/vega-embed/node_modules/lru-cache/index.js", "../../../node_modules/vega-embed/node_modules/semver/internal/parse-options.js", "../../../node_modules/vega-embed/node_modules/semver/internal/constants.js", "../../../node_modules/vega-embed/node_modules/semver/internal/debug.js", "../../../node_modules/vega-embed/node_modules/semver/internal/re.js", "../../../node_modules/vega-embed/node_modules/semver/internal/identifiers.js", "../../../node_modules/vega-embed/node_modules/semver/classes/semver.js", "../../../node_modules/vega-embed/node_modules/semver/functions/compare.js", "../../../node_modules/vega-embed/node_modules/semver/functions/eq.js", "../../../node_modules/vega-embed/node_modules/semver/functions/neq.js", "../../../node_modules/vega-embed/node_modules/semver/functions/gt.js", "../../../node_modules/vega-embed/node_modules/semver/functions/gte.js", "../../../node_modules/vega-embed/node_modules/semver/functions/lt.js", "../../../node_modules/vega-embed/node_modules/semver/functions/lte.js", "../../../node_modules/vega-embed/node_modules/semver/functions/cmp.js", "../../../node_modules/vega-embed/node_modules/semver/classes/comparator.js", "../../../node_modules/vega-embed/node_modules/semver/classes/range.js", "../../../node_modules/vega-embed/node_modules/semver/functions/satisfies.js", "../../../node_modules/vega-embed/src/post.ts", "../../../node_modules/vega-embed/src/style.ts", "../../../node_modules/vega-embed/src/util.ts", "../../../node_modules/vega-embed/src/embed.ts", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js"],
  "sourcesContent": ["export default {\n  logger: self.console,\n  WebSocket: self.WebSocket\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordPing() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    this.recordPing()\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    switch (type) {\n      case message_types.welcome:\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return this.monitor.recordPing()\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        return this.subscriptions.notify(identifier, \"connected\")\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActionCable = {});\n})(this, function(exports) {\n  \"use strict\";\n  var adapters = {\n    logger: self.console,\n    WebSocket: self.WebSocket\n  };\n  var logger = {\n    log: function log() {\n      if (this.enabled) {\n        var _adapters$logger;\n        for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n          messages[_key] = arguments[_key];\n        }\n        messages.push(Date.now());\n        (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [ \"[ActionCable]\" ].concat(messages));\n      }\n    }\n  };\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n    return typeof obj;\n  } : function(obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  };\n  var classCallCheck = function(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n  var createClass = function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  var now = function now() {\n    return new Date().getTime();\n  };\n  var secondsSince = function secondsSince(time) {\n    return (now() - time) / 1e3;\n  };\n  var clamp = function clamp(number, min, max) {\n    return Math.max(min, Math.min(max, number));\n  };\n  var ConnectionMonitor = function() {\n    function ConnectionMonitor(connection) {\n      classCallCheck(this, ConnectionMonitor);\n      this.visibilityDidChange = this.visibilityDidChange.bind(this);\n      this.connection = connection;\n      this.reconnectAttempts = 0;\n    }\n    ConnectionMonitor.prototype.start = function start() {\n      if (!this.isRunning()) {\n        this.startedAt = now();\n        delete this.stoppedAt;\n        this.startPolling();\n        addEventListener(\"visibilitychange\", this.visibilityDidChange);\n        logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n      }\n    };\n    ConnectionMonitor.prototype.stop = function stop() {\n      if (this.isRunning()) {\n        this.stoppedAt = now();\n        this.stopPolling();\n        removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n        logger.log(\"ConnectionMonitor stopped\");\n      }\n    };\n    ConnectionMonitor.prototype.isRunning = function isRunning() {\n      return this.startedAt && !this.stoppedAt;\n    };\n    ConnectionMonitor.prototype.recordPing = function recordPing() {\n      this.pingedAt = now();\n    };\n    ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n      this.reconnectAttempts = 0;\n      this.recordPing();\n      delete this.disconnectedAt;\n      logger.log(\"ConnectionMonitor recorded connect\");\n    };\n    ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n      this.disconnectedAt = now();\n      logger.log(\"ConnectionMonitor recorded disconnect\");\n    };\n    ConnectionMonitor.prototype.startPolling = function startPolling() {\n      this.stopPolling();\n      this.poll();\n    };\n    ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n      clearTimeout(this.pollTimeout);\n    };\n    ConnectionMonitor.prototype.poll = function poll() {\n      var _this = this;\n      this.pollTimeout = setTimeout(function() {\n        _this.reconnectIfStale();\n        _this.poll();\n      }, this.getPollInterval());\n    };\n    ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n      var _constructor$pollInte = this.constructor.pollInterval, min = _constructor$pollInte.min, max = _constructor$pollInte.max, multiplier = _constructor$pollInte.multiplier;\n      var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n      return Math.round(clamp(interval, min, max) * 1e3);\n    };\n    ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n      if (this.connectionIsStale()) {\n        logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n        this.reconnectAttempts++;\n        if (this.disconnectedRecently()) {\n          logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n        } else {\n          logger.log(\"ConnectionMonitor reopening\");\n          this.connection.reopen();\n        }\n      }\n    };\n    ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n      return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n    };\n    ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n      return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n    };\n    ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n      var _this2 = this;\n      if (document.visibilityState === \"visible\") {\n        setTimeout(function() {\n          if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n            logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \" + document.visibilityState);\n            _this2.connection.reopen();\n          }\n        }, 200);\n      }\n    };\n    return ConnectionMonitor;\n  }();\n  ConnectionMonitor.pollInterval = {\n    min: 3,\n    max: 30,\n    multiplier: 5\n  };\n  ConnectionMonitor.staleThreshold = 6;\n  var INTERNAL = {\n    message_types: {\n      welcome: \"welcome\",\n      disconnect: \"disconnect\",\n      ping: \"ping\",\n      confirmation: \"confirm_subscription\",\n      rejection: \"reject_subscription\"\n    },\n    disconnect_reasons: {\n      unauthorized: \"unauthorized\",\n      invalid_request: \"invalid_request\",\n      server_restart: \"server_restart\"\n    },\n    default_mount_path: \"/cable\",\n    protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n  };\n  var message_types = INTERNAL.message_types, protocols = INTERNAL.protocols;\n  var supportedProtocols = protocols.slice(0, protocols.length - 1);\n  var indexOf = [].indexOf;\n  var Connection = function() {\n    function Connection(consumer) {\n      classCallCheck(this, Connection);\n      this.open = this.open.bind(this);\n      this.consumer = consumer;\n      this.subscriptions = this.consumer.subscriptions;\n      this.monitor = new ConnectionMonitor(this);\n      this.disconnected = true;\n    }\n    Connection.prototype.send = function send(data) {\n      if (this.isOpen()) {\n        this.webSocket.send(JSON.stringify(data));\n        return true;\n      } else {\n        return false;\n      }\n    };\n    Connection.prototype.open = function open() {\n      if (this.isActive()) {\n        logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n        return false;\n      } else {\n        logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n        if (this.webSocket) {\n          this.uninstallEventHandlers();\n        }\n        this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n        this.installEventHandlers();\n        this.monitor.start();\n        return true;\n      }\n    };\n    Connection.prototype.close = function close() {\n      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n        allowReconnect: true\n      }, allowReconnect = _ref.allowReconnect;\n      if (!allowReconnect) {\n        this.monitor.stop();\n      }\n      if (this.isActive()) {\n        return this.webSocket.close();\n      }\n    };\n    Connection.prototype.reopen = function reopen() {\n      logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n      if (this.isActive()) {\n        try {\n          return this.close();\n        } catch (error) {\n          logger.log(\"Failed to reopen WebSocket\", error);\n        } finally {\n          logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n          setTimeout(this.open, this.constructor.reopenDelay);\n        }\n      } else {\n        return this.open();\n      }\n    };\n    Connection.prototype.getProtocol = function getProtocol() {\n      if (this.webSocket) {\n        return this.webSocket.protocol;\n      }\n    };\n    Connection.prototype.isOpen = function isOpen() {\n      return this.isState(\"open\");\n    };\n    Connection.prototype.isActive = function isActive() {\n      return this.isState(\"open\", \"connecting\");\n    };\n    Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n      return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n    };\n    Connection.prototype.isState = function isState() {\n      for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n        states[_key] = arguments[_key];\n      }\n      return indexOf.call(states, this.getState()) >= 0;\n    };\n    Connection.prototype.getState = function getState() {\n      if (this.webSocket) {\n        for (var state in adapters.WebSocket) {\n          if (adapters.WebSocket[state] === this.webSocket.readyState) {\n            return state.toLowerCase();\n          }\n        }\n      }\n      return null;\n    };\n    Connection.prototype.installEventHandlers = function installEventHandlers() {\n      for (var eventName in this.events) {\n        var handler = this.events[eventName].bind(this);\n        this.webSocket[\"on\" + eventName] = handler;\n      }\n    };\n    Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n      for (var eventName in this.events) {\n        this.webSocket[\"on\" + eventName] = function() {};\n      }\n    };\n    return Connection;\n  }();\n  Connection.reopenDelay = 500;\n  Connection.prototype.events = {\n    message: function message(event) {\n      if (!this.isProtocolSupported()) {\n        return;\n      }\n      var _JSON$parse = JSON.parse(event.data), identifier = _JSON$parse.identifier, message = _JSON$parse.message, reason = _JSON$parse.reason, reconnect = _JSON$parse.reconnect, type = _JSON$parse.type;\n      switch (type) {\n       case message_types.welcome:\n        this.monitor.recordConnect();\n        return this.subscriptions.reload();\n\n       case message_types.disconnect:\n        logger.log(\"Disconnecting. Reason: \" + reason);\n        return this.close({\n          allowReconnect: reconnect\n        });\n\n       case message_types.ping:\n        return this.monitor.recordPing();\n\n       case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier);\n        return this.subscriptions.notify(identifier, \"connected\");\n\n       case message_types.rejection:\n        return this.subscriptions.reject(identifier);\n\n       default:\n        return this.subscriptions.notify(identifier, \"received\", message);\n      }\n    },\n    open: function open() {\n      logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n      this.disconnected = false;\n      if (!this.isProtocolSupported()) {\n        logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n        return this.close({\n          allowReconnect: false\n        });\n      }\n    },\n    close: function close(event) {\n      logger.log(\"WebSocket onclose event\");\n      if (this.disconnected) {\n        return;\n      }\n      this.disconnected = true;\n      this.monitor.recordDisconnect();\n      return this.subscriptions.notifyAll(\"disconnected\", {\n        willAttemptReconnect: this.monitor.isRunning()\n      });\n    },\n    error: function error() {\n      logger.log(\"WebSocket onerror event\");\n    }\n  };\n  var extend = function extend(object, properties) {\n    if (properties != null) {\n      for (var key in properties) {\n        var value = properties[key];\n        object[key] = value;\n      }\n    }\n    return object;\n  };\n  var Subscription = function() {\n    function Subscription(consumer) {\n      var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var mixin = arguments[2];\n      classCallCheck(this, Subscription);\n      this.consumer = consumer;\n      this.identifier = JSON.stringify(params);\n      extend(this, mixin);\n    }\n    Subscription.prototype.perform = function perform(action) {\n      var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      data.action = action;\n      return this.send(data);\n    };\n    Subscription.prototype.send = function send(data) {\n      return this.consumer.send({\n        command: \"message\",\n        identifier: this.identifier,\n        data: JSON.stringify(data)\n      });\n    };\n    Subscription.prototype.unsubscribe = function unsubscribe() {\n      return this.consumer.subscriptions.remove(this);\n    };\n    return Subscription;\n  }();\n  var SubscriptionGuarantor = function() {\n    function SubscriptionGuarantor(subscriptions) {\n      classCallCheck(this, SubscriptionGuarantor);\n      this.subscriptions = subscriptions;\n      this.pendingSubscriptions = [];\n    }\n    SubscriptionGuarantor.prototype.guarantee = function guarantee(subscription) {\n      if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n        logger.log(\"SubscriptionGuarantor guaranteeing \" + subscription.identifier);\n        this.pendingSubscriptions.push(subscription);\n      } else {\n        logger.log(\"SubscriptionGuarantor already guaranteeing \" + subscription.identifier);\n      }\n      this.startGuaranteeing();\n    };\n    SubscriptionGuarantor.prototype.forget = function forget(subscription) {\n      logger.log(\"SubscriptionGuarantor forgetting \" + subscription.identifier);\n      this.pendingSubscriptions = this.pendingSubscriptions.filter(function(s) {\n        return s !== subscription;\n      });\n    };\n    SubscriptionGuarantor.prototype.startGuaranteeing = function startGuaranteeing() {\n      this.stopGuaranteeing();\n      this.retrySubscribing();\n    };\n    SubscriptionGuarantor.prototype.stopGuaranteeing = function stopGuaranteeing() {\n      clearTimeout(this.retryTimeout);\n    };\n    SubscriptionGuarantor.prototype.retrySubscribing = function retrySubscribing() {\n      var _this = this;\n      this.retryTimeout = setTimeout(function() {\n        if (_this.subscriptions && typeof _this.subscriptions.subscribe === \"function\") {\n          _this.pendingSubscriptions.map(function(subscription) {\n            logger.log(\"SubscriptionGuarantor resubscribing \" + subscription.identifier);\n            _this.subscriptions.subscribe(subscription);\n          });\n        }\n      }, 500);\n    };\n    return SubscriptionGuarantor;\n  }();\n  var Subscriptions = function() {\n    function Subscriptions(consumer) {\n      classCallCheck(this, Subscriptions);\n      this.consumer = consumer;\n      this.guarantor = new SubscriptionGuarantor(this);\n      this.subscriptions = [];\n    }\n    Subscriptions.prototype.create = function create(channelName, mixin) {\n      var channel = channelName;\n      var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n        channel: channel\n      };\n      var subscription = new Subscription(this.consumer, params, mixin);\n      return this.add(subscription);\n    };\n    Subscriptions.prototype.add = function add(subscription) {\n      this.subscriptions.push(subscription);\n      this.consumer.ensureActiveConnection();\n      this.notify(subscription, \"initialized\");\n      this.subscribe(subscription);\n      return subscription;\n    };\n    Subscriptions.prototype.remove = function remove(subscription) {\n      this.forget(subscription);\n      if (!this.findAll(subscription.identifier).length) {\n        this.sendCommand(subscription, \"unsubscribe\");\n      }\n      return subscription;\n    };\n    Subscriptions.prototype.reject = function reject(identifier) {\n      var _this = this;\n      return this.findAll(identifier).map(function(subscription) {\n        _this.forget(subscription);\n        _this.notify(subscription, \"rejected\");\n        return subscription;\n      });\n    };\n    Subscriptions.prototype.forget = function forget(subscription) {\n      this.guarantor.forget(subscription);\n      this.subscriptions = this.subscriptions.filter(function(s) {\n        return s !== subscription;\n      });\n      return subscription;\n    };\n    Subscriptions.prototype.findAll = function findAll(identifier) {\n      return this.subscriptions.filter(function(s) {\n        return s.identifier === identifier;\n      });\n    };\n    Subscriptions.prototype.reload = function reload() {\n      var _this2 = this;\n      return this.subscriptions.map(function(subscription) {\n        return _this2.subscribe(subscription);\n      });\n    };\n    Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n      var _this3 = this;\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n      return this.subscriptions.map(function(subscription) {\n        return _this3.notify.apply(_this3, [ subscription, callbackName ].concat(args));\n      });\n    };\n    Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n      for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n        args[_key2 - 2] = arguments[_key2];\n      }\n      var subscriptions = void 0;\n      if (typeof subscription === \"string\") {\n        subscriptions = this.findAll(subscription);\n      } else {\n        subscriptions = [ subscription ];\n      }\n      return subscriptions.map(function(subscription) {\n        return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n      });\n    };\n    Subscriptions.prototype.subscribe = function subscribe(subscription) {\n      if (this.sendCommand(subscription, \"subscribe\")) {\n        this.guarantor.guarantee(subscription);\n      }\n    };\n    Subscriptions.prototype.confirmSubscription = function confirmSubscription(identifier) {\n      var _this4 = this;\n      logger.log(\"Subscription confirmed \" + identifier);\n      this.findAll(identifier).map(function(subscription) {\n        return _this4.guarantor.forget(subscription);\n      });\n    };\n    Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n      var identifier = subscription.identifier;\n      return this.consumer.send({\n        command: command,\n        identifier: identifier\n      });\n    };\n    return Subscriptions;\n  }();\n  var Consumer = function() {\n    function Consumer(url) {\n      classCallCheck(this, Consumer);\n      this._url = url;\n      this.subscriptions = new Subscriptions(this);\n      this.connection = new Connection(this);\n    }\n    Consumer.prototype.send = function send(data) {\n      return this.connection.send(data);\n    };\n    Consumer.prototype.connect = function connect() {\n      return this.connection.open();\n    };\n    Consumer.prototype.disconnect = function disconnect() {\n      return this.connection.close({\n        allowReconnect: false\n      });\n    };\n    Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n      if (!this.connection.isActive()) {\n        return this.connection.open();\n      }\n    };\n    createClass(Consumer, [ {\n      key: \"url\",\n      get: function get$$1() {\n        return createWebSocketURL(this._url);\n      }\n    } ]);\n    return Consumer;\n  }();\n  function createWebSocketURL(url) {\n    if (typeof url === \"function\") {\n      url = url();\n    }\n    if (url && !/^wss?:/i.test(url)) {\n      var a = document.createElement(\"a\");\n      a.href = url;\n      a.href = a.href;\n      a.protocol = a.protocol.replace(\"http\", \"ws\");\n      return a.href;\n    } else {\n      return url;\n    }\n  }\n  function createConsumer() {\n    var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n    return new Consumer(url);\n  }\n  function getConfig(name) {\n    var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  exports.Connection = Connection;\n  exports.ConnectionMonitor = ConnectionMonitor;\n  exports.Consumer = Consumer;\n  exports.INTERNAL = INTERNAL;\n  exports.Subscription = Subscription;\n  exports.Subscriptions = Subscriptions;\n  exports.SubscriptionGuarantor = SubscriptionGuarantor;\n  exports.adapters = adapters;\n  exports.createWebSocketURL = createWebSocketURL;\n  exports.logger = logger;\n  exports.createConsumer = createConsumer;\n  exports.getConfig = getConfig;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});\n", "/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n", "/*\nTrix 1.3.1\nCopyright \u00A9 2020 Basecamp, LLC\nhttp://trix-editor.org/\n */\n(function(){}).call(this),function(){var t;null==window.Set&&(window.Set=t=function(){function t(){this.clear()}return t.prototype.clear=function(){return this.values=[]},t.prototype.has=function(t){return-1!==this.values.indexOf(t)},t.prototype.add=function(t){return this.has(t)||this.values.push(t),this},t.prototype[\"delete\"]=function(t){var e;return-1===(e=this.values.indexOf(t))?!1:(this.values.splice(e,1),!0)},t.prototype.forEach=function(){var t;return(t=this.values).forEach.apply(t,arguments)},t}())}.call(this),function(t){function e(){}function n(t,e){return function(){t.apply(e,arguments)}}function i(t){if(\"object\"!=typeof this)throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof t)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],c(t,this)}function o(t,e){for(;3===t._state;)t=t._value;return 0===t._state?void t._deferreds.push(e):(t._handled=!0,void h(function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null===n)return void(1===t._state?r:s)(e.promise,t._value);var i;try{i=n(t._value)}catch(o){return void s(e.promise,o)}r(e.promise,i)}))}function r(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var o=e.then;if(e instanceof i)return t._state=3,t._value=e,void a(t);if(\"function\"==typeof o)return void c(n(o,e),t)}t._state=1,t._value=e,a(t)}catch(r){s(t,r)}}function s(t,e){t._state=2,t._value=e,a(t)}function a(t){2===t._state&&0===t._deferreds.length&&setTimeout(function(){t._handled||p(t._value)},1);for(var e=0,n=t._deferreds.length;n>e;e++)o(t,t._deferreds[e]);t._deferreds=null}function u(t,e,n){this.onFulfilled=\"function\"==typeof t?t:null,this.onRejected=\"function\"==typeof e?e:null,this.promise=n}function c(t,e){var n=!1;try{t(function(t){n||(n=!0,r(e,t))},function(t){n||(n=!0,s(e,t))})}catch(i){if(n)return;n=!0,s(e,i)}}var l=setTimeout,h=\"function\"==typeof setImmediate&&setImmediate||function(t){l(t,1)},p=function(t){\"undefined\"!=typeof console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",t)};i.prototype[\"catch\"]=function(t){return this.then(null,t)},i.prototype.then=function(t,n){var r=new i(e);return o(this,new u(t,n,r)),r},i.all=function(t){var e=Array.prototype.slice.call(t);return new i(function(t,n){function i(r,s){try{if(s&&(\"object\"==typeof s||\"function\"==typeof s)){var a=s.then;if(\"function\"==typeof a)return void a.call(s,function(t){i(r,t)},n)}e[r]=s,0===--o&&t(e)}catch(u){n(u)}}if(0===e.length)return t([]);for(var o=e.length,r=0;r<e.length;r++)i(r,e[r])})},i.resolve=function(t){return t&&\"object\"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(t){return new i(function(e,n){n(t)})},i.race=function(t){return new i(function(e,n){for(var i=0,o=t.length;o>i;i++)t[i].then(e,n)})},i._setImmediateFn=function(t){h=t},i._setUnhandledRejectionFn=function(t){p=t},\"undefined\"!=typeof module&&module.exports?module.exports=i:t.Promise||(t.Promise=i)}(this),function(){var t=\"object\"==typeof window.customElements,e=\"function\"==typeof document.registerElement,n=t||e;n||(/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\"undefined\"==typeof WeakMap&&!function(){var t=Object.defineProperty,e=Date.now()%1e9,n=function(){this.name=\"__st\"+(1e9*Math.random()>>>0)+(e++ +\"__\")};n.prototype={set:function(e,n){var i=e[this.name];return i&&i[0]===e?i[1]=n:t(e,this.name,{value:[e,n],writable:!0}),this},get:function(t){var e;return(e=t[this.name])&&e[0]===t?e[1]:void 0},\"delete\":function(t){var e=t[this.name];return e&&e[0]===t?(e[0]=e[1]=void 0,!0):!1},has:function(t){var e=t[this.name];return e?e[0]===t:!1}},window.WeakMap=n}(),function(t){function e(t){A.push(t),b||(b=!0,g(i))}function n(t){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(t)||t}function i(){b=!1;var t=A;A=[],t.sort(function(t,e){return t.uid_-e.uid_});var e=!1;t.forEach(function(t){var n=t.takeRecords();o(t),n.length&&(t.callback_(n,t),e=!0)}),e&&i()}function o(t){t.nodes_.forEach(function(e){var n=m.get(e);n&&n.forEach(function(e){e.observer===t&&e.removeTransientObservers()})})}function r(t,e){for(var n=t;n;n=n.parentNode){var i=m.get(n);if(i)for(var o=0;o<i.length;o++){var r=i[o],s=r.options;if(n===t||s.subtree){var a=e(s);a&&r.enqueue(a)}}}}function s(t){this.callback_=t,this.nodes_=[],this.records_=[],this.uid_=++C}function a(t,e){this.type=t,this.target=e,this.addedNodes=[],this.removedNodes=[],this.previousSibling=null,this.nextSibling=null,this.attributeName=null,this.attributeNamespace=null,this.oldValue=null}function u(t){var e=new a(t.type,t.target);return e.addedNodes=t.addedNodes.slice(),e.removedNodes=t.removedNodes.slice(),e.previousSibling=t.previousSibling,e.nextSibling=t.nextSibling,e.attributeName=t.attributeName,e.attributeNamespace=t.attributeNamespace,e.oldValue=t.oldValue,e}function c(t,e){return x=new a(t,e)}function l(t){return w?w:(w=u(x),w.oldValue=t,w)}function h(){x=w=void 0}function p(t){return t===w||t===x}function d(t,e){return t===e?t:w&&p(t)?w:null}function f(t,e,n){this.observer=t,this.target=e,this.options=n,this.transientObservedNodes=[]}if(!t.JsMutationObserver){var g,m=new WeakMap;if(/Trident|Edge/.test(navigator.userAgent))g=setTimeout;else if(window.setImmediate)g=window.setImmediate;else{var v=[],y=String(Math.random());window.addEventListener(\"message\",function(t){if(t.data===y){var e=v;v=[],e.forEach(function(t){t()})}}),g=function(t){v.push(t),window.postMessage(y,\"*\")}}var b=!1,A=[],C=0;s.prototype={observe:function(t,e){if(t=n(t),!e.childList&&!e.attributes&&!e.characterData||e.attributeOldValue&&!e.attributes||e.attributeFilter&&e.attributeFilter.length&&!e.attributes||e.characterDataOldValue&&!e.characterData)throw new SyntaxError;var i=m.get(t);i||m.set(t,i=[]);for(var o,r=0;r<i.length;r++)if(i[r].observer===this){o=i[r],o.removeListeners(),o.options=e;break}o||(o=new f(this,t,e),i.push(o),this.nodes_.push(t)),o.addListeners()},disconnect:function(){this.nodes_.forEach(function(t){for(var e=m.get(t),n=0;n<e.length;n++){var i=e[n];if(i.observer===this){i.removeListeners(),e.splice(n,1);break}}},this),this.records_=[]},takeRecords:function(){var t=this.records_;return this.records_=[],t}};var x,w;f.prototype={enqueue:function(t){var n=this.observer.records_,i=n.length;if(n.length>0){var o=n[i-1],r=d(o,t);if(r)return void(n[i-1]=r)}else e(this.observer);n[i]=t},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(t){var e=this.options;e.attributes&&t.addEventListener(\"DOMAttrModified\",this,!0),e.characterData&&t.addEventListener(\"DOMCharacterDataModified\",this,!0),e.childList&&t.addEventListener(\"DOMNodeInserted\",this,!0),(e.childList||e.subtree)&&t.addEventListener(\"DOMNodeRemoved\",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(t){var e=this.options;e.attributes&&t.removeEventListener(\"DOMAttrModified\",this,!0),e.characterData&&t.removeEventListener(\"DOMCharacterDataModified\",this,!0),e.childList&&t.removeEventListener(\"DOMNodeInserted\",this,!0),(e.childList||e.subtree)&&t.removeEventListener(\"DOMNodeRemoved\",this,!0)},addTransientObserver:function(t){if(t!==this.target){this.addListeners_(t),this.transientObservedNodes.push(t);var e=m.get(t);e||m.set(t,e=[]),e.push(this)}},removeTransientObservers:function(){var t=this.transientObservedNodes;this.transientObservedNodes=[],t.forEach(function(t){this.removeListeners_(t);for(var e=m.get(t),n=0;n<e.length;n++)if(e[n]===this){e.splice(n,1);break}},this)},handleEvent:function(t){switch(t.stopImmediatePropagation(),t.type){case\"DOMAttrModified\":var e=t.attrName,n=t.relatedNode.namespaceURI,i=t.target,o=new c(\"attributes\",i);o.attributeName=e,o.attributeNamespace=n;var s=t.attrChange===MutationEvent.ADDITION?null:t.prevValue;r(i,function(t){return!t.attributes||t.attributeFilter&&t.attributeFilter.length&&-1===t.attributeFilter.indexOf(e)&&-1===t.attributeFilter.indexOf(n)?void 0:t.attributeOldValue?l(s):o});break;case\"DOMCharacterDataModified\":var i=t.target,o=c(\"characterData\",i),s=t.prevValue;r(i,function(t){return t.characterData?t.characterDataOldValue?l(s):o:void 0});break;case\"DOMNodeRemoved\":this.addTransientObserver(t.target);case\"DOMNodeInserted\":var a,u,p=t.target;\"DOMNodeInserted\"===t.type?(a=[p],u=[]):(a=[],u=[p]);var d=p.previousSibling,f=p.nextSibling,o=c(\"childList\",t.target.parentNode);o.addedNodes=a,o.removedNodes=u,o.previousSibling=d,o.nextSibling=f,r(t.relatedNode,function(t){return t.childList?o:void 0})}h()}},t.JsMutationObserver=s,t.MutationObserver||(t.MutationObserver=s,s._isPolyfilled=!0)}}(self),function(){\"use strict\";if(!window.performance||!window.performance.now){var t=Date.now();window.performance={now:function(){return Date.now()-t}}}window.requestAnimationFrame||(window.requestAnimationFrame=function(){var t=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return t?function(e){return t(function(){e(performance.now())})}:function(t){return window.setTimeout(t,1e3/60)}}()),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(){return window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(t){clearTimeout(t)}}());var e=function(){var t=document.createEvent(\"Event\");return t.initEvent(\"foo\",!0,!0),t.preventDefault(),t.defaultPrevented}();if(!e){var n=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(n.call(this),Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0},configurable:!0}))}}var i=/Trident/.test(navigator.userAgent);if((!window.CustomEvent||i&&\"function\"!=typeof window.CustomEvent)&&(window.CustomEvent=function(t,e){e=e||{};var n=document.createEvent(\"CustomEvent\");return n.initCustomEvent(t,Boolean(e.bubbles),Boolean(e.cancelable),e.detail),n},window.CustomEvent.prototype=window.Event.prototype),!window.Event||i&&\"function\"!=typeof window.Event){var o=window.Event;window.Event=function(t,e){e=e||{};var n=document.createEvent(\"Event\");return n.initEvent(t,Boolean(e.bubbles),Boolean(e.cancelable)),n},window.Event.prototype=o.prototype}}(window.WebComponents),window.CustomElements=window.CustomElements||{flags:{}},function(t){var e=t.flags,n=[],i=function(t){n.push(t)},o=function(){n.forEach(function(e){e(t)})};t.addModule=i,t.initializeModules=o,t.hasNative=Boolean(document.registerElement),t.isIE=/Trident/.test(navigator.userAgent),t.useNative=!e.register&&t.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||window.HTMLImports.useNative)}(window.CustomElements),window.CustomElements.addModule(function(t){function e(t,e){n(t,function(t){return e(t)?!0:void i(t,e)}),i(t,e)}function n(t,e,i){var o=t.firstElementChild;if(!o)for(o=t.firstChild;o&&o.nodeType!==Node.ELEMENT_NODE;)o=o.nextSibling;for(;o;)e(o,i)!==!0&&n(o,e,i),o=o.nextElementSibling;return null}function i(t,n){for(var i=t.shadowRoot;i;)e(i,n),i=i.olderShadowRoot}function o(t,e){r(t,e,[])}function r(t,e,n){if(t=window.wrap(t),!(n.indexOf(t)>=0)){n.push(t);for(var i,o=t.querySelectorAll(\"link[rel=\"+s+\"]\"),a=0,u=o.length;u>a&&(i=o[a]);a++)i.import&&r(i.import,e,n);e(t)}}var s=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:\"none\";t.forDocumentTree=o,t.forSubtree=e}),window.CustomElements.addModule(function(t){function e(t,e){return n(t,e)||i(t,e)}function n(e,n){return t.upgrade(e,n)?!0:void(n&&s(e))}function i(t,e){b(t,function(t){return n(t,e)?!0:void 0})}function o(t){w.push(t),x||(x=!0,setTimeout(r))}function r(){x=!1;for(var t,e=w,n=0,i=e.length;i>n&&(t=e[n]);n++)t();w=[]}function s(t){C?o(function(){a(t)}):a(t)}function a(t){t.__upgraded__&&!t.__attached&&(t.__attached=!0,t.attachedCallback&&t.attachedCallback())}function u(t){c(t),b(t,function(t){c(t)})}function c(t){C?o(function(){l(t)}):l(t)}function l(t){t.__upgraded__&&t.__attached&&(t.__attached=!1,t.detachedCallback&&t.detachedCallback())}function h(t){for(var e=t,n=window.wrap(document);e;){if(e==n)return!0;e=e.parentNode||e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host}}function p(t){if(t.shadowRoot&&!t.shadowRoot.__watched){y.dom&&console.log(\"watching shadow-root for: \",t.localName);for(var e=t.shadowRoot;e;)g(e),e=e.olderShadowRoot}}function d(t,n){if(y.dom){var i=n[0];if(i&&\"childList\"===i.type&&i.addedNodes&&i.addedNodes){for(var o=i.addedNodes[0];o&&o!==document&&!o.host;)o=o.parentNode;var r=o&&(o.URL||o._URL||o.host&&o.host.localName)||\"\";r=r.split(\"/?\").shift().split(\"/\").pop()}console.group(\"mutations (%d) [%s]\",n.length,r||\"\")}var s=h(t);n.forEach(function(t){\"childList\"===t.type&&(E(t.addedNodes,function(t){t.localName&&e(t,s)}),E(t.removedNodes,function(t){t.localName&&u(t)}))}),y.dom&&console.groupEnd()}function f(t){for(t=window.wrap(t),t||(t=window.wrap(document));t.parentNode;)t=t.parentNode;var e=t.__observer;e&&(d(t,e.takeRecords()),r())}function g(t){if(!t.__observer){var e=new MutationObserver(d.bind(this,t));e.observe(t,{childList:!0,subtree:!0}),t.__observer=e}}function m(t){t=window.wrap(t),y.dom&&console.group(\"upgradeDocument: \",t.baseURI.split(\"/\").pop());var n=t===window.wrap(document);e(t,n),g(t),y.dom&&console.groupEnd()}function v(t){A(t,m)}var y=t.flags,b=t.forSubtree,A=t.forDocumentTree,C=window.MutationObserver._isPolyfilled&&y[\"throttle-attached\"];t.hasPolyfillMutations=C,t.hasThrottledAttached=C;var x=!1,w=[],E=Array.prototype.forEach.call.bind(Array.prototype.forEach),S=Element.prototype.createShadowRoot;S&&(Element.prototype.createShadowRoot=function(){var t=S.call(this);return window.CustomElements.watchShadow(this),t}),t.watchShadow=p,t.upgradeDocumentTree=v,t.upgradeDocument=m,t.upgradeSubtree=i,t.upgradeAll=e,t.attached=s,t.takeRecords=f}),window.CustomElements.addModule(function(t){function e(e,i){if(\"template\"===e.localName&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(e),!e.__upgraded__&&e.nodeType===Node.ELEMENT_NODE){var o=e.getAttribute(\"is\"),r=t.getRegisteredDefinition(e.localName)||t.getRegisteredDefinition(o);if(r&&(o&&r.tag==e.localName||!o&&!r.extends))return n(e,r,i)}}function n(e,n,o){return s.upgrade&&console.group(\"upgrade:\",e.localName),n.is&&e.setAttribute(\"is\",n.is),i(e,n),e.__upgraded__=!0,r(e),o&&t.attached(e),t.upgradeSubtree(e,o),s.upgrade&&console.groupEnd(),e}function i(t,e){Object.__proto__?t.__proto__=e.prototype:(o(t,e.prototype,e.native),t.__proto__=e.prototype)}function o(t,e,n){for(var i={},o=e;o!==n&&o!==HTMLElement.prototype;){for(var r,s=Object.getOwnPropertyNames(o),a=0;r=s[a];a++)i[r]||(Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(o,r)),i[r]=1);o=Object.getPrototypeOf(o)}}function r(t){t.createdCallback&&t.createdCallback()}var s=t.flags;t.upgrade=e,t.upgradeWithDefinition=n,t.implementPrototype=i}),window.CustomElements.addModule(function(t){function e(e,i){var u=i||{};if(!e)throw new Error(\"document.registerElement: first argument `name` must not be empty\");if(e.indexOf(\"-\")<0)throw new Error(\"document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '\"+String(e)+\"'.\");if(o(e))throw new Error(\"Failed to execute 'registerElement' on 'Document': Registration failed for type '\"+String(e)+\"'. The type name is invalid.\");if(c(e))throw new Error(\"DuplicateDefinitionError: a type with name '\"+String(e)+\"' is already registered\");return u.prototype||(u.prototype=Object.create(HTMLElement.prototype)),u.__name=e.toLowerCase(),u.extends&&(u.extends=u.extends.toLowerCase()),u.lifecycle=u.lifecycle||{},u.ancestry=r(u.extends),s(u),a(u),n(u.prototype),l(u.__name,u),u.ctor=h(u),u.ctor.prototype=u.prototype,u.prototype.constructor=u.ctor,t.ready&&m(document),u.ctor}function n(t){if(!t.setAttribute._polyfilled){var e=t.setAttribute;t.setAttribute=function(t,n){i.call(this,t,n,e)};var n=t.removeAttribute;t.removeAttribute=function(t){i.call(this,t,null,n)},t.setAttribute._polyfilled=!0}}function i(t,e,n){t=t.toLowerCase();var i=this.getAttribute(t);n.apply(this,arguments);var o=this.getAttribute(t);this.attributeChangedCallback&&o!==i&&this.attributeChangedCallback(t,i,o)}function o(t){for(var e=0;e<C.length;e++)if(t===C[e])return!0}function r(t){var e=c(t);return e?r(e.extends).concat([e]):[]}function s(t){for(var e,n=t.extends,i=0;e=t.ancestry[i];i++)n=e.is&&e.tag;t.tag=n||t.__name,n&&(t.is=t.__name)}function a(t){if(!Object.__proto__){var e=HTMLElement.prototype;if(t.is){var n=document.createElement(t.tag);e=Object.getPrototypeOf(n)}for(var i,o=t.prototype,r=!1;o;)o==e&&(r=!0),i=Object.getPrototypeOf(o),i&&(o.__proto__=i),o=i;r||console.warn(t.tag+\" prototype not found in prototype chain for \"+t.is),t.native=e}}function u(t){return y(E(t.tag),t)}function c(t){return t?x[t.toLowerCase()]:void 0}function l(t,e){x[t]=e}function h(t){return function(){return u(t)}}function p(t,e,n){return t===w?d(e,n):S(t,e)}function d(t,e){t&&(t=t.toLowerCase()),e&&(e=e.toLowerCase());var n=c(e||t);if(n){if(t==n.tag&&e==n.is)return new n.ctor;if(!e&&!n.is)return new n.ctor}var i;return e?(i=d(t),i.setAttribute(\"is\",e),i):(i=E(t),t.indexOf(\"-\")>=0&&b(i,HTMLElement),i)}function f(t,e){var n=t[e];t[e]=function(){var t=n.apply(this,arguments);return v(t),t}}var g,m=(t.isIE,t.upgradeDocumentTree),v=t.upgradeAll,y=t.upgradeWithDefinition,b=t.implementPrototype,A=t.useNative,C=[\"annotation-xml\",\"color-profile\",\"font-face\",\"font-face-src\",\"font-face-uri\",\"font-face-format\",\"font-face-name\",\"missing-glyph\"],x={},w=\"http://www.w3.org/1999/xhtml\",E=document.createElement.bind(document),S=document.createElementNS.bind(document);g=Object.__proto__||A?function(t,e){return t instanceof e}:function(t,e){if(t instanceof e)return!0;for(var n=t;n;){if(n===e.prototype)return!0;n=n.__proto__}return!1},f(Node.prototype,\"cloneNode\"),f(document,\"importNode\"),document.registerElement=e,document.createElement=d,document.createElementNS=p,t.registry=x,t.instanceof=g,t.reservedTagList=C,t.getRegisteredDefinition=c,document.register=document.registerElement}),function(t){function e(){r(window.wrap(document)),window.CustomElements.ready=!0;var t=window.requestAnimationFrame||function(t){setTimeout(t,16)};t(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent(\"WebComponentsReady\",{bubbles:!0}))})})}var n=t.useNative,i=t.initializeModules;if(t.isIE,n){var o=function(){};t.watchShadow=o,t.upgrade=o,t.upgradeAll=o,t.upgradeDocumentTree=o,t.upgradeSubtree=o,t.takeRecords=o,t.instanceof=function(t,e){return t instanceof e}}else i();var r=t.upgradeDocumentTree,s=t.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(t){return t}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(t){t.import&&s(wrap(t.import))}),\"complete\"===document.readyState||t.flags.eager)e();else if(\"interactive\"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var a=window.HTMLImports&&!window.HTMLImports.ready?\"HTMLImportsLoaded\":\"DOMContentLoaded\";window.addEventListener(a,e)}else e()}(window.CustomElements))}.call(this),function(){}.call(this),function(){var t=this;(function(){(function(){this.Trix={VERSION:\"1.3.1\",ZERO_WIDTH_SPACE:\"\\ufeff\",NON_BREAKING_SPACE:\"\\xa0\",OBJECT_REPLACEMENT_CHARACTER:\"\\ufffc\",browser:{composesExistingText:/Android.*Chrome/.test(navigator.userAgent),forcesObjectResizing:/Trident.*rv:11/.test(navigator.userAgent),supportsInputEvents:function(){var t,e,n,i;if(\"undefined\"==typeof InputEvent)return!1;for(i=[\"data\",\"getTargetRanges\",\"inputType\"],t=0,e=i.length;e>t;t++)if(n=i[t],!(n in InputEvent.prototype))return!1;return!0}()},config:{}}}).call(this)}).call(t);var e=t.Trix;(function(){(function(){e.BasicObject=function(){function t(){}var e,n,i;return t.proxyMethod=function(t){var i,o,r,s,a;return r=n(t),i=r.name,s=r.toMethod,a=r.toProperty,o=r.optional,this.prototype[i]=function(){var t,n;return t=null!=s?o?\"function\"==typeof this[s]?this[s]():void 0:this[s]():null!=a?this[a]:void 0,o?(n=null!=t?t[i]:void 0,null!=n?e.call(n,t,arguments):void 0):(n=t[i],e.call(n,t,arguments))}},n=function(t){var e,n;if(!(n=t.match(i)))throw new Error(\"can't parse @proxyMethod expression: \"+t);return e={name:n[4]},null!=n[2]?e.toMethod=n[1]:e.toProperty=n[1],null!=n[3]&&(e.optional=!0),e},e=Function.prototype.apply,i=/^(.+?)(\\(\\))?(\\?)?\\.(.+?)$/,t}()}).call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Object=function(n){function i(){this.id=++o}var o;return t(i,n),o=0,i.fromJSONString=function(t){return this.fromJSON(JSON.parse(t))},i.prototype.hasSameConstructorAs=function(t){return this.constructor===(null!=t?t.constructor:void 0)},i.prototype.isEqualTo=function(t){return this===t},i.prototype.inspect=function(){var t,e,n;return t=function(){var t,i,o;i=null!=(t=this.contentsForInspection())?t:{},o=[];for(e in i)n=i[e],o.push(e+\"=\"+n);return o}.call(this),\"#<\"+this.constructor.name+\":\"+this.id+(t.length?\" \"+t.join(\", \"):\"\")+\">\"},i.prototype.contentsForInspection=function(){},i.prototype.toJSONString=function(){return JSON.stringify(this)},i.prototype.toUTF16String=function(){return e.UTF16String.box(this)},i.prototype.getCacheKey=function(){return this.id.toString()},i}(e.BasicObject)}.call(this),function(){e.extend=function(t){var e,n;for(e in t)n=t[e],this[e]=n;return this}}.call(this),function(){e.extend({defer:function(t){return setTimeout(t,1)}})}.call(this),function(){var t,n;e.extend({normalizeSpaces:function(t){return t.replace(RegExp(\"\"+e.ZERO_WIDTH_SPACE,\"g\"),\"\").replace(RegExp(\"\"+e.NON_BREAKING_SPACE,\"g\"),\" \")},normalizeNewlines:function(t){return t.replace(/\\r\\n/g,\"\\n\")},breakableWhitespacePattern:RegExp(\"[^\\\\S\"+e.NON_BREAKING_SPACE+\"]\"),squishBreakableWhitespace:function(t){return t.replace(RegExp(\"\"+e.breakableWhitespacePattern.source,\"g\"),\" \").replace(/\\ {2,}/g,\" \")},summarizeStringChange:function(t,i){var o,r,s,a;return t=e.UTF16String.box(t),i=e.UTF16String.box(i),i.length<t.length?(r=n(t,i),a=r[0],o=r[1]):(s=n(i,t),o=s[0],a=s[1]),{added:o,removed:a}}}),n=function(n,i){var o,r,s,a,u;return n.isEqualTo(i)?[\"\",\"\"]:(r=t(n,i),a=r.utf16String.length,s=a?(u=r.offset,r,o=n.codepoints.slice(0,u).concat(n.codepoints.slice(u+a)),t(i,e.UTF16String.fromCodepoints(o))):t(i,n),[r.utf16String.toString(),s.utf16String.toString()])},t=function(t,e){var n,i,o;for(n=0,i=t.length,o=e.length;i>n&&t.charAt(n).isEqualTo(e.charAt(n));)n++;for(;i>n+1&&t.charAt(i-1).isEqualTo(e.charAt(o-1));)i--,o--;return{utf16String:t.slice(n,i),offset:n}}}.call(this),function(){e.extend({copyObject:function(t){var e,n,i;null==t&&(t={}),n={};for(e in t)i=t[e],n[e]=i;return n},objectsAreEqual:function(t,e){var n,i;if(null==t&&(t={}),null==e&&(e={}),Object.keys(t).length!==Object.keys(e).length)return!1;for(n in t)if(i=t[n],i!==e[n])return!1;return!0}})}.call(this),function(){var t=[].slice;e.extend({arraysAreEqual:function(t,e){var n,i,o,r;if(null==t&&(t=[]),null==e&&(e=[]),t.length!==e.length)return!1;for(i=n=0,o=t.length;o>n;i=++n)if(r=t[i],r!==e[i])return!1;return!0},arrayStartsWith:function(t,n){return null==t&&(t=[]),null==n&&(n=[]),e.arraysAreEqual(t.slice(0,n.length),n)},spliceArray:function(){var e,n,i;return n=arguments[0],e=2<=arguments.length?t.call(arguments,1):[],i=n.slice(0),i.splice.apply(i,e),i},summarizeArrayChange:function(t,e){var n,i,o,r,s,a,u,c,l,h,p;for(null==t&&(t=[]),null==e&&(e=[]),n=[],h=[],o=new Set,r=0,u=t.length;u>r;r++)p=t[r],o.add(p);for(i=new Set,s=0,c=e.length;c>s;s++)p=e[s],i.add(p),o.has(p)||n.push(p);for(a=0,l=t.length;l>a;a++)p=t[a],i.has(p)||h.push(p);return{added:n,removed:h}}})}.call(this),function(){var t,n,i,o;t=null,n=null,o=null,i=null,e.extend({getAllAttributeNames:function(){return null!=t?t:t=e.getTextAttributeNames().concat(e.getBlockAttributeNames())},getBlockConfig:function(t){return e.config.blockAttributes[t]},getBlockAttributeNames:function(){return null!=n?n:n=Object.keys(e.config.blockAttributes)},getTextConfig:function(t){return e.config.textAttributes[t]},getTextAttributeNames:function(){return null!=o?o:o=Object.keys(e.config.textAttributes)},getListAttributeNames:function(){var t,n;return null!=i?i:i=function(){var i,o;i=e.config.blockAttributes,o=[];for(t in i)n=i[t].listAttribute,null!=n&&o.push(n);return o}()}})}.call(this),function(){var t,n,i,o,r,s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=document.documentElement,n=null!=(i=null!=(o=null!=(r=t.matchesSelector)?r:t.webkitMatchesSelector)?o:t.msMatchesSelector)?i:t.mozMatchesSelector,e.extend({handleEvent:function(n,i){var o,r,s,a,u,c,l,h,p,d,f,g;return h=null!=i?i:{},c=h.onElement,u=h.matchingSelector,g=h.withCallback,a=h.inPhase,l=h.preventDefault,d=h.times,r=null!=c?c:t,p=u,o=g,f=\"capturing\"===a,s=function(t){var n;return null!=d&&0===--d&&s.destroy(),n=e.findClosestElementFromNode(t.target,{matchingSelector:p}),null!=n&&(null!=g&&g.call(n,t,n),l)?t.preventDefault():void 0},s.destroy=function(){return r.removeEventListener(n,s,f)},r.addEventListener(n,s,f),s},handleEventOnce:function(t,n){return null==n&&(n={}),n.times=1,e.handleEvent(t,n)},triggerEvent:function(n,i){var o,r,s,a,u,c,l;return l=null!=i?i:{},c=l.onElement,r=l.bubbles,s=l.cancelable,o=l.attributes,a=null!=c?c:t,r=r!==!1,s=s!==!1,u=document.createEvent(\"Events\"),u.initEvent(n,r,s),null!=o&&e.extend.call(u,o),a.dispatchEvent(u)},elementMatchesSelector:function(t,e){return 1===(null!=t?t.nodeType:void 0)?n.call(t,e):void 0},findClosestElementFromNode:function(t,n){var i,o,r;for(o=null!=n?n:{},i=o.matchingSelector,r=o.untilNode;null!=t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.parentNode;if(null!=t){if(null==i)return t;if(t.closest&&null==r)return t.closest(i);for(;t&&t!==r;){if(e.elementMatchesSelector(t,i))return t;t=t.parentNode}}},findInnerElement:function(t){for(;null!=t?t.firstElementChild:void 0;)t=t.firstElementChild;return t},innerElementIsActive:function(t){return document.activeElement!==t&&e.elementContainsNode(t,document.activeElement)},elementContainsNode:function(t,e){if(t&&e)for(;e;){if(e===t)return!0;e=e.parentNode}},findNodeFromContainerAndOffset:function(t,e){var n;if(t)return t.nodeType===Node.TEXT_NODE?t:0===e?null!=(n=t.firstChild)?n:t:t.childNodes.item(e-1)},findElementFromContainerAndOffset:function(t,n){var i;return i=e.findNodeFromContainerAndOffset(t,n),e.findClosestElementFromNode(i)},findChildIndexOfNode:function(t){var e;if(null!=t?t.parentNode:void 0){for(e=0;t=t.previousSibling;)e++;return e}},removeNode:function(t){var e;return null!=t&&null!=(e=t.parentNode)?e.removeChild(t):void 0},walkTree:function(t,e){var n,i,o,r,s;return o=null!=e?e:{},i=o.onlyNodesOfType,r=o.usingFilter,n=o.expandEntityReferences,s=function(){switch(i){case\"element\":return NodeFilter.SHOW_ELEMENT;case\"text\":return NodeFilter.SHOW_TEXT;case\"comment\":return NodeFilter.SHOW_COMMENT;default:return NodeFilter.SHOW_ALL}}(),document.createTreeWalker(t,s,null!=r?r:null,n===!0)},tagName:function(t){var e;return null!=t&&null!=(e=t.tagName)?e.toLowerCase():void 0},makeElement:function(t,e){var n,i,o,r,s,a,u,c,l,h,p,d,f,g;if(null==e&&(e={}),\"object\"==typeof t?(e=t,t=e.tagName):e={attributes:e},o=document.createElement(t),null!=e.editable&&(null==e.attributes&&(e.attributes={}),e.attributes.contenteditable=e.editable),e.attributes){l=e.attributes;for(a in l)g=l[a],o.setAttribute(a,g)}if(e.style){h=e.style;for(a in h)g=h[a],o.style[a]=g}if(e.data){p=e.data;for(a in p)g=p[a],o.dataset[a]=g}if(e.className)for(d=e.className.split(\" \"),r=0,u=d.length;u>r;r++)i=d[r],o.classList.add(i);if(e.textContent&&(o.textContent=e.textContent),e.childNodes)for(f=[].concat(e.childNodes),s=0,c=f.length;c>s;s++)n=f[s],o.appendChild(n);return o},getBlockTagNames:function(){var t,n;return null!=e.blockTagNames?e.blockTagNames:e.blockTagNames=function(){var i,o;i=e.config.blockAttributes,o=[];for(t in i)n=i[t].tagName,n&&o.push(n);return o}()},nodeIsBlockContainer:function(t){return e.nodeIsBlockStartComment(null!=t?t.firstChild:void 0)},nodeProbablyIsBlockContainer:function(t){var n,i;return n=e.tagName(t),s.call(e.getBlockTagNames(),n)>=0&&(i=e.tagName(t.firstChild),s.call(e.getBlockTagNames(),i)<0)},nodeIsBlockStart:function(t,n){var i;return i=(null!=n?n:{strict:!0}).strict,i?e.nodeIsBlockStartComment(t):e.nodeIsBlockStartComment(t)||!e.nodeIsBlockStartComment(t.firstChild)&&e.nodeProbablyIsBlockContainer(t)},nodeIsBlockStartComment:function(t){return e.nodeIsCommentNode(t)&&\"block\"===(null!=t?t.data:void 0)},nodeIsCommentNode:function(t){return(null!=t?t.nodeType:void 0)===Node.COMMENT_NODE},nodeIsCursorTarget:function(t,n){var i;return i=(null!=n?n:{}).name,t?e.nodeIsTextNode(t)?t.data===e.ZERO_WIDTH_SPACE?i?t.parentNode.dataset.trixCursorTarget===i:!0:void 0:e.nodeIsCursorTarget(t.firstChild):void 0},nodeIsAttachmentElement:function(t){return e.elementMatchesSelector(t,e.AttachmentView.attachmentSelector)},nodeIsEmptyTextNode:function(t){return e.nodeIsTextNode(t)&&\"\"===(null!=t?t.data:void 0)},nodeIsTextNode:function(t){return(null!=t?t.nodeType:void 0)===Node.TEXT_NODE}})}.call(this),function(){var t,n,i,o,r;t=e.copyObject,o=e.objectsAreEqual,e.extend({normalizeRange:i=function(t){var e;if(null!=t)return Array.isArray(t)||(t=[t,t]),[n(t[0]),n(null!=(e=t[1])?e:t[0])]},rangeIsCollapsed:function(t){var e,n,o;if(null!=t)return n=i(t),o=n[0],e=n[1],r(o,e)},rangesAreEqual:function(t,e){var n,o,s,a,u,c;if(null!=t&&null!=e)return s=i(t),o=s[0],n=s[1],a=i(e),c=a[0],u=a[1],r(o,c)&&r(n,u)}}),n=function(e){return\"number\"==typeof e?e:t(e)},r=function(t,e){return\"number\"==typeof t?t===e:o(t,e)}}.call(this),function(){var t,n,i,o,r,s,a;e.registerElement=function(t,e){var n,i;return null==e&&(e={}),t=t.toLowerCase(),e=a(e),i=s(e),(n=i.defaultCSS)&&(delete i.defaultCSS,o(n,t)),r(t,i)},o=function(t,e){var n;return n=i(e),n.textContent=t.replace(/%t/g,e)},i=function(e){var n,i;return n=document.createElement(\"style\"),n.setAttribute(\"type\",\"text/css\"),n.setAttribute(\"data-tag-name\",e.toLowerCase()),(i=t())&&n.setAttribute(\"nonce\",i),document.head.insertBefore(n,document.head.firstChild),n},t=function(){var t;return(t=n(\"trix-csp-nonce\")||n(\"csp-nonce\"))?t.getAttribute(\"content\"):void 0},n=function(t){return document.head.querySelector(\"meta[name=\"+t+\"]\")},s=function(t){var e,n,i;n={};for(e in t)i=t[e],n[e]=\"function\"==typeof i?{value:i}:i;return n},a=function(){var t;return t=function(t){var e,n,i,o,r;for(e={},r=[\"initialize\",\"connect\",\"disconnect\"],n=0,o=r.length;o>n;n++)i=r[n],e[i]=t[i],delete t[i];return e},window.customElements?function(e){var n,i,o,r,s;return s=t(e),o=s.initialize,n=s.connect,i=s.disconnect,o&&(r=n,n=function(){return this.initialized||(this.initialized=!0,o.call(this)),null!=r?r.call(this):void 0}),n&&(e.connectedCallback=n),i&&(e.disconnectedCallback=i),e}:function(e){var n,i,o,r;return r=t(e),o=r.initialize,n=r.connect,i=r.disconnect,o&&(e.createdCallback=o),n&&(e.attachedCallback=n),i&&(e.detachedCallback=i),e}}(),r=function(){return window.customElements?function(t,e){var n;return n=function(){return\"object\"==typeof Reflect?Reflect.construct(HTMLElement,[],n):HTMLElement.apply(this)},Object.setPrototypeOf(n.prototype,HTMLElement.prototype),Object.setPrototypeOf(n,HTMLElement),Object.defineProperties(n.prototype,e),window.customElements.define(t,n),n}:function(t,e){var n,i;return i=Object.create(HTMLElement.prototype,e),n=document.registerElement(t,{prototype:i}),Object.defineProperty(i,\"constructor\",{value:n}),n}}()}.call(this),function(){var t,n;e.extend({getDOMSelection:function(){var t;return t=window.getSelection(),t.rangeCount>0?t:void 0},getDOMRange:function(){var n,i;return(n=null!=(i=e.getDOMSelection())?i.getRangeAt(0):void 0)&&!t(n)?n:void 0},setDOMRange:function(t){var n;return n=window.getSelection(),n.removeAllRanges(),n.addRange(t),e.selectionChangeObserver.update()}}),t=function(t){return n(t.startContainer)||n(t.endContainer)},n=function(t){return!Object.getPrototypeOf(t)}}.call(this),function(){var t;t={\"application/x-trix-feature-detection\":\"test\"},e.extend({dataTransferIsPlainText:function(t){var e,n,i;return i=t.getData(\"text/plain\"),n=t.getData(\"text/html\"),i&&n?(e=(new DOMParser).parseFromString(n,\"text/html\").body,e.textContent===i?!e.querySelector(\"*\"):void 0):null!=i?i.length:void 0},dataTransferIsWritable:function(e){var n,i;if(null!=(null!=e?e.setData:void 0)){for(n in t)if(i=t[n],!function(){try{return e.setData(n,i),e.getData(n)===i}catch(t){}}())return;return!0}},keyEventIsKeyboardCommand:function(){return/Mac|^iP/.test(navigator.platform)?function(t){return t.metaKey}:function(t){return t.ctrlKey}}()})}.call(this),function(){e.extend({RTL_PATTERN:/[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/,getDirection:function(){var t,n,i,o;return n=e.makeElement(\"input\",{dir:\"auto\",name:\"x\",dirName:\"x.dir\"}),t=e.makeElement(\"form\"),t.appendChild(n),i=function(){try{return new FormData(t).has(n.dirName)}catch(e){}}(),o=function(){try{return n.matches(\":dir(ltr),:dir(rtl)\")}catch(t){}}(),i?function(e){return n.value=e,new FormData(t).get(n.dirName)}:o?function(t){return n.value=t,n.matches(\":dir(rtl)\")?\"rtl\":\"ltr\"}:function(t){var n;return n=t.trim().charAt(0),e.RTL_PATTERN.test(n)?\"rtl\":\"ltr\"}}()})}.call(this),function(){}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.arraysAreEqual,e.Hash=function(i){function o(t){null==t&&(t={}),this.values=s(t),o.__super__.constructor.apply(this,arguments)}var r,s,a,u,c;return n(o,i),o.fromCommonAttributesOfObjects=function(t){var e,n,i,o,s,a;if(null==t&&(t=[]),!t.length)return new this;for(e=r(t[0]),i=e.getKeys(),a=t.slice(1),n=0,o=a.length;o>n;n++)s=a[n],i=e.getKeysCommonToHash(r(s)),e=e.slice(i);return e},o.box=function(t){return r(t)},o.prototype.add=function(t,e){return this.merge(u(t,e))},o.prototype.remove=function(t){return new e.Hash(s(this.values,t))},o.prototype.get=function(t){return this.values[t]},o.prototype.has=function(t){return t in this.values},o.prototype.merge=function(t){return new e.Hash(a(this.values,c(t)))},o.prototype.slice=function(t){var n,i,o,r;for(r={},n=0,o=t.length;o>n;n++)i=t[n],this.has(i)&&(r[i]=this.values[i]);return new e.Hash(r)},o.prototype.getKeys=function(){return Object.keys(this.values)},o.prototype.getKeysCommonToHash=function(t){var e,n,i,o,s;for(t=r(t),o=this.getKeys(),s=[],e=0,i=o.length;i>e;e++)n=o[e],this.values[n]===t.values[n]&&s.push(n);return s},o.prototype.isEqualTo=function(e){return t(this.toArray(),r(e).toArray())},o.prototype.isEmpty=function(){return 0===this.getKeys().length},o.prototype.toArray=function(){var t,e,n;return(null!=this.array?this.array:this.array=function(){var i;e=[],i=this.values;for(t in i)n=i[t],e.push(t,n);return e}.call(this)).slice(0)},o.prototype.toObject=function(){return s(this.values)},o.prototype.toJSON=function(){return this.toObject()},o.prototype.contentsForInspection=function(){return{values:JSON.stringify(this.values)}},u=function(t,e){var n;return n={},n[t]=e,n},a=function(t,e){var n,i,o;i=s(t);for(n in e)o=e[n],i[n]=o;return i},s=function(t,e){var n,i,o,r,s;for(r={},s=Object.keys(t).sort(),n=0,o=s.length;o>n;n++)i=s[n],i!==e&&(r[i]=t[i]);return r},r=function(t){return t instanceof e.Hash?t:new e.Hash(t)},c=function(t){return t instanceof e.Hash?t.values:t\n},o}(e.Object)}.call(this),function(){e.ObjectGroup=function(){function t(t,e){var n,i;this.objects=null!=t?t:[],i=e.depth,n=e.asTree,n&&(this.depth=i,this.objects=this.constructor.groupObjects(this.objects,{asTree:n,depth:this.depth+1}))}return t.groupObjects=function(t,e){var n,i,o,r,s,a,u,c,l;for(null==t&&(t=[]),l=null!=e?e:{},o=l.depth,n=l.asTree,n&&null==o&&(o=0),c=[],s=0,a=t.length;a>s;s++){if(u=t[s],r){if((\"function\"==typeof u.canBeGrouped?u.canBeGrouped(o):void 0)&&(\"function\"==typeof(i=r[r.length-1]).canBeGroupedWith?i.canBeGroupedWith(u,o):void 0)){r.push(u);continue}c.push(new this(r,{depth:o,asTree:n})),r=null}(\"function\"==typeof u.canBeGrouped?u.canBeGrouped(o):void 0)?r=[u]:c.push(u)}return r&&c.push(new this(r,{depth:o,asTree:n})),c},t.prototype.getObjects=function(){return this.objects},t.prototype.getDepth=function(){return this.depth},t.prototype.getCacheKey=function(){var t,e,n,i,o;for(e=[\"objectGroup\"],o=this.getObjects(),t=0,n=o.length;n>t;t++)i=o[t],e.push(i.getCacheKey());return e.join(\"/\")},t}()}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ObjectMap=function(e){function n(t){var e,n,i,o,r;for(null==t&&(t=[]),this.objects={},i=0,o=t.length;o>i;i++)r=t[i],n=JSON.stringify(r),null==(e=this.objects)[n]&&(e[n]=r)}return t(n,e),n.prototype.find=function(t){var e;return e=JSON.stringify(t),this.objects[e]},n}(e.BasicObject)}.call(this),function(){e.ElementStore=function(){function t(t){this.reset(t)}var e;return t.prototype.add=function(t){var n;return n=e(t),this.elements[n]=t},t.prototype.remove=function(t){var n,i;return n=e(t),(i=this.elements[n])?(delete this.elements[n],i):void 0},t.prototype.reset=function(t){var e,n,i;for(null==t&&(t=[]),this.elements={},n=0,i=t.length;i>n;n++)e=t[n],this.add(e);return t},e=function(t){return t.dataset.trixStoreKey},t}()}.call(this),function(){}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Operation=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n.prototype.isPerforming=function(){return this.performing===!0},n.prototype.hasPerformed=function(){return this.performed===!0},n.prototype.hasSucceeded=function(){return this.performed&&this.succeeded},n.prototype.hasFailed=function(){return this.performed&&!this.succeeded},n.prototype.getPromise=function(){return null!=this.promise?this.promise:this.promise=new Promise(function(t){return function(e,n){return t.performing=!0,t.perform(function(i,o){return t.succeeded=i,t.performing=!1,t.performed=!0,t.succeeded?e(o):n(o)})}}(this))},n.prototype.perform=function(t){return t(!1)},n.prototype.release=function(){var t;return null!=(t=this.promise)&&\"function\"==typeof t.cancel&&t.cancel(),this.promise=null,this.performing=null,this.performed=null,this.succeeded=null},n.proxyMethod(\"getPromise().then\"),n.proxyMethod(\"getPromise().catch\"),n}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s=function(t,e){function n(){this.constructor=t}for(var i in e)a.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty;e.UTF16String=function(t){function e(t,e){this.ucs2String=t,this.codepoints=e,this.length=this.codepoints.length,this.ucs2Length=this.ucs2String.length}return s(e,t),e.box=function(t){return null==t&&(t=\"\"),t instanceof this?t:this.fromUCS2String(null!=t?t.toString():void 0)},e.fromUCS2String=function(t){return new this(t,o(t))},e.fromCodepoints=function(t){return new this(r(t),t)},e.prototype.offsetToUCS2Offset=function(t){return r(this.codepoints.slice(0,Math.max(0,t))).length},e.prototype.offsetFromUCS2Offset=function(t){return o(this.ucs2String.slice(0,Math.max(0,t))).length},e.prototype.slice=function(){var t;return this.constructor.fromCodepoints((t=this.codepoints).slice.apply(t,arguments))},e.prototype.charAt=function(t){return this.slice(t,t+1)},e.prototype.isEqualTo=function(t){return this.constructor.box(t).ucs2String===this.ucs2String},e.prototype.toJSON=function(){return this.ucs2String},e.prototype.getCacheKey=function(){return this.ucs2String},e.prototype.toString=function(){return this.ucs2String},e}(e.BasicObject),t=1===(\"function\"==typeof Array.from?Array.from(\"\\ud83d\\udc7c\").length:void 0),n=null!=(\"function\"==typeof\" \".codePointAt?\" \".codePointAt(0):void 0),i=\" \\ud83d\\udc7c\"===(\"function\"==typeof String.fromCodePoint?String.fromCodePoint(32,128124):void 0),o=t&&n?function(t){return Array.from(t).map(function(t){return t.codePointAt(0)})}:function(t){var e,n,i,o,r;for(o=[],e=0,i=t.length;i>e;)r=t.charCodeAt(e++),r>=55296&&56319>=r&&i>e&&(n=t.charCodeAt(e++),56320===(64512&n)?r=((1023&r)<<10)+(1023&n)+65536:e--),o.push(r);return o},r=i?function(t){return String.fromCodePoint.apply(String,t)}:function(t){var e,n,i;return e=function(){var e,o,r;for(r=[],e=0,o=t.length;o>e;e++)i=t[e],n=\"\",i>65535&&(i-=65536,n+=String.fromCharCode(i>>>10&1023|55296),i=56320|1023&i),r.push(n+String.fromCharCode(i));return r}(),e.join(\"\")}}.call(this),function(){}.call(this),function(){}.call(this),function(){e.config.lang={attachFiles:\"Attach Files\",bold:\"Bold\",bullets:\"Bullets\",\"byte\":\"Byte\",bytes:\"Bytes\",captionPlaceholder:\"Add a caption\\u2026\",code:\"Code\",heading1:\"Heading\",indent:\"Increase Level\",italic:\"Italic\",link:\"Link\",numbers:\"Numbers\",outdent:\"Decrease Level\",quote:\"Quote\",redo:\"Redo\",remove:\"Remove\",strike:\"Strikethrough\",undo:\"Undo\",unlink:\"Unlink\",url:\"URL\",urlPlaceholder:\"Enter a URL\\u2026\",GB:\"GB\",KB:\"KB\",MB:\"MB\",PB:\"PB\",TB:\"TB\"}}.call(this),function(){e.config.css={attachment:\"attachment\",attachmentCaption:\"attachment__caption\",attachmentCaptionEditor:\"attachment__caption-editor\",attachmentMetadata:\"attachment__metadata\",attachmentMetadataContainer:\"attachment__metadata-container\",attachmentName:\"attachment__name\",attachmentProgress:\"attachment__progress\",attachmentSize:\"attachment__size\",attachmentToolbar:\"attachment__toolbar\",attachmentGallery:\"attachment-gallery\"}}.call(this),function(){var t;e.config.blockAttributes=t={\"default\":{tagName:\"div\",parse:!1},quote:{tagName:\"blockquote\",nestable:!0},heading1:{tagName:\"h1\",terminal:!0,breakOnReturn:!0,group:!1},code:{tagName:\"pre\",terminal:!0,text:{plaintext:!0}},bulletList:{tagName:\"ul\",parse:!1},bullet:{tagName:\"li\",listAttribute:\"bulletList\",group:!1,nestable:!0,test:function(n){return e.tagName(n.parentNode)===t[this.listAttribute].tagName}},numberList:{tagName:\"ol\",parse:!1},number:{tagName:\"li\",listAttribute:\"numberList\",group:!1,nestable:!0,test:function(n){return e.tagName(n.parentNode)===t[this.listAttribute].tagName}},attachmentGallery:{tagName:\"div\",exclusive:!0,terminal:!0,parse:!1,group:!1}}}.call(this),function(){var t,n;t=e.config.lang,n=[t.bytes,t.KB,t.MB,t.GB,t.TB,t.PB],e.config.fileSize={prefix:\"IEC\",precision:2,formatter:function(e){var i,o,r,s,a;switch(e){case 0:return\"0 \"+t.bytes;case 1:return\"1 \"+t.byte;default:return i=function(){switch(this.prefix){case\"SI\":return 1e3;case\"IEC\":return 1024}}.call(this),o=Math.floor(Math.log(e)/Math.log(i)),r=e/Math.pow(i,o),s=r.toFixed(this.precision),a=s.replace(/0*$/,\"\").replace(/\\.$/,\"\"),a+\" \"+n[o]}}}}.call(this),function(){e.config.textAttributes={bold:{tagName:\"strong\",inheritable:!0,parser:function(t){var e;return e=window.getComputedStyle(t),\"bold\"===e.fontWeight||e.fontWeight>=600}},italic:{tagName:\"em\",inheritable:!0,parser:function(t){var e;return e=window.getComputedStyle(t),\"italic\"===e.fontStyle}},href:{groupTagName:\"a\",parser:function(t){var n,i,o;return n=e.AttachmentView.attachmentSelector,o=\"a:not(\"+n+\")\",(i=e.findClosestElementFromNode(t,{matchingSelector:o}))?i.getAttribute(\"href\"):void 0}},strike:{tagName:\"del\",inheritable:!0},frozen:{style:{backgroundColor:\"highlight\"}}}}.call(this),function(){var t,n,i,o,r;r=\"[data-trix-serialize=false]\",o=[\"contenteditable\",\"data-trix-id\",\"data-trix-store-key\",\"data-trix-mutable\",\"data-trix-placeholder\",\"tabindex\"],n=\"data-trix-serialized-attributes\",i=\"[\"+n+\"]\",t=new RegExp(\"<!--block-->\",\"g\"),e.extend({serializers:{\"application/json\":function(t){var n;if(t instanceof e.Document)n=t;else{if(!(t instanceof HTMLElement))throw new Error(\"unserializable object\");n=e.Document.fromHTML(t.innerHTML)}return n.toSerializableDocument().toJSONString()},\"text/html\":function(s){var a,u,c,l,h,p,d,f,g,m,v,y,b,A,C,x,w;if(s instanceof e.Document)l=e.DocumentView.render(s);else{if(!(s instanceof HTMLElement))throw new Error(\"unserializable object\");l=s.cloneNode(!0)}for(A=l.querySelectorAll(r),h=0,g=A.length;g>h;h++)c=A[h],e.removeNode(c);for(p=0,m=o.length;m>p;p++)for(a=o[p],C=l.querySelectorAll(\"[\"+a+\"]\"),d=0,v=C.length;v>d;d++)c=C[d],c.removeAttribute(a);for(x=l.querySelectorAll(i),f=0,y=x.length;y>f;f++){c=x[f];try{u=JSON.parse(c.getAttribute(n)),c.removeAttribute(n);for(b in u)w=u[b],c.setAttribute(b,w)}catch(E){}}return l.innerHTML.replace(t,\"\")}},deserializers:{\"application/json\":function(t){return e.Document.fromJSONString(t)},\"text/html\":function(t){return e.Document.fromHTML(t)}},serializeToContentType:function(t,n){var i;if(i=e.serializers[n])return i(t);throw new Error(\"unknown content type: \"+n)},deserializeFromContentType:function(t,n){var i;if(i=e.deserializers[n])return i(t);throw new Error(\"unknown content type: \"+n)}})}.call(this),function(){var t;t=e.config.lang,e.config.toolbar={getDefaultHTML:function(){return'<div class=\"trix-button-row\">\\n  <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"'+t.bold+'\" tabindex=\"-1\">'+t.bold+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"'+t.italic+'\" tabindex=\"-1\">'+t.italic+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"'+t.strike+'\" tabindex=\"-1\">'+t.strike+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"'+t.link+'\" tabindex=\"-1\">'+t.link+'</button>\\n  </span>\\n\\n  <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"'+t.heading1+'\" tabindex=\"-1\">'+t.heading1+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"'+t.quote+'\" tabindex=\"-1\">'+t.quote+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"'+t.code+'\" tabindex=\"-1\">'+t.code+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"'+t.bullets+'\" tabindex=\"-1\">'+t.bullets+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"'+t.numbers+'\" tabindex=\"-1\">'+t.numbers+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"'+t.outdent+'\" tabindex=\"-1\">'+t.outdent+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"'+t.indent+'\" tabindex=\"-1\">'+t.indent+'</button>\\n  </span>\\n\\n  <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"'+t.attachFiles+'\" tabindex=\"-1\">'+t.attachFiles+'</button>\\n  </span>\\n\\n  <span class=\"trix-button-group-spacer\"></span>\\n\\n  <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"'+t.undo+'\" tabindex=\"-1\">'+t.undo+'</button>\\n    <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"'+t.redo+'\" tabindex=\"-1\">'+t.redo+'</button>\\n  </span>\\n</div>\\n\\n<div class=\"trix-dialogs\" data-trix-dialogs>\\n  <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\\n    <div class=\"trix-dialog__link-fields\">\\n      <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"'+t.urlPlaceholder+'\" aria-label=\"'+t.url+'\" required data-trix-input>\\n      <div class=\"trix-button-group\">\\n        <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"'+t.link+'\" data-trix-method=\"setAttribute\">\\n        <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"'+t.unlink+'\" data-trix-method=\"removeAttribute\">\\n      </div>\\n    </div>\\n  </div>\\n</div>'}}}.call(this),function(){e.config.undoInterval=5e3}.call(this),function(){e.config.attachments={preview:{presentation:\"gallery\",caption:{name:!0,size:!0}},file:{caption:{size:!0}}}}.call(this),function(){e.config.keyNames={8:\"backspace\",9:\"tab\",13:\"return\",27:\"escape\",37:\"left\",39:\"right\",46:\"delete\",68:\"d\",72:\"h\",79:\"o\"}}.call(this),function(){e.config.input={level2Enabled:!0,getLevel:function(){return this.level2Enabled&&e.browser.supportsInputEvents?2:0},pickFiles:function(t){var n;return n=e.makeElement(\"input\",{type:\"file\",multiple:!0,hidden:!0,id:this.fileInputId}),n.addEventListener(\"change\",function(){return t(n.files),e.removeNode(n)}),e.removeNode(document.getElementById(this.fileInputId)),document.body.appendChild(n),n.click()},fileInputId:\"trix-file-input-\"+Date.now().toString(16)}}.call(this),function(){}.call(this),function(){e.registerElement(\"trix-toolbar\",{defaultCSS:\"%t {\\n  display: block;\\n}\\n\\n%t {\\n  white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n  display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n  display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n  background-color: #ffdddd;\\n}\",initialize:function(){return\"\"===this.innerHTML?this.innerHTML=e.config.toolbar.getDefaultHTML():void 0}})}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty,i=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};e.ObjectView=function(n){function o(t,e){this.object=t,this.options=null!=e?e:{},this.childViews=[],this.rootView=this}return t(o,n),o.prototype.getNodes=function(){var t,e,n,i,o;for(null==this.nodes&&(this.nodes=this.createNodes()),i=this.nodes,o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.cloneNode(!0));return o},o.prototype.invalidate=function(){var t;return this.nodes=null,this.childViews=[],null!=(t=this.parentView)?t.invalidate():void 0},o.prototype.invalidateViewForObject=function(t){var e;return null!=(e=this.findViewForObject(t))?e.invalidate():void 0},o.prototype.findOrCreateCachedChildView=function(t,e){var n;return(n=this.getCachedViewForObject(e))?this.recordChildView(n):(n=this.createChildView.apply(this,arguments),this.cacheViewForObject(n,e)),n},o.prototype.createChildView=function(t,n,i){var o;return null==i&&(i={}),n instanceof e.ObjectGroup&&(i.viewClass=t,t=e.ObjectGroupView),o=new t(n,i),this.recordChildView(o)},o.prototype.recordChildView=function(t){return t.parentView=this,t.rootView=this.rootView,this.childViews.push(t),t},o.prototype.getAllChildViews=function(){var t,e,n,i,o;for(o=[],i=this.childViews,e=0,n=i.length;n>e;e++)t=i[e],o.push(t),o=o.concat(t.getAllChildViews());return o},o.prototype.findElement=function(){return this.findElementForObject(this.object)},o.prototype.findElementForObject=function(t){var e;return(e=null!=t?t.id:void 0)?this.rootView.element.querySelector(\"[data-trix-id='\"+e+\"']\"):void 0},o.prototype.findViewForObject=function(t){var e,n,i,o;for(i=this.getAllChildViews(),e=0,n=i.length;n>e;e++)if(o=i[e],o.object===t)return o},o.prototype.getViewCache=function(){return this.rootView!==this?this.rootView.getViewCache():this.isViewCachingEnabled()?null!=this.viewCache?this.viewCache:this.viewCache={}:void 0},o.prototype.isViewCachingEnabled=function(){return this.shouldCacheViews!==!1},o.prototype.enableViewCaching=function(){return this.shouldCacheViews=!0},o.prototype.disableViewCaching=function(){return this.shouldCacheViews=!1},o.prototype.getCachedViewForObject=function(t){var e;return null!=(e=this.getViewCache())?e[t.getCacheKey()]:void 0},o.prototype.cacheViewForObject=function(t,e){var n;return null!=(n=this.getViewCache())?n[e.getCacheKey()]=t:void 0},o.prototype.garbageCollectCachedViews=function(){var t,e,n,o,r,s;if(t=this.getViewCache()){s=this.getAllChildViews().concat(this),n=function(){var t,e,n;for(n=[],t=0,e=s.length;e>t;t++)r=s[t],n.push(r.object.getCacheKey());return n}(),o=[];for(e in t)i.call(n,e)<0&&o.push(delete t[e]);return o}},o}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ObjectGroupView=function(e){function n(){n.__super__.constructor.apply(this,arguments),this.objectGroup=this.object,this.viewClass=this.options.viewClass,delete this.options.viewClass}return t(n,e),n.prototype.getChildViews=function(){var t,e,n,i;if(!this.childViews.length)for(i=this.objectGroup.getObjects(),t=0,e=i.length;e>t;t++)n=i[t],this.findOrCreateCachedChildView(this.viewClass,n,this.options);return this.childViews},n.prototype.createNodes=function(){var t,e,n,i,o,r,s,a,u;for(t=this.createContainerElement(),s=this.getChildViews(),e=0,i=s.length;i>e;e++)for(u=s[e],a=u.getNodes(),n=0,o=a.length;o>n;n++)r=a[n],t.appendChild(r);return[t]},n.prototype.createContainerElement=function(t){return null==t&&(t=this.objectGroup.getDepth()),this.getChildViews()[0].createContainerElement(t)},n}(e.ObjectView)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Controller=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a=function(t,e){return function(){return t.apply(e,arguments)}},u=function(t,e){function n(){this.constructor=t}for(var i in e)c.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},c={}.hasOwnProperty,l=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.findClosestElementFromNode,i=e.nodeIsEmptyTextNode,n=e.nodeIsBlockStartComment,o=e.normalizeSpaces,r=e.summarizeStringChange,s=e.tagName,e.MutationObserver=function(e){function c(t){this.element=t,this.didMutate=a(this.didMutate,this),this.observer=new window.MutationObserver(this.didMutate),this.start()}var h,p,d,f;return u(c,e),p=\"data-trix-mutable\",d=\"[\"+p+\"]\",f={attributes:!0,childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},c.prototype.start=function(){return this.reset(),this.observer.observe(this.element,f)},c.prototype.stop=function(){return this.observer.disconnect()},c.prototype.didMutate=function(t){var e,n;return(e=this.mutations).push.apply(e,this.findSignificantMutations(t)),this.mutations.length?(null!=(n=this.delegate)&&\"function\"==typeof n.elementDidMutate&&n.elementDidMutate(this.getMutationSummary()),this.reset()):void 0},c.prototype.reset=function(){return this.mutations=[]},c.prototype.findSignificantMutations=function(t){var e,n,i,o;for(o=[],e=0,n=t.length;n>e;e++)i=t[e],this.mutationIsSignificant(i)&&o.push(i);return o},c.prototype.mutationIsSignificant=function(t){var e,n,i,o;if(this.nodeIsMutable(t.target))return!1;for(o=this.nodesModifiedByMutation(t),e=0,n=o.length;n>e;e++)if(i=o[e],this.nodeIsSignificant(i))return!0;return!1},c.prototype.nodeIsSignificant=function(t){return t!==this.element&&!this.nodeIsMutable(t)&&!i(t)},c.prototype.nodeIsMutable=function(e){return t(e,{matchingSelector:d})},c.prototype.nodesModifiedByMutation=function(t){var e;switch(e=[],t.type){case\"attributes\":t.attributeName!==p&&e.push(t.target);break;case\"characterData\":e.push(t.target.parentNode),e.push(t.target);break;case\"childList\":e.push.apply(e,t.addedNodes),e.push.apply(e,t.removedNodes)}return e},c.prototype.getMutationSummary=function(){return this.getTextMutationSummary()},c.prototype.getTextMutationSummary=function(){var t,e,n,i,o,r,s,a,u,c,h;for(a=this.getTextChangesFromCharacterData(),n=a.additions,o=a.deletions,h=this.getTextChangesFromChildList(),u=h.additions,r=0,s=u.length;s>r;r++)e=u[r],l.call(n,e)<0&&n.push(e);return o.push.apply(o,h.deletions),c={},(t=n.join(\"\"))&&(c.textAdded=t),(i=o.join(\"\"))&&(c.textDeleted=i),c},c.prototype.getMutationsByType=function(t){var e,n,i,o,r;for(o=this.mutations,r=[],e=0,n=o.length;n>e;e++)i=o[e],i.type===t&&r.push(i);return r},c.prototype.getTextChangesFromChildList=function(){var t,e,i,r,s,a,u,c,l,p,d;for(t=[],u=[],a=this.getMutationsByType(\"childList\"),e=0,r=a.length;r>e;e++)s=a[e],t.push.apply(t,s.addedNodes),u.push.apply(u,s.removedNodes);return c=0===t.length&&1===u.length&&n(u[0]),c?(p=[],d=[\"\\n\"]):(p=h(t),d=h(u)),{additions:function(){var t,e,n;for(n=[],i=t=0,e=p.length;e>t;i=++t)l=p[i],l!==d[i]&&n.push(o(l));return n}(),deletions:function(){var t,e,n;for(n=[],i=t=0,e=d.length;e>t;i=++t)l=d[i],l!==p[i]&&n.push(o(l));return n}()}},c.prototype.getTextChangesFromCharacterData=function(){var t,e,n,i,s,a,u,c;return e=this.getMutationsByType(\"characterData\"),e.length&&(c=e[0],n=e[e.length-1],s=o(c.oldValue),i=o(n.target.data),a=r(s,i),t=a.added,u=a.removed),{additions:t?[t]:[],deletions:u?[u]:[]}},h=function(t){var e,n,i,o;for(null==t&&(t=[]),o=[],e=0,n=t.length;n>e;e++)switch(i=t[e],i.nodeType){case Node.TEXT_NODE:o.push(i.data);break;case Node.ELEMENT_NODE:\"br\"===s(i)?o.push(\"\\n\"):o.push.apply(o,h(i.childNodes))}return o},c}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.FileVerificationOperation=function(e){function n(t){this.file=t}return t(n,e),n.prototype.perform=function(t){var e;return e=new FileReader,e.onerror=function(){return t(!1)},e.onload=function(n){return function(){e.onerror=null;try{e.abort()}catch(i){}return t(!0,n.file)}}(this),e.readAsArrayBuffer(this.file)},n}(e.Operation)}.call(this),function(){var t,n,i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;t=e.handleEvent,n=e.innerElementIsActive,e.InputController=function(o){function r(n){var i;this.element=n,this.mutationObserver=new e.MutationObserver(this.element),this.mutationObserver.delegate=this;for(i in this.events)t(i,{onElement:this.element,withCallback:this.handlerFor(i)})}return i(r,o),r.prototype.events={},r.prototype.elementDidMutate=function(){},r.prototype.editorWillSyncDocumentView=function(){return this.mutationObserver.stop()},r.prototype.editorDidSyncDocumentView=function(){return this.mutationObserver.start()},r.prototype.requestRender=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidRequestRender?t.inputControllerDidRequestRender():void 0},r.prototype.requestReparse=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidRequestReparse&&t.inputControllerDidRequestReparse(),this.requestRender()},r.prototype.attachFiles=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(new e.FileVerificationOperation(n));return r}(),Promise.all(i).then(function(t){return function(e){return t.handleInput(function(){var t,n;return null!=(t=this.delegate)&&t.inputControllerWillAttachFiles(),null!=(n=this.responder)&&n.insertFiles(e),this.requestRender()})}}(this))},r.prototype.handlerFor=function(t){return function(e){return function(i){return i.defaultPrevented?void 0:e.handleInput(function(){return n(this.element)?void 0:(this.eventName=t,this.events[t].call(this,i))})}}(this)},r.prototype.handleInput=function(t){var e,n;try{return null!=(e=this.delegate)&&e.inputControllerWillHandleInput(),t.call(this)}finally{null!=(n=this.delegate)&&n.inputControllerDidHandleInput()}},r.prototype.createLinkHTML=function(t,e){var n;return n=document.createElement(\"a\"),n.href=t,n.textContent=null!=e?e:t,n.outerHTML},r}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h,p,d,f=function(t,e){function n(){this.constructor=t}for(var i in e)g.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},g={}.hasOwnProperty,m=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};c=e.makeElement,l=e.objectsAreEqual,d=e.tagName,n=e.browser,a=e.keyEventIsKeyboardCommand,o=e.dataTransferIsWritable,i=e.dataTransferIsPlainText,u=e.config.keyNames,e.Level0InputController=function(n){function s(){s.__super__.constructor.apply(this,arguments),this.resetInputSummary()}var d;return f(s,n),d=0,s.prototype.setInputSummary=function(t){var e,n;null==t&&(t={}),this.inputSummary.eventName=this.eventName;for(e in t)n=t[e],this.inputSummary[e]=n;return this.inputSummary},s.prototype.resetInputSummary=function(){return this.inputSummary={}},s.prototype.reset=function(){return this.resetInputSummary(),e.selectionChangeObserver.reset()},s.prototype.elementDidMutate=function(t){var e;return this.isComposing()?null!=(e=this.delegate)&&\"function\"==typeof e.inputControllerDidAllowUnhandledInput?e.inputControllerDidAllowUnhandledInput():void 0:this.handleInput(function(){return this.mutationIsSignificant(t)&&(this.mutationIsExpected(t)?this.requestRender():this.requestReparse()),this.reset()})},s.prototype.mutationIsExpected=function(t){var e,n,i,o,r,s,a,u,c,l;return a=t.textAdded,u=t.textDeleted,this.inputSummary.preferDocument?!0:(e=null!=a?a===this.inputSummary.textAdded:!this.inputSummary.textAdded,n=null!=u?this.inputSummary.didDelete:!this.inputSummary.didDelete,c=(\"\\n\"===a||\" \\n\"===a)&&!e,l=\"\\n\"===u&&!n,s=c&&!l||l&&!c,s&&(o=this.getSelectedRange())&&(i=c?a.replace(/\\n$/,\"\").length||-1:(null!=a?a.length:void 0)||1,null!=(r=this.responder)?r.positionIsBlockBreak(o[1]+i):void 0)?!0:e&&n)},s.prototype.mutationIsSignificant=function(t){var e,n,i;return i=Object.keys(t).length>0,e=\"\"===(null!=(n=this.compositionInput)?n.getEndData():void 0),i||!e},s.prototype.events={keydown:function(t){var n,i,o,r,s,c,l,h,p;if(this.isComposing()||this.resetInputSummary(),this.inputSummary.didInput=!0,r=u[t.keyCode]){for(i=this.keys,h=[\"ctrl\",\"alt\",\"shift\",\"meta\"],o=0,c=h.length;c>o;o++)l=h[o],t[l+\"Key\"]&&(\"ctrl\"===l&&(l=\"control\"),i=null!=i?i[l]:void 0);null!=(null!=i?i[r]:void 0)&&(this.setInputSummary({keyName:r}),e.selectionChangeObserver.reset(),i[r].call(this,t))}return a(t)&&(n=String.fromCharCode(t.keyCode).toLowerCase())&&(s=function(){var e,n,i,o;for(i=[\"alt\",\"shift\"],o=[],e=0,n=i.length;n>e;e++)l=i[e],t[l+\"Key\"]&&o.push(l);return o}(),s.push(n),null!=(p=this.delegate)?p.inputControllerDidReceiveKeyboardCommand(s):void 0)?t.preventDefault():void 0},keypress:function(t){var e,n,i;if(null==this.inputSummary.eventName&&!t.metaKey&&(!t.ctrlKey||t.altKey))return(i=p(t))?(null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(i),this.setInputSummary({textAdded:i,didDelete:this.selectionIsExpanded()})):void 0},textInput:function(t){var e,n,i,o;return e=t.data,o=this.inputSummary.textAdded,o&&o!==e&&o.toUpperCase()===e?(n=this.getSelectedRange(),this.setSelectedRange([n[0],n[1]+o.length]),null!=(i=this.responder)&&i.insertString(e),this.setInputSummary({textAdded:e}),this.setSelectedRange(n)):void 0},dragenter:function(t){return t.preventDefault()},dragstart:function(t){var e,n;return n=t.target,this.serializeSelectionToDataTransfer(t.dataTransfer),this.draggedRange=this.getSelectedRange(),null!=(e=this.delegate)&&\"function\"==typeof e.inputControllerDidStartDrag?e.inputControllerDidStartDrag():void 0},dragover:function(t){var e,n;return!this.draggedRange&&!this.canAcceptDataTransfer(t.dataTransfer)||(t.preventDefault(),e={x:t.clientX,y:t.clientY},l(e,this.draggingPoint))?void 0:(this.draggingPoint=e,null!=(n=this.delegate)&&\"function\"==typeof n.inputControllerDidReceiveDragOverPoint?n.inputControllerDidReceiveDragOverPoint(this.draggingPoint):void 0)},dragend:function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidCancelDrag&&t.inputControllerDidCancelDrag(),this.draggedRange=null,this.draggingPoint=null},drop:function(t){var n,i,o,r,s,a,u,c,l;return t.preventDefault(),o=null!=(s=t.dataTransfer)?s.files:void 0,r={x:t.clientX,y:t.clientY},null!=(a=this.responder)&&a.setLocationRangeFromPointRange(r),(null!=o?o.length:void 0)?this.attachFiles(o):this.draggedRange?(null!=(u=this.delegate)&&u.inputControllerWillMoveText(),null!=(c=this.responder)&&c.moveTextFromRange(this.draggedRange),this.draggedRange=null,this.requestRender()):(i=t.dataTransfer.getData(\"application/x-trix-document\"))&&(n=e.Document.fromJSONString(i),null!=(l=this.responder)&&l.insertDocument(n),this.requestRender()),this.draggedRange=null,this.draggingPoint=null},cut:function(t){var e,n;return(null!=(e=this.responder)?e.selectionIsExpanded():void 0)&&(this.serializeSelectionToDataTransfer(t.clipboardData)&&t.preventDefault(),null!=(n=this.delegate)&&n.inputControllerWillCutText(),this.deleteInDirection(\"backward\"),t.defaultPrevented)?this.requestRender():void 0},copy:function(t){var e;return(null!=(e=this.responder)?e.selectionIsExpanded():void 0)&&this.serializeSelectionToDataTransfer(t.clipboardData)?t.preventDefault():void 0},paste:function(t){var n,o,s,a,u,c,l,p,f,g,v,y,b,A,C,x,w,E,S,R,k,D,L;return n=null!=(p=t.clipboardData)?p:t.testClipboardData,l={clipboard:n},null==n||h(t)?void this.getPastedHTMLUsingHiddenElement(function(t){return function(e){var n,i,o;return l.type=\"text/html\",l.html=e,null!=(n=t.delegate)&&n.inputControllerWillPaste(l),null!=(i=t.responder)&&i.insertHTML(l.html),t.requestRender(),null!=(o=t.delegate)?o.inputControllerDidPaste(l):void 0}}(this)):((a=n.getData(\"URL\"))?(l.type=\"text/html\",L=(c=n.getData(\"public.url-name\"))?e.squishBreakableWhitespace(c).trim():a,l.html=this.createLinkHTML(a,L),null!=(f=this.delegate)&&f.inputControllerWillPaste(l),this.setInputSummary({textAdded:L,didDelete:this.selectionIsExpanded()}),null!=(C=this.responder)&&C.insertHTML(l.html),this.requestRender(),null!=(x=this.delegate)&&x.inputControllerDidPaste(l)):i(n)?(l.type=\"text/plain\",l.string=n.getData(\"text/plain\"),null!=(w=this.delegate)&&w.inputControllerWillPaste(l),this.setInputSummary({textAdded:l.string,didDelete:this.selectionIsExpanded()}),null!=(E=this.responder)&&E.insertString(l.string),this.requestRender(),null!=(S=this.delegate)&&S.inputControllerDidPaste(l)):(u=n.getData(\"text/html\"))?(l.type=\"text/html\",l.html=u,null!=(R=this.delegate)&&R.inputControllerWillPaste(l),null!=(k=this.responder)&&k.insertHTML(l.html),this.requestRender(),null!=(D=this.delegate)&&D.inputControllerDidPaste(l)):m.call(n.types,\"Files\")>=0&&(s=null!=(g=n.items)&&null!=(v=g[0])&&\"function\"==typeof v.getAsFile?v.getAsFile():void 0)&&(!s.name&&(o=r(s))&&(s.name=\"pasted-file-\"+ ++d+\".\"+o),l.type=\"File\",l.file=s,null!=(y=this.delegate)&&y.inputControllerWillAttachFiles(),null!=(b=this.responder)&&b.insertFile(l.file),this.requestRender(),null!=(A=this.delegate)&&A.inputControllerDidPaste(l)),t.preventDefault())},compositionstart:function(t){return this.getCompositionInput().start(t.data)},compositionupdate:function(t){return this.getCompositionInput().update(t.data)},compositionend:function(t){return this.getCompositionInput().end(t.data)},beforeinput:function(){return this.inputSummary.didInput=!0\n},input:function(t){return this.inputSummary.didInput=!0,t.stopPropagation()}},s.prototype.keys={backspace:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},\"delete\":function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},\"return\":function(){var t,e;return this.setInputSummary({preferDocument:!0}),null!=(t=this.delegate)&&t.inputControllerWillPerformTyping(),null!=(e=this.responder)?e.insertLineBreak():void 0},tab:function(t){var e,n;return(null!=(e=this.responder)?e.canIncreaseNestingLevel():void 0)?(null!=(n=this.responder)&&n.increaseNestingLevel(),this.requestRender(),t.preventDefault()):void 0},left:function(t){var e;return this.selectionIsInCursorTarget()?(t.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"backward\"):void 0):void 0},right:function(t){var e;return this.selectionIsInCursorTarget()?(t.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"forward\"):void 0):void 0},control:{d:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},h:function(t){var e;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},o:function(t){var e,n;return t.preventDefault(),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(\"\\n\",{updatePosition:!1}),this.requestRender()}},shift:{\"return\":function(t){var e,n;return null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.insertString(\"\\n\"),this.requestRender(),t.preventDefault()},tab:function(t){var e,n;return(null!=(e=this.responder)?e.canDecreaseNestingLevel():void 0)?(null!=(n=this.responder)&&n.decreaseNestingLevel(),this.requestRender(),t.preventDefault()):void 0},left:function(t){return this.selectionIsInCursorTarget()?(t.preventDefault(),this.expandSelectionInDirection(\"backward\")):void 0},right:function(t){return this.selectionIsInCursorTarget()?(t.preventDefault(),this.expandSelectionInDirection(\"forward\")):void 0}},alt:{backspace:function(){var t;return this.setInputSummary({preferDocument:!1}),null!=(t=this.delegate)?t.inputControllerWillPerformTyping():void 0}},meta:{backspace:function(){var t;return this.setInputSummary({preferDocument:!1}),null!=(t=this.delegate)?t.inputControllerWillPerformTyping():void 0}}},s.prototype.getCompositionInput=function(){return this.isComposing()?this.compositionInput:this.compositionInput=new t(this)},s.prototype.isComposing=function(){return null!=this.compositionInput&&!this.compositionInput.isEnded()},s.prototype.deleteInDirection=function(t,e){var n;return(null!=(n=this.responder)?n.deleteInDirection(t):void 0)!==!1?this.setInputSummary({didDelete:!0}):e?(e.preventDefault(),this.requestRender()):void 0},s.prototype.serializeSelectionToDataTransfer=function(t){var n,i;if(o(t))return n=null!=(i=this.responder)?i.getSelectedDocument().toSerializableDocument():void 0,t.setData(\"application/x-trix-document\",JSON.stringify(n)),t.setData(\"text/html\",e.DocumentView.render(n).innerHTML),t.setData(\"text/plain\",n.toString().replace(/\\n$/,\"\")),!0},s.prototype.canAcceptDataTransfer=function(t){var e,n,i,o,r,s;for(s={},o=null!=(i=null!=t?t.types:void 0)?i:[],e=0,n=o.length;n>e;e++)r=o[e],s[r]=!0;return s.Files||s[\"application/x-trix-document\"]||s[\"text/html\"]||s[\"text/plain\"]},s.prototype.getPastedHTMLUsingHiddenElement=function(t){var n,i,o;return i=this.getSelectedRange(),o={position:\"absolute\",left:window.pageXOffset+\"px\",top:window.pageYOffset+\"px\",opacity:0},n=c({style:o,tagName:\"div\",editable:!0}),document.body.appendChild(n),n.focus(),requestAnimationFrame(function(o){return function(){var r;return r=n.innerHTML,e.removeNode(n),o.setSelectedRange(i),t(r)}}(this))},s.proxyMethod(\"responder?.getSelectedRange\"),s.proxyMethod(\"responder?.setSelectedRange\"),s.proxyMethod(\"responder?.expandSelectionInDirection\"),s.proxyMethod(\"responder?.selectionIsInCursorTarget\"),s.proxyMethod(\"responder?.selectionIsExpanded\"),s}(e.InputController),r=function(t){var e,n;return null!=(e=t.type)&&null!=(n=e.match(/\\/(\\w+)$/))?n[1]:void 0},s=null!=(\"function\"==typeof\" \".codePointAt?\" \".codePointAt(0):void 0),p=function(t){var n;return t.key&&s&&t.key.codePointAt(0)===t.keyCode?t.key:(null===t.which?n=t.keyCode:0!==t.which&&0!==t.charCode&&(n=t.charCode),null!=n&&\"escape\"!==u[n]?e.UTF16String.fromCodepoints([n]).toString():void 0)},h=function(t){var e,n,i,o,r,s,a,u,c,l;if(u=t.clipboardData){if(m.call(u.types,\"text/html\")>=0){for(c=u.types,i=0,s=c.length;s>i;i++)if(l=c[i],e=/^CorePasteboardFlavorType/.test(l),n=/^dyn\\./.test(l)&&u.getData(l),a=e||n)return!0;return!1}return o=m.call(u.types,\"com.apple.webarchive\")>=0,r=m.call(u.types,\"com.apple.flat-rtfd\")>=0,o||r}},t=function(t){function e(t){var e;this.inputController=t,e=this.inputController,this.responder=e.responder,this.delegate=e.delegate,this.inputSummary=e.inputSummary,this.data={}}return f(e,t),e.prototype.start=function(t){var e,n;return this.data.start=t,this.isSignificant()?(\"keypress\"===this.inputSummary.eventName&&this.inputSummary.textAdded&&null!=(e=this.responder)&&e.deleteInDirection(\"left\"),this.selectionIsExpanded()||(this.insertPlaceholder(),this.requestRender()),this.range=null!=(n=this.responder)?n.getSelectedRange():void 0):void 0},e.prototype.update=function(t){var e;return this.data.update=t,this.isSignificant()&&(e=this.selectPlaceholder())?(this.forgetPlaceholder(),this.range=e):void 0},e.prototype.end=function(t){var e,n,i,o;return this.data.end=t,this.isSignificant()?(this.forgetPlaceholder(),this.canApplyToDocument()?(this.setInputSummary({preferDocument:!0,didInput:!1}),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.setSelectedRange(this.range),null!=(i=this.responder)&&i.insertString(this.data.end),null!=(o=this.responder)?o.setSelectedRange(this.range[0]+this.data.end.length):void 0):null!=this.data.start||null!=this.data.update?(this.requestReparse(),this.inputController.reset()):void 0):this.inputController.reset()},e.prototype.getEndData=function(){return this.data.end},e.prototype.isEnded=function(){return null!=this.getEndData()},e.prototype.isSignificant=function(){return n.composesExistingText?this.inputSummary.didInput:!0},e.prototype.canApplyToDocument=function(){var t,e;return 0===(null!=(t=this.data.start)?t.length:void 0)&&(null!=(e=this.data.end)?e.length:void 0)>0&&null!=this.range},e.proxyMethod(\"inputController.setInputSummary\"),e.proxyMethod(\"inputController.requestRender\"),e.proxyMethod(\"inputController.requestReparse\"),e.proxyMethod(\"responder?.selectionIsExpanded\"),e.proxyMethod(\"responder?.insertPlaceholder\"),e.proxyMethod(\"responder?.selectPlaceholder\"),e.proxyMethod(\"responder?.forgetPlaceholder\"),e}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.dataTransferIsPlainText,n=e.keyEventIsKeyboardCommand,i=e.objectsAreEqual,e.Level2InputController=function(s){function u(){return this.render=o(this.render,this),u.__super__.constructor.apply(this,arguments)}var c,l,h,p,d,f;return r(u,s),u.prototype.elementDidMutate=function(){var t;return this.scheduledRender?this.composing&&null!=(t=this.delegate)&&\"function\"==typeof t.inputControllerDidAllowUnhandledInput?t.inputControllerDidAllowUnhandledInput():void 0:this.reparse()},u.prototype.scheduleRender=function(){return null!=this.scheduledRender?this.scheduledRender:this.scheduledRender=requestAnimationFrame(this.render)},u.prototype.render=function(){var t;return cancelAnimationFrame(this.scheduledRender),this.scheduledRender=null,this.composing||null!=(t=this.delegate)&&t.render(),\"function\"==typeof this.afterRender&&this.afterRender(),this.afterRender=null},u.prototype.reparse=function(){var t;return null!=(t=this.delegate)?t.reparse():void 0},u.prototype.events={keydown:function(t){var e,i,o,r;if(n(t)){if(e=l(t),null!=(r=this.delegate)?r.inputControllerDidReceiveKeyboardCommand(e):void 0)return t.preventDefault()}else if(o=t.key,t.altKey&&(o+=\"+Alt\"),t.shiftKey&&(o+=\"+Shift\"),i=this.keys[o])return this.withEvent(t,i)},paste:function(t){var e,n,i,o,r,s,a,u,c;return h(t)?(t.preventDefault(),this.attachFiles(t.clipboardData.files)):p(t)?(t.preventDefault(),n={type:\"text/plain\",string:t.clipboardData.getData(\"text/plain\")},null!=(i=this.delegate)&&i.inputControllerWillPaste(n),null!=(o=this.responder)&&o.insertString(n.string),this.render(),null!=(r=this.delegate)?r.inputControllerDidPaste(n):void 0):(e=null!=(s=t.clipboardData)?s.getData(\"URL\"):void 0)?(t.preventDefault(),n={type:\"text/html\",html:this.createLinkHTML(e)},null!=(a=this.delegate)&&a.inputControllerWillPaste(n),null!=(u=this.responder)&&u.insertHTML(n.html),this.render(),null!=(c=this.delegate)?c.inputControllerDidPaste(n):void 0):void 0},beforeinput:function(t){var e;return(e=this.inputTypes[t.inputType])?(this.withEvent(t,e),this.scheduleRender()):void 0},input:function(){return e.selectionChangeObserver.reset()},dragstart:function(t){var e,n;return(null!=(e=this.responder)?e.selectionContainsAttachments():void 0)?(t.dataTransfer.setData(\"application/x-trix-dragging\",!0),this.dragging={range:null!=(n=this.responder)?n.getSelectedRange():void 0,point:d(t)}):void 0},dragenter:function(t){return c(t)?t.preventDefault():void 0},dragover:function(t){var e,n;if(this.dragging){if(t.preventDefault(),e=d(t),!i(e,this.dragging.point))return this.dragging.point=e,null!=(n=this.responder)?n.setLocationRangeFromPointRange(e):void 0}else if(c(t))return t.preventDefault()},drop:function(t){var e,n,i,o;return this.dragging?(t.preventDefault(),null!=(n=this.delegate)&&n.inputControllerWillMoveText(),null!=(i=this.responder)&&i.moveTextFromRange(this.dragging.range),this.dragging=null,this.scheduleRender()):c(t)?(t.preventDefault(),e=d(t),null!=(o=this.responder)&&o.setLocationRangeFromPointRange(e),this.attachFiles(t.dataTransfer.files)):void 0},dragend:function(){var t;return this.dragging?(null!=(t=this.responder)&&t.setSelectedRange(this.dragging.range),this.dragging=null):void 0},compositionend:function(){return this.composing?(this.composing=!1,this.scheduleRender()):void 0}},u.prototype.keys={ArrowLeft:function(){var t,e;return(null!=(t=this.responder)?t.shouldManageMovingCursorInDirection(\"backward\"):void 0)?(this.event.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"backward\"):void 0):void 0},ArrowRight:function(){var t,e;return(null!=(t=this.responder)?t.shouldManageMovingCursorInDirection(\"forward\"):void 0)?(this.event.preventDefault(),null!=(e=this.responder)?e.moveCursorInDirection(\"forward\"):void 0):void 0},Backspace:function(){var t,e,n;return(null!=(t=this.responder)?t.shouldManageDeletingInDirection(\"backward\"):void 0)?(this.event.preventDefault(),null!=(e=this.delegate)&&e.inputControllerWillPerformTyping(),null!=(n=this.responder)&&n.deleteInDirection(\"backward\"),this.render()):void 0},Tab:function(){var t,e;return(null!=(t=this.responder)?t.canIncreaseNestingLevel():void 0)?(this.event.preventDefault(),null!=(e=this.responder)&&e.increaseNestingLevel(),this.render()):void 0},\"Tab+Shift\":function(){var t,e;return(null!=(t=this.responder)?t.canDecreaseNestingLevel():void 0)?(this.event.preventDefault(),null!=(e=this.responder)&&e.decreaseNestingLevel(),this.render()):void 0}},u.prototype.inputTypes={deleteByComposition:function(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteByCut:function(){return this.deleteInDirection(\"backward\")},deleteByDrag:function(){return this.event.preventDefault(),this.withTargetDOMRange(function(){var t;return this.deleteByDragRange=null!=(t=this.responder)?t.getSelectedRange():void 0})},deleteCompositionText:function(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteContent:function(){return this.deleteInDirection(\"backward\")},deleteContentBackward:function(){return this.deleteInDirection(\"backward\")},deleteContentForward:function(){return this.deleteInDirection(\"forward\")},deleteEntireSoftLine:function(){return this.deleteInDirection(\"forward\")},deleteHardLineBackward:function(){return this.deleteInDirection(\"backward\")},deleteHardLineForward:function(){return this.deleteInDirection(\"forward\")},deleteSoftLineBackward:function(){return this.deleteInDirection(\"backward\")},deleteSoftLineForward:function(){return this.deleteInDirection(\"forward\")},deleteWordBackward:function(){return this.deleteInDirection(\"backward\")},deleteWordForward:function(){return this.deleteInDirection(\"forward\")},formatBackColor:function(){return this.activateAttributeIfSupported(\"backgroundColor\",this.event.data)},formatBold:function(){return this.toggleAttributeIfSupported(\"bold\")},formatFontColor:function(){return this.activateAttributeIfSupported(\"color\",this.event.data)},formatFontName:function(){return this.activateAttributeIfSupported(\"font\",this.event.data)},formatIndent:function(){var t;return(null!=(t=this.responder)?t.canIncreaseNestingLevel():void 0)?this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.increaseNestingLevel():void 0}):void 0},formatItalic:function(){return this.toggleAttributeIfSupported(\"italic\")},formatJustifyCenter:function(){return this.toggleAttributeIfSupported(\"justifyCenter\")},formatJustifyFull:function(){return this.toggleAttributeIfSupported(\"justifyFull\")},formatJustifyLeft:function(){return this.toggleAttributeIfSupported(\"justifyLeft\")},formatJustifyRight:function(){return this.toggleAttributeIfSupported(\"justifyRight\")},formatOutdent:function(){var t;return(null!=(t=this.responder)?t.canDecreaseNestingLevel():void 0)?this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.decreaseNestingLevel():void 0}):void 0},formatRemove:function(){return this.withTargetDOMRange(function(){var t,e,n,i;i=[];for(t in null!=(e=this.responder)?e.getCurrentAttributes():void 0)i.push(null!=(n=this.responder)?n.removeCurrentAttribute(t):void 0);return i})},formatSetBlockTextDirection:function(){return this.activateAttributeIfSupported(\"blockDir\",this.event.data)},formatSetInlineTextDirection:function(){return this.activateAttributeIfSupported(\"textDir\",this.event.data)},formatStrikeThrough:function(){return this.toggleAttributeIfSupported(\"strike\")},formatSubscript:function(){return this.toggleAttributeIfSupported(\"sub\")},formatSuperscript:function(){return this.toggleAttributeIfSupported(\"sup\")},formatUnderline:function(){return this.toggleAttributeIfSupported(\"underline\")},historyRedo:function(){var t;return null!=(t=this.delegate)?t.inputControllerWillPerformRedo():void 0},historyUndo:function(){var t;return null!=(t=this.delegate)?t.inputControllerWillPerformUndo():void 0},insertCompositionText:function(){return this.composing=!0,this.insertString(this.event.data)},insertFromComposition:function(){return this.composing=!1,this.insertString(this.event.data)},insertFromDrop:function(){var t,e;return(t=this.deleteByDragRange)?(this.deleteByDragRange=null,null!=(e=this.delegate)&&e.inputControllerWillMoveText(),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.moveTextFromRange(t):void 0})):void 0},insertFromPaste:function(){var n,i,o,r,s,a,u,c,l,h,p;return n=this.event.dataTransfer,s={dataTransfer:n},(i=n.getData(\"URL\"))?(this.event.preventDefault(),s.type=\"text/html\",p=(r=n.getData(\"public.url-name\"))?e.squishBreakableWhitespace(r).trim():i,s.html=this.createLinkHTML(i,p),null!=(a=this.delegate)&&a.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertHTML(s.html):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):t(n)?(s.type=\"text/plain\",s.string=n.getData(\"text/plain\"),null!=(u=this.delegate)&&u.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertString(s.string):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):(o=n.getData(\"text/html\"))?(this.event.preventDefault(),s.type=\"text/html\",s.html=o,null!=(c=this.delegate)&&c.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertHTML(s.html):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):(null!=(l=n.files)?l.length:void 0)?(s.type=\"File\",s.file=n.files[0],null!=(h=this.delegate)&&h.inputControllerWillPaste(s),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertFile(s.file):void 0}),this.afterRender=function(t){return function(){var e;return null!=(e=t.delegate)?e.inputControllerDidPaste(s):void 0}}(this)):void 0},insertFromYank:function(){return this.insertString(this.event.data)},insertLineBreak:function(){return this.insertString(\"\\n\")},insertLink:function(){return this.activateAttributeIfSupported(\"href\",this.event.data)},insertOrderedList:function(){return this.toggleAttributeIfSupported(\"number\")},insertParagraph:function(){var t;return null!=(t=this.delegate)&&t.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var t;return null!=(t=this.responder)?t.insertLineBreak():void 0})},insertReplacementText:function(){return this.insertString(this.event.dataTransfer.getData(\"text/plain\"),{updatePosition:!1})},insertText:function(){var t,e;return this.insertString(null!=(t=this.event.data)?t:null!=(e=this.event.dataTransfer)?e.getData(\"text/plain\"):void 0)},insertTranspose:function(){return this.insertString(this.event.data)},insertUnorderedList:function(){return this.toggleAttributeIfSupported(\"bullet\")}},u.prototype.insertString=function(t,e){var n;return null==t&&(t=\"\"),null!=(n=this.delegate)&&n.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var n;return null!=(n=this.responder)?n.insertString(t,e):void 0})},u.prototype.toggleAttributeIfSupported=function(t){var n;return a.call(e.getAllAttributeNames(),t)>=0?(null!=(n=this.delegate)&&n.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.toggleCurrentAttribute(t):void 0})):void 0},u.prototype.activateAttributeIfSupported=function(t,n){var i;return a.call(e.getAllAttributeNames(),t)>=0?(null!=(i=this.delegate)&&i.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var e;return null!=(e=this.responder)?e.setCurrentAttribute(t,n):void 0})):void 0},u.prototype.deleteInDirection=function(t,e){var n,i,o,r;return o=(null!=e?e:{recordUndoEntry:!0}).recordUndoEntry,o&&null!=(r=this.delegate)&&r.inputControllerWillPerformTyping(),i=function(e){return function(){var n;return null!=(n=e.responder)?n.deleteInDirection(t):void 0}}(this),(n=this.getTargetDOMRange({minLength:2}))?this.withTargetDOMRange(n,i):i()},u.prototype.withTargetDOMRange=function(t,n){var i;return\"function\"==typeof t&&(n=t,t=this.getTargetDOMRange()),t?null!=(i=this.responder)?i.withTargetDOMRange(t,n.bind(this)):void 0:(e.selectionChangeObserver.reset(),n.call(this))},u.prototype.getTargetDOMRange=function(t){var e,n,i,o;return i=(null!=t?t:{minLength:0}).minLength,(o=\"function\"==typeof(e=this.event).getTargetRanges?e.getTargetRanges():void 0)&&o.length&&(n=f(o[0]),0===i||n.toString().length>=i)?n:void 0},f=function(t){var e;return e=document.createRange(),e.setStart(t.startContainer,t.startOffset),e.setEnd(t.endContainer,t.endOffset),e},u.prototype.withEvent=function(t,e){var n;this.event=t;try{n=e.call(this)}finally{this.event=null}return n},c=function(t){var e,n;return a.call(null!=(e=null!=(n=t.dataTransfer)?n.types:void 0)?e:[],\"Files\")>=0},h=function(t){var e;return(e=t.clipboardData)?a.call(e.types,\"Files\")>=0&&1===e.types.length&&e.files.length>=1:void 0},p=function(t){var e;return(e=t.clipboardData)?a.call(e.types,\"text/plain\")>=0&&1===e.types.length:void 0},l=function(t){var e;return e=[],t.altKey&&e.push(\"alt\"),t.shiftKey&&e.push(\"shift\"),e.push(t.key),e},d=function(t){return{x:t.clientX,y:t.clientY}},u}(e.InputController)}.call(this),function(){var t,n,i,o,r,s,a,u,c=function(t,e){return function(){return t.apply(e,arguments)}},l=function(t,e){function n(){this.constructor=t}for(var i in e)h.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},h={}.hasOwnProperty;n=e.defer,i=e.handleEvent,s=e.makeElement,u=e.tagName,a=e.config,r=a.lang,t=a.css,o=a.keyNames,e.AttachmentEditorController=function(a){function h(t,e,n,i){this.attachmentPiece=t,this.element=e,this.container=n,this.options=null!=i?i:{},this.didBlurCaption=c(this.didBlurCaption,this),this.didChangeCaption=c(this.didChangeCaption,this),this.didInputCaption=c(this.didInputCaption,this),this.didKeyDownCaption=c(this.didKeyDownCaption,this),this.didClickActionButton=c(this.didClickActionButton,this),this.didClickToolbar=c(this.didClickToolbar,this),this.attachment=this.attachmentPiece.attachment,\"a\"===u(this.element)&&(this.element=this.element.firstChild),this.install()}var p;return l(h,a),p=function(t){return function(){var e;return e=t.apply(this,arguments),e[\"do\"](),null==this.undos&&(this.undos=[]),this.undos.push(e.undo)}},h.prototype.install=function(){return this.makeElementMutable(),this.addToolbar(),this.attachment.isPreviewable()?this.installCaptionEditor():void 0},h.prototype.uninstall=function(){var t,e;for(this.savePendingCaption();e=this.undos.pop();)e();return null!=(t=this.delegate)?t.didUninstallAttachmentEditor(this):void 0},h.prototype.savePendingCaption=function(){var t,e,n;return null!=this.pendingCaption?(t=this.pendingCaption,this.pendingCaption=null,t?null!=(e=this.delegate)&&\"function\"==typeof e.attachmentEditorDidRequestUpdatingAttributesForAttachment?e.attachmentEditorDidRequestUpdatingAttributesForAttachment({caption:t},this.attachment):void 0:null!=(n=this.delegate)&&\"function\"==typeof n.attachmentEditorDidRequestRemovingAttributeForAttachment?n.attachmentEditorDidRequestRemovingAttributeForAttachment(\"caption\",this.attachment):void 0):void 0},h.prototype.makeElementMutable=p(function(){return{\"do\":function(t){return function(){return t.element.dataset.trixMutable=!0}}(this),undo:function(t){return function(){return delete t.element.dataset.trixMutable}}(this)}}),h.prototype.addToolbar=p(function(){var n;return n=s({tagName:\"div\",className:t.attachmentToolbar,data:{trixMutable:!0},childNodes:s({tagName:\"div\",className:\"trix-button-row\",childNodes:s({tagName:\"span\",className:\"trix-button-group trix-button-group--actions\",childNodes:s({tagName:\"button\",className:\"trix-button trix-button--remove\",textContent:r.remove,attributes:{title:r.remove},data:{trixAction:\"remove\"}})})})}),this.attachment.isPreviewable()&&n.appendChild(s({tagName:\"div\",className:t.attachmentMetadataContainer,childNodes:s({tagName:\"span\",className:t.attachmentMetadata,childNodes:[s({tagName:\"span\",className:t.attachmentName,textContent:this.attachment.getFilename(),attributes:{title:this.attachment.getFilename()}}),s({tagName:\"span\",className:t.attachmentSize,textContent:this.attachment.getFormattedFilesize()})]})})),i(\"click\",{onElement:n,withCallback:this.didClickToolbar}),i(\"click\",{onElement:n,matchingSelector:\"[data-trix-action]\",withCallback:this.didClickActionButton}),{\"do\":function(t){return function(){return t.element.appendChild(n)}}(this),undo:function(){return function(){return e.removeNode(n)}}(this)}}),h.prototype.installCaptionEditor=p(function(){var o,a,u,c,l;return c=s({tagName:\"textarea\",className:t.attachmentCaptionEditor,attributes:{placeholder:r.captionPlaceholder},data:{trixMutable:!0}}),c.value=this.attachmentPiece.getCaption(),l=c.cloneNode(),l.classList.add(\"trix-autoresize-clone\"),l.tabIndex=-1,o=function(){return l.value=c.value,c.style.height=l.scrollHeight+\"px\"},i(\"input\",{onElement:c,withCallback:o}),i(\"input\",{onElement:c,withCallback:this.didInputCaption}),i(\"keydown\",{onElement:c,withCallback:this.didKeyDownCaption}),i(\"change\",{onElement:c,withCallback:this.didChangeCaption}),i(\"blur\",{onElement:c,withCallback:this.didBlurCaption}),u=this.element.querySelector(\"figcaption\"),a=u.cloneNode(),{\"do\":function(e){return function(){return u.style.display=\"none\",a.appendChild(c),a.appendChild(l),a.classList.add(t.attachmentCaption+\"--editing\"),u.parentElement.insertBefore(a,u),o(),e.options.editCaption?n(function(){return c.focus()}):void 0}}(this),undo:function(){return e.removeNode(a),u.style.display=null}}}),h.prototype.didClickToolbar=function(t){return t.preventDefault(),t.stopPropagation()},h.prototype.didClickActionButton=function(t){var e,n;switch(e=t.target.getAttribute(\"data-trix-action\")){case\"remove\":return null!=(n=this.delegate)?n.attachmentEditorDidRequestRemovalOfAttachment(this.attachment):void 0}},h.prototype.didKeyDownCaption=function(t){var e;return\"return\"===o[t.keyCode]?(t.preventDefault(),this.savePendingCaption(),null!=(e=this.delegate)&&\"function\"==typeof e.attachmentEditorDidRequestDeselectingAttachment?e.attachmentEditorDidRequestDeselectingAttachment(this.attachment):void 0):void 0},h.prototype.didInputCaption=function(t){return this.pendingCaption=t.target.value.replace(/\\s/g,\" \").trim()},h.prototype.didChangeCaption=function(){return this.savePendingCaption()},h.prototype.didBlurCaption=function(){return this.savePendingCaption()},h}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,t=e.config.css,e.AttachmentView=function(r){function s(){s.__super__.constructor.apply(this,arguments),this.attachment=this.object,this.attachment.uploadProgressDelegate=this,this.attachmentPiece=this.options.piece}var a;return o(s,r),s.attachmentSelector=\"[data-trix-attachment]\",s.prototype.createContentNodes=function(){return[]},s.prototype.createNodes=function(){var e,n,o,r,s,u,c;if(e=r=i({tagName:\"figure\",className:this.getClassName(),data:this.getData(),editable:!1}),(n=this.getHref())&&(r=i({tagName:\"a\",editable:!1,attributes:{href:n,tabindex:-1}}),e.appendChild(r)),this.attachment.hasContent())r.innerHTML=this.attachment.getContent();else for(c=this.createContentNodes(),o=0,s=c.length;s>o;o++)u=c[o],r.appendChild(u);return r.appendChild(this.createCaptionElement()),this.attachment.isPending()&&(this.progressElement=i({tagName:\"progress\",attributes:{\"class\":t.attachmentProgress,value:this.attachment.getUploadProgress(),max:100},data:{trixMutable:!0,trixStoreKey:[\"progressElement\",this.attachment.id].join(\"/\")}}),e.appendChild(this.progressElement)),[a(\"left\"),e,a(\"right\")]},s.prototype.createCaptionElement=function(){var e,n,o,r,s,a,u;return o=i({tagName:\"figcaption\",className:t.attachmentCaption}),(e=this.attachmentPiece.getCaption())?(o.classList.add(t.attachmentCaption+\"--edited\"),o.textContent=e):(n=this.getCaptionConfig(),n.name&&(r=this.attachment.getFilename()),n.size&&(a=this.attachment.getFormattedFilesize()),r&&(s=i({tagName:\"span\",className:t.attachmentName,textContent:r}),o.appendChild(s)),a&&(r&&o.appendChild(document.createTextNode(\" \")),u=i({tagName:\"span\",className:t.attachmentSize,textContent:a}),o.appendChild(u))),o},s.prototype.getClassName=function(){var e,n;return n=[t.attachment,t.attachment+\"--\"+this.attachment.getType()],(e=this.attachment.getExtension())&&n.push(t.attachment+\"--\"+e),n.join(\" \")},s.prototype.getData=function(){var t,e;return e={trixAttachment:JSON.stringify(this.attachment),trixContentType:this.attachment.getContentType(),trixId:this.attachment.id},t=this.attachmentPiece.attributes,t.isEmpty()||(e.trixAttributes=JSON.stringify(t)),this.attachment.isPending()&&(e.trixSerialize=!1),e},s.prototype.getHref=function(){return n(this.attachment.getContent(),\"a\")?void 0:this.attachment.getHref()},s.prototype.getCaptionConfig=function(){var t,n,i;return i=this.attachment.getType(),t=e.copyObject(null!=(n=e.config.attachments[i])?n.caption:void 0),\"file\"===i&&(t.name=!0),t},s.prototype.findProgressElement=function(){var t;return null!=(t=this.findElement())?t.querySelector(\"progress\"):void 0},a=function(t){return i({tagName:\"span\",textContent:e.ZERO_WIDTH_SPACE,data:{trixCursorTarget:t,trixSerialize:!1}})},s.prototype.attachmentDidChangeUploadProgress=function(){var t,e;return e=this.attachment.getUploadProgress(),null!=(t=this.findProgressElement())?t.value=e:void 0},s}(e.ObjectView),n=function(t,e){var n;return n=i(\"div\"),n.innerHTML=null!=t?t:\"\",n.querySelector(e)}}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.makeElement,e.PreviewableAttachmentView=function(i){function o(){o.__super__.constructor.apply(this,arguments),this.attachment.previewDelegate=this}return n(o,i),o.prototype.createContentNodes=function(){return this.image=t({tagName:\"img\",attributes:{src:\"\"},data:{trixMutable:!0}}),this.refresh(this.image),[this.image]},o.prototype.createCaptionElement=function(){var t;return t=o.__super__.createCaptionElement.apply(this,arguments),t.textContent||t.setAttribute(\"data-trix-placeholder\",e.config.lang.captionPlaceholder),t},o.prototype.refresh=function(t){var e;return null==t&&(t=null!=(e=this.findElement())?e.querySelector(\"img\"):void 0),t?this.updateAttributesForImage(t):void 0},o.prototype.updateAttributesForImage=function(t){var e,n,i,o,r,s;return r=this.attachment.getURL(),n=this.attachment.getPreviewURL(),t.src=n||r,n===r?t.removeAttribute(\"data-trix-serialized-attributes\"):(i=JSON.stringify({src:r}),t.setAttribute(\"data-trix-serialized-attributes\",i)),s=this.attachment.getWidth(),e=this.attachment.getHeight(),null!=s&&(t.width=s),null!=e&&(t.height=e),o=[\"imageElement\",this.attachment.id,t.src,t.width,t.height].join(\"/\"),t.dataset.trixStoreKey=o},o.prototype.attachmentDidChangeAttributes=function(){return this.refresh(this.image),this.refresh()},o}(e.AttachmentView)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,t=e.findInnerElement,n=e.getTextConfig,e.PieceView=function(r){function s(){var t;s.__super__.constructor.apply(this,arguments),this.piece=this.object,this.attributes=this.piece.getAttributes(),t=this.options,this.textConfig=t.textConfig,this.context=t.context,this.piece.attachment?this.attachment=this.piece.attachment:this.string=this.piece.toString()}var a;return o(s,r),s.prototype.createNodes=function(){var e,n,i,o,r,s;if(s=this.attachment?this.createAttachmentNodes():this.createStringNodes(),e=this.createElement()){for(i=t(e),n=0,o=s.length;o>n;n++)r=s[n],i.appendChild(r);s=[e]}return s},s.prototype.createAttachmentNodes=function(){var t,n;return t=this.attachment.isPreviewable()?e.PreviewableAttachmentView:e.AttachmentView,n=this.createChildView(t,this.piece.attachment,{piece:this.piece}),n.getNodes()},s.prototype.createStringNodes=function(){var t,e,n,o,r,s,a,u,c,l;if(null!=(u=this.textConfig)?u.plaintext:void 0)return[document.createTextNode(this.string)];for(a=[],c=this.string.split(\"\\n\"),n=e=0,o=c.length;o>e;n=++e)l=c[n],n>0&&(t=i(\"br\"),a.push(t)),(r=l.length)&&(s=document.createTextNode(this.preserveSpaces(l)),a.push(s));return a},s.prototype.createElement=function(){var t,e,o,r,s,a,u,c,l;c={},a=this.attributes;for(r in a)if(l=a[r],(t=n(r))&&(t.tagName&&(s=i(t.tagName),o?(o.appendChild(s),o=s):e=o=s),t.styleProperty&&(c[t.styleProperty]=l),t.style)){u=t.style;for(r in u)l=u[r],c[r]=l}if(Object.keys(c).length){null==e&&(e=i(\"span\"));for(r in c)l=c[r],e.style[r]=l}return e},s.prototype.createContainerElement=function(){var t,e,o,r,s;r=this.attributes;for(o in r)if(s=r[o],(e=n(o))&&e.groupTagName)return t={},t[o]=s,i(e.groupTagName,t)},a=e.NON_BREAKING_SPACE,s.prototype.preserveSpaces=function(t){return this.context.isLast&&(t=t.replace(/\\ $/,a)),t=t.replace(/(\\S)\\ {3}(\\S)/g,\"$1 \"+a+\" $2\").replace(/\\ {2}/g,a+\" \").replace(/\\ {2}/g,\" \"+a),(this.context.isFirst||this.context.followsWhitespace)&&(t=t.replace(/^\\ /,a)),t},s}(e.ObjectView)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t\n}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.TextView=function(n){function i(){i.__super__.constructor.apply(this,arguments),this.text=this.object,this.textConfig=this.options.textConfig}var o;return t(i,n),i.prototype.createNodes=function(){var t,n,i,r,s,a,u,c,l,h;for(a=[],c=e.ObjectGroup.groupObjects(this.getPieces()),r=c.length-1,i=n=0,s=c.length;s>n;i=++n)u=c[i],t={},0===i&&(t.isFirst=!0),i===r&&(t.isLast=!0),o(l)&&(t.followsWhitespace=!0),h=this.findOrCreateCachedChildView(e.PieceView,u,{textConfig:this.textConfig,context:t}),a.push.apply(a,h.getNodes()),l=u;return a},i.prototype.getPieces=function(){var t,e,n,i,o;for(i=this.text.getPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],n.hasAttribute(\"blockBreak\")||o.push(n);return o},o=function(t){return/\\s$/.test(null!=t?t.toString():void 0)},i}(e.ObjectView)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;i=e.makeElement,n=e.getBlockConfig,t=e.config.css,e.BlockView=function(r){function s(){s.__super__.constructor.apply(this,arguments),this.block=this.object,this.attributes=this.block.getAttributes()}return o(s,r),s.prototype.createNodes=function(){var t,o,r,s,a,u,c,l,h,p,d;if(o=document.createComment(\"block\"),c=[o],this.block.isEmpty()?c.push(i(\"br\")):(p=null!=(l=n(this.block.getLastAttribute()))?l.text:void 0,d=this.findOrCreateCachedChildView(e.TextView,this.block.text,{textConfig:p}),c.push.apply(c,d.getNodes()),this.shouldAddExtraNewlineElement()&&c.push(i(\"br\"))),this.attributes.length)return c;for(h=e.config.blockAttributes[\"default\"].tagName,this.block.isRTL()&&(t={dir:\"rtl\"}),r=i({tagName:h,attributes:t}),s=0,a=c.length;a>s;s++)u=c[s],r.appendChild(u);return[r]},s.prototype.createContainerElement=function(e){var o,r,s,a,u;return o=this.attributes[e],u=n(o).tagName,0===e&&this.block.isRTL()&&(r={dir:\"rtl\"}),\"attachmentGallery\"===o&&(a=this.block.getBlockBreakPosition(),s=t.attachmentGallery+\" \"+t.attachmentGallery+\"--\"+a),i({tagName:u,className:s,attributes:r})},s.prototype.shouldAddExtraNewlineElement=function(){return/\\n\\n$/.test(this.block.toString())},s}(e.ObjectView)}.call(this),function(){var t,n,i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty;t=e.defer,n=e.makeElement,e.DocumentView=function(o){function r(){r.__super__.constructor.apply(this,arguments),this.element=this.options.element,this.elementStore=new e.ElementStore,this.setDocument(this.object)}var s,a,u;return i(r,o),r.render=function(t){var e,i;return e=n(\"div\"),i=new this(t,{element:e}),i.render(),i.sync(),e},r.prototype.setDocument=function(t){return t.isEqualTo(this.document)?void 0:this.document=this.object=t},r.prototype.render=function(){var t,i,o,r,s,a,u;if(this.childViews=[],this.shadowElement=n(\"div\"),!this.document.isEmpty()){for(s=e.ObjectGroup.groupObjects(this.document.getBlocks(),{asTree:!0}),a=[],t=0,i=s.length;i>t;t++)r=s[t],u=this.findOrCreateCachedChildView(e.BlockView,r),a.push(function(){var t,e,n,i;for(n=u.getNodes(),i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(this.shadowElement.appendChild(o));return i}.call(this));return a}},r.prototype.isSynced=function(){return s(this.shadowElement,this.element)},r.prototype.sync=function(){var t;for(t=this.createDocumentFragmentForSync();this.element.lastChild;)this.element.removeChild(this.element.lastChild);return this.element.appendChild(t),this.didSync()},r.prototype.didSync=function(){return this.elementStore.reset(a(this.element)),t(function(t){return function(){return t.garbageCollectCachedViews()}}(this))},r.prototype.createDocumentFragmentForSync=function(){var t,e,n,i,o,r,s,u,c,l;for(e=document.createDocumentFragment(),u=this.shadowElement.childNodes,n=0,o=u.length;o>n;n++)s=u[n],e.appendChild(s.cloneNode(!0));for(c=a(e),i=0,r=c.length;r>i;i++)t=c[i],(l=this.elementStore.remove(t))&&t.parentNode.replaceChild(l,t);return e},a=function(t){return t.querySelectorAll(\"[data-trix-store-key]\")},s=function(t,e){return u(t.innerHTML)===u(e.innerHTML)},u=function(t){return t.replace(/&nbsp;/g,\" \")},r}(e.ObjectView)}.call(this),function(){var t,n,i,o,r,s=function(t,e){return function(){return t.apply(e,arguments)}},a=function(t,e){function n(){this.constructor=t}for(var i in e)u.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},u={}.hasOwnProperty;i=e.findClosestElementFromNode,o=e.handleEvent,r=e.innerElementIsActive,n=e.defer,t=e.AttachmentView.attachmentSelector,e.CompositionController=function(u){function c(n,i){this.element=n,this.composition=i,this.didClickAttachment=s(this.didClickAttachment,this),this.didBlur=s(this.didBlur,this),this.didFocus=s(this.didFocus,this),this.documentView=new e.DocumentView(this.composition.document,{element:this.element}),o(\"focus\",{onElement:this.element,withCallback:this.didFocus}),o(\"blur\",{onElement:this.element,withCallback:this.didBlur}),o(\"click\",{onElement:this.element,matchingSelector:\"a[contenteditable=false]\",preventDefault:!0}),o(\"mousedown\",{onElement:this.element,matchingSelector:t,withCallback:this.didClickAttachment}),o(\"click\",{onElement:this.element,matchingSelector:\"a\"+t,preventDefault:!0})}return a(c,u),c.prototype.didFocus=function(){var t,e,n;return t=function(t){return function(){var e;return t.focused?void 0:(t.focused=!0,null!=(e=t.delegate)&&\"function\"==typeof e.compositionControllerDidFocus?e.compositionControllerDidFocus():void 0)}}(this),null!=(e=null!=(n=this.blurPromise)?n.then(t):void 0)?e:t()},c.prototype.didBlur=function(){return this.blurPromise=new Promise(function(t){return function(e){return n(function(){var n;return r(t.element)||(t.focused=null,null!=(n=t.delegate)&&\"function\"==typeof n.compositionControllerDidBlur&&n.compositionControllerDidBlur()),t.blurPromise=null,e()})}}(this))},c.prototype.didClickAttachment=function(t,e){var n,o,r;return n=this.findAttachmentForElement(e),o=null!=i(t.target,{matchingSelector:\"figcaption\"}),null!=(r=this.delegate)&&\"function\"==typeof r.compositionControllerDidSelectAttachment?r.compositionControllerDidSelectAttachment(n,{editCaption:o}):void 0},c.prototype.getSerializableElement=function(){return this.isEditingAttachment()?this.documentView.shadowElement:this.element},c.prototype.render=function(){var t,e,n;return this.revision!==this.composition.revision&&(this.documentView.setDocument(this.composition.document),this.documentView.render(),this.revision=this.composition.revision),this.canSyncDocumentView()&&!this.documentView.isSynced()&&(null!=(t=this.delegate)&&\"function\"==typeof t.compositionControllerWillSyncDocumentView&&t.compositionControllerWillSyncDocumentView(),this.documentView.sync(),null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidSyncDocumentView&&e.compositionControllerDidSyncDocumentView()),null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerDidRender?n.compositionControllerDidRender():void 0},c.prototype.rerenderViewForObject=function(t){return this.invalidateViewForObject(t),this.render()},c.prototype.invalidateViewForObject=function(t){return this.documentView.invalidateViewForObject(t)},c.prototype.isViewCachingEnabled=function(){return this.documentView.isViewCachingEnabled()},c.prototype.enableViewCaching=function(){return this.documentView.enableViewCaching()},c.prototype.disableViewCaching=function(){return this.documentView.disableViewCaching()},c.prototype.refreshViewCache=function(){return this.documentView.garbageCollectCachedViews()},c.prototype.isEditingAttachment=function(){return null!=this.attachmentEditor},c.prototype.installAttachmentEditorForAttachment=function(t,n){var i,o,r;if((null!=(r=this.attachmentEditor)?r.attachment:void 0)!==t&&(o=this.documentView.findElementForObject(t)))return this.uninstallAttachmentEditor(),i=this.composition.document.getAttachmentPieceForAttachment(t),this.attachmentEditor=new e.AttachmentEditorController(i,o,this.element,n),this.attachmentEditor.delegate=this},c.prototype.uninstallAttachmentEditor=function(){var t;return null!=(t=this.attachmentEditor)?t.uninstall():void 0},c.prototype.didUninstallAttachmentEditor=function(){return this.attachmentEditor=null,this.render()},c.prototype.attachmentEditorDidRequestUpdatingAttributesForAttachment=function(t,e){var n;return null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerWillUpdateAttachment&&n.compositionControllerWillUpdateAttachment(e),this.composition.updateAttributesForAttachment(t,e)},c.prototype.attachmentEditorDidRequestRemovingAttributeForAttachment=function(t,e){var n;return null!=(n=this.delegate)&&\"function\"==typeof n.compositionControllerWillUpdateAttachment&&n.compositionControllerWillUpdateAttachment(e),this.composition.removeAttributeForAttachment(t,e)},c.prototype.attachmentEditorDidRequestRemovalOfAttachment=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidRequestRemovalOfAttachment?e.compositionControllerDidRequestRemovalOfAttachment(t):void 0},c.prototype.attachmentEditorDidRequestDeselectingAttachment=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionControllerDidRequestDeselectingAttachment?e.compositionControllerDidRequestDeselectingAttachment(t):void 0},c.prototype.canSyncDocumentView=function(){return!this.isEditingAttachment()},c.prototype.findAttachmentForElement=function(t){return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId,10))},c}(e.BasicObject)}.call(this),function(){var t,n,i,o=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty;n=e.handleEvent,i=e.triggerEvent,t=e.findClosestElementFromNode,e.ToolbarController=function(e){function s(t){this.element=t,this.didKeyDownDialogInput=o(this.didKeyDownDialogInput,this),this.didClickDialogButton=o(this.didClickDialogButton,this),this.didClickAttributeButton=o(this.didClickAttributeButton,this),this.didClickActionButton=o(this.didClickActionButton,this),this.attributes={},this.actions={},this.resetDialogInputs(),n(\"mousedown\",{onElement:this.element,matchingSelector:a,withCallback:this.didClickActionButton}),n(\"mousedown\",{onElement:this.element,matchingSelector:c,withCallback:this.didClickAttributeButton}),n(\"click\",{onElement:this.element,matchingSelector:v,preventDefault:!0}),n(\"click\",{onElement:this.element,matchingSelector:l,withCallback:this.didClickDialogButton}),n(\"keydown\",{onElement:this.element,matchingSelector:h,withCallback:this.didKeyDownDialogInput})}var a,u,c,l,h,p,d,f,g,m,v;return r(s,e),c=\"[data-trix-attribute]\",a=\"[data-trix-action]\",v=c+\", \"+a,p=\"[data-trix-dialog]\",u=p+\"[data-trix-active]\",l=p+\" [data-trix-method]\",h=p+\" [data-trix-input]\",s.prototype.didClickActionButton=function(t,e){var n,i,o;return null!=(i=this.delegate)&&i.toolbarDidClickButton(),t.preventDefault(),n=d(e),this.getDialog(n)?this.toggleDialog(n):null!=(o=this.delegate)?o.toolbarDidInvokeAction(n):void 0},s.prototype.didClickAttributeButton=function(t,e){var n,i,o;return null!=(i=this.delegate)&&i.toolbarDidClickButton(),t.preventDefault(),n=f(e),this.getDialog(n)?this.toggleDialog(n):null!=(o=this.delegate)&&o.toolbarDidToggleAttribute(n),this.refreshAttributeButtons()},s.prototype.didClickDialogButton=function(e,n){var i,o;return i=t(n,{matchingSelector:p}),o=n.getAttribute(\"data-trix-method\"),this[o].call(this,i)},s.prototype.didKeyDownDialogInput=function(t,e){var n,i;return 13===t.keyCode&&(t.preventDefault(),n=e.getAttribute(\"name\"),i=this.getDialog(n),this.setAttribute(i)),27===t.keyCode?(t.preventDefault(),this.hideDialog()):void 0},s.prototype.updateActions=function(t){return this.actions=t,this.refreshActionButtons()},s.prototype.refreshActionButtons=function(){return this.eachActionButton(function(t){return function(e,n){return e.disabled=t.actions[n]===!1}}(this))},s.prototype.eachActionButton=function(t){var e,n,i,o,r;for(o=this.element.querySelectorAll(a),r=[],n=0,i=o.length;i>n;n++)e=o[n],r.push(t(e,d(e)));return r},s.prototype.updateAttributes=function(t){return this.attributes=t,this.refreshAttributeButtons()},s.prototype.refreshAttributeButtons=function(){return this.eachAttributeButton(function(t){return function(e,n){return e.disabled=t.attributes[n]===!1,t.attributes[n]||t.dialogIsVisible(n)?(e.setAttribute(\"data-trix-active\",\"\"),e.classList.add(\"trix-active\")):(e.removeAttribute(\"data-trix-active\"),e.classList.remove(\"trix-active\"))}}(this))},s.prototype.eachAttributeButton=function(t){var e,n,i,o,r;for(o=this.element.querySelectorAll(c),r=[],n=0,i=o.length;i>n;n++)e=o[n],r.push(t(e,f(e)));return r},s.prototype.applyKeyboardCommand=function(t){var e,n,o,r,s,a,u;for(s=JSON.stringify(t.sort()),u=this.element.querySelectorAll(\"[data-trix-key]\"),r=0,a=u.length;a>r;r++)if(e=u[r],o=e.getAttribute(\"data-trix-key\").split(\"+\"),n=JSON.stringify(o.sort()),n===s)return i(\"mousedown\",{onElement:e}),!0;return!1},s.prototype.dialogIsVisible=function(t){var e;return(e=this.getDialog(t))?e.hasAttribute(\"data-trix-active\"):void 0},s.prototype.toggleDialog=function(t){return this.dialogIsVisible(t)?this.hideDialog():this.showDialog(t)},s.prototype.showDialog=function(t){var e,n,i,o,r,s,a,u,c,l;for(this.hideDialog(),null!=(a=this.delegate)&&a.toolbarWillShowDialog(),i=this.getDialog(t),i.setAttribute(\"data-trix-active\",\"\"),i.classList.add(\"trix-active\"),u=i.querySelectorAll(\"input[disabled]\"),o=0,s=u.length;s>o;o++)n=u[o],n.removeAttribute(\"disabled\");return(e=f(i))&&(r=m(i,t))&&(r.value=null!=(c=this.attributes[e])?c:\"\",r.select()),null!=(l=this.delegate)?l.toolbarDidShowDialog(t):void 0},s.prototype.setAttribute=function(t){var e,n,i;return e=f(t),n=m(t,e),n.willValidate&&!n.checkValidity()?(n.setAttribute(\"data-trix-validate\",\"\"),n.classList.add(\"trix-validate\"),n.focus()):(null!=(i=this.delegate)&&i.toolbarDidUpdateAttribute(e,n.value),this.hideDialog())},s.prototype.removeAttribute=function(t){var e,n;return e=f(t),null!=(n=this.delegate)&&n.toolbarDidRemoveAttribute(e),this.hideDialog()},s.prototype.hideDialog=function(){var t,e;return(t=this.element.querySelector(u))?(t.removeAttribute(\"data-trix-active\"),t.classList.remove(\"trix-active\"),this.resetDialogInputs(),null!=(e=this.delegate)?e.toolbarDidHideDialog(g(t)):void 0):void 0},s.prototype.resetDialogInputs=function(){var t,e,n,i,o;for(i=this.element.querySelectorAll(h),o=[],t=0,n=i.length;n>t;t++)e=i[t],e.setAttribute(\"disabled\",\"disabled\"),e.removeAttribute(\"data-trix-validate\"),o.push(e.classList.remove(\"trix-validate\"));return o},s.prototype.getDialog=function(t){return this.element.querySelector(\"[data-trix-dialog=\"+t+\"]\")},m=function(t,e){return null==e&&(e=f(t)),t.querySelector(\"[data-trix-input][name='\"+e+\"']\")},d=function(t){return t.getAttribute(\"data-trix-action\")},f=function(t){var e;return null!=(e=t.getAttribute(\"data-trix-attribute\"))?e:t.getAttribute(\"data-trix-dialog-attribute\")},g=function(t){return t.getAttribute(\"data-trix-dialog\")},s}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ImagePreloadOperation=function(e){function n(t){this.url=t}return t(n,e),n.prototype.perform=function(t){var e;return e=new Image,e.onload=function(n){return function(){return e.width=n.width=e.naturalWidth,e.height=n.height=e.naturalHeight,t(!0,e)}}(this),e.onerror=function(){return t(!1)},e.src=this.url},n}(e.Operation)}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}},n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;e.Attachment=function(i){function o(n){null==n&&(n={}),this.releaseFile=t(this.releaseFile,this),o.__super__.constructor.apply(this,arguments),this.attributes=e.Hash.box(n),this.didChangeAttributes()}return n(o,i),o.previewablePattern=/^image(\\/(gif|png|jpe?g)|$)/,o.attachmentForFile=function(t){var e,n;return n=this.attributesForFile(t),e=new this(n),e.setFile(t),e},o.attributesForFile=function(t){return new e.Hash({filename:t.name,filesize:t.size,contentType:t.type})},o.fromJSON=function(t){return new this(t)},o.prototype.getAttribute=function(t){return this.attributes.get(t)},o.prototype.hasAttribute=function(t){return this.attributes.has(t)},o.prototype.getAttributes=function(){return this.attributes.toObject()},o.prototype.setAttributes=function(t){var e,n,i;return null==t&&(t={}),e=this.attributes.merge(t),this.attributes.isEqualTo(e)?void 0:(this.attributes=e,this.didChangeAttributes(),null!=(n=this.previewDelegate)&&\"function\"==typeof n.attachmentDidChangeAttributes&&n.attachmentDidChangeAttributes(this),null!=(i=this.delegate)&&\"function\"==typeof i.attachmentDidChangeAttributes?i.attachmentDidChangeAttributes(this):void 0)},o.prototype.didChangeAttributes=function(){return this.isPreviewable()?this.preloadURL():void 0},o.prototype.isPending=function(){return null!=this.file&&!(this.getURL()||this.getHref())},o.prototype.isPreviewable=function(){return this.attributes.has(\"previewable\")?this.attributes.get(\"previewable\"):this.constructor.previewablePattern.test(this.getContentType())},o.prototype.getType=function(){return this.hasContent()?\"content\":this.isPreviewable()?\"preview\":\"file\"},o.prototype.getURL=function(){return this.attributes.get(\"url\")},o.prototype.getHref=function(){return this.attributes.get(\"href\")},o.prototype.getFilename=function(){var t;return null!=(t=this.attributes.get(\"filename\"))?t:\"\"},o.prototype.getFilesize=function(){return this.attributes.get(\"filesize\")},o.prototype.getFormattedFilesize=function(){var t;return t=this.attributes.get(\"filesize\"),\"number\"==typeof t?e.config.fileSize.formatter(t):\"\"},o.prototype.getExtension=function(){var t;return null!=(t=this.getFilename().match(/\\.(\\w+)$/))?t[1].toLowerCase():void 0},o.prototype.getContentType=function(){return this.attributes.get(\"contentType\")},o.prototype.hasContent=function(){return this.attributes.has(\"content\")},o.prototype.getContent=function(){return this.attributes.get(\"content\")},o.prototype.getWidth=function(){return this.attributes.get(\"width\")},o.prototype.getHeight=function(){return this.attributes.get(\"height\")},o.prototype.getFile=function(){return this.file},o.prototype.setFile=function(t){return this.file=t,this.isPreviewable()?this.preloadFile():void 0},o.prototype.releaseFile=function(){return this.releasePreloadedFile(),this.file=null},o.prototype.getUploadProgress=function(){var t;return null!=(t=this.uploadProgress)?t:0},o.prototype.setUploadProgress=function(t){var e;return this.uploadProgress!==t?(this.uploadProgress=t,null!=(e=this.uploadProgressDelegate)&&\"function\"==typeof e.attachmentDidChangeUploadProgress?e.attachmentDidChangeUploadProgress(this):void 0):void 0},o.prototype.toJSON=function(){return this.getAttributes()},o.prototype.getCacheKey=function(){return[o.__super__.getCacheKey.apply(this,arguments),this.attributes.getCacheKey(),this.getPreviewURL()].join(\"/\")},o.prototype.getPreviewURL=function(){return this.previewURL||this.preloadingURL},o.prototype.setPreviewURL=function(t){var e,n;return t!==this.getPreviewURL()?(this.previewURL=t,null!=(e=this.previewDelegate)&&\"function\"==typeof e.attachmentDidChangeAttributes&&e.attachmentDidChangeAttributes(this),null!=(n=this.delegate)&&\"function\"==typeof n.attachmentDidChangePreviewURL?n.attachmentDidChangePreviewURL(this):void 0):void 0},o.prototype.preloadURL=function(){return this.preload(this.getURL(),this.releaseFile)},o.prototype.preloadFile=function(){return this.file?(this.fileObjectURL=URL.createObjectURL(this.file),this.preload(this.fileObjectURL)):void 0},o.prototype.releasePreloadedFile=function(){return this.fileObjectURL?(URL.revokeObjectURL(this.fileObjectURL),this.fileObjectURL=null):void 0},o.prototype.preload=function(t,n){var i;return t&&t!==this.getPreviewURL()?(this.preloadingURL=t,i=new e.ImagePreloadOperation(t),i.then(function(e){return function(i){var o,r;return r=i.width,o=i.height,e.getWidth()&&e.getHeight()||e.setAttributes({width:r,height:o}),e.preloadingURL=null,e.setPreviewURL(t),\"function\"==typeof n?n():void 0}}(this))[\"catch\"](function(t){return function(){return t.preloadingURL=null,\"function\"==typeof n?n():void 0}}(this))):void 0},o}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Piece=function(n){function i(t,n){null==n&&(n={}),i.__super__.constructor.apply(this,arguments),this.attributes=e.Hash.box(n)}return t(i,n),i.types={},i.registerType=function(t,e){return e.type=t,this.types[t]=e},i.fromJSON=function(t){var e;return(e=this.types[t.type])?e.fromJSON(t):void 0},i.prototype.copyWithAttributes=function(t){return new this.constructor(this.getValue(),t)},i.prototype.copyWithAdditionalAttributes=function(t){return this.copyWithAttributes(this.attributes.merge(t))},i.prototype.copyWithoutAttribute=function(t){return this.copyWithAttributes(this.attributes.remove(t))},i.prototype.copy=function(){return this.copyWithAttributes(this.attributes)},i.prototype.getAttribute=function(t){return this.attributes.get(t)},i.prototype.getAttributesHash=function(){return this.attributes},i.prototype.getAttributes=function(){return this.attributes.toObject()},i.prototype.getCommonAttributes=function(){var t,e,n;return(n=pieceList.getPieceAtIndex(0))?(t=n.attributes,e=t.getKeys(),pieceList.eachPiece(function(n){return e=t.getKeysCommonToHash(n.attributes),t=t.slice(e)}),t.toObject()):{}},i.prototype.hasAttribute=function(t){return this.attributes.has(t)},i.prototype.hasSameStringValueAsPiece=function(t){return null!=t&&this.toString()===t.toString()},i.prototype.hasSameAttributesAsPiece=function(t){return null!=t&&(this.attributes===t.attributes||this.attributes.isEqualTo(t.attributes))},i.prototype.isBlockBreak=function(){return!1},i.prototype.isEqualTo=function(t){return i.__super__.isEqualTo.apply(this,arguments)||this.hasSameConstructorAs(t)&&this.hasSameStringValueAsPiece(t)&&this.hasSameAttributesAsPiece(t)},i.prototype.isEmpty=function(){return 0===this.length},i.prototype.isSerializable=function(){return!0},i.prototype.toJSON=function(){return{type:this.constructor.type,attributes:this.getAttributes()}},i.prototype.contentsForInspection=function(){return{type:this.constructor.type,attributes:this.attributes.inspect()}},i.prototype.canBeGrouped=function(){return this.hasAttribute(\"href\")},i.prototype.canBeGroupedWith=function(t){return this.getAttribute(\"href\")===t.getAttribute(\"href\")},i.prototype.getLength=function(){return this.length},i.prototype.canBeConsolidatedWith=function(){return!1},i}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Piece.registerType(\"attachment\",e.AttachmentPiece=function(n){function i(t){this.attachment=t,i.__super__.constructor.apply(this,arguments),this.length=1,this.ensureAttachmentExclusivelyHasAttribute(\"href\"),this.attachment.hasContent()||this.removeProhibitedAttributes()}return t(i,n),i.fromJSON=function(t){return new this(e.Attachment.fromJSON(t.attachment),t.attributes)},i.permittedAttributes=[\"caption\",\"presentation\"],i.prototype.ensureAttachmentExclusivelyHasAttribute=function(t){return this.hasAttribute(t)?(this.attachment.hasAttribute(t)||this.attachment.setAttributes(this.attributes.slice(t)),this.attributes=this.attributes.remove(t)):void 0},i.prototype.removeProhibitedAttributes=function(){var t;return t=this.attributes.slice(this.constructor.permittedAttributes),t.isEqualTo(this.attributes)?void 0:this.attributes=t},i.prototype.getValue=function(){return this.attachment},i.prototype.isSerializable=function(){return!this.attachment.isPending()},i.prototype.getCaption=function(){var t;return null!=(t=this.attributes.get(\"caption\"))?t:\"\"},i.prototype.isEqualTo=function(t){var e;return i.__super__.isEqualTo.apply(this,arguments)&&this.attachment.id===(null!=t&&null!=(e=t.attachment)?e.id:void 0)},i.prototype.toString=function(){return e.OBJECT_REPLACEMENT_CHARACTER},i.prototype.toJSON=function(){var t;return t=i.__super__.toJSON.apply(this,arguments),t.attachment=this.attachment,t},i.prototype.getCacheKey=function(){return[i.__super__.getCacheKey.apply(this,arguments),this.attachment.getCacheKey()].join(\"/\")},i.prototype.toConsole=function(){return JSON.stringify(this.toString())},i}(e.Piece))}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty;t=e.normalizeNewlines,e.Piece.registerType(\"string\",e.StringPiece=function(e){function i(e){i.__super__.constructor.apply(this,arguments),this.string=t(e),this.length=this.string.length}return n(i,e),i.fromJSON=function(t){return new this(t.string,t.attributes)},i.prototype.getValue=function(){return this.string},i.prototype.toString=function(){return this.string.toString()},i.prototype.isBlockBreak=function(){return\"\\n\"===this.toString()&&this.getAttribute(\"blockBreak\")===!0},i.prototype.toJSON=function(){var t;return t=i.__super__.toJSON.apply(this,arguments),t.string=this.string,t},i.prototype.canBeConsolidatedWith=function(t){return null!=t&&this.hasSameConstructorAs(t)&&this.hasSameAttributesAsPiece(t)},i.prototype.consolidateWith=function(t){return new this.constructor(this.toString()+t.toString(),this.attributes)},i.prototype.splitAtOffset=function(t){var e,n;return 0===t?(e=null,n=this):t===this.length?(e=this,n=null):(e=new this.constructor(this.string.slice(0,t),this.attributes),n=new this.constructor(this.string.slice(t),this.attributes)),[e,n]},i.prototype.toConsole=function(){var t;return t=this.string,t.length>15&&(t=t.slice(0,14)+\"\\u2026\"),JSON.stringify(t.toString())},i}(e.Piece))}.call(this),function(){var t,n=function(t,e){function n(){this.constructor=t}for(var o in e)i.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},i={}.hasOwnProperty,o=[].slice;t=e.spliceArray,e.SplittableList=function(e){function i(t){null==t&&(t=[]),i.__super__.constructor.apply(this,arguments),this.objects=t.slice(0),this.length=this.objects.length}var r,s,a;return n(i,e),i.box=function(t){return t instanceof this?t:new this(t)},i.prototype.indexOf=function(t){return this.objects.indexOf(t)},i.prototype.splice=function(){var e;return e=1<=arguments.length?o.call(arguments,0):[],new this.constructor(t.apply(null,[this.objects].concat(o.call(e))))},i.prototype.eachObject=function(t){var e,n,i,o,r,s;for(r=this.objects,s=[],n=e=0,i=r.length;i>e;n=++e)o=r[n],s.push(t(o,n));return s},i.prototype.insertObjectAtIndex=function(t,e){return this.splice(e,0,t)},i.prototype.insertSplittableListAtIndex=function(t,e){return this.splice.apply(this,[e,0].concat(o.call(t.objects)))},i.prototype.insertSplittableListAtPosition=function(t,e){var n,i,o;return o=this.splitObjectAtPosition(e),i=o[0],n=o[1],new this.constructor(i).insertSplittableListAtIndex(t,n)},i.prototype.editObjectAtIndex=function(t,e){return this.replaceObjectAtIndex(e(this.objects[t]),t)},i.prototype.replaceObjectAtIndex=function(t,e){return this.splice(e,1,t)},i.prototype.removeObjectAtIndex=function(t){return this.splice(t,1)},i.prototype.getObjectAtIndex=function(t){return this.objects[t]},i.prototype.getSplittableListInRange=function(t){var e,n,i,o;return i=this.splitObjectsAtRange(t),n=i[0],e=i[1],o=i[2],new this.constructor(n.slice(e,o+1))},i.prototype.selectSplittableList=function(t){var e,n;return n=function(){var n,i,o,r;for(o=this.objects,r=[],n=0,i=o.length;i>n;n++)e=o[n],t(e)&&r.push(e);return r}.call(this),new this.constructor(n)},i.prototype.removeObjectsInRange=function(t){var e,n,i,o;return i=this.splitObjectsAtRange(t),n=i[0],e=i[1],o=i[2],new this.constructor(n).splice(e,o-e+1)},i.prototype.transformObjectsInRange=function(t,e){var n,i,o,r,s,a,u;return s=this.splitObjectsAtRange(t),r=s[0],i=s[1],a=s[2],u=function(){var t,s,u;for(u=[],n=t=0,s=r.length;s>t;n=++t)o=r[n],u.push(n>=i&&a>=n?e(o):o);return u}(),new this.constructor(u)},i.prototype.splitObjectsAtRange=function(t){var e,n,i,o,s,u;return o=this.splitObjectAtPosition(a(t)),n=o[0],e=o[1],i=o[2],s=new this.constructor(n).splitObjectAtPosition(r(t)+i),n=s[0],u=s[1],[n,e,u-1]},i.prototype.getObjectAtPosition=function(t){var e,n,i;return i=this.findIndexAndOffsetAtPosition(t),e=i.index,n=i.offset,this.objects[e]},i.prototype.splitObjectAtPosition=function(t){var e,n,i,o,r,s,a,u,c,l;return s=this.findIndexAndOffsetAtPosition(t),e=s.index,r=s.offset,o=this.objects.slice(0),null!=e?0===r?(c=e,l=0):(i=this.getObjectAtIndex(e),a=i.splitAtOffset(r),n=a[0],u=a[1],o.splice(e,1,n,u),c=e+1,l=n.getLength()-r):(c=o.length,l=0),[o,c,l]},i.prototype.consolidate=function(){var t,e,n,i,o,r;for(i=[],o=this.objects[0],r=this.objects.slice(1),t=0,e=r.length;e>t;t++)n=r[t],(\"function\"==typeof o.canBeConsolidatedWith?o.canBeConsolidatedWith(n):void 0)?o=o.consolidateWith(n):(i.push(o),o=n);return null!=o&&i.push(o),new this.constructor(i)},i.prototype.consolidateFromIndexToIndex=function(t,e){var n,i,r;return i=this.objects.slice(0),r=i.slice(t,e+1),n=new this.constructor(r).consolidate().toArray(),this.splice.apply(this,[t,r.length].concat(o.call(n)))},i.prototype.findIndexAndOffsetAtPosition=function(t){var e,n,i,o,r,s,a;for(e=0,a=this.objects,i=n=0,o=a.length;o>n;i=++n){if(s=a[i],r=e+s.getLength(),t>=e&&r>t)return{index:i,offset:t-e};e=r}return{index:null,offset:null}},i.prototype.findPositionAtIndexAndOffset=function(t,e){var n,i,o,r,s,a;for(s=0,a=this.objects,n=i=0,o=a.length;o>i;n=++i)if(r=a[n],t>n)s+=r.getLength();else if(n===t){s+=e;break}return s},i.prototype.getEndPosition=function(){var t,e;return null!=this.endPosition?this.endPosition:this.endPosition=function(){var n,i,o;for(e=0,o=this.objects,n=0,i=o.length;i>n;n++)t=o[n],e+=t.getLength();return e}.call(this)},i.prototype.toString=function(){return this.objects.join(\"\")},i.prototype.toArray=function(){return this.objects.slice(0)},i.prototype.toJSON=function(){return this.toArray()},i.prototype.isEqualTo=function(t){return i.__super__.isEqualTo.apply(this,arguments)||s(this.objects,null!=t?t.objects:void 0)},s=function(t,e){var n,i,o,r,s;if(null==e&&(e=[]),t.length!==e.length)return!1;for(s=!0,i=n=0,o=t.length;o>n;i=++n)r=t[i],s&&!r.isEqualTo(e[i])&&(s=!1);return s},i.prototype.contentsForInspection=function(){var t;return{objects:\"[\"+function(){var e,n,i,o;for(i=this.objects,o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.inspect());return o}.call(this).join(\", \")+\"]\"}},a=function(t){return t[0]},r=function(t){return t[1]},i}(e.Object)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.Text=function(n){function i(t){var n;null==t&&(t=[]),i.__super__.constructor.apply(this,arguments),this.pieceList=new e.SplittableList(function(){var e,i,o;for(o=[],e=0,i=t.length;i>e;e++)n=t[e],n.isEmpty()||o.push(n);return o}())}return t(i,n),i.textForAttachmentWithAttributes=function(t,n){var i;return i=new e.AttachmentPiece(t,n),new this([i])},i.textForStringWithAttributes=function(t,n){var i;return i=new e.StringPiece(t,n),new this([i])},i.fromJSON=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(e.Piece.fromJSON(n));return r}(),new this(i)},i.prototype.copy=function(){return this.copyWithPieceList(this.pieceList)},i.prototype.copyWithPieceList=function(t){return new this.constructor(t.consolidate().toArray())},i.prototype.copyUsingObjectMap=function(t){var e,n;return n=function(){var n,i,o,r,s;for(o=this.getPieces(),s=[],n=0,i=o.length;i>n;n++)e=o[n],s.push(null!=(r=t.find(e))?r:e);return s}.call(this),new this.constructor(n)},i.prototype.appendText=function(t){return this.insertTextAtPosition(t,this.getLength())},i.prototype.insertTextAtPosition=function(t,e){return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList,e))\n},i.prototype.removeTextAtRange=function(t){return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t))},i.prototype.replaceTextAtRange=function(t,e){return this.removeTextAtRange(e).insertTextAtPosition(t,e[0])},i.prototype.moveTextFromRangeToPosition=function(t,e){var n,i;if(!(t[0]<=e&&e<=t[1]))return i=this.getTextAtRange(t),n=i.getLength(),t[0]<e&&(e-=n),this.removeTextAtRange(t).insertTextAtPosition(i,e)},i.prototype.addAttributeAtRange=function(t,e,n){var i;return i={},i[t]=e,this.addAttributesAtRange(i,n)},i.prototype.addAttributesAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithAdditionalAttributes(t)}))},i.prototype.removeAttributeAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithoutAttribute(t)}))},i.prototype.setAttributesAtRange=function(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,function(e){return e.copyWithAttributes(t)}))},i.prototype.getAttributesAtPosition=function(t){var e,n;return null!=(e=null!=(n=this.pieceList.getObjectAtPosition(t))?n.getAttributes():void 0)?e:{}},i.prototype.getCommonAttributes=function(){var t,n;return t=function(){var t,e,i,o;for(i=this.pieceList.toArray(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.getAttributes());return o}.call(this),e.Hash.fromCommonAttributesOfObjects(t).toObject()},i.prototype.getCommonAttributesAtRange=function(t){var e;return null!=(e=this.getTextAtRange(t).getCommonAttributes())?e:{}},i.prototype.getExpandedRangeForAttributeAtOffset=function(t,e){var n,i,o;for(n=o=e,i=this.getLength();n>0&&this.getCommonAttributesAtRange([n-1,o])[t];)n--;for(;i>o&&this.getCommonAttributesAtRange([e,o+1])[t];)o++;return[n,o]},i.prototype.getTextAtRange=function(t){return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t))},i.prototype.getStringAtRange=function(t){return this.pieceList.getSplittableListInRange(t).toString()},i.prototype.getStringAtPosition=function(t){return this.getStringAtRange([t,t+1])},i.prototype.startsWithString=function(t){return this.getStringAtRange([0,t.length])===t},i.prototype.endsWithString=function(t){var e;return e=this.getLength(),this.getStringAtRange([e-t.length,e])===t},i.prototype.getAttachmentPieces=function(){var t,e,n,i,o;for(i=this.pieceList.toArray(),o=[],t=0,e=i.length;e>t;t++)n=i[t],null!=n.attachment&&o.push(n);return o},i.prototype.getAttachments=function(){var t,e,n,i,o;for(i=this.getAttachmentPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.attachment);return o},i.prototype.getAttachmentAndPositionById=function(t){var e,n,i,o,r,s;for(o=0,r=this.pieceList.toArray(),e=0,n=r.length;n>e;e++){if(i=r[e],(null!=(s=i.attachment)?s.id:void 0)===t)return{attachment:i.attachment,position:o};o+=i.length}return{attachment:null,position:null}},i.prototype.getAttachmentById=function(t){var e,n,i;return i=this.getAttachmentAndPositionById(t),e=i.attachment,n=i.position,e},i.prototype.getRangeOfAttachment=function(t){var e,n;return n=this.getAttachmentAndPositionById(t.id),t=n.attachment,e=n.position,null!=t?[e,e+1]:void 0},i.prototype.updateAttributesForAttachment=function(t,e){var n;return(n=this.getRangeOfAttachment(e))?this.addAttributesAtRange(t,n):this},i.prototype.getLength=function(){return this.pieceList.getEndPosition()},i.prototype.isEmpty=function(){return 0===this.getLength()},i.prototype.isEqualTo=function(t){var e;return i.__super__.isEqualTo.apply(this,arguments)||(null!=t&&null!=(e=t.pieceList)?e.isEqualTo(this.pieceList):void 0)},i.prototype.isBlockBreak=function(){return 1===this.getLength()&&this.pieceList.getObjectAtIndex(0).isBlockBreak()},i.prototype.eachPiece=function(t){return this.pieceList.eachObject(t)},i.prototype.getPieces=function(){return this.pieceList.toArray()},i.prototype.getPieceAtPosition=function(t){return this.pieceList.getObjectAtPosition(t)},i.prototype.contentsForInspection=function(){return{pieceList:this.pieceList.inspect()}},i.prototype.toSerializableText=function(){var t;return t=this.pieceList.selectSplittableList(function(t){return t.isSerializable()}),this.copyWithPieceList(t)},i.prototype.toString=function(){return this.pieceList.toString()},i.prototype.toJSON=function(){return this.pieceList.toJSON()},i.prototype.toConsole=function(){var t;return JSON.stringify(function(){var e,n,i,o;for(i=this.pieceList.toArray(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(JSON.parse(t.toConsole()));return o}.call(this))},i.prototype.getDirection=function(){return e.getDirection(this.toString())},i.prototype.isRTL=function(){return\"rtl\"===this.getDirection()},i}(e.Object)}.call(this),function(){var t,n,i,o,r,s=function(t,e){function n(){this.constructor=t}for(var i in e)a.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},a={}.hasOwnProperty,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},c=[].slice;t=e.arraysAreEqual,r=e.spliceArray,i=e.getBlockConfig,n=e.getBlockAttributeNames,o=e.getListAttributeNames,e.Block=function(n){function a(t,n){null==t&&(t=new e.Text),null==n&&(n=[]),a.__super__.constructor.apply(this,arguments),this.text=h(t),this.attributes=n}var l,h,p,d,f,g,m,v,y;return s(a,n),a.fromJSON=function(t){var n;return n=e.Text.fromJSON(t.text),new this(n,t.attributes)},a.prototype.isEmpty=function(){return this.text.isBlockBreak()},a.prototype.isEqualTo=function(e){return a.__super__.isEqualTo.apply(this,arguments)||this.text.isEqualTo(null!=e?e.text:void 0)&&t(this.attributes,null!=e?e.attributes:void 0)},a.prototype.copyWithText=function(t){return new this.constructor(t,this.attributes)},a.prototype.copyWithoutText=function(){return this.copyWithText(null)},a.prototype.copyWithAttributes=function(t){return new this.constructor(this.text,t)},a.prototype.copyWithoutAttributes=function(){return this.copyWithAttributes(null)},a.prototype.copyUsingObjectMap=function(t){var e;return this.copyWithText((e=t.find(this.text))?e:this.text.copyUsingObjectMap(t))},a.prototype.addAttribute=function(t){var e;return e=this.attributes.concat(d(t)),this.copyWithAttributes(e)},a.prototype.removeAttribute=function(t){var e,n;return n=i(t).listAttribute,e=g(g(this.attributes,t),n),this.copyWithAttributes(e)},a.prototype.removeLastAttribute=function(){return this.removeAttribute(this.getLastAttribute())},a.prototype.getLastAttribute=function(){return f(this.attributes)},a.prototype.getAttributes=function(){return this.attributes.slice(0)},a.prototype.getAttributeLevel=function(){return this.attributes.length},a.prototype.getAttributeAtLevel=function(t){return this.attributes[t-1]},a.prototype.hasAttribute=function(t){return u.call(this.attributes,t)>=0},a.prototype.hasAttributes=function(){return this.getAttributeLevel()>0},a.prototype.getLastNestableAttribute=function(){return f(this.getNestableAttributes())},a.prototype.getNestableAttributes=function(){var t,e,n,o,r;for(o=this.attributes,r=[],e=0,n=o.length;n>e;e++)t=o[e],i(t).nestable&&r.push(t);return r},a.prototype.getNestingLevel=function(){return this.getNestableAttributes().length},a.prototype.decreaseNestingLevel=function(){var t;return(t=this.getLastNestableAttribute())?this.removeAttribute(t):this},a.prototype.increaseNestingLevel=function(){var t,e,n;return(t=this.getLastNestableAttribute())?(n=this.attributes.lastIndexOf(t),e=r.apply(null,[this.attributes,n+1,0].concat(c.call(d(t)))),this.copyWithAttributes(e)):this},a.prototype.getListItemAttributes=function(){var t,e,n,o,r;for(o=this.attributes,r=[],e=0,n=o.length;n>e;e++)t=o[e],i(t).listAttribute&&r.push(t);return r},a.prototype.isListItem=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.listAttribute:void 0},a.prototype.isTerminalBlock=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.terminal:void 0},a.prototype.breaksOnReturn=function(){var t;return null!=(t=i(this.getLastAttribute()))?t.breakOnReturn:void 0},a.prototype.findLineBreakInDirectionFromPosition=function(t,e){var n,i;return i=this.toString(),n=function(){switch(t){case\"forward\":return i.indexOf(\"\\n\",e);case\"backward\":return i.slice(0,e).lastIndexOf(\"\\n\")}}(),-1!==n?n:void 0},a.prototype.contentsForInspection=function(){return{text:this.text.inspect(),attributes:this.attributes}},a.prototype.toString=function(){return this.text.toString()},a.prototype.toJSON=function(){return{text:this.text,attributes:this.attributes}},a.prototype.getDirection=function(){return this.text.getDirection()},a.prototype.isRTL=function(){return this.text.isRTL()},a.prototype.getLength=function(){return this.text.getLength()},a.prototype.canBeConsolidatedWith=function(t){return!this.hasAttributes()&&!t.hasAttributes()&&this.getDirection()===t.getDirection()},a.prototype.consolidateWith=function(t){var n,i;return n=e.Text.textForStringWithAttributes(\"\\n\"),i=this.getTextWithoutBlockBreak().appendText(n),this.copyWithText(i.appendText(t.text))},a.prototype.splitAtOffset=function(t){var e,n;return 0===t?(e=null,n=this):t===this.getLength()?(e=this,n=null):(e=this.copyWithText(this.text.getTextAtRange([0,t])),n=this.copyWithText(this.text.getTextAtRange([t,this.getLength()]))),[e,n]},a.prototype.getBlockBreakPosition=function(){return this.text.getLength()-1},a.prototype.getTextWithoutBlockBreak=function(){return m(this.text)?this.text.getTextAtRange([0,this.getBlockBreakPosition()]):this.text.copy()},a.prototype.canBeGrouped=function(t){return this.attributes[t]},a.prototype.canBeGroupedWith=function(t,e){var n,r,s,a;return s=t.getAttributes(),r=s[e],n=this.attributes[e],!(n!==r||i(n).group===!1&&(a=s[e+1],u.call(o(),a)<0)||this.getDirection()!==t.getDirection()&&!t.isEmpty())},h=function(t){return t=y(t),t=l(t)},y=function(t){var n,i,o,r,s,a;return r=!1,a=t.getPieces(),i=2<=a.length?c.call(a,0,n=a.length-1):(n=0,[]),o=a[n++],null==o?t:(i=function(){var t,e,n;for(n=[],t=0,e=i.length;e>t;t++)s=i[t],s.isBlockBreak()?(r=!0,n.push(v(s))):n.push(s);return n}(),r?new e.Text(c.call(i).concat([o])):t)},p=e.Text.textForStringWithAttributes(\"\\n\",{blockBreak:!0}),l=function(t){return m(t)?t:t.appendText(p)},m=function(t){var e,n;return n=t.getLength(),0===n?!1:(e=t.getTextAtRange([n-1,n]),e.isBlockBreak())},v=function(t){return t.copyWithoutAttribute(\"blockBreak\")},d=function(t){var e;return e=i(t).listAttribute,null!=e?[e,t]:[t]},f=function(t){return t.slice(-1)[0]},g=function(t,e){var n;return n=t.lastIndexOf(e),-1===n?t:r(t,n,1)},a}(e.Object)}.call(this),function(){var t,n,i,o=function(t,e){function n(){this.constructor=t}for(var i in e)r.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty,s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1},a=[].slice;n=e.tagName,i=e.walkTree,t=e.nodeIsAttachmentElement,e.HTMLSanitizer=function(r){function u(t,e){var n;n=null!=e?e:{},this.allowedAttributes=n.allowedAttributes,this.forbiddenProtocols=n.forbiddenProtocols,this.forbiddenElements=n.forbiddenElements,null==this.allowedAttributes&&(this.allowedAttributes=c),null==this.forbiddenProtocols&&(this.forbiddenProtocols=h),null==this.forbiddenElements&&(this.forbiddenElements=l),this.body=p(t)}var c,l,h,p;return o(u,r),c=\"style href src width height class\".split(\" \"),h=\"javascript:\".split(\" \"),l=\"script iframe\".split(\" \"),u.sanitize=function(t,e){var n;return n=new this(t,e),n.sanitize(),n},u.prototype.sanitize=function(){return this.sanitizeElements(),this.normalizeListElementNesting()},u.prototype.getHTML=function(){return this.body.innerHTML},u.prototype.getBody=function(){return this.body},u.prototype.sanitizeElements=function(){var t,n,o,r,s;for(s=i(this.body),r=[];s.nextNode();)switch(o=s.currentNode,o.nodeType){case Node.ELEMENT_NODE:this.elementIsRemovable(o)?r.push(o):this.sanitizeElement(o);break;case Node.COMMENT_NODE:r.push(o)}for(t=0,n=r.length;n>t;t++)o=r[t],e.removeNode(o);return this.body},u.prototype.sanitizeElement=function(t){var e,n,i,o,r;for(t.hasAttribute(\"href\")&&(o=t.protocol,s.call(this.forbiddenProtocols,o)>=0&&t.removeAttribute(\"href\")),r=a.call(t.attributes),e=0,n=r.length;n>e;e++)i=r[e].name,s.call(this.allowedAttributes,i)>=0||0===i.indexOf(\"data-trix\")||t.removeAttribute(i);return t},u.prototype.normalizeListElementNesting=function(){var t,e,i,o,r;for(r=a.call(this.body.querySelectorAll(\"ul,ol\")),t=0,e=r.length;e>t;t++)i=r[t],(o=i.previousElementSibling)&&\"li\"===n(o)&&o.appendChild(i);return this.body},u.prototype.elementIsRemovable=function(t){return(null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE?this.elementIsForbidden(t)||this.elementIsntSerializable(t):void 0},u.prototype.elementIsForbidden=function(t){var e;return e=n(t),s.call(this.forbiddenElements,e)>=0},u.prototype.elementIsntSerializable=function(e){return\"false\"===e.getAttribute(\"data-trix-serialize\")&&!t(e)},p=function(t){var e,n,i,o,r;for(null==t&&(t=\"\"),t=t.replace(/<\\/html[^>]*>[^]*$/i,\"</html>\"),e=document.implementation.createHTMLDocument(\"\"),e.documentElement.innerHTML=t,r=e.head.querySelectorAll(\"style\"),i=0,o=r.length;o>i;i++)n=r[i],e.body.appendChild(n);return e.body},u}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h,p=function(t,e){function n(){this.constructor=t}for(var i in e)d.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},d={}.hasOwnProperty,f=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.arraysAreEqual,s=e.makeElement,l=e.tagName,r=e.getBlockTagNames,h=e.walkTree,o=e.findClosestElementFromNode,i=e.elementContainsNode,a=e.nodeIsAttachmentElement,u=e.normalizeSpaces,n=e.breakableWhitespacePattern,c=e.squishBreakableWhitespace,e.HTMLParser=function(d){function g(t,e){this.html=t,this.referenceElement=(null!=e?e:{}).referenceElement,this.blocks=[],this.blockElements=[],this.processedElements=[]}var m,v,y,b,A,C,x,w,E,S,R,k;return p(g,d),g.parse=function(t,e){var n;return n=new this(t,e),n.parse(),n},g.prototype.getDocument=function(){return e.Document.fromJSON(this.blocks)},g.prototype.parse=function(){var t,n;try{for(this.createHiddenContainer(),t=e.HTMLSanitizer.sanitize(this.html).getHTML(),this.containerElement.innerHTML=t,n=h(this.containerElement,{usingFilter:x});n.nextNode();)this.processNode(n.currentNode);return this.translateBlockElementMarginsToNewlines()}finally{this.removeHiddenContainer()}},g.prototype.createHiddenContainer=function(){return this.referenceElement?(this.containerElement=this.referenceElement.cloneNode(!1),this.containerElement.removeAttribute(\"id\"),this.containerElement.setAttribute(\"data-trix-internal\",\"\"),this.containerElement.style.display=\"none\",this.referenceElement.parentNode.insertBefore(this.containerElement,this.referenceElement.nextSibling)):(this.containerElement=s({tagName:\"div\",style:{display:\"none\"}}),document.body.appendChild(this.containerElement))},g.prototype.removeHiddenContainer=function(){return e.removeNode(this.containerElement)},x=function(t){return\"style\"===l(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},g.prototype.processNode=function(t){switch(t.nodeType){case Node.TEXT_NODE:if(!this.isInsignificantTextNode(t))return this.appendBlockForTextNode(t),this.processTextNode(t);break;case Node.ELEMENT_NODE:return this.appendBlockForElement(t),this.processElement(t)}},g.prototype.appendBlockForTextNode=function(e){var n,i,o;return i=e.parentNode,i===this.currentBlockElement&&this.isBlockElement(e.previousSibling)?this.appendStringWithAttributes(\"\\n\"):i!==this.containerElement&&!this.isBlockElement(i)||(n=this.getBlockAttributes(i),t(n,null!=(o=this.currentBlock)?o.attributes:void 0))?void 0:(this.currentBlock=this.appendBlockForAttributesWithElement(n,i),this.currentBlockElement=i)},g.prototype.appendBlockForElement=function(e){var n,o,r,s;if(r=this.isBlockElement(e),o=i(this.currentBlockElement,e),r&&!this.isBlockElement(e.firstChild)){if((!this.isInsignificantTextNode(e.firstChild)||!this.isBlockElement(e.firstElementChild))&&(n=this.getBlockAttributes(e),e.firstChild))return o&&t(n,this.currentBlock.attributes)?this.appendStringWithAttributes(\"\\n\"):(this.currentBlock=this.appendBlockForAttributesWithElement(n,e),this.currentBlockElement=e)}else if(this.currentBlockElement&&!o&&!r)return(s=this.findParentBlockElement(e))?this.appendBlockForElement(s):(this.currentBlock=this.appendEmptyBlock(),this.currentBlockElement=null)},g.prototype.findParentBlockElement=function(t){var e;for(e=t.parentElement;e&&e!==this.containerElement;){if(this.isBlockElement(e)&&f.call(this.blockElements,e)>=0)return e;e=e.parentElement}return null},g.prototype.processTextNode=function(t){var e,n;return n=t.data,v(t.parentNode)||(n=c(n),R(null!=(e=t.previousSibling)?e.textContent:void 0)&&(n=A(n))),this.appendStringWithAttributes(n,this.getTextAttributes(t.parentNode))},g.prototype.processElement=function(t){var e,n,i,o,r;if(a(t))return e=w(t,\"attachment\"),Object.keys(e).length&&(o=this.getTextAttributes(t),this.appendAttachmentWithAttributes(e,o),t.innerHTML=\"\"),this.processedElements.push(t);switch(l(t)){case\"br\":return this.isExtraBR(t)||this.isBlockElement(t.nextSibling)||this.appendStringWithAttributes(\"\\n\",this.getTextAttributes(t)),this.processedElements.push(t);case\"img\":e={url:t.getAttribute(\"src\"),contentType:\"image\"},i=b(t);for(n in i)r=i[n],e[n]=r;return this.appendAttachmentWithAttributes(e,this.getTextAttributes(t)),this.processedElements.push(t);case\"tr\":if(t.parentNode.firstChild!==t)return this.appendStringWithAttributes(\"\\n\");break;case\"td\":if(t.parentNode.firstChild!==t)return this.appendStringWithAttributes(\" | \")}},g.prototype.appendBlockForAttributesWithElement=function(t,e){var n;return this.blockElements.push(e),n=m(t),this.blocks.push(n),n},g.prototype.appendEmptyBlock=function(){return this.appendBlockForAttributesWithElement([],null)},g.prototype.appendStringWithAttributes=function(t,e){return this.appendPiece(S(t,e))},g.prototype.appendAttachmentWithAttributes=function(t,e){return this.appendPiece(E(t,e))},g.prototype.appendPiece=function(t){return 0===this.blocks.length&&this.appendEmptyBlock(),this.blocks[this.blocks.length-1].text.push(t)},g.prototype.appendStringToTextAtIndex=function(t,e){var n,i;return i=this.blocks[e].text,n=i[i.length-1],\"string\"===(null!=n?n.type:void 0)?n.string+=t:i.push(S(t))},g.prototype.prependStringToTextAtIndex=function(t,e){var n,i;return i=this.blocks[e].text,n=i[0],\"string\"===(null!=n?n.type:void 0)?n.string=t+n.string:i.unshift(S(t))},S=function(t,e){var n;return null==e&&(e={}),n=\"string\",t=u(t),{string:t,attributes:e,type:n}},E=function(t,e){var n;return null==e&&(e={}),n=\"attachment\",{attachment:t,attributes:e,type:n}},m=function(t){var e;return null==t&&(t={}),e=[],{text:e,attributes:t}},g.prototype.getTextAttributes=function(t){var n,i,r,s,u,c,l,h,p,d,f,g;r={},p=e.config.textAttributes;for(n in p)if(u=p[n],u.tagName&&o(t,{matchingSelector:u.tagName,untilNode:this.containerElement}))r[n]=!0;else if(u.parser){if(g=u.parser(t)){for(i=!1,d=this.findBlockElementAncestors(t),c=0,h=d.length;h>c;c++)if(s=d[c],u.parser(s)===g){i=!0;break}i||(r[n]=g)}}else u.styleProperty&&(g=t.style[u.styleProperty])&&(r[n]=g);if(a(t)){f=w(t,\"attributes\");for(l in f)g=f[l],r[l]=g}return r},g.prototype.getBlockAttributes=function(t){var n,i,o,r;for(i=[];t&&t!==this.containerElement;){r=e.config.blockAttributes;for(n in r)o=r[n],o.parse!==!1&&l(t)===o.tagName&&((\"function\"==typeof o.test?o.test(t):void 0)||!o.test)&&(i.push(n),o.listAttribute&&i.push(o.listAttribute));t=t.parentNode}return i.reverse()},g.prototype.findBlockElementAncestors=function(t){var e,n;for(e=[];t&&t!==this.containerElement;)n=l(t),f.call(r(),n)>=0&&e.push(t),t=t.parentNode;return e},w=function(t,e){try{return JSON.parse(t.getAttribute(\"data-trix-\"+e))}catch(n){return{}}},b=function(t){var e,n,i;return i=t.getAttribute(\"width\"),n=t.getAttribute(\"height\"),e={},i&&(e.width=parseInt(i,10)),n&&(e.height=parseInt(n,10)),e},g.prototype.isBlockElement=function(t){var e;if((null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE&&!a(t)&&!o(t,{matchingSelector:\"td\",untilNode:this.containerElement}))return e=l(t),f.call(r(),e)>=0||\"block\"===window.getComputedStyle(t).display},g.prototype.isInsignificantTextNode=function(t){var e,n,i;if((null!=t?t.nodeType:void 0)===Node.TEXT_NODE&&k(t.data)&&(n=t.parentNode,i=t.previousSibling,e=t.nextSibling,(!C(n.previousSibling)||this.isBlockElement(n.previousSibling))&&!v(n)))return!i||this.isBlockElement(i)||!e||this.isBlockElement(e)},g.prototype.isExtraBR=function(t){return\"br\"===l(t)&&this.isBlockElement(t.parentNode)&&t.parentNode.lastChild===t},v=function(t){var e;return e=window.getComputedStyle(t).whiteSpace,\"pre\"===e||\"pre-wrap\"===e||\"pre-line\"===e},C=function(t){return t&&!R(t.textContent)},g.prototype.translateBlockElementMarginsToNewlines=function(){var t,e,n,i,o,r,s,a;for(e=this.getMarginOfDefaultBlockElement(),s=this.blocks,a=[],i=n=0,o=s.length;o>n;i=++n)t=s[i],(r=this.getMarginOfBlockElementAtIndex(i))&&(r.top>2*e.top&&this.prependStringToTextAtIndex(\"\\n\",i),a.push(r.bottom>2*e.bottom?this.appendStringToTextAtIndex(\"\\n\",i):void 0));return a},g.prototype.getMarginOfBlockElementAtIndex=function(t){var e,n;return!(e=this.blockElements[t])||!e.textContent||(n=l(e),f.call(r(),n)>=0||f.call(this.processedElements,e)>=0)?void 0:y(e)},g.prototype.getMarginOfDefaultBlockElement=function(){var t;return t=s(e.config.blockAttributes[\"default\"].tagName),this.containerElement.appendChild(t),y(t)},y=function(t){var e;return e=window.getComputedStyle(t),\"block\"===e.display?{top:parseInt(e.marginTop),bottom:parseInt(e.marginBottom)}:void 0},A=function(t){return t.replace(RegExp(\"^\"+n.source+\"+\"),\"\")},k=function(t){return RegExp(\"^\"+n.source+\"*$\").test(t)},R=function(t){return/\\s$/.test(t)},g}(e.BasicObject)}.call(this),function(){var t,n,i,o,r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].slice,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.arraysAreEqual,i=e.normalizeRange,o=e.rangeIsCollapsed,n=e.getBlockConfig,e.Document=function(s){function c(t){null==t&&(t=[]),c.__super__.constructor.apply(this,arguments),0===t.length&&(t=[new e.Block]),this.blockList=e.SplittableList.box(t)}var l;return r(c,s),c.fromJSON=function(t){var n,i;return i=function(){var i,o,r;for(r=[],i=0,o=t.length;o>i;i++)n=t[i],r.push(e.Block.fromJSON(n));return r}(),new this(i)},c.fromHTML=function(t,n){return e.HTMLParser.parse(t,n).getDocument()},c.fromString=function(t,n){var i;return i=e.Text.textForStringWithAttributes(t,n),new this([new e.Block(i)])},c.prototype.isEmpty=function(){var t;return 1===this.blockList.length&&(t=this.getBlockAtIndex(0),t.isEmpty()&&!t.hasAttributes())},c.prototype.copy=function(t){var e;return null==t&&(t={}),e=t.consolidateBlocks?this.blockList.consolidate().toArray():this.blockList.toArray(),new this.constructor(e)},c.prototype.copyUsingObjectsFromDocument=function(t){var n;return n=new e.ObjectMap(t.getObjects()),this.copyUsingObjectMap(n)},c.prototype.copyUsingObjectMap=function(t){var e,n,i;return n=function(){var n,o,r,s;for(r=this.getBlocks(),s=[],n=0,o=r.length;o>n;n++)e=r[n],s.push((i=t.find(e))?i:e.copyUsingObjectMap(t));return s}.call(this),new this.constructor(n)},c.prototype.copyWithBaseBlockAttributes=function(t){var e,n,i;return null==t&&(t=[]),i=function(){var i,o,r,s;for(r=this.getBlocks(),s=[],i=0,o=r.length;o>i;i++)n=r[i],e=t.concat(n.getAttributes()),s.push(n.copyWithAttributes(e));return s}.call(this),new this.constructor(i)},c.prototype.replaceBlock=function(t,e){var n;return n=this.blockList.indexOf(t),-1===n?this:new this.constructor(this.blockList.replaceObjectAtIndex(e,n))},c.prototype.insertDocumentAtRange=function(t,e){var n,r,s,a,u,c,l;return r=t.blockList,u=(e=i(e))[0],c=this.locationFromPosition(u),s=c.index,a=c.offset,l=this,n=this.getBlockAtPosition(u),o(e)&&n.isEmpty()&&!n.hasAttributes()?l=new this.constructor(l.blockList.removeObjectAtIndex(s)):n.getBlockBreakPosition()===a&&u++,l=l.removeTextAtRange(e),new this.constructor(l.blockList.insertSplittableListAtPosition(r,u))},c.prototype.mergeDocumentAtRange=function(e,n){var o,r,s,a,u,c,l,h,p,d,f,g;return f=(n=i(n))[0],d=this.locationFromPosition(f),r=this.getBlockAtIndex(d.index).getAttributes(),o=e.getBaseBlockAttributes(),g=r.slice(-o.length),t(o,g)?(l=r.slice(0,-o.length),c=e.copyWithBaseBlockAttributes(l)):c=e.copy({consolidateBlocks:!0}).copyWithBaseBlockAttributes(r),s=c.getBlockCount(),a=c.getBlockAtIndex(0),t(r,a.getAttributes())?(u=a.getTextWithoutBlockBreak(),p=this.insertTextAtRange(u,n),s>1&&(c=new this.constructor(c.getBlocks().slice(1)),h=f+u.getLength(),p=p.insertDocumentAtRange(c,h))):p=this.insertDocumentAtRange(c,n),p},c.prototype.insertTextAtRange=function(t,e){var n,o,r,s,a;return a=(e=i(e))[0],s=this.locationFromPosition(a),o=s.index,r=s.offset,n=this.removeTextAtRange(e),new this.constructor(n.blockList.editObjectAtIndex(o,function(e){return e.copyWithText(e.text.insertTextAtPosition(t,r))}))},c.prototype.removeTextAtRange=function(t){var e,n,r,s,a,u,c,l,h,p,d,f,g,m,v,y,b,A,C,x,w;return p=t=i(t),l=p[0],A=p[1],o(t)?this:(d=this.locationRangeFromRange(t),u=d[0],y=d[1],a=u.index,c=u.offset,s=this.getBlockAtIndex(a),v=y.index,b=y.offset,m=this.getBlockAtIndex(v),f=A-l===1&&s.getBlockBreakPosition()===c&&m.getBlockBreakPosition()!==b&&\"\\n\"===m.text.getStringAtPosition(b),f?r=this.blockList.editObjectAtIndex(v,function(t){return t.copyWithText(t.text.removeTextAtRange([b,b+1]))}):(h=s.text.getTextAtRange([0,c]),C=m.text.getTextAtRange([b,m.getLength()]),x=h.appendText(C),g=a!==v&&0===c,w=g&&s.getAttributeLevel()>=m.getAttributeLevel(),n=w?m.copyWithText(x):s.copyWithText(x),e=v+1-a,r=this.blockList.splice(a,e,n)),new this.constructor(r))},c.prototype.moveTextFromRangeToPosition=function(t,e){var n,o,r,s,u,c,l,h,p,d;return c=t=i(t),p=c[0],r=c[1],e>=p&&r>=e?this:(o=this.getDocumentAtRange(t),h=this.removeTextAtRange(t),u=e>p,u&&(e-=o.getLength()),l=o.getBlocks(),s=l[0],n=2<=l.length?a.call(l,1):[],0===n.length?(d=s.getTextWithoutBlockBreak(),u&&(e+=1)):d=s.text,h=h.insertTextAtRange(d,e),0===n.length?h:(o=new this.constructor(n),e+=d.getLength(),h.insertDocumentAtRange(o,e)))},c.prototype.addAttributeAtRange=function(t,e,i){var o;return o=this.blockList,this.eachBlockAtRange(i,function(i,r,s){return o=o.editObjectAtIndex(s,function(){return n(t)?i.addAttribute(t,e):r[0]===r[1]?i:i.copyWithText(i.text.addAttributeAtRange(t,e,r))})}),new this.constructor(o)},c.prototype.addAttribute=function(t,e){var n;return n=this.blockList,this.eachBlock(function(i,o){return n=n.editObjectAtIndex(o,function(){return i.addAttribute(t,e)})}),new this.constructor(n)},c.prototype.removeAttributeAtRange=function(t,e){var i;return i=this.blockList,this.eachBlockAtRange(e,function(e,o,r){return n(t)?i=i.editObjectAtIndex(r,function(){return e.removeAttribute(t)}):o[0]!==o[1]?i=i.editObjectAtIndex(r,function(){return e.copyWithText(e.text.removeAttributeAtRange(t,o))}):void 0}),new this.constructor(i)},c.prototype.updateAttributesForAttachment=function(t,e){var n,i,o,r;return o=(i=this.getRangeOfAttachment(e))[0],n=this.locationFromPosition(o).index,r=this.getTextAtIndex(n),new this.constructor(this.blockList.editObjectAtIndex(n,function(n){return n.copyWithText(r.updateAttributesForAttachment(t,e))}))},c.prototype.removeAttributeForAttachment=function(t,e){var n;return n=this.getRangeOfAttachment(e),this.removeAttributeAtRange(t,n)},c.prototype.insertBlockBreakAtRange=function(t){var n,o,r,s;return s=(t=i(t))[0],r=this.locationFromPosition(s).offset,o=this.removeTextAtRange(t),0===r&&(n=[new e.Block]),new this.constructor(o.blockList.insertSplittableListAtPosition(new e.SplittableList(n),s))},c.prototype.applyBlockAttributeAtRange=function(t,e,i){var o,r,s,a;return s=this.expandRangeToLineBreaksAndSplitBlocks(i),r=s.document,i=s.range,o=n(t),o.listAttribute?(r=r.removeLastListAttributeAtRange(i,{exceptAttributeName:t}),a=r.convertLineBreaksToBlockBreaksInRange(i),r=a.document,i=a.range):r=o.exclusive?r.removeBlockAttributesAtRange(i):o.terminal?r.removeLastTerminalAttributeAtRange(i):r.consolidateBlocksAtRange(i),r.addAttributeAtRange(t,e,i)},c.prototype.removeLastListAttributeAtRange=function(t,e){var i;return null==e&&(e={}),i=this.blockList,this.eachBlockAtRange(t,function(t,o,r){var s;if((s=t.getLastAttribute())&&n(s).listAttribute&&s!==e.exceptAttributeName)return i=i.editObjectAtIndex(r,function(){return t.removeAttribute(s)})}),new this.constructor(i)},c.prototype.removeLastTerminalAttributeAtRange=function(t){var e;return e=this.blockList,this.eachBlockAtRange(t,function(t,i,o){var r;if((r=t.getLastAttribute())&&n(r).terminal)return e=e.editObjectAtIndex(o,function(){return t.removeAttribute(r)})}),new this.constructor(e)},c.prototype.removeBlockAttributesAtRange=function(t){var e;return e=this.blockList,this.eachBlockAtRange(t,function(t,n,i){return t.hasAttributes()?e=e.editObjectAtIndex(i,function(){return t.copyWithoutAttributes()}):void 0}),new this.constructor(e)},c.prototype.expandRangeToLineBreaksAndSplitBlocks=function(t){var e,n,o,r,s,a,u,c,l;return a=t=i(t),l=a[0],r=a[1],c=this.locationFromPosition(l),o=this.locationFromPosition(r),e=this,u=e.getBlockAtIndex(c.index),null!=(c.offset=u.findLineBreakInDirectionFromPosition(\"backward\",c.offset))&&(s=e.positionFromLocation(c),e=e.insertBlockBreakAtRange([s,s+1]),o.index+=1,o.offset-=e.getBlockAtIndex(c.index).getLength(),c.index+=1),c.offset=0,0===o.offset&&o.index>c.index?(o.index-=1,o.offset=e.getBlockAtIndex(o.index).getBlockBreakPosition()):(n=e.getBlockAtIndex(o.index),\"\\n\"===n.text.getStringAtRange([o.offset-1,o.offset])?o.offset-=1:o.offset=n.findLineBreakInDirectionFromPosition(\"forward\",o.offset),o.offset!==n.getBlockBreakPosition()&&(s=e.positionFromLocation(o),e=e.insertBlockBreakAtRange([s,s+1]))),l=e.positionFromLocation(c),r=e.positionFromLocation(o),t=i([l,r]),{document:e,range:t}},c.prototype.convertLineBreaksToBlockBreaksInRange=function(t){var e,n,o;return n=(t=i(t))[0],o=this.getStringAtRange(t).slice(0,-1),e=this,o.replace(/.*?\\n/g,function(t){return n+=t.length,e=e.insertBlockBreakAtRange([n-1,n])}),{document:e,range:t}},c.prototype.consolidateBlocksAtRange=function(t){var e,n,o,r,s;return o=t=i(t),s=o[0],n=o[1],r=this.locationFromPosition(s).index,e=this.locationFromPosition(n).index,new this.constructor(this.blockList.consolidateFromIndexToIndex(r,e))},c.prototype.getDocumentAtRange=function(t){var e;return t=i(t),e=this.blockList.getSplittableListInRange(t).toArray(),new this.constructor(e)},c.prototype.getStringAtRange=function(t){var e,n,o;return o=t=i(t),n=o[o.length-1],n!==this.getLength()&&(e=-1),this.getDocumentAtRange(t).toString().slice(0,e)},c.prototype.getBlockAtIndex=function(t){return this.blockList.getObjectAtIndex(t)},c.prototype.getBlockAtPosition=function(t){var e;return e=this.locationFromPosition(t).index,this.getBlockAtIndex(e)},c.prototype.getTextAtIndex=function(t){var e;return null!=(e=this.getBlockAtIndex(t))?e.text:void 0},c.prototype.getTextAtPosition=function(t){var e;return e=this.locationFromPosition(t).index,this.getTextAtIndex(e)},c.prototype.getPieceAtPosition=function(t){var e,n,i;return i=this.locationFromPosition(t),e=i.index,n=i.offset,this.getTextAtIndex(e).getPieceAtPosition(n)},c.prototype.getCharacterAtPosition=function(t){var e,n,i;return i=this.locationFromPosition(t),e=i.index,n=i.offset,this.getTextAtIndex(e).getStringAtRange([n,n+1])},c.prototype.getLength=function(){return this.blockList.getEndPosition()},c.prototype.getBlocks=function(){return this.blockList.toArray()},c.prototype.getBlockCount=function(){return this.blockList.length},c.prototype.getEditCount=function(){return this.editCount},c.prototype.eachBlock=function(t){return this.blockList.eachObject(t)},c.prototype.eachBlockAtRange=function(t,e){var n,o,r,s,a,u,c,l,h,p,d,f;if(u=t=i(t),d=u[0],r=u[1],p=this.locationFromPosition(d),o=this.locationFromPosition(r),p.index===o.index)return n=this.getBlockAtIndex(p.index),f=[p.offset,o.offset],e(n,f,p.index);for(h=[],a=s=c=p.index,l=o.index;l>=c?l>=s:s>=l;a=l>=c?++s:--s)(n=this.getBlockAtIndex(a))?(f=function(){switch(a){case p.index:return[p.offset,n.text.getLength()];case o.index:return[0,o.offset];default:return[0,n.text.getLength()]}}(),h.push(e(n,f,a))):h.push(void 0);return h},c.prototype.getCommonAttributesAtRange=function(t){var n,r,s;return r=(t=i(t))[0],o(t)?this.getCommonAttributesAtPosition(r):(s=[],n=[],this.eachBlockAtRange(t,function(t,e){return e[0]!==e[1]?(s.push(t.text.getCommonAttributesAtRange(e)),n.push(l(t))):void 0\n}),e.Hash.fromCommonAttributesOfObjects(s).merge(e.Hash.fromCommonAttributesOfObjects(n)).toObject())},c.prototype.getCommonAttributesAtPosition=function(t){var n,i,o,r,s,a,c,h,p,d;if(p=this.locationFromPosition(t),s=p.index,h=p.offset,o=this.getBlockAtIndex(s),!o)return{};r=l(o),n=o.text.getAttributesAtPosition(h),i=o.text.getAttributesAtPosition(h-1),a=function(){var t,n;t=e.config.textAttributes,n=[];for(c in t)d=t[c],d.inheritable&&n.push(c);return n}();for(c in i)d=i[c],(d===n[c]||u.call(a,c)>=0)&&(r[c]=d);return r},c.prototype.getRangeOfCommonAttributeAtPosition=function(t,e){var n,o,r,s,a,u,c,l,h;return a=this.locationFromPosition(e),r=a.index,s=a.offset,h=this.getTextAtIndex(r),u=h.getExpandedRangeForAttributeAtOffset(t,s),l=u[0],o=u[1],c=this.positionFromLocation({index:r,offset:l}),n=this.positionFromLocation({index:r,offset:o}),i([c,n])},c.prototype.getBaseBlockAttributes=function(){var t,e,n,i,o,r,s;for(t=this.getBlockAtIndex(0).getAttributes(),n=i=1,s=this.getBlockCount();s>=1?s>i:i>s;n=s>=1?++i:--i)e=this.getBlockAtIndex(n).getAttributes(),r=Math.min(t.length,e.length),t=function(){var n,i,s;for(s=[],o=n=0,i=r;(i>=0?i>n:n>i)&&e[o]===t[o];o=i>=0?++n:--n)s.push(e[o]);return s}();return t},l=function(t){var e,n;return n={},(e=t.getLastAttribute())&&(n[e]=!0),n},c.prototype.getAttachmentById=function(t){var e,n,i,o;for(o=this.getAttachments(),n=0,i=o.length;i>n;n++)if(e=o[n],e.id===t)return e},c.prototype.getAttachmentPieces=function(){var t;return t=[],this.blockList.eachObject(function(e){var n;return n=e.text,t=t.concat(n.getAttachmentPieces())}),t},c.prototype.getAttachments=function(){var t,e,n,i,o;for(i=this.getAttachmentPieces(),o=[],t=0,e=i.length;e>t;t++)n=i[t],o.push(n.attachment);return o},c.prototype.getRangeOfAttachment=function(t){var e,n,o,r,s,a,u;for(r=0,s=this.blockList.toArray(),n=e=0,o=s.length;o>e;n=++e){if(a=s[n].text,u=a.getRangeOfAttachment(t))return i([r+u[0],r+u[1]]);r+=a.getLength()}},c.prototype.getLocationRangeOfAttachment=function(t){var e;return e=this.getRangeOfAttachment(t),this.locationRangeFromRange(e)},c.prototype.getAttachmentPieceForAttachment=function(t){var e,n,i,o;for(o=this.getAttachmentPieces(),e=0,n=o.length;n>e;e++)if(i=o[e],i.attachment===t)return i},c.prototype.findRangesForBlockAttribute=function(t){var e,n,i,o,r,s,a;for(r=0,s=[],a=this.getBlocks(),n=0,i=a.length;i>n;n++)e=a[n],o=e.getLength(),e.hasAttribute(t)&&s.push([r,r+o]),r+=o;return s},c.prototype.findRangesForTextAttribute=function(t,e){var n,i,o,r,s,a,u,c,l,h;for(h=(null!=e?e:{}).withValue,a=0,u=[],c=[],r=function(e){return null!=h?e.getAttribute(t)===h:e.hasAttribute(t)},l=this.getPieces(),n=0,i=l.length;i>n;n++)s=l[n],o=s.getLength(),r(s)&&(u[1]===a?u[1]=a+o:c.push(u=[a,a+o])),a+=o;return c},c.prototype.locationFromPosition=function(t){var e,n;return n=this.blockList.findIndexAndOffsetAtPosition(Math.max(0,t)),null!=n.index?n:(e=this.getBlocks(),{index:e.length-1,offset:e[e.length-1].getLength()})},c.prototype.positionFromLocation=function(t){return this.blockList.findPositionAtIndexAndOffset(t.index,t.offset)},c.prototype.locationRangeFromPosition=function(t){return i(this.locationFromPosition(t))},c.prototype.locationRangeFromRange=function(t){var e,n,o,r;if(t=i(t))return r=t[0],n=t[1],o=this.locationFromPosition(r),e=this.locationFromPosition(n),i([o,e])},c.prototype.rangeFromLocationRange=function(t){var e,n;return t=i(t),e=this.positionFromLocation(t[0]),o(t)||(n=this.positionFromLocation(t[1])),i([e,n])},c.prototype.isEqualTo=function(t){return this.blockList.isEqualTo(null!=t?t.blockList:void 0)},c.prototype.getTexts=function(){var t,e,n,i,o;for(i=this.getBlocks(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(t.text);return o},c.prototype.getPieces=function(){var t,e,n,i,o;for(n=[],i=this.getTexts(),t=0,e=i.length;e>t;t++)o=i[t],n.push.apply(n,o.getPieces());return n},c.prototype.getObjects=function(){return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())},c.prototype.toSerializableDocument=function(){var t;return t=[],this.blockList.eachObject(function(e){return t.push(e.copyWithText(e.text.toSerializableText()))}),new this.constructor(t)},c.prototype.toString=function(){return this.blockList.toString()},c.prototype.toJSON=function(){return this.blockList.toJSON()},c.prototype.toConsole=function(){var t;return JSON.stringify(function(){var e,n,i,o;for(i=this.blockList.toArray(),o=[],e=0,n=i.length;n>e;e++)t=i[e],o.push(JSON.parse(t.text.toConsole()));return o}.call(this))},c}(e.Object)}.call(this),function(){e.LineBreakInsertion=function(){function t(t){var e;this.composition=t,this.document=this.composition.document,e=this.composition.getSelectedRange(),this.startPosition=e[0],this.endPosition=e[1],this.startLocation=this.document.locationFromPosition(this.startPosition),this.endLocation=this.document.locationFromPosition(this.endPosition),this.block=this.document.getBlockAtIndex(this.endLocation.index),this.breaksOnReturn=this.block.breaksOnReturn(),this.previousCharacter=this.block.text.getStringAtPosition(this.endLocation.offset-1),this.nextCharacter=this.block.text.getStringAtPosition(this.endLocation.offset)}return t.prototype.shouldInsertBlockBreak=function(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?0!==this.startLocation.offset:this.breaksOnReturn&&\"\\n\"!==this.nextCharacter},t.prototype.shouldBreakFormattedBlock=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&(this.breaksOnReturn&&\"\\n\"===this.nextCharacter||\"\\n\"===this.previousCharacter)},t.prototype.shouldDecreaseListLevel=function(){return this.block.hasAttributes()&&this.block.isListItem()&&this.block.isEmpty()},t.prototype.shouldPrependListItem=function(){return this.block.isListItem()&&0===this.startLocation.offset&&!this.block.isEmpty()},t.prototype.shouldRemoveLastBlockAttribute=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&this.block.isEmpty()},t}()}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h=function(t,e){function n(){this.constructor=t}for(var i in e)p.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},p={}.hasOwnProperty;s=e.normalizeRange,c=e.rangesAreEqual,u=e.rangeIsCollapsed,a=e.objectsAreEqual,t=e.arrayStartsWith,l=e.summarizeArrayChange,i=e.getAllAttributeNames,o=e.getBlockConfig,r=e.getTextConfig,n=e.extend,e.Composition=function(p){function d(){this.document=new e.Document,this.attachments=[],this.currentAttributes={},this.revision=0}var f;return h(d,p),d.prototype.setDocument=function(t){var e;return t.isEqualTo(this.document)?void 0:(this.document=t,this.refreshAttachments(),this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidChangeDocument?e.compositionDidChangeDocument(t):void 0)},d.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.getSelectedRange()}},d.prototype.loadSnapshot=function(t){var n,i,o,r;return n=t.document,r=t.selectedRange,null!=(i=this.delegate)&&\"function\"==typeof i.compositionWillLoadSnapshot&&i.compositionWillLoadSnapshot(),this.setDocument(null!=n?n:new e.Document),this.setSelection(null!=r?r:[0,0]),null!=(o=this.delegate)&&\"function\"==typeof o.compositionDidLoadSnapshot?o.compositionDidLoadSnapshot():void 0},d.prototype.insertText=function(t,e){var n,i,o,r;return r=(null!=e?e:{updatePosition:!0}).updatePosition,i=this.getSelectedRange(),this.setDocument(this.document.insertTextAtRange(t,i)),o=i[0],n=o+t.getLength(),r&&this.setSelection(n),this.notifyDelegateOfInsertionAtRange([o,n])},d.prototype.insertBlock=function(t){var n;return null==t&&(t=new e.Block),n=new e.Document([t]),this.insertDocument(n)},d.prototype.insertDocument=function(t){var n,i,o;return null==t&&(t=new e.Document),i=this.getSelectedRange(),this.setDocument(this.document.insertDocumentAtRange(t,i)),o=i[0],n=o+t.getLength(),this.setSelection(n),this.notifyDelegateOfInsertionAtRange([o,n])},d.prototype.insertString=function(t,n){var i,o;return i=this.getCurrentTextAttributes(),o=e.Text.textForStringWithAttributes(t,i),this.insertText(o,n)},d.prototype.insertBlockBreak=function(){var t,e,n;return e=this.getSelectedRange(),this.setDocument(this.document.insertBlockBreakAtRange(e)),n=e[0],t=n+1,this.setSelection(t),this.notifyDelegateOfInsertionAtRange([n,t])},d.prototype.insertLineBreak=function(){var t,n;return n=new e.LineBreakInsertion(this),n.shouldDecreaseListLevel()?(this.decreaseListLevel(),this.setSelection(n.startPosition)):n.shouldPrependListItem()?(t=new e.Document([n.block.copyWithoutText()]),this.insertDocument(t)):n.shouldInsertBlockBreak()?this.insertBlockBreak():n.shouldRemoveLastBlockAttribute()?this.removeLastBlockAttribute():n.shouldBreakFormattedBlock()?this.breakFormattedBlock(n):this.insertString(\"\\n\")},d.prototype.insertHTML=function(t){var n,i,o,r;return n=e.Document.fromHTML(t),o=this.getSelectedRange(),this.setDocument(this.document.mergeDocumentAtRange(n,o)),r=o[0],i=r+n.getLength()-1,this.setSelection(i),this.notifyDelegateOfInsertionAtRange([r,i])},d.prototype.replaceHTML=function(t){var n,i,o;return n=e.Document.fromHTML(t).copyUsingObjectsFromDocument(this.document),i=this.getLocationRange({strict:!1}),o=this.document.rangeFromLocationRange(i),this.setDocument(n),this.setSelection(o)},d.prototype.insertFile=function(t){return this.insertFiles([t])},d.prototype.insertFiles=function(t){var n,i,o,r,s,a;for(i=[],r=0,s=t.length;s>r;r++)o=t[r],(null!=(a=this.delegate)?a.compositionShouldAcceptFile(o):void 0)&&(n=e.Attachment.attachmentForFile(o),i.push(n));return this.insertAttachments(i)},d.prototype.insertAttachment=function(t){return this.insertAttachments([t])},d.prototype.insertAttachments=function(t){var n,i,o,r,s,a,u,c,l;for(c=new e.Text,r=0,s=t.length;s>r;r++)n=t[r],l=n.getType(),a=null!=(u=e.config.attachments[l])?u.presentation:void 0,o=this.getCurrentTextAttributes(),a&&(o.presentation=a),i=e.Text.textForAttachmentWithAttributes(n,o),c=c.appendText(i);return this.insertText(c)},d.prototype.shouldManageDeletingInDirection=function(t){var e;if(e=this.getLocationRange(),u(e)){if(\"backward\"===t&&0===e[0].offset)return!0;if(this.shouldManageMovingCursorInDirection(t))return!0}else if(e[0].index!==e[1].index)return!0;return!1},d.prototype.deleteInDirection=function(t,e){var n,i,o,r,s,a,c,l;return r=(null!=e?e:{}).length,s=this.getLocationRange(),a=this.getSelectedRange(),c=u(a),c?o=\"backward\"===t&&0===s[0].offset:l=s[0].index!==s[1].index,o&&this.canDecreaseBlockAttributeLevel()&&(i=this.getBlock(),i.isListItem()?this.decreaseListLevel():this.decreaseBlockAttributeLevel(),this.setSelection(a[0]),i.isEmpty())?!1:(c&&(a=this.getExpandedRangeInDirection(t,{length:r}),\"backward\"===t&&(n=this.getAttachmentAtRange(a))),n?(this.editAttachment(n),!1):(this.setDocument(this.document.removeTextAtRange(a)),this.setSelection(a[0]),o||l?!1:void 0))},d.prototype.moveTextFromRange=function(t){var e;return e=this.getSelectedRange()[0],this.setDocument(this.document.moveTextFromRangeToPosition(t,e)),this.setSelection(e)},d.prototype.removeAttachment=function(t){var e;return(e=this.document.getRangeOfAttachment(t))?(this.stopEditingAttachment(),this.setDocument(this.document.removeTextAtRange(e)),this.setSelection(e[0])):void 0},d.prototype.removeLastBlockAttribute=function(){var t,e,n,i;return n=this.getSelectedRange(),i=n[0],e=n[1],t=this.document.getBlockAtPosition(e),this.removeCurrentAttribute(t.getLastAttribute()),this.setSelection(i)},f=\" \",d.prototype.insertPlaceholder=function(){return this.placeholderPosition=this.getPosition(),this.insertString(f)},d.prototype.selectPlaceholder=function(){return null!=this.placeholderPosition?(this.setSelectedRange([this.placeholderPosition,this.placeholderPosition+f.length]),this.getSelectedRange()):void 0},d.prototype.forgetPlaceholder=function(){return this.placeholderPosition=null},d.prototype.hasCurrentAttribute=function(t){var e;return e=this.currentAttributes[t],null!=e&&e!==!1},d.prototype.toggleCurrentAttribute=function(t){var e;return(e=!this.currentAttributes[t])?this.setCurrentAttribute(t,e):this.removeCurrentAttribute(t)},d.prototype.canSetCurrentAttribute=function(t){return o(t)?this.canSetCurrentBlockAttribute(t):this.canSetCurrentTextAttribute(t)},d.prototype.canSetCurrentTextAttribute=function(){var t,e,n,i,o;if(e=this.getSelectedDocument()){for(o=e.getAttachments(),n=0,i=o.length;i>n;n++)if(t=o[n],!t.hasContent())return!1;return!0}},d.prototype.canSetCurrentBlockAttribute=function(){var t;if(t=this.getBlock())return!t.isTerminalBlock()},d.prototype.setCurrentAttribute=function(t,e){return o(t)?this.setBlockAttribute(t,e):(this.setTextAttribute(t,e),this.currentAttributes[t]=e,this.notifyDelegateOfCurrentAttributesChange())},d.prototype.setTextAttribute=function(t,n){var i,o,r,s;if(o=this.getSelectedRange())return r=o[0],i=o[1],r!==i?this.setDocument(this.document.addAttributeAtRange(t,n,o)):\"href\"===t?(s=e.Text.textForStringWithAttributes(n,{href:n}),this.insertText(s)):void 0},d.prototype.setBlockAttribute=function(t,e){var n,i;if(i=this.getSelectedRange())return this.canSetCurrentAttribute(t)?(n=this.getBlock(),this.setDocument(this.document.applyBlockAttributeAtRange(t,e,i)),this.setSelection(i)):void 0},d.prototype.removeCurrentAttribute=function(t){return o(t)?(this.removeBlockAttribute(t),this.updateCurrentAttributes()):(this.removeTextAttribute(t),delete this.currentAttributes[t],this.notifyDelegateOfCurrentAttributesChange())},d.prototype.removeTextAttribute=function(t){var e;if(e=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,e))},d.prototype.removeBlockAttribute=function(t){var e;if(e=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,e))},d.prototype.canDecreaseNestingLevel=function(){var t;return(null!=(t=this.getBlock())?t.getNestingLevel():void 0)>0},d.prototype.canIncreaseNestingLevel=function(){var e,n,i;if(e=this.getBlock())return(null!=(i=o(e.getLastNestableAttribute()))?i.listAttribute:0)?(n=this.getPreviousBlock())?t(n.getListItemAttributes(),e.getListItemAttributes()):void 0:e.getNestingLevel()>0},d.prototype.decreaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.decreaseNestingLevel()))},d.prototype.increaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.increaseNestingLevel()))},d.prototype.canDecreaseBlockAttributeLevel=function(){var t;return(null!=(t=this.getBlock())?t.getAttributeLevel():void 0)>0},d.prototype.decreaseBlockAttributeLevel=function(){var t,e;return(t=null!=(e=this.getBlock())?e.getLastAttribute():void 0)?this.removeCurrentAttribute(t):void 0},d.prototype.decreaseListLevel=function(){var t,e,n,i,o,r;for(r=this.getSelectedRange()[0],o=this.document.locationFromPosition(r).index,n=o,t=this.getBlock().getAttributeLevel();(e=this.document.getBlockAtIndex(n+1))&&e.isListItem()&&e.getAttributeLevel()>t;)n++;return r=this.document.positionFromLocation({index:o,offset:0}),i=this.document.positionFromLocation({index:n,offset:0}),this.setDocument(this.document.removeLastListAttributeAtRange([r,i]))},d.prototype.updateCurrentAttributes=function(){var t,e,n,o,r,s;if(s=this.getSelectedRange({ignoreLock:!0})){for(e=this.document.getCommonAttributesAtRange(s),r=i(),n=0,o=r.length;o>n;n++)t=r[n],e[t]||this.canSetCurrentAttribute(t)||(e[t]=!1);if(!a(e,this.currentAttributes))return this.currentAttributes=e,this.notifyDelegateOfCurrentAttributesChange()}},d.prototype.getCurrentAttributes=function(){return n.call({},this.currentAttributes)},d.prototype.getCurrentTextAttributes=function(){var t,e,n,i;t={},n=this.currentAttributes;for(e in n)i=n[e],i!==!1&&r(e)&&(t[e]=i);return t},d.prototype.freezeSelection=function(){return this.setCurrentAttribute(\"frozen\",!0)},d.prototype.thawSelection=function(){return this.removeCurrentAttribute(\"frozen\")},d.prototype.hasFrozenSelection=function(){return this.hasCurrentAttribute(\"frozen\")},d.proxyMethod(\"getSelectionManager().getPointRange\"),d.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"),d.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"),d.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"),d.proxyMethod(\"getSelectionManager().selectionIsExpanded\"),d.proxyMethod(\"delegate?.getSelectionManager\"),d.prototype.setSelection=function(t){var e,n;return e=this.document.locationRangeFromRange(t),null!=(n=this.delegate)?n.compositionDidRequestChangingSelectionToLocationRange(e):void 0},d.prototype.getSelectedRange=function(){var t;return(t=this.getLocationRange())?this.document.rangeFromLocationRange(t):void 0},d.prototype.setSelectedRange=function(t){var e;return e=this.document.locationRangeFromRange(t),this.getSelectionManager().setLocationRange(e)},d.prototype.getPosition=function(){var t;return(t=this.getLocationRange())?this.document.positionFromLocation(t[0]):void 0},d.prototype.getLocationRange=function(t){var e,n;return null!=(e=null!=(n=this.targetLocationRange)?n:this.getSelectionManager().getLocationRange(t))?e:s({index:0,offset:0})},d.prototype.withTargetLocationRange=function(t,e){var n;this.targetLocationRange=t;try{n=e()}finally{this.targetLocationRange=null}return n},d.prototype.withTargetRange=function(t,e){var n;return n=this.document.locationRangeFromRange(t),this.withTargetLocationRange(n,e)},d.prototype.withTargetDOMRange=function(t,e){var n;return n=this.createLocationRangeFromDOMRange(t,{strict:!1}),this.withTargetLocationRange(n,e)},d.prototype.getExpandedRangeInDirection=function(t,e){var n,i,o,r;return i=(null!=e?e:{}).length,o=this.getSelectedRange(),r=o[0],n=o[1],\"backward\"===t?i?r-=i:r=this.translateUTF16PositionFromOffset(r,-1):i?n+=i:n=this.translateUTF16PositionFromOffset(n,1),s([r,n])},d.prototype.shouldManageMovingCursorInDirection=function(t){var e;return this.editingAttachment?!0:(e=this.getExpandedRangeInDirection(t),null!=this.getAttachmentAtRange(e))},d.prototype.moveCursorInDirection=function(t){var e,n,i,o;return this.editingAttachment?i=this.document.getRangeOfAttachment(this.editingAttachment):(o=this.getSelectedRange(),i=this.getExpandedRangeInDirection(t),n=!c(o,i)),this.setSelectedRange(\"backward\"===t?i[0]:i[1]),n&&(e=this.getAttachmentAtRange(i))?this.editAttachment(e):void 0},d.prototype.expandSelectionInDirection=function(t,e){var n,i;return n=(null!=e?e:{}).length,i=this.getExpandedRangeInDirection(t,{length:n}),this.setSelectedRange(i)},d.prototype.expandSelectionForEditing=function(){return this.hasCurrentAttribute(\"href\")?this.expandSelectionAroundCommonAttribute(\"href\"):void 0},d.prototype.expandSelectionAroundCommonAttribute=function(t){var e,n;return e=this.getPosition(),n=this.document.getRangeOfCommonAttributeAtPosition(t,e),this.setSelectedRange(n)},d.prototype.selectionContainsAttachments=function(){var t;return(null!=(t=this.getSelectedAttachments())?t.length:void 0)>0},d.prototype.selectionIsInCursorTarget=function(){return this.editingAttachment||this.positionIsCursorTarget(this.getPosition())},d.prototype.positionIsCursorTarget=function(t){var e;return(e=this.document.locationFromPosition(t))?this.locationIsCursorTarget(e):void 0},d.prototype.positionIsBlockBreak=function(t){var e;return null!=(e=this.document.getPieceAtPosition(t))?e.isBlockBreak():void 0},d.prototype.getSelectedDocument=function(){var t;return(t=this.getSelectedRange())?this.document.getDocumentAtRange(t):void 0},d.prototype.getSelectedAttachments=function(){var t;return null!=(t=this.getSelectedDocument())?t.getAttachments():void 0},d.prototype.getAttachments=function(){return this.attachments.slice(0)},d.prototype.refreshAttachments=function(){var t,e,n,i,o,r,s,a,u,c,h,p;for(n=this.document.getAttachments(),a=l(this.attachments,n),t=a.added,h=a.removed,this.attachments=n,i=0,r=h.length;r>i;i++)e=h[i],e.delegate=null,null!=(u=this.delegate)&&\"function\"==typeof u.compositionDidRemoveAttachment&&u.compositionDidRemoveAttachment(e);for(p=[],o=0,s=t.length;s>o;o++)e=t[o],e.delegate=this,p.push(null!=(c=this.delegate)&&\"function\"==typeof c.compositionDidAddAttachment?c.compositionDidAddAttachment(e):void 0);return p},d.prototype.attachmentDidChangeAttributes=function(t){var e;return this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidEditAttachment?e.compositionDidEditAttachment(t):void 0},d.prototype.attachmentDidChangePreviewURL=function(t){var e;return this.revision++,null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidChangeAttachmentPreviewURL?e.compositionDidChangeAttachmentPreviewURL(t):void 0},d.prototype.editAttachment=function(t,e){var n;if(t!==this.editingAttachment)return this.stopEditingAttachment(),this.editingAttachment=t,null!=(n=this.delegate)&&\"function\"==typeof n.compositionDidStartEditingAttachment?n.compositionDidStartEditingAttachment(this.editingAttachment,e):void 0},d.prototype.stopEditingAttachment=function(){var t;if(this.editingAttachment)return null!=(t=this.delegate)&&\"function\"==typeof t.compositionDidStopEditingAttachment&&t.compositionDidStopEditingAttachment(this.editingAttachment),this.editingAttachment=null},d.prototype.updateAttributesForAttachment=function(t,e){return this.setDocument(this.document.updateAttributesForAttachment(t,e))},d.prototype.removeAttributeForAttachment=function(t,e){return this.setDocument(this.document.removeAttributeForAttachment(t,e))},d.prototype.breakFormattedBlock=function(t){var n,i,o,r,s;return i=t.document,n=t.block,r=t.startPosition,s=[r-1,r],n.getBlockBreakPosition()===t.startLocation.offset?(n.breaksOnReturn()&&\"\\n\"===t.nextCharacter?r+=1:i=i.removeTextAtRange(s),s=[r,r]):\"\\n\"===t.nextCharacter?\"\\n\"===t.previousCharacter?s=[r-1,r+1]:(s=[r,r+1],r+=1):t.startLocation.offset-1!==0&&(r+=1),o=new e.Document([n.removeLastAttribute().copyWithoutText()]),this.setDocument(i.insertDocumentAtRange(o,s)),this.setSelection(r)},d.prototype.getPreviousBlock=function(){var t,e;return(e=this.getLocationRange())&&(t=e[0].index,t>0)?this.document.getBlockAtIndex(t-1):void 0},d.prototype.getBlock=function(){var t;return(t=this.getLocationRange())?this.document.getBlockAtIndex(t[0].index):void 0},d.prototype.getAttachmentAtRange=function(t){var n;return n=this.document.getDocumentAtRange(t),n.toString()===e.OBJECT_REPLACEMENT_CHARACTER+\"\\n\"?n.getAttachments()[0]:void 0},d.prototype.notifyDelegateOfCurrentAttributesChange=function(){var t;return null!=(t=this.delegate)&&\"function\"==typeof t.compositionDidChangeCurrentAttributes?t.compositionDidChangeCurrentAttributes(this.currentAttributes):void 0},d.prototype.notifyDelegateOfInsertionAtRange=function(t){var e;return null!=(e=this.delegate)&&\"function\"==typeof e.compositionDidPerformInsertionAtRange?e.compositionDidPerformInsertionAtRange(t):void 0},d.prototype.translateUTF16PositionFromOffset=function(t,e){var n,i;return i=this.document.toUTF16String(),n=i.offsetFromUCS2Offset(t),i.offsetToUCS2Offset(n+e)},d}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.UndoManager=function(e){function n(t){this.composition=t,this.undoEntries=[],this.redoEntries=[]}var i;return t(n,e),n.prototype.recordUndoEntry=function(t,e){var n,o,r,s,a;return s=null!=e?e:{},o=s.context,n=s.consolidatable,r=this.undoEntries.slice(-1)[0],n&&i(r,t,o)?void 0:(a=this.createEntry({description:t,context:o}),this.undoEntries.push(a),this.redoEntries=[])},n.prototype.undo=function(){var t,e;return(e=this.undoEntries.pop())?(t=this.createEntry(e),this.redoEntries.push(t),this.composition.loadSnapshot(e.snapshot)):void 0},n.prototype.redo=function(){var t,e;return(t=this.redoEntries.pop())?(e=this.createEntry(t),this.undoEntries.push(e),this.composition.loadSnapshot(t.snapshot)):void 0},n.prototype.canUndo=function(){return this.undoEntries.length>0},n.prototype.canRedo=function(){return this.redoEntries.length>0},n.prototype.createEntry=function(t){var e,n,i;return i=null!=t?t:{},n=i.description,e=i.context,{description:null!=n?n.toString():void 0,context:JSON.stringify(e),snapshot:this.composition.getSnapshot()}},i=function(t,e,n){return(null!=t?t.description:void 0)===(null!=e?e.toString():void 0)&&(null!=t?t.context:void 0)===JSON.stringify(n)},n}(e.BasicObject)}.call(this),function(){var t;e.attachmentGalleryFilter=function(e){var n;return n=new t(e),n.perform(),n.getSnapshot()},t=function(){function t(t){this.document=t.document,this.selectedRange=t.selectedRange}var e,n,i;return e=\"attachmentGallery\",n=\"presentation\",i=\"gallery\",t.prototype.perform=function(){return this.removeBlockAttribute(),this.applyBlockAttribute()},t.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.selectedRange}},t.prototype.removeBlockAttribute=function(){var t,n,i,o,r;for(o=this.findRangesOfBlocks(),r=[],t=0,n=o.length;n>t;t++)i=o[t],r.push(this.document=this.document.removeAttributeAtRange(e,i));return r},t.prototype.applyBlockAttribute=function(){var t,n,i,o,r,s;for(i=0,r=this.findRangesOfPieces(),s=[],t=0,n=r.length;n>t;t++)o=r[t],o[1]-o[0]>1&&(o[0]+=i,o[1]+=i,\"\\n\"!==this.document.getCharacterAtPosition(o[1])&&(this.document=this.document.insertBlockBreakAtRange(o[1]),o[1]<this.selectedRange[1]&&this.moveSelectedRangeForward(),o[1]++,i++),0!==o[0]&&\"\\n\"!==this.document.getCharacterAtPosition(o[0]-1)&&(this.document=this.document.insertBlockBreakAtRange(o[0]),o[0]<this.selectedRange[0]&&this.moveSelectedRangeForward(),o[0]++,i++),s.push(this.document=this.document.applyBlockAttributeAtRange(e,!0,o)));return s},t.prototype.findRangesOfBlocks=function(){return this.document.findRangesForBlockAttribute(e)},t.prototype.findRangesOfPieces=function(){return this.document.findRangesForTextAttribute(n,{withValue:i})},t.prototype.moveSelectedRangeForward=function(){return this.selectedRange[0]+=1,this.selectedRange[1]+=1},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Editor=function(){function n(n,o,r){this.composition=n,this.selectionManager=o,this.element=r,this.insertFiles=t(this.insertFiles,this),this.undoManager=new e.UndoManager(this.composition),this.filters=i.slice(0)}var i;return i=[e.attachmentGalleryFilter],n.prototype.loadDocument=function(t){return this.loadSnapshot({document:t,selectedRange:[0,0]})},n.prototype.loadHTML=function(t){return null==t&&(t=\"\"),this.loadDocument(e.Document.fromHTML(t,{referenceElement:this.element}))},n.prototype.loadJSON=function(t){var n,i;return n=t.document,i=t.selectedRange,n=e.Document.fromJSON(n),this.loadSnapshot({document:n,selectedRange:i})},n.prototype.loadSnapshot=function(t){return this.undoManager=new e.UndoManager(this.composition),this.composition.loadSnapshot(t)},n.prototype.getDocument=function(){return this.composition.document},n.prototype.getSelectedDocument=function(){return this.composition.getSelectedDocument()},n.prototype.getSnapshot=function(){return this.composition.getSnapshot()},n.prototype.toJSON=function(){return this.getSnapshot()},n.prototype.deleteInDirection=function(t){return this.composition.deleteInDirection(t)},n.prototype.insertAttachment=function(t){return this.composition.insertAttachment(t)},n.prototype.insertAttachments=function(t){return this.composition.insertAttachments(t)},n.prototype.insertDocument=function(t){return this.composition.insertDocument(t)},n.prototype.insertFile=function(t){return this.composition.insertFile(t)},n.prototype.insertFiles=function(t){return this.composition.insertFiles(t)},n.prototype.insertHTML=function(t){return this.composition.insertHTML(t)},n.prototype.insertString=function(t){return this.composition.insertString(t)},n.prototype.insertText=function(t){return this.composition.insertText(t)},n.prototype.insertLineBreak=function(){return this.composition.insertLineBreak()},n.prototype.getSelectedRange=function(){return this.composition.getSelectedRange()},n.prototype.getPosition=function(){return this.composition.getPosition()},n.prototype.getClientRectAtPosition=function(t){var e;return e=this.getDocument().locationRangeFromRange([t,t+1]),this.selectionManager.getClientRectAtLocationRange(e)},n.prototype.expandSelectionInDirection=function(t){return this.composition.expandSelectionInDirection(t)},n.prototype.moveCursorInDirection=function(t){return this.composition.moveCursorInDirection(t)},n.prototype.setSelectedRange=function(t){return this.composition.setSelectedRange(t)},n.prototype.activateAttribute=function(t,e){return null==e&&(e=!0),this.composition.setCurrentAttribute(t,e)},n.prototype.attributeIsActive=function(t){return this.composition.hasCurrentAttribute(t)},n.prototype.canActivateAttribute=function(t){return this.composition.canSetCurrentAttribute(t)},n.prototype.deactivateAttribute=function(t){return this.composition.removeCurrentAttribute(t)},n.prototype.canDecreaseNestingLevel=function(){return this.composition.canDecreaseNestingLevel()},n.prototype.canIncreaseNestingLevel=function(){return this.composition.canIncreaseNestingLevel()},n.prototype.decreaseNestingLevel=function(){return this.canDecreaseNestingLevel()?this.composition.decreaseNestingLevel():void 0},n.prototype.increaseNestingLevel=function(){return this.canIncreaseNestingLevel()?this.composition.increaseNestingLevel():void 0},n.prototype.canRedo=function(){return this.undoManager.canRedo()},n.prototype.canUndo=function(){return this.undoManager.canUndo()},n.prototype.recordUndoEntry=function(t,e){var n,i,o;return o=null!=e?e:{},i=o.context,n=o.consolidatable,this.undoManager.recordUndoEntry(t,{context:i,consolidatable:n})},n.prototype.redo=function(){return this.canRedo()?this.undoManager.redo():void 0},n.prototype.undo=function(){return this.canUndo()?this.undoManager.undo():void 0},n}()}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.ManagedAttachment=function(e){function n(t,e){var n;this.attachmentManager=t,this.attachment=e,n=this.attachment,this.id=n.id,this.file=n.file}return t(n,e),n.prototype.remove=function(){return this.attachmentManager.requestRemovalOfAttachment(this.attachment)},n.proxyMethod(\"attachment.getAttribute\"),n.proxyMethod(\"attachment.hasAttribute\"),n.proxyMethod(\"attachment.setAttribute\"),n.proxyMethod(\"attachment.getAttributes\"),n.proxyMethod(\"attachment.setAttributes\"),n.proxyMethod(\"attachment.isPending\"),n.proxyMethod(\"attachment.isPreviewable\"),n.proxyMethod(\"attachment.getURL\"),n.proxyMethod(\"attachment.getHref\"),n.proxyMethod(\"attachment.getFilename\"),n.proxyMethod(\"attachment.getFilesize\"),n.proxyMethod(\"attachment.getFormattedFilesize\"),n.proxyMethod(\"attachment.getExtension\"),n.proxyMethod(\"attachment.getContentType\"),n.proxyMethod(\"attachment.getFile\"),n.proxyMethod(\"attachment.setFile\"),n.proxyMethod(\"attachment.releaseFile\"),n.proxyMethod(\"attachment.getUploadProgress\"),n.proxyMethod(\"attachment.setUploadProgress\"),n}(e.BasicObject)}.call(this),function(){var t=function(t,e){function i(){this.constructor=t}for(var o in e)n.call(e,o)&&(t[o]=e[o]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},n={}.hasOwnProperty;e.AttachmentManager=function(n){function i(t){var e,n,i;for(null==t&&(t=[]),this.managedAttachments={},n=0,i=t.length;i>n;n++)e=t[n],this.manageAttachment(e)}return t(i,n),i.prototype.getAttachments=function(){var t,e,n,i;n=this.managedAttachments,i=[];for(e in n)t=n[e],i.push(t);return i},i.prototype.manageAttachment=function(t){var n,i;return null!=(n=this.managedAttachments)[i=t.id]?n[i]:n[i]=new e.ManagedAttachment(this,t)},i.prototype.attachmentIsManaged=function(t){return t.id in this.managedAttachments},i.prototype.requestRemovalOfAttachment=function(t){var e;return this.attachmentIsManaged(t)&&null!=(e=this.delegate)&&\"function\"==typeof e.attachmentManagerDidRequestRemovalOfAttachment?e.attachmentManagerDidRequestRemovalOfAttachment(t):void 0},i.prototype.unmanageAttachment=function(t){var e;return e=this.managedAttachments[t.id],delete this.managedAttachments[t.id],e},i}(e.BasicObject)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h;t=e.elementContainsNode,n=e.findChildIndexOfNode,r=e.nodeIsBlockStart,s=e.nodeIsBlockStartComment,o=e.nodeIsBlockContainer,a=e.nodeIsCursorTarget,u=e.nodeIsEmptyTextNode,c=e.nodeIsTextNode,i=e.nodeIsAttachmentElement,l=e.tagName,h=e.walkTree,e.LocationMapper=function(){function e(t){this.element=t}var p,d,f,g;return e.prototype.findLocationFromContainerAndOffset=function(e,i,o){var s,u,l,p,g,m,v;for(m=(null!=o?o:{strict:!0}).strict,u=0,l=!1,p={index:0,offset:0},(s=this.findAttachmentElementParentForNode(e))&&(e=s.parentNode,i=n(s)),v=h(this.element,{usingFilter:f});v.nextNode();){if(g=v.currentNode,g===e&&c(e)){a(g)||(p.offset+=i);\nbreak}if(g.parentNode===e){if(u++===i)break}else if(!t(e,g)&&u>0)break;r(g,{strict:m})?(l&&p.index++,p.offset=0,l=!0):p.offset+=d(g)}return p},e.prototype.findContainerAndOffsetFromLocation=function(t){var e,i,s,u,l;if(0===t.index&&0===t.offset){for(e=this.element,u=0;e.firstChild;)if(e=e.firstChild,o(e)){u=1;break}return[e,u]}if(l=this.findNodeAndOffsetFromLocation(t),i=l[0],s=l[1],i){if(c(i))0===d(i)?(e=i.parentNode.parentNode,u=n(i.parentNode),a(i,{name:\"right\"})&&u++):(e=i,u=t.offset-s);else{if(e=i.parentNode,!r(i.previousSibling)&&!o(e))for(;i===e.lastChild&&(i=e,e=e.parentNode,!o(e)););u=n(i),0!==t.offset&&u++}return[e,u]}},e.prototype.findNodeAndOffsetFromLocation=function(t){var e,n,i,o,r,s,u,l;for(u=0,l=this.getSignificantNodesForIndex(t.index),n=0,i=l.length;i>n;n++){if(e=l[n],o=d(e),t.offset<=u+o)if(c(e)){if(r=e,s=u,t.offset===s&&a(r))break}else r||(r=e,s=u);if(u+=o,u>t.offset)break}return[r,s]},e.prototype.findAttachmentElementParentForNode=function(t){for(;t&&t!==this.element;){if(i(t))return t;t=t.parentNode}},e.prototype.getSignificantNodesForIndex=function(t){var e,n,i,o,r;for(i=[],r=h(this.element,{usingFilter:p}),o=!1;r.nextNode();)if(n=r.currentNode,s(n)){if(\"undefined\"!=typeof e&&null!==e?e++:e=0,e===t)o=!0;else if(o)break}else o&&i.push(n);return i},d=function(t){var e;return t.nodeType===Node.TEXT_NODE?a(t)?0:(e=t.textContent,e.length):\"br\"===l(t)||i(t)?1:0},p=function(t){return g(t)===NodeFilter.FILTER_ACCEPT?f(t):NodeFilter.FILTER_REJECT},g=function(t){return u(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},f=function(t){return i(t.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},e}()}.call(this),function(){var t,n,i=[].slice;t=e.getDOMRange,n=e.setDOMRange,e.PointMapper=function(){function e(){}return e.prototype.createDOMRangeFromPoint=function(e){var i,o,r,s,a,u,c,l;if(c=e.x,l=e.y,document.caretPositionFromPoint)return a=document.caretPositionFromPoint(c,l),r=a.offsetNode,o=a.offset,i=document.createRange(),i.setStart(r,o),i;if(document.caretRangeFromPoint)return document.caretRangeFromPoint(c,l);if(document.body.createTextRange){s=t();try{u=document.body.createTextRange(),u.moveToPoint(c,l),u.select()}catch(h){}return i=t(),n(s),i}},e.prototype.getClientRectsForDOMRange=function(t){var e,n,o;return n=i.call(t.getClientRects()),o=n[0],e=n[n.length-1],[o,e]},e}()}.call(this),function(){var t,n=function(t,e){return function(){return t.apply(e,arguments)}},i=function(t,e){function n(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},o={}.hasOwnProperty,r=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};t=e.getDOMRange,e.SelectionChangeObserver=function(e){function o(){this.run=n(this.run,this),this.update=n(this.update,this),this.selectionManagers=[]}var s;return i(o,e),o.prototype.start=function(){return this.started?void 0:(this.started=!0,\"onselectionchange\"in document?document.addEventListener(\"selectionchange\",this.update,!0):this.run())},o.prototype.stop=function(){return this.started?(this.started=!1,document.removeEventListener(\"selectionchange\",this.update,!0)):void 0},o.prototype.registerSelectionManager=function(t){return r.call(this.selectionManagers,t)<0?(this.selectionManagers.push(t),this.start()):void 0},o.prototype.unregisterSelectionManager=function(t){var e;return this.selectionManagers=function(){var n,i,o,r;for(o=this.selectionManagers,r=[],n=0,i=o.length;i>n;n++)e=o[n],e!==t&&r.push(e);return r}.call(this),0===this.selectionManagers.length?this.stop():void 0},o.prototype.notifySelectionManagersOfSelectionChange=function(){var t,e,n,i,o;for(n=this.selectionManagers,i=[],t=0,e=n.length;e>t;t++)o=n[t],i.push(o.selectionDidChange());return i},o.prototype.update=function(){var e;return e=t(),s(e,this.domRange)?void 0:(this.domRange=e,this.notifySelectionManagersOfSelectionChange())},o.prototype.reset=function(){return this.domRange=null,this.update()},o.prototype.run=function(){return this.started?(this.update(),requestAnimationFrame(this.run)):void 0},s=function(t,e){return(null!=t?t.startContainer:void 0)===(null!=e?e.startContainer:void 0)&&(null!=t?t.startOffset:void 0)===(null!=e?e.startOffset:void 0)&&(null!=t?t.endContainer:void 0)===(null!=e?e.endContainer:void 0)&&(null!=t?t.endOffset:void 0)===(null!=e?e.endOffset:void 0)},o}(e.BasicObject),null==e.selectionChangeObserver&&(e.selectionChangeObserver=new e.SelectionChangeObserver)}.call(this),function(){var t,n,i,o,r,s,a,u,c,l,h=function(t,e){return function(){return t.apply(e,arguments)}},p=function(t,e){function n(){this.constructor=t}for(var i in e)d.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},d={}.hasOwnProperty;i=e.getDOMSelection,n=e.getDOMRange,l=e.setDOMRange,t=e.elementContainsNode,s=e.nodeIsCursorTarget,r=e.innerElementIsActive,o=e.handleEvent,a=e.normalizeRange,u=e.rangeIsCollapsed,c=e.rangesAreEqual,e.SelectionManager=function(d){function f(t){this.element=t,this.selectionDidChange=h(this.selectionDidChange,this),this.didMouseDown=h(this.didMouseDown,this),this.locationMapper=new e.LocationMapper(this.element),this.pointMapper=new e.PointMapper,this.lockCount=0,o(\"mousedown\",{onElement:this.element,withCallback:this.didMouseDown})}return p(f,d),f.prototype.getLocationRange=function(t){var e,i;return null==t&&(t={}),e=t.strict===!1?this.createLocationRangeFromDOMRange(n(),{strict:!1}):t.ignoreLock?this.currentLocationRange:null!=(i=this.lockedLocationRange)?i:this.currentLocationRange},f.prototype.setLocationRange=function(t){var e;if(!this.lockedLocationRange)return t=a(t),(e=this.createDOMRangeFromLocationRange(t))?(l(e),this.updateCurrentLocationRange(t)):void 0},f.prototype.setLocationRangeFromPointRange=function(t){var e,n;return t=a(t),n=this.getLocationAtPoint(t[0]),e=this.getLocationAtPoint(t[1]),this.setLocationRange([n,e])},f.prototype.getClientRectAtLocationRange=function(t){var e;return(e=this.createDOMRangeFromLocationRange(t))?this.getClientRectsForDOMRange(e)[1]:void 0},f.prototype.locationIsCursorTarget=function(t){var e,n,i;return i=this.findNodeAndOffsetFromLocation(t),e=i[0],n=i[1],s(e)},f.prototype.lock=function(){return 0===this.lockCount++?(this.updateCurrentLocationRange(),this.lockedLocationRange=this.getLocationRange()):void 0},f.prototype.unlock=function(){var t;return 0===--this.lockCount&&(t=this.lockedLocationRange,this.lockedLocationRange=null,null!=t)?this.setLocationRange(t):void 0},f.prototype.clearSelection=function(){var t;return null!=(t=i())?t.removeAllRanges():void 0},f.prototype.selectionIsCollapsed=function(){var t;return(null!=(t=n())?t.collapsed:void 0)===!0},f.prototype.selectionIsExpanded=function(){return!this.selectionIsCollapsed()},f.prototype.createLocationRangeFromDOMRange=function(t,e){var n,i;if(null!=t&&this.domRangeWithinElement(t)&&(i=this.findLocationFromContainerAndOffset(t.startContainer,t.startOffset,e)))return t.collapsed||(n=this.findLocationFromContainerAndOffset(t.endContainer,t.endOffset,e)),a([i,n])},f.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"),f.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"),f.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"),f.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"),f.proxyMethod(\"pointMapper.getClientRectsForDOMRange\"),f.prototype.didMouseDown=function(){return this.pauseTemporarily()},f.prototype.pauseTemporarily=function(){var e,n,i,r;return this.paused=!0,n=function(e){return function(){var n,o,s;for(e.paused=!1,clearTimeout(r),o=0,s=i.length;s>o;o++)n=i[o],n.destroy();return t(document,e.element)?e.selectionDidChange():void 0}}(this),r=setTimeout(n,200),i=function(){var t,i,r,s;for(r=[\"mousemove\",\"keydown\"],s=[],t=0,i=r.length;i>t;t++)e=r[t],s.push(o(e,{onElement:document,withCallback:n}));return s}()},f.prototype.selectionDidChange=function(){return this.paused||r(this.element)?void 0:this.updateCurrentLocationRange()},f.prototype.updateCurrentLocationRange=function(t){var e;return(null!=t?t:t=this.createLocationRangeFromDOMRange(n()))&&!c(t,this.currentLocationRange)?(this.currentLocationRange=t,null!=(e=this.delegate)&&\"function\"==typeof e.locationRangeDidChange?e.locationRangeDidChange(this.currentLocationRange.slice(0)):void 0):void 0},f.prototype.createDOMRangeFromLocationRange=function(t){var e,n,i,o;return i=this.findContainerAndOffsetFromLocation(t[0]),n=u(t)?i:null!=(o=this.findContainerAndOffsetFromLocation(t[1]))?o:i,null!=i&&null!=n?(e=document.createRange(),e.setStart.apply(e,i),e.setEnd.apply(e,n),e):void 0},f.prototype.getLocationAtPoint=function(t){var e,n;return(e=this.createDOMRangeFromPoint(t))&&null!=(n=this.createLocationRangeFromDOMRange(e))?n[0]:void 0},f.prototype.domRangeWithinElement=function(e){return e.collapsed?t(this.element,e.startContainer):t(this.element,e.startContainer)&&t(this.element,e.endContainer)},f}(e.BasicObject)}.call(this),function(){var t,n,i,o,r=function(t,e){function n(){this.constructor=t}for(var i in e)s.call(e,i)&&(t[i]=e[i]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},s={}.hasOwnProperty,a=[].slice;i=e.rangeIsCollapsed,o=e.rangesAreEqual,n=e.objectsAreEqual,t=e.getBlockConfig,e.EditorController=function(s){function u(t){var n,i;this.editorElement=t.editorElement,n=t.document,i=t.html,this.selectionManager=new e.SelectionManager(this.editorElement),this.selectionManager.delegate=this,this.composition=new e.Composition,this.composition.delegate=this,this.attachmentManager=new e.AttachmentManager(this.composition.getAttachments()),this.attachmentManager.delegate=this,this.inputController=new(e[\"Level\"+e.config.input.getLevel()+\"InputController\"])(this.editorElement),this.inputController.delegate=this,this.inputController.responder=this.composition,this.compositionController=new e.CompositionController(this.editorElement,this.composition),this.compositionController.delegate=this,this.toolbarController=new e.ToolbarController(this.editorElement.toolbarElement),this.toolbarController.delegate=this,this.editor=new e.Editor(this.composition,this.selectionManager,this.editorElement),null!=n?this.editor.loadDocument(n):this.editor.loadHTML(i)}var c;return r(u,s),u.prototype.registerSelectionManager=function(){return e.selectionChangeObserver.registerSelectionManager(this.selectionManager)},u.prototype.unregisterSelectionManager=function(){return e.selectionChangeObserver.unregisterSelectionManager(this.selectionManager)},u.prototype.render=function(){return this.compositionController.render()},u.prototype.reparse=function(){return this.composition.replaceHTML(this.editorElement.innerHTML)},u.prototype.compositionDidChangeDocument=function(){return this.notifyEditorElement(\"document-change\"),this.handlingInput?void 0:this.render()},u.prototype.compositionDidChangeCurrentAttributes=function(t){return this.currentAttributes=t,this.toolbarController.updateAttributes(this.currentAttributes),this.updateCurrentActions(),this.notifyEditorElement(\"attributes-change\",{attributes:this.currentAttributes})},u.prototype.compositionDidPerformInsertionAtRange=function(t){return this.pasting?this.pastedRange=t:void 0},u.prototype.compositionShouldAcceptFile=function(t){return this.notifyEditorElement(\"file-accept\",{file:t})},u.prototype.compositionDidAddAttachment=function(t){var e;return e=this.attachmentManager.manageAttachment(t),this.notifyEditorElement(\"attachment-add\",{attachment:e})},u.prototype.compositionDidEditAttachment=function(t){var e;return this.compositionController.rerenderViewForObject(t),e=this.attachmentManager.manageAttachment(t),this.notifyEditorElement(\"attachment-edit\",{attachment:e}),this.notifyEditorElement(\"change\")},u.prototype.compositionDidChangeAttachmentPreviewURL=function(t){return this.compositionController.invalidateViewForObject(t),this.notifyEditorElement(\"change\")},u.prototype.compositionDidRemoveAttachment=function(t){var e;return e=this.attachmentManager.unmanageAttachment(t),this.notifyEditorElement(\"attachment-remove\",{attachment:e})},u.prototype.compositionDidStartEditingAttachment=function(t,e){return this.attachmentLocationRange=this.composition.document.getLocationRangeOfAttachment(t),this.compositionController.installAttachmentEditorForAttachment(t,e),this.selectionManager.setLocationRange(this.attachmentLocationRange)},u.prototype.compositionDidStopEditingAttachment=function(){return this.compositionController.uninstallAttachmentEditor(),this.attachmentLocationRange=null},u.prototype.compositionDidRequestChangingSelectionToLocationRange=function(t){return!this.loadingSnapshot||this.isFocused()?(this.requestedLocationRange=t,this.compositionRevisionWhenLocationRangeRequested=this.composition.revision,this.handlingInput?void 0:this.render()):void 0},u.prototype.compositionWillLoadSnapshot=function(){return this.loadingSnapshot=!0},u.prototype.compositionDidLoadSnapshot=function(){return this.compositionController.refreshViewCache(),this.render(),this.loadingSnapshot=!1},u.prototype.getSelectionManager=function(){return this.selectionManager},u.proxyMethod(\"getSelectionManager().setLocationRange\"),u.proxyMethod(\"getSelectionManager().getLocationRange\"),u.prototype.attachmentManagerDidRequestRemovalOfAttachment=function(t){return this.removeAttachment(t)},u.prototype.compositionControllerWillSyncDocumentView=function(){return this.inputController.editorWillSyncDocumentView(),this.selectionManager.lock(),this.selectionManager.clearSelection()},u.prototype.compositionControllerDidSyncDocumentView=function(){return this.inputController.editorDidSyncDocumentView(),this.selectionManager.unlock(),this.updateCurrentActions(),this.notifyEditorElement(\"sync\")},u.prototype.compositionControllerDidRender=function(){return null!=this.requestedLocationRange&&(this.compositionRevisionWhenLocationRangeRequested===this.composition.revision&&this.selectionManager.setLocationRange(this.requestedLocationRange),this.requestedLocationRange=null,this.compositionRevisionWhenLocationRangeRequested=null),this.renderedCompositionRevision!==this.composition.revision&&(this.runEditorFilters(),this.composition.updateCurrentAttributes(),this.notifyEditorElement(\"render\")),this.renderedCompositionRevision=this.composition.revision},u.prototype.compositionControllerDidFocus=function(){return this.isFocusedInvisibly()&&this.setLocationRange({index:0,offset:0}),this.toolbarController.hideDialog(),this.notifyEditorElement(\"focus\")},u.prototype.compositionControllerDidBlur=function(){return this.notifyEditorElement(\"blur\")},u.prototype.compositionControllerDidSelectAttachment=function(t,e){return this.toolbarController.hideDialog(),this.composition.editAttachment(t,e)},u.prototype.compositionControllerDidRequestDeselectingAttachment=function(t){var e,n;return e=null!=(n=this.attachmentLocationRange)?n:this.composition.document.getLocationRangeOfAttachment(t),this.selectionManager.setLocationRange(e[1])},u.prototype.compositionControllerWillUpdateAttachment=function(t){return this.editor.recordUndoEntry(\"Edit Attachment\",{context:t.id,consolidatable:!0})},u.prototype.compositionControllerDidRequestRemovalOfAttachment=function(t){return this.removeAttachment(t)},u.prototype.inputControllerWillHandleInput=function(){return this.handlingInput=!0,this.requestedRender=!1},u.prototype.inputControllerDidRequestRender=function(){return this.requestedRender=!0},u.prototype.inputControllerDidHandleInput=function(){return this.handlingInput=!1,this.requestedRender?(this.requestedRender=!1,this.render()):void 0},u.prototype.inputControllerDidAllowUnhandledInput=function(){return this.notifyEditorElement(\"change\")},u.prototype.inputControllerDidRequestReparse=function(){return this.reparse()},u.prototype.inputControllerWillPerformTyping=function(){return this.recordTypingUndoEntry()},u.prototype.inputControllerWillPerformFormatting=function(t){return this.recordFormattingUndoEntry(t)},u.prototype.inputControllerWillCutText=function(){return this.editor.recordUndoEntry(\"Cut\")},u.prototype.inputControllerWillPaste=function(t){return this.editor.recordUndoEntry(\"Paste\"),this.pasting=!0,this.notifyEditorElement(\"before-paste\",{paste:t})},u.prototype.inputControllerDidPaste=function(t){return t.range=this.pastedRange,this.pastedRange=null,this.pasting=null,this.notifyEditorElement(\"paste\",{paste:t})},u.prototype.inputControllerWillMoveText=function(){return this.editor.recordUndoEntry(\"Move\")},u.prototype.inputControllerWillAttachFiles=function(){return this.editor.recordUndoEntry(\"Drop Files\")},u.prototype.inputControllerWillPerformUndo=function(){return this.editor.undo()},u.prototype.inputControllerWillPerformRedo=function(){return this.editor.redo()},u.prototype.inputControllerDidReceiveKeyboardCommand=function(t){return this.toolbarController.applyKeyboardCommand(t)},u.prototype.inputControllerDidStartDrag=function(){return this.locationRangeBeforeDrag=this.selectionManager.getLocationRange()},u.prototype.inputControllerDidReceiveDragOverPoint=function(t){return this.selectionManager.setLocationRangeFromPointRange(t)},u.prototype.inputControllerDidCancelDrag=function(){return this.selectionManager.setLocationRange(this.locationRangeBeforeDrag),this.locationRangeBeforeDrag=null},u.prototype.locationRangeDidChange=function(t){return this.composition.updateCurrentAttributes(),this.updateCurrentActions(),this.attachmentLocationRange&&!o(this.attachmentLocationRange,t)&&this.composition.stopEditingAttachment(),this.notifyEditorElement(\"selection-change\")},u.prototype.toolbarDidClickButton=function(){return this.getLocationRange()?void 0:this.setLocationRange({index:0,offset:0})},u.prototype.toolbarDidInvokeAction=function(t){return this.invokeAction(t)},u.prototype.toolbarDidToggleAttribute=function(t){return this.recordFormattingUndoEntry(t),this.composition.toggleCurrentAttribute(t),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarDidUpdateAttribute=function(t,e){return this.recordFormattingUndoEntry(t),this.composition.setCurrentAttribute(t,e),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarDidRemoveAttribute=function(t){return this.recordFormattingUndoEntry(t),this.composition.removeCurrentAttribute(t),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},u.prototype.toolbarWillShowDialog=function(){return this.composition.expandSelectionForEditing(),this.freezeSelection()},u.prototype.toolbarDidShowDialog=function(t){return this.notifyEditorElement(\"toolbar-dialog-show\",{dialogName:t})},u.prototype.toolbarDidHideDialog=function(t){return this.thawSelection(),this.editorElement.focus(),this.notifyEditorElement(\"toolbar-dialog-hide\",{dialogName:t})},u.prototype.freezeSelection=function(){return this.selectionFrozen?void 0:(this.selectionManager.lock(),this.composition.freezeSelection(),this.selectionFrozen=!0,this.render())},u.prototype.thawSelection=function(){return this.selectionFrozen?(this.composition.thawSelection(),this.selectionManager.unlock(),this.selectionFrozen=!1,this.render()):void 0},u.prototype.actions={undo:{test:function(){return this.editor.canUndo()},perform:function(){return this.editor.undo()}},redo:{test:function(){return this.editor.canRedo()},perform:function(){return this.editor.redo()}},link:{test:function(){return this.editor.canActivateAttribute(\"href\")}},increaseNestingLevel:{test:function(){return this.editor.canIncreaseNestingLevel()},perform:function(){return this.editor.increaseNestingLevel()&&this.render()}},decreaseNestingLevel:{test:function(){return this.editor.canDecreaseNestingLevel()},perform:function(){return this.editor.decreaseNestingLevel()&&this.render()}},attachFiles:{test:function(){return!0},perform:function(){return e.config.input.pickFiles(this.editor.insertFiles)}}},u.prototype.canInvokeAction=function(t){var e,n;return this.actionIsExternal(t)?!0:!!(null!=(e=this.actions[t])&&null!=(n=e.test)?n.call(this):void 0)},u.prototype.invokeAction=function(t){var e,n;return this.actionIsExternal(t)?this.notifyEditorElement(\"action-invoke\",{actionName:t}):null!=(e=this.actions[t])&&null!=(n=e.perform)?n.call(this):void 0},u.prototype.actionIsExternal=function(t){return/^x-./.test(t)},u.prototype.getCurrentActions=function(){var t,e;e={};for(t in this.actions)e[t]=this.canInvokeAction(t);return e},u.prototype.updateCurrentActions=function(){var t;return t=this.getCurrentActions(),n(t,this.currentActions)?void 0:(this.currentActions=t,this.toolbarController.updateActions(this.currentActions),this.notifyEditorElement(\"actions-change\",{actions:this.currentActions}))},u.prototype.runEditorFilters=function(){var t,e,n,i,o,r,s,a;for(a=this.composition.getSnapshot(),o=this.editor.filters,n=0,i=o.length;i>n;n++)e=o[n],t=a.document,s=a.selectedRange,a=null!=(r=e.call(this.editor,a))?r:{},null==a.document&&(a.document=t),null==a.selectedRange&&(a.selectedRange=s);return c(a,this.composition.getSnapshot())?void 0:this.composition.loadSnapshot(a)},c=function(t,e){return o(t.selectedRange,e.selectedRange)&&t.document.isEqualTo(e.document)},u.prototype.updateInputElement=function(){var t,n;return t=this.compositionController.getSerializableElement(),n=e.serializeToContentType(t,\"text/html\"),this.editorElement.setInputElementValue(n)},u.prototype.notifyEditorElement=function(t,e){switch(t){case\"document-change\":this.documentChangedSinceLastRender=!0;break;case\"render\":this.documentChangedSinceLastRender&&(this.documentChangedSinceLastRender=!1,this.notifyEditorElement(\"change\"));break;case\"change\":case\"attachment-add\":case\"attachment-edit\":case\"attachment-remove\":this.updateInputElement()}return this.editorElement.notify(t,e)},u.prototype.removeAttachment=function(t){return this.editor.recordUndoEntry(\"Delete Attachment\"),this.composition.removeAttachment(t),this.render()},u.prototype.recordFormattingUndoEntry=function(e){var n,o;return n=t(e),o=this.selectionManager.getLocationRange(),n||!i(o)?this.editor.recordUndoEntry(\"Formatting\",{context:this.getUndoContext(),consolidatable:!0}):void 0},u.prototype.recordTypingUndoEntry=function(){return this.editor.recordUndoEntry(\"Typing\",{context:this.getUndoContext(this.currentAttributes),consolidatable:!0})},u.prototype.getUndoContext=function(){var t;return t=1<=arguments.length?a.call(arguments,0):[],[this.getLocationContext(),this.getTimeContext()].concat(a.call(t))},u.prototype.getLocationContext=function(){var t;return t=this.selectionManager.getLocationRange(),i(t)?t[0].index:t},u.prototype.getTimeContext=function(){return e.config.undoInterval>0?Math.floor((new Date).getTime()/e.config.undoInterval):0},u.prototype.isFocused=function(){var t;return this.editorElement===(null!=(t=this.editorElement.ownerDocument)?t.activeElement:void 0)},u.prototype.isFocusedInvisibly=function(){return this.isFocused()&&!this.getLocationRange()},u}(e.Controller)}.call(this),function(){var t,n,i,o,r,s,a,u=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};n=e.browser,s=e.makeElement,a=e.triggerEvent,o=e.handleEvent,r=e.handleEventOnce,i=e.findClosestElementFromNode,t=e.AttachmentView.attachmentSelector,e.registerElement(\"trix-editor\",function(){var c,l,h,p,d,f,g,m,v;return g=0,l=function(t){return!document.querySelector(\":focus\")&&t.hasAttribute(\"autofocus\")&&document.querySelector(\"[autofocus]\")===t?t.focus():void 0},m=function(t){return t.hasAttribute(\"contenteditable\")?void 0:(t.setAttribute(\"contenteditable\",\"\"),r(\"focus\",{onElement:t,withCallback:function(){return h(t)}}))},h=function(t){return d(t),v(t)},d=function(t){return(\"function\"==typeof document.queryCommandSupported?document.queryCommandSupported(\"enableObjectResizing\"):void 0)?(document.execCommand(\"enableObjectResizing\",!1,!1),o(\"mscontrolselect\",{onElement:t,preventDefault:!0})):void 0},v=function(){var t;return(\"function\"==typeof document.queryCommandSupported?document.queryCommandSupported(\"DefaultParagraphSeparator\"):void 0)&&(t=e.config.blockAttributes[\"default\"].tagName,\"div\"===t||\"p\"===t)?document.execCommand(\"DefaultParagraphSeparator\",!1,t):void 0},c=function(t){return t.hasAttribute(\"role\")?void 0:t.setAttribute(\"role\",\"textbox\")},f=function(t){var e;if(!t.hasAttribute(\"aria-label\")&&!t.hasAttribute(\"aria-labelledby\"))return(e=function(){var e,n,i;return i=function(){var n,i,o,r;for(o=t.labels,r=[],n=0,i=o.length;i>n;n++)e=o[n],e.contains(t)||r.push(e.textContent);return r}(),(n=i.join(\" \"))?t.setAttribute(\"aria-label\",n):t.removeAttribute(\"aria-label\")})(),o(\"focus\",{onElement:t,withCallback:e})},p=function(){return n.forcesObjectResizing?{display:\"inline\",width:\"auto\"}:{display:\"inline-block\",width:\"1px\"}}(),{defaultCSS:\"%t {\\n  display: block;\\n}\\n\\n%t:empty:not(:focus)::before {\\n  content: attr(placeholder);\\n  color: graytext;\\n  cursor: text;\\n  pointer-events: none;\\n}\\n\\n%t a[contenteditable=false] {\\n  cursor: text;\\n}\\n\\n%t img {\\n  max-width: 100%;\\n  height: auto;\\n}\\n\\n%t \"+t+\" figcaption textarea {\\n  resize: none;\\n}\\n\\n%t \"+t+\" figcaption textarea.trix-autoresize-clone {\\n  position: absolute;\\n  left: -9999px;\\n  max-height: 0px;\\n}\\n\\n%t \"+t+\" figcaption[data-trix-placeholder]:empty::before {\\n  content: attr(data-trix-placeholder);\\n  color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n  display: \"+p.display+\" !important;\\n  width: \"+p.width+\" !important;\\n  padding: 0 !important;\\n  margin: 0 !important;\\n  border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n  vertical-align: top !important;\\n  margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n  vertical-align: bottom !important;\\n  margin-right: -1px !important;\\n}\",trixId:{get:function(){return this.hasAttribute(\"trix-id\")?this.getAttribute(\"trix-id\"):(this.setAttribute(\"trix-id\",++g),this.trixId)}},labels:{get:function(){var t,e,n;return e=[],this.id&&this.ownerDocument&&e.push.apply(e,this.ownerDocument.querySelectorAll(\"label[for='\"+this.id+\"']\")),(t=i(this,{matchingSelector:\"label\"}))&&((n=t.control)===this||null===n)&&e.push(t),e}},toolbarElement:{get:function(){var t,e,n;return this.hasAttribute(\"toolbar\")?null!=(e=this.ownerDocument)?e.getElementById(this.getAttribute(\"toolbar\")):void 0:this.parentNode?(n=\"trix-toolbar-\"+this.trixId,this.setAttribute(\"toolbar\",n),t=s(\"trix-toolbar\",{id:n}),this.parentNode.insertBefore(t,this),t):void 0}},inputElement:{get:function(){var t,e,n;return this.hasAttribute(\"input\")?null!=(n=this.ownerDocument)?n.getElementById(this.getAttribute(\"input\")):void 0:this.parentNode?(e=\"trix-input-\"+this.trixId,this.setAttribute(\"input\",e),t=s(\"input\",{type:\"hidden\",id:e}),this.parentNode.insertBefore(t,this.nextElementSibling),t):void 0}},editor:{get:function(){var t;return null!=(t=this.editorController)?t.editor:void 0}},name:{get:function(){var t;return null!=(t=this.inputElement)?t.name:void 0}},value:{get:function(){var t;return null!=(t=this.inputElement)?t.value:void 0},set:function(t){var e;return this.defaultValue=t,null!=(e=this.editor)?e.loadHTML(this.defaultValue):void 0}},notify:function(t,e){return this.editorController?a(\"trix-\"+t,{onElement:this,attributes:e}):void 0},setInputElementValue:function(t){var e;return null!=(e=this.inputElement)?e.value=t:void 0},initialize:function(){return this.hasAttribute(\"data-trix-internal\")?void 0:(m(this),c(this),f(this))},connect:function(){return this.hasAttribute(\"data-trix-internal\")?void 0:(this.editorController||(a(\"trix-before-initialize\",{onElement:this}),this.editorController=new e.EditorController({editorElement:this,html:this.defaultValue=this.value}),requestAnimationFrame(function(t){return function(){return a(\"trix-initialize\",{onElement:t})}}(this))),this.editorController.registerSelectionManager(),this.registerResetListener(),this.registerClickListener(),l(this))},disconnect:function(){var t;return null!=(t=this.editorController)&&t.unregisterSelectionManager(),this.unregisterResetListener(),this.unregisterClickListener()},registerResetListener:function(){return this.resetListener=this.resetBubbled.bind(this),window.addEventListener(\"reset\",this.resetListener,!1)},unregisterResetListener:function(){return window.removeEventListener(\"reset\",this.resetListener,!1)},registerClickListener:function(){return this.clickListener=this.clickBubbled.bind(this),window.addEventListener(\"click\",this.clickListener,!1)},unregisterClickListener:function(){return window.removeEventListener(\"click\",this.clickListener,!1)},resetBubbled:function(t){var e;if(!t.defaultPrevented&&t.target===(null!=(e=this.inputElement)?e.form:void 0))return this.reset()},clickBubbled:function(t){var e;if(!(t.defaultPrevented||this.contains(t.target)||!(e=i(t.target,{matchingSelector:\"label\"}))||u.call(this.labels,e)<0))return this.focus()},reset:function(){return this.value=this.defaultValue}}}())}.call(this),function(){}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}.call(this);", "//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key;\n                for (i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i;\n            for (i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n                    matched,\n                    p1,\n                    p2,\n                    p3,\n                    p4\n                ) {\n                    return p1 || p2 || p3 || p4;\n                })\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n            '_'\n        ),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n        input,\n        array,\n        config,\n        token\n    ) {\n        var era = config._locale.erasParse(input, token, config._strict);\n        if (era) {\n            getParsingFlags(config).era = era;\n        } else {\n            getParsingFlags(config).invalidEra = input;\n        }\n    });\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n", "/*!\nFullCalendar v5.3.0\nDocs & License: https://fullcalendar.io/\n(c) 2020 Adam Shaw\n*/\nexport var FullCalendar=function(e){\"use strict\";var t=function(e,n){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,n)};function n(e,n){function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}var r=function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function o(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,s=i.length;a<s;a++,o++)r[o]=i[a];return r}var i,a,s,l,u,c,d,p={},f=[],h=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;function v(e,t){for(var n in t)e[n]=t[n];return e}function g(e){var t=e.parentNode;t&&t.removeChild(e)}function m(e,t,n){var r,o=arguments,i={};for(r in t)\"key\"!==r&&\"ref\"!==r&&(i[r]=t[r]);if(arguments.length>3)for(n=[n],r=3;r<arguments.length;r++)n.push(o[r]);if(null!=n&&(i.children=n),\"function\"==typeof e&&null!=e.defaultProps)for(r in e.defaultProps)void 0===i[r]&&(i[r]=e.defaultProps[r]);return y(e,i,t&&t.key,t&&t.ref,null)}function y(e,t,n,r,o){var a={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:o};return null==o&&(a.__v=a),i.vnode&&i.vnode(a),a}function E(e){return e.children}function S(e,t){this.props=e,this.context=t}function D(e,t){if(null==t)return e.__?D(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return\"function\"==typeof e.type?D(e):null}function b(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return b(e)}}function C(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!s++||u!==i.debounceRendering)&&((u=i.debounceRendering)||l)(w)}function w(){for(var e;s=a.length;)e=a.sort((function(e,t){return e.__v.__b-t.__v.__b})),a=[],e.some((function(e){var t,n,r,o,i,a,s;e.__d&&(a=(i=(t=e).__v).__e,(s=t.__P)&&(n=[],(r=v({},i)).__v=r,o=_(s,i,r,t.__n,void 0!==s.ownerSVGElement,null,n,null==a?D(i):a),I(n,i),o!=a&&b(i)))}))}function R(e,t,n,r,o,i,a,s,l){var u,c,d,h,v,m,y,E=n&&n.__k||f,S=E.length;if(s==p&&(s=null!=i?i[0]:S?D(n,0):null),u=0,t.__k=T(t.__k,(function(n){if(null!=n){if(n.__=t,n.__b=t.__b+1,null===(d=E[u])||d&&n.key==d.key&&n.type===d.type)E[u]=void 0;else for(c=0;c<S;c++){if((d=E[c])&&n.key==d.key&&n.type===d.type){E[c]=void 0;break}d=null}if(h=_(e,n,d=d||p,r,o,i,a,s,l),(c=n.ref)&&d.ref!=c&&(y||(y=[]),d.ref&&y.push(d.ref,null,n),y.push(c,n.__c||h,n)),null!=h){var f;if(null==m&&(m=h),void 0!==n.__d)f=n.__d,n.__d=void 0;else if(i==d||h!=s||null==h.parentNode){e:if(null==s||s.parentNode!==e)e.appendChild(h),f=null;else{for(v=s,c=0;(v=v.nextSibling)&&c<S;c+=2)if(v==h)break e;e.insertBefore(h,s),f=s}\"option\"==t.type&&(e.value=\"\")}s=void 0!==f?f:h.nextSibling,\"function\"==typeof t.type&&(t.__d=s)}else s&&d.__e==s&&s.parentNode!=e&&(s=D(d))}return u++,n})),t.__e=m,null!=i&&\"function\"!=typeof t.type)for(u=i.length;u--;)null!=i[u]&&g(i[u]);for(u=S;u--;)null!=E[u]&&H(E[u],E[u]);if(y)for(u=0;u<y.length;u++)N(y[u],y[++u],y[++u])}function T(e,t,n){if(null==n&&(n=[]),null==e||\"boolean\"==typeof e)t&&n.push(t(null));else if(Array.isArray(e))for(var r=0;r<e.length;r++)T(e[r],t,n);else n.push(t?t(\"string\"==typeof e||\"number\"==typeof e?y(null,e,null,null,e):null!=e.__e||null!=e.__c?y(e.type,e.props,e.key,null,e.__v):e):e);return n}function k(e,t,n){\"-\"===t[0]?e.setProperty(t,n):e[t]=\"number\"==typeof n&&!1===h.test(t)?n+\"px\":null==n?\"\":n}function M(e,t,n,r,o){var i,a,s,l,u;if(o?\"className\"===t&&(t=\"class\"):\"class\"===t&&(t=\"className\"),\"style\"===t)if(i=e.style,\"string\"==typeof n)i.cssText=n;else{if(\"string\"==typeof r&&(i.cssText=\"\",r=null),r)for(l in r)n&&l in n||k(i,l,\"\");if(n)for(u in n)r&&n[u]===r[u]||k(i,u,n[u])}else\"o\"===t[0]&&\"n\"===t[1]?(a=t!==(t=t.replace(/Capture$/,\"\")),s=t.toLowerCase(),t=(s in e?s:t).slice(2),n?(r||e.addEventListener(t,x,a),(e.l||(e.l={}))[t]=n):e.removeEventListener(t,x,a)):\"list\"!==t&&\"tagName\"!==t&&\"form\"!==t&&\"type\"!==t&&\"size\"!==t&&!o&&t in e?e[t]=null==n?\"\":n:\"function\"!=typeof n&&\"dangerouslySetInnerHTML\"!==t&&(t!==(t=t.replace(/^xlink:?/,\"\"))?null==n||!1===n?e.removeAttributeNS(\"http://www.w3.org/1999/xlink\",t.toLowerCase()):e.setAttributeNS(\"http://www.w3.org/1999/xlink\",t.toLowerCase(),n):null==n||!1===n&&!/^ar/.test(t)?e.removeAttribute(t):e.setAttribute(t,n))}function x(e){this.l[e.type](i.event?i.event(e):e)}function _(e,t,n,r,o,a,s,l,u){var c,d,p,f,h,g,m,y,D,b,C=t.type;if(void 0!==t.constructor)return null;(c=i.__b)&&c(t);try{e:if(\"function\"==typeof C){if(y=t.props,D=(c=C.contextType)&&r[c.__c],b=c?D?D.props.value:c.__:r,n.__c?m=(d=t.__c=n.__c).__=d.__E:(\"prototype\"in C&&C.prototype.render?t.__c=d=new C(y,b):(t.__c=d=new S(y,b),d.constructor=C,d.render=O),D&&D.sub(d),d.props=y,d.state||(d.state={}),d.context=b,d.__n=r,p=d.__d=!0,d.__h=[]),null==d.__s&&(d.__s=d.state),null!=C.getDerivedStateFromProps&&(d.__s==d.state&&(d.__s=v({},d.__s)),v(d.__s,C.getDerivedStateFromProps(y,d.__s))),f=d.props,h=d.state,p)null==C.getDerivedStateFromProps&&null!=d.componentWillMount&&d.componentWillMount(),null!=d.componentDidMount&&d.__h.push(d.componentDidMount);else{if(null==C.getDerivedStateFromProps&&y!==f&&null!=d.componentWillReceiveProps&&d.componentWillReceiveProps(y,b),!d.__e&&null!=d.shouldComponentUpdate&&!1===d.shouldComponentUpdate(y,d.__s,b)||t.__v===n.__v&&!d.__){for(d.props=y,d.state=d.__s,t.__v!==n.__v&&(d.__d=!1),d.__v=t,t.__e=n.__e,t.__k=n.__k,d.__h.length&&s.push(d),c=0;c<t.__k.length;c++)t.__k[c]&&(t.__k[c].__=t);break e}null!=d.componentWillUpdate&&d.componentWillUpdate(y,d.__s,b),null!=d.componentDidUpdate&&d.__h.push((function(){d.componentDidUpdate(f,h,g)}))}d.context=b,d.props=y,d.state=d.__s,(c=i.__r)&&c(t),d.__d=!1,d.__v=t,d.__P=e,c=d.render(d.props,d.state,d.context),t.__k=null!=c&&c.type==E&&null==c.key?c.props.children:Array.isArray(c)?c:[c],null!=d.getChildContext&&(r=v(v({},r),d.getChildContext())),p||null==d.getSnapshotBeforeUpdate||(g=d.getSnapshotBeforeUpdate(f,h)),R(e,t,n,r,o,a,s,l,u),d.base=t.__e,d.__h.length&&s.push(d),m&&(d.__E=d.__=null),d.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=P(n.__e,t,n,r,o,a,s,u);(c=i.diffed)&&c(t)}catch(e){t.__v=null,i.__e(e,t,n)}return t.__e}function I(e,t){i.__c&&i.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){i.__e(e,t.__v)}}))}function P(e,t,n,r,o,i,a,s){var l,u,c,d,h,v=n.props,g=t.props;if(o=\"svg\"===t.type||o,null!=i)for(l=0;l<i.length;l++)if(null!=(u=i[l])&&((null===t.type?3===u.nodeType:u.localName===t.type)||e==u)){e=u,i[l]=null;break}if(null==e){if(null===t.type)return document.createTextNode(g);e=o?document.createElementNS(\"http://www.w3.org/2000/svg\",t.type):document.createElement(t.type,g.is&&{is:g.is}),i=null,s=!1}if(null===t.type)v!==g&&e.data!=g&&(e.data=g);else{if(null!=i&&(i=f.slice.call(e.childNodes)),c=(v=n.props||p).dangerouslySetInnerHTML,d=g.dangerouslySetInnerHTML,!s){if(v===p)for(v={},h=0;h<e.attributes.length;h++)v[e.attributes[h].name]=e.attributes[h].value;(d||c)&&(d&&c&&d.__html==c.__html||(e.innerHTML=d&&d.__html||\"\"))}(function(e,t,n,r,o){var i;for(i in n)\"children\"===i||\"key\"===i||i in t||M(e,i,null,n[i],r);for(i in t)o&&\"function\"!=typeof t[i]||\"children\"===i||\"key\"===i||\"value\"===i||\"checked\"===i||n[i]===t[i]||M(e,i,t[i],n[i],r)})(e,g,v,o,s),d?t.__k=[]:(t.__k=t.props.children,R(e,t,n,r,\"foreignObject\"!==t.type&&o,i,a,p,s)),s||(\"value\"in g&&void 0!==(l=g.value)&&l!==e.value&&M(e,\"value\",l,v.value,!1),\"checked\"in g&&void 0!==(l=g.checked)&&l!==e.checked&&M(e,\"checked\",l,v.checked,!1))}return e}function N(e,t,n){try{\"function\"==typeof e?e(t):e.current=t}catch(e){i.__e(e,n)}}function H(e,t,n){var r,o,a;if(i.unmount&&i.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||N(r,null,t)),n||\"function\"==typeof e.type||(n=null!=(o=e.__e)),e.__e=e.__d=void 0,null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){i.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&H(r[a],t,n);null!=o&&g(o)}function O(e,t,n){return this.constructor(e,n)}function A(e,t,n){var r,o,a;i.__&&i.__(e,t),o=(r=n===c)?null:n&&n.__k||t.__k,e=m(E,null,[e]),a=[],_(t,(r?t:n||t).__k=e,o||p,p,void 0!==t.ownerSVGElement,n&&!r?[n]:o?null:f.slice.call(t.childNodes),a,n||p,r),I(a,e)}i={__e:function(e,t){for(var n,r;t=t.__;)if((n=t.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(r=!0,n.setState(n.constructor.getDerivedStateFromError(e))),null!=n.componentDidCatch&&(r=!0,n.componentDidCatch(e)),r)return C(n.__E=n)}catch(t){e=t}throw e}},S.prototype.setState=function(e,t){var n;n=this.__s!==this.state?this.__s:this.__s=v({},this.state),\"function\"==typeof e&&(e=e(n,this.props)),e&&v(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),C(this))},S.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),C(this))},S.prototype.render=E,a=[],s=0,l=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,c=p,d=0,(\"undefined\"!=typeof globalThis?globalThis:window).FullCalendarVDom={Component:S,createElement:m,render:A,createRef:function(){return{}},Fragment:E,createContext:function(e){var t=function(e){var t={},n={__c:\"__cC\"+d++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var r,o=this;return this.getChildContext||(r=[],this.getChildContext=function(){return t[n.__c]=o,t},this.shouldComponentUpdate=function(e){o.props.value!==e.value&&r.some((function(t){t.context=e.value,C(t)}))},this.sub=function(e){r.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){r.splice(r.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Consumer.contextType=n,n.Provider.__=n,n}(e),n=t.Provider;return t.Provider=function(){var e=this,t=!this.getChildContext,r=n.apply(this,arguments);if(t){var o=[];this.shouldComponentUpdate=function(t){e.props.value!==t.value&&o.some((function(e){e.context=t.value,e.forceUpdate()}))},this.sub=function(e){o.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){o.splice(o.indexOf(e),1),t&&t.call(e)}}}return r},t},flushToDom:function(){var e=i.debounceRendering,t=[];i.debounceRendering=function(e){t.push(e)},A(m(U,{}),document.createElement(\"div\"));for(;t.length;)t.shift()();i.debounceRendering=e}};var U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){return m(\"div\",{})},t.prototype.componentDidMount=function(){this.setState({})},t}(S);var L=function(){function e(e,t){this.context=e,this.internalEventSource=t}return e.prototype.remove=function(){this.context.dispatch({type:\"REMOVE_EVENT_SOURCE\",sourceId:this.internalEventSource.sourceId})},e.prototype.refetch=function(){this.context.dispatch({type:\"FETCH_EVENT_SOURCES\",sourceIds:[this.internalEventSource.sourceId]})},Object.defineProperty(e.prototype,\"id\",{get:function(){return this.internalEventSource.publicId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"url\",{get:function(){return this.internalEventSource.meta.url},enumerable:!1,configurable:!0}),e}();function W(e){e.parentNode&&e.parentNode.removeChild(e)}function V(e,t){if(e.closest)return e.closest(t);if(!document.documentElement.contains(e))return null;do{if(z(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}function z(e,t){return(e.matches||e.matchesSelector||e.msMatchesSelector).call(e,t)}function F(e,t){for(var n=e instanceof HTMLElement?[e]:e,r=[],o=0;o<n.length;o++)for(var i=n[o].querySelectorAll(t),a=0;a<i.length;a++)r.push(i[a]);return r}var B=/(top|left|right|bottom|width|height)$/i;function j(e,t){for(var n in t)G(e,n,t[n])}function G(e,t,n){null==n?e.style[t]=\"\":\"number\"==typeof n&&B.test(t)?e.style[t]=n+\"px\":e.style[t]=n}function q(e){e.preventDefault()}function Y(e,t){return function(n){var r=V(n.target,e);r&&t.call(r,n,r)}}function Z(e,t,n,r){var o=Y(n,r);return e.addEventListener(t,o),function(){e.removeEventListener(t,o)}}var X=[\"webkitTransitionEnd\",\"otransitionend\",\"oTransitionEnd\",\"msTransitionEnd\",\"transitionend\"];function K(e,t){var n=function(r){t(r),X.forEach((function(t){e.removeEventListener(t,n)}))};X.forEach((function(t){e.addEventListener(t,n)}))}var J=0;function $(){return String(J++)}function Q(){document.body.classList.add(\"fc-not-allowed\")}function ee(){document.body.classList.remove(\"fc-not-allowed\")}function te(e){e.classList.add(\"fc-unselectable\"),e.addEventListener(\"selectstart\",q)}function ne(e){e.classList.remove(\"fc-unselectable\"),e.removeEventListener(\"selectstart\",q)}function re(e){e.addEventListener(\"contextmenu\",q)}function oe(e){e.removeEventListener(\"contextmenu\",q)}function ie(e){var t,n,r=[],o=[];for(\"string\"==typeof e?o=e.split(/\\s*,\\s*/):\"function\"==typeof e?o=[e]:Array.isArray(e)&&(o=e),t=0;t<o.length;t++)\"string\"==typeof(n=o[t])?r.push(\"-\"===n.charAt(0)?{field:n.substring(1),order:-1}:{field:n,order:1}):\"function\"==typeof n&&r.push({func:n});return r}function ae(e,t,n){var r,o;for(r=0;r<n.length;r++)if(o=se(e,t,n[r]))return o;return 0}function se(e,t,n){return n.func?n.func(e,t):le(e[n.field],t[n.field])*(n.order||1)}function le(e,t){return e||t?null==t?-1:null==e?1:\"string\"==typeof e||\"string\"==typeof t?String(e).localeCompare(String(t)):e-t:0}function ue(e,t){var n=String(e);return\"000\".substr(0,t-n.length)+n}function ce(e,t){return e-t}function de(e){return e%1==0}function pe(e){var t=e.querySelector(\".fc-scrollgrid-shrink-frame\"),n=e.querySelector(\".fc-scrollgrid-shrink-cushion\");if(!t)throw new Error(\"needs fc-scrollgrid-shrink-frame className\");if(!n)throw new Error(\"needs fc-scrollgrid-shrink-cushion className\");return e.getBoundingClientRect().width-t.getBoundingClientRect().width+n.getBoundingClientRect().width}var fe=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"];function he(e,t){var n=ke(e);return n[2]+=7*t,Me(n)}function ve(e,t){var n=ke(e);return n[2]+=t,Me(n)}function ge(e,t){var n=ke(e);return n[6]+=t,Me(n)}function me(e,t){return ye(e,t)/7}function ye(e,t){return(t.valueOf()-e.valueOf())/864e5}function Ee(e,t){var n=be(e),r=be(t);return{years:0,months:0,days:Math.round(ye(n,r)),milliseconds:t.valueOf()-r.valueOf()-(e.valueOf()-n.valueOf())}}function Se(e,t){var n=De(e,t);return null!==n&&n%7==0?n/7:null}function De(e,t){return _e(e)===_e(t)?Math.round(ye(e,t)):null}function be(e){return Me([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()])}function Ce(e,t,n,r){var o=Me([t,0,1+we(t,n,r)]),i=be(e),a=Math.round(ye(o,i));return Math.floor(a/7)+1}function we(e,t,n){var r=7+t-n;return-((7+Me([e,0,r]).getUTCDay()-t)%7)+r-1}function Re(e){return[e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()]}function Te(e){return new Date(e[0],e[1]||0,null==e[2]?1:e[2],e[3]||0,e[4]||0,e[5]||0)}function ke(e){return[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()]}function Me(e){return 1===e.length&&(e=e.concat([0])),new Date(Date.UTC.apply(Date,e))}function xe(e){return!isNaN(e.valueOf())}function _e(e){return 1e3*e.getUTCHours()*60*60+1e3*e.getUTCMinutes()*60+1e3*e.getUTCSeconds()+e.getUTCMilliseconds()}function Ie(e,t,n,r){return{instanceId:$(),defId:e,range:t,forcedStartTzo:null==n?null:n,forcedEndTzo:null==r?null:r}}var Pe=Object.prototype.hasOwnProperty;function Ne(e,t){var n={};if(t)for(var r in t){for(var o=[],i=e.length-1;i>=0;i--){var a=e[i][r];if(\"object\"==typeof a&&a)o.unshift(a);else if(void 0!==a){n[r]=a;break}}o.length&&(n[r]=Ne(o))}for(i=e.length-1;i>=0;i--){var s=e[i];for(var l in s)l in n||(n[l]=s[l])}return n}function He(e,t){var n={};for(var r in e)t(e[r],r)&&(n[r]=e[r]);return n}function Oe(e,t){var n={};for(var r in e)n[r]=t(e[r],r);return n}function Ae(e){for(var t={},n=0,r=e;n<r.length;n++){t[r[n]]=!0}return t}function Ue(e){var t=[];for(var n in e)t.push(e[n]);return t}function Le(e,t){if(e===t)return!0;for(var n in e)if(Pe.call(e,n)&&!(n in t))return!1;for(var n in t)if(Pe.call(t,n)&&e[n]!==t[n])return!1;return!0}function We(e,t){var n=[];for(var r in e)Pe.call(e,r)&&(r in t||n.push(r));for(var r in t)Pe.call(t,r)&&e[r]!==t[r]&&n.push(r);return n}function Ve(e,t,n){if(void 0===n&&(n={}),e===t)return!0;for(var r in t)if(!(r in e)||!ze(e[r],t[r],n[r]))return!1;for(var r in e)if(!(r in t))return!1;return!0}function ze(e,t,n){return e===t||!0===n||!!n&&n(e,t)}function Fe(e,t,n,r){void 0===t&&(t=0),void 0===r&&(r=1);var o=[];null==n&&(n=Object.keys(e).length);for(var i=t;i<n;i+=r){var a=e[i];void 0!==a&&o.push(a)}return o}function Be(e,t,n){var r=n.dateEnv,o=n.pluginHooks,i=n.options,a=e.defs,s=e.instances;for(var l in s=He(s,(function(e){return!a[e.defId].recurringDef})),a){var u=a[l];if(u.recurringDef){var c=u.recurringDef.duration;c||(c=u.allDay?i.defaultAllDayEventDuration:i.defaultTimedEventDuration);for(var d=0,p=je(u,c,t,r,o.recurringTypes);d<p.length;d++){var f=p[d],h=Ie(l,{start:f,end:r.add(f,c)});s[h.instanceId]=h}}}return{defs:a,instances:s}}function je(e,t,n,r,o){var i=o[e.recurringDef.typeId].expand(e.recurringDef.typeData,{start:r.subtract(n.start,t),end:n.end},r);return e.allDay&&(i=i.map(be)),i}var Ge=[\"years\",\"months\",\"days\",\"milliseconds\"],qe=/^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;function Ye(e,t){var n;return\"string\"==typeof e?function(e){var t=qe.exec(e);if(t){var n=t[1]?-1:1;return{years:0,months:0,days:n*(t[2]?parseInt(t[2],10):0),milliseconds:n*(60*(t[3]?parseInt(t[3],10):0)*60*1e3+60*(t[4]?parseInt(t[4],10):0)*1e3+1e3*(t[5]?parseInt(t[5],10):0)+(t[6]?parseInt(t[6],10):0))}}return null}(e):\"object\"==typeof e&&e?Ze(e):\"number\"==typeof e?Ze(((n={})[t||\"milliseconds\"]=e,n)):null}function Ze(e){var t={years:e.years||e.year||0,months:e.months||e.month||0,days:e.days||e.day||0,milliseconds:60*(e.hours||e.hour||0)*60*1e3+60*(e.minutes||e.minute||0)*1e3+1e3*(e.seconds||e.second||0)+(e.milliseconds||e.millisecond||e.ms||0)},n=e.weeks||e.week;return n&&(t.days+=7*n,t.specifiedWeeks=!0),t}function Xe(e,t){return{years:e.years+t.years,months:e.months+t.months,days:e.days+t.days,milliseconds:e.milliseconds+t.milliseconds}}function Ke(e,t){return{years:e.years*t,months:e.months*t,days:e.days*t,milliseconds:e.milliseconds*t}}function Je(e){return $e(e)/864e5}function $e(e){return 31536e6*e.years+2592e6*e.months+864e5*e.days+e.milliseconds}function Qe(e,t){for(var n=null,r=0;r<Ge.length;r++){var o=Ge[r];if(t[o]){var i=e[o]/t[o];if(!de(i)||null!==n&&n!==i)return null;n=i}else if(e[o])return null}return n}function et(e){var t=e.milliseconds;if(t){if(t%1e3!=0)return{unit:\"millisecond\",value:t};if(t%6e4!=0)return{unit:\"second\",value:t/1e3};if(t%36e5!=0)return{unit:\"minute\",value:t/6e4};if(t)return{unit:\"hour\",value:t/36e5}}return e.days?e.specifiedWeeks&&e.days%7==0?{unit:\"week\",value:e.days/7}:{unit:\"day\",value:e.days}:e.months?{unit:\"month\",value:e.months}:e.years?{unit:\"year\",value:e.years}:{unit:\"millisecond\",value:0}}function tt(e){return e.toISOString().replace(/T.*$/,\"\")}function nt(e){return ue(e.getUTCHours(),2)+\":\"+ue(e.getUTCMinutes(),2)+\":\"+ue(e.getUTCSeconds(),2)}function rt(e,t){void 0===t&&(t=!1);var n=e<0?\"-\":\"+\",r=Math.abs(e),o=Math.floor(r/60),i=Math.round(r%60);return t?n+ue(o,2)+\":\"+ue(i,2):\"GMT\"+n+o+(i?\":\"+ue(i,2):\"\")}function ot(e,t,n){if(e===t)return!0;var r,o=e.length;if(o!==t.length)return!1;for(r=0;r<o;r++)if(!(n?n(e[r],t[r]):e[r]===t[r]))return!1;return!0}function it(e,t,n){var r,o;return function(){for(var i=[],a=0;a<arguments.length;a++)i[a]=arguments[a];if(r){if(!ot(r,i)){n&&n(o);var s=e.apply(this,i);t&&t(s,o)||(o=s)}}else o=e.apply(this,i);return r=i,o}}function at(e,t,n){var r,o;return function(i){if(r){if(!Le(r,i)){n&&n(o);var a=e.call(this,i);t&&t(a,o)||(o=a)}}else o=e.call(this,i);return r=i,o}}var st={week:3,separator:0,omitZeroMinute:0,meridiem:0,omitCommas:0},lt={timeZoneName:7,era:6,year:5,month:4,day:2,weekday:2,hour:1,minute:1,second:1},ut=/\\s*([ap])\\.?m\\.?/i,ct=/,/g,dt=/\\s+/g,pt=/\\u200e/g,ft=/UTC|GMT/,ht=function(){function e(e){var t={},n={},r=0;for(var o in e)o in st?(n[o]=e[o],r=Math.max(st[o],r)):(t[o]=e[o],o in lt&&(r=Math.max(lt[o],r)));this.standardDateProps=t,this.extendedSettings=n,this.severity=r,this.buildFormattingFunc=it(vt)}return e.prototype.format=function(e,t){return this.buildFormattingFunc(this.standardDateProps,this.extendedSettings,t)(e)},e.prototype.formatRange=function(e,t,n,r){var o=this.standardDateProps,i=this.extendedSettings,a=function(e,t,n){if(n.getMarkerYear(e)!==n.getMarkerYear(t))return 5;if(n.getMarkerMonth(e)!==n.getMarkerMonth(t))return 4;if(n.getMarkerDay(e)!==n.getMarkerDay(t))return 2;if(_e(e)!==_e(t))return 1;return 0}(e.marker,t.marker,n.calendarSystem);if(!a)return this.format(e,n);var s=a;!(s>1)||\"numeric\"!==o.year&&\"2-digit\"!==o.year||\"numeric\"!==o.month&&\"2-digit\"!==o.month||\"numeric\"!==o.day&&\"2-digit\"!==o.day||(s=1);var l=this.format(e,n),u=this.format(t,n);if(l===u)return l;var c=vt(function(e,t){var n={};for(var r in e)(!(r in lt)||lt[r]<=t)&&(n[r]=e[r]);return n}(o,s),i,n),d=c(e),p=c(t),f=function(e,t,n,r){var o=0;for(;o<e.length;){var i=e.indexOf(t,o);if(-1===i)break;var a=e.substr(0,i);o=i+t.length;for(var s=e.substr(o),l=0;l<n.length;){var u=n.indexOf(r,l);if(-1===u)break;var c=n.substr(0,u);l=u+r.length;var d=n.substr(l);if(a===c&&s===d)return{before:a,after:s}}}return null}(l,d,u,p),h=i.separator||r||n.defaultSeparator||\"\";return f?f.before+d+h+p+f.after:l+h+u},e.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\"}},e}();function vt(e,t,n){var o=Object.keys(e).length;return 1===o&&\"short\"===e.timeZoneName?function(e){return rt(e.timeZoneOffset)}:0===o&&t.week?function(e){return function(e,t,n,r){var o=[];\"narrow\"===r?o.push(t):\"short\"===r&&o.push(t,\" \");o.push(n.simpleNumberFormat.format(e)),\"rtl\"===n.options.direction&&o.reverse();return o.join(\"\")}(n.computeWeekNumber(e.marker),n.weekText,n.locale,t.week)}:function(e,t,n){e=r({},e),t=r({},t),function(e,t){e.timeZoneName&&(e.hour||(e.hour=\"2-digit\"),e.minute||(e.minute=\"2-digit\"));\"long\"===e.timeZoneName&&(e.timeZoneName=\"short\");t.omitZeroMinute&&(e.second||e.millisecond)&&delete t.omitZeroMinute}(e,t),e.timeZone=\"UTC\";var o,i=new Intl.DateTimeFormat(n.locale.codes,e);if(t.omitZeroMinute){var a=r({},e);delete a.minute,o=new Intl.DateTimeFormat(n.locale.codes,a)}return function(r){var a=r.marker;return function(e,t,n,r,o){e=e.replace(pt,\"\"),\"short\"===n.timeZoneName&&(e=function(e,t){var n=!1;e=e.replace(ft,(function(){return n=!0,t})),n||(e+=\" \"+t);return e}(e,\"UTC\"===o.timeZone||null==t.timeZoneOffset?\"UTC\":rt(t.timeZoneOffset)));r.omitCommas&&(e=e.replace(ct,\"\").trim());r.omitZeroMinute&&(e=e.replace(\":00\",\"\"));!1===r.meridiem?e=e.replace(ut,\"\").trim():\"narrow\"===r.meridiem?e=e.replace(ut,(function(e,t){return t.toLocaleLowerCase()})):\"short\"===r.meridiem?e=e.replace(ut,(function(e,t){return t.toLocaleLowerCase()+\"m\"})):\"lowercase\"===r.meridiem&&(e=e.replace(ut,(function(e){return e.toLocaleLowerCase()})));return e=(e=e.replace(dt,\" \")).trim()}((o&&!a.getUTCMinutes()?o:i).format(a),r,e,t,n)}}(e,t,n)}function gt(e,t){var n=t.markerToArray(e.marker);return{marker:e.marker,timeZoneOffset:e.timeZoneOffset,array:n,year:n[0],month:n[1],day:n[2],hour:n[3],minute:n[4],second:n[5],millisecond:n[6]}}function mt(e,t,n,r){var o=gt(e,n.calendarSystem);return{date:o,start:o,end:t?gt(t,n.calendarSystem):null,timeZone:n.timeZone,localeCodes:n.locale.codes,defaultSeparator:r||n.defaultSeparator}}var yt=function(){function e(e){this.cmdStr=e}return e.prototype.format=function(e,t,n){return t.cmdFormatter(this.cmdStr,mt(e,null,t,n))},e.prototype.formatRange=function(e,t,n,r){return n.cmdFormatter(this.cmdStr,mt(e,t,n,r))},e}(),Et=function(){function e(e){this.func=e}return e.prototype.format=function(e,t,n){return this.func(mt(e,null,t,n))},e.prototype.formatRange=function(e,t,n,r){return this.func(mt(e,t,n,r))},e}();function St(e){return\"object\"==typeof e&&e?new ht(e):\"string\"==typeof e?new yt(e):\"function\"==typeof e?new Et(e):void 0}var Dt={navLinkDayClick:_t,navLinkWeekClick:_t,duration:Ye,bootstrapFontAwesome:_t,buttonIcons:_t,customButtons:_t,defaultAllDayEventDuration:Ye,defaultTimedEventDuration:Ye,nextDayThreshold:Ye,scrollTime:Ye,slotMinTime:Ye,slotMaxTime:Ye,dayPopoverFormat:St,slotDuration:Ye,snapDuration:Ye,headerToolbar:_t,footerToolbar:_t,defaultRangeSeparator:String,titleRangeSeparator:String,forceEventDuration:Boolean,dayHeaders:Boolean,dayHeaderFormat:St,dayHeaderClassNames:_t,dayHeaderContent:_t,dayHeaderDidMount:_t,dayHeaderWillUnmount:_t,dayCellClassNames:_t,dayCellContent:_t,dayCellDidMount:_t,dayCellWillUnmount:_t,initialView:String,aspectRatio:Number,weekends:Boolean,weekNumberCalculation:_t,weekNumbers:Boolean,weekNumberClassNames:_t,weekNumberContent:_t,weekNumberDidMount:_t,weekNumberWillUnmount:_t,editable:Boolean,viewClassNames:_t,viewDidMount:_t,viewWillUnmount:_t,nowIndicator:Boolean,nowIndicatorClassNames:_t,nowIndicatorContent:_t,nowIndicatorDidMount:_t,nowIndicatorWillUnmount:_t,showNonCurrentDates:Boolean,lazyFetching:Boolean,startParam:String,endParam:String,timeZoneParam:String,timeZone:String,locales:_t,locale:_t,themeSystem:String,dragRevertDuration:Number,dragScroll:Boolean,allDayMaintainDuration:Boolean,unselectAuto:Boolean,dropAccept:_t,eventOrder:ie,handleWindowResize:Boolean,windowResizeDelay:Number,longPressDelay:Number,eventDragMinDistance:Number,expandRows:Boolean,height:_t,contentHeight:_t,direction:String,weekNumberFormat:St,eventResizableFromStart:Boolean,displayEventTime:Boolean,displayEventEnd:Boolean,weekText:String,progressiveEventRendering:Boolean,businessHours:_t,initialDate:_t,now:_t,eventDataTransform:_t,stickyHeaderDates:_t,stickyFooterScrollbar:_t,viewHeight:_t,defaultAllDay:Boolean,eventSourceFailure:_t,eventSourceSuccess:_t,eventDisplay:String,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventOverlap:_t,eventConstraint:_t,eventAllow:_t,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String,eventClassNames:_t,eventContent:_t,eventDidMount:_t,eventWillUnmount:_t,selectConstraint:_t,selectOverlap:_t,selectAllow:_t,droppable:Boolean,unselectCancel:String,slotLabelFormat:_t,slotLaneClassNames:_t,slotLaneContent:_t,slotLaneDidMount:_t,slotLaneWillUnmount:_t,slotLabelClassNames:_t,slotLabelContent:_t,slotLabelDidMount:_t,slotLabelWillUnmount:_t,dayMaxEvents:_t,dayMaxEventRows:_t,dayMinWidth:Number,slotLabelInterval:Ye,allDayText:String,allDayClassNames:_t,allDayContent:_t,allDayDidMount:_t,allDayWillUnmount:_t,slotMinWidth:Number,navLinks:Boolean,eventTimeFormat:St,rerenderDelay:Number,moreLinkText:_t,selectMinDistance:Number,selectable:Boolean,selectLongPressDelay:Number,eventLongPressDelay:Number,selectMirror:Boolean,eventMinHeight:Number,slotEventOverlap:Boolean,plugins:_t,firstDay:Number,dayCount:Number,dateAlignment:String,dateIncrement:Ye,hiddenDays:_t,monthMode:Boolean,fixedWeekCount:Boolean,validRange:_t,visibleRange:_t,titleFormat:_t,noEventsText:String},bt={eventDisplay:\"auto\",defaultRangeSeparator:\" - \",titleRangeSeparator:\" \u2013 \",defaultTimedEventDuration:\"01:00:00\",defaultAllDayEventDuration:{day:1},forceEventDuration:!1,nextDayThreshold:\"00:00:00\",dayHeaders:!0,initialView:\"\",aspectRatio:1.35,headerToolbar:{start:\"title\",center:\"\",end:\"today prev,next\"},weekends:!0,weekNumbers:!1,weekNumberCalculation:\"local\",editable:!1,nowIndicator:!1,scrollTime:\"06:00:00\",slotMinTime:\"00:00:00\",slotMaxTime:\"24:00:00\",showNonCurrentDates:!0,lazyFetching:!0,startParam:\"start\",endParam:\"end\",timeZoneParam:\"timeZone\",timeZone:\"local\",locales:[],locale:\"\",themeSystem:\"standard\",dragRevertDuration:500,dragScroll:!0,allDayMaintainDuration:!1,unselectAuto:!0,dropAccept:\"*\",eventOrder:\"start,-duration,allDay,title\",dayPopoverFormat:{month:\"long\",day:\"numeric\",year:\"numeric\"},handleWindowResize:!0,windowResizeDelay:100,longPressDelay:1e3,eventDragMinDistance:5,expandRows:!1,navLinks:!1,selectable:!1},Ct={datesSet:_t,eventsSet:_t,eventAdd:_t,eventChange:_t,eventRemove:_t,windowResize:_t,eventClick:_t,eventMouseEnter:_t,eventMouseLeave:_t,select:_t,unselect:_t,loading:_t,_unmount:_t,_beforeprint:_t,_afterprint:_t,_noEventDrop:_t,_noEventResize:_t,_resize:_t,_scrollRequest:_t},wt={buttonText:_t,views:_t,plugins:_t,initialEvents:_t,events:_t,eventSources:_t},Rt={headerToolbar:Tt,footerToolbar:Tt,buttonText:Tt,buttonIcons:Tt};function Tt(e,t){return\"object\"==typeof e&&\"object\"==typeof t&&e&&t?Le(e,t):e===t}var kt={type:String,component:_t,buttonText:String,buttonTextKey:String,dateProfileGeneratorClass:_t,usesMinMaxTime:Boolean,classNames:_t,content:_t,didMount:_t,willUnmount:_t};function Mt(e){return Ne(e,Rt)}function xt(e,t){var n={},r={};for(var o in t)o in e&&(n[o]=t[o](e[o]));for(var o in e)o in t||(r[o]=e[o]);return{refined:n,extra:r}}function _t(e){return e}function It(e,t,n,r){for(var o={defs:{},instances:{}},i=Zt(n),a=0,s=e;a<s.length;a++){var l=qt(s[a],t,n,r,i);l&&Pt(l,o)}return o}function Pt(e,t){return void 0===t&&(t={defs:{},instances:{}}),t.defs[e.def.defId]=e.def,e.instance&&(t.instances[e.instance.instanceId]=e.instance),t}function Nt(e,t){var n=e.instances[t];if(n){var r=e.defs[n.defId],o=At(e,(function(e){return t=r,n=e,Boolean(t.groupId&&t.groupId===n.groupId);var t,n}));return o.defs[r.defId]=r,o.instances[n.instanceId]=n,o}return{defs:{},instances:{}}}function Ht(){return{defs:{},instances:{}}}function Ot(e,t){return{defs:r(r({},e.defs),t.defs),instances:r(r({},e.instances),t.instances)}}function At(e,t){var n=He(e.defs,t),r=He(e.instances,(function(e){return n[e.defId]}));return{defs:n,instances:r}}function Ut(e){return Array.isArray(e)?e:\"string\"==typeof e?e.split(/\\s+/):[]}var Lt={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:_t,overlap:_t,allow:_t,className:Ut,classNames:Ut,color:String,backgroundColor:String,borderColor:String,textColor:String};function Wt(e,t){var n=function(e,t){return Array.isArray(e)?It(e,null,t,!0):\"object\"==typeof e&&e?It([e],null,t,!0):null!=e?String(e):null}(e.constraint,t);return{display:e.display||null,startEditable:null!=e.startEditable?e.startEditable:e.editable,durationEditable:null!=e.durationEditable?e.durationEditable:e.editable,constraints:null!=n?[n]:[],overlap:null!=e.overlap?e.overlap:null,allows:null!=e.allow?[e.allow]:[],backgroundColor:e.backgroundColor||e.color||\"\",borderColor:e.borderColor||e.color||\"\",textColor:e.textColor||\"\",classNames:(e.className||[]).concat(e.classNames||[])}}function Vt(e){return e.reduce(zt,Ft)}function zt(e,t){return{display:null!=t.display?t.display:e.display,startEditable:null!=t.startEditable?t.startEditable:e.startEditable,durationEditable:null!=t.durationEditable?t.durationEditable:e.durationEditable,constraints:e.constraints.concat(t.constraints),overlap:\"boolean\"==typeof t.overlap?t.overlap:e.overlap,allows:e.allows.concat(t.allows),backgroundColor:t.backgroundColor||e.backgroundColor,borderColor:t.borderColor||e.borderColor,textColor:t.textColor||e.textColor,classNames:e.classNames.concat(t.classNames)}}var Ft={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],backgroundColor:\"\",borderColor:\"\",textColor:\"\",classNames:[]},Bt={id:String,groupId:String,title:String,url:String},jt={start:_t,end:_t,date:_t,allDay:Boolean},Gt=r(r(r({},Bt),jt),{extendedProps:_t});function qt(e,t,n,r,o){void 0===o&&(o=Zt(n));var i=Yt(e,n,o),a=i.refined,s=i.extra,l=function(e,t){var n=null;e&&(n=e.defaultAllDay);null==n&&(n=t.options.defaultAllDay);return n}(t,n),u=function(e,t,n,r){for(var o=0;o<r.length;o++){var i=r[o].parse(e,n);if(i){var a=e.allDay;return null==a&&null==(a=t)&&null==(a=i.allDayGuess)&&(a=!1),{allDay:a,duration:i.duration,typeData:i.typeData,typeId:o}}}return null}(a,l,n.dateEnv,n.pluginHooks.recurringTypes);if(u)return(c=Xt(a,s,t?t.sourceId:\"\",u.allDay,Boolean(u.duration),n)).recurringDef={typeId:u.typeId,typeData:u.typeData,duration:u.duration},{def:c,instance:null};var c,d=function(e,t,n,r){var o,i,a=e.allDay,s=null,l=!1,u=null,c=null!=e.start?e.start:e.date;if(o=n.dateEnv.createMarkerMeta(c))s=o.marker;else if(!r)return null;null!=e.end&&(i=n.dateEnv.createMarkerMeta(e.end));null==a&&(a=null!=t?t:(!o||o.isTimeUnspecified)&&(!i||i.isTimeUnspecified));a&&s&&(s=be(s));i&&(u=i.marker,a&&(u=be(u)),s&&u<=s&&(u=null));u?l=!0:r||(l=n.options.forceEventDuration||!1,u=n.dateEnv.add(s,a?n.options.defaultAllDayEventDuration:n.options.defaultTimedEventDuration));return{allDay:a,hasEnd:l,range:{start:s,end:u},forcedStartTzo:o?o.forcedTzo:null,forcedEndTzo:i?i.forcedTzo:null}}(a,l,n,r);return d?{def:c=Xt(a,s,t?t.sourceId:\"\",d.allDay,d.hasEnd,n),instance:Ie(c.defId,d.range,d.forcedStartTzo,d.forcedEndTzo)}:null}function Yt(e,t,n){return void 0===n&&(n=Zt(t)),xt(e,n)}function Zt(e){return r(r(r({},Lt),Gt),e.pluginHooks.eventRefiners)}function Xt(e,t,n,o,i,a){for(var s={title:e.title||\"\",groupId:e.groupId||\"\",publicId:e.id||\"\",url:e.url||\"\",recurringDef:null,defId:$(),sourceId:n,allDay:o,hasEnd:i,ui:Wt(e,a),extendedProps:r(r({},e.extendedProps||{}),t)},l=0,u=a.pluginHooks.eventDefMemberAdders;l<u.length;l++){var c=u[l];r(s,c(e))}return Object.freeze(s.ui.classNames),Object.freeze(s.extendedProps),s}function Kt(e){var t=Math.floor(ye(e.start,e.end))||1,n=be(e.start);return{start:n,end:ve(n,t)}}function Jt(e,t){void 0===t&&(t=Ye(0));var n=null,r=null;if(e.end){r=be(e.end);var o=e.end.valueOf()-r.valueOf();o&&o>=$e(t)&&(r=ve(r,1))}return e.start&&(n=be(e.start),r&&r<=n&&(r=ve(n,1))),{start:n,end:r}}function $t(e){var t=Jt(e);return ye(t.start,t.end)>1}function Qt(e,t,n,r){return\"year\"===r?Ye(n.diffWholeYears(e,t),\"year\"):\"month\"===r?Ye(n.diffWholeMonths(e,t),\"month\"):Ee(e,t)}function en(e,t){var n,r,o=[],i=t.start;for(e.sort(tn),n=0;n<e.length;n++)(r=e[n]).start>i&&o.push({start:i,end:r.start}),r.end>i&&(i=r.end);return i<t.end&&o.push({start:i,end:t.end}),o}function tn(e,t){return e.start.valueOf()-t.start.valueOf()}function nn(e,t){var n=e.start,r=e.end,o=null;return null!==t.start&&(n=null===n?t.start:new Date(Math.max(n.valueOf(),t.start.valueOf()))),null!=t.end&&(r=null===r?t.end:new Date(Math.min(r.valueOf(),t.end.valueOf()))),(null===n||null===r||n<r)&&(o={start:n,end:r}),o}function rn(e,t){return(null===e.start?null:e.start.valueOf())===(null===t.start?null:t.start.valueOf())&&(null===e.end?null:e.end.valueOf())===(null===t.end?null:t.end.valueOf())}function on(e,t){return(null===e.end||null===t.start||e.end>t.start)&&(null===e.start||null===t.end||e.start<t.end)}function an(e,t){return(null===e.start||null!==t.start&&t.start>=e.start)&&(null===e.end||null!==t.end&&t.end<=e.end)}function sn(e,t){return(null===e.start||t>=e.start)&&(null===e.end||t<e.end)}function ln(e,t,n,r){var o={},i={},a={},s=[],l=[],u=pn(e.defs,t);for(var c in e.defs){\"inverse-background\"===(f=u[(S=e.defs[c]).defId]).display&&(S.groupId?(o[S.groupId]=[],a[S.groupId]||(a[S.groupId]=S)):i[c]=[])}for(var d in e.instances){var p=e.instances[d],f=u[(S=e.defs[p.defId]).defId],h=p.range,v=!S.allDay&&r?Jt(h,r):h,g=nn(v,n);g&&(\"inverse-background\"===f.display?S.groupId?o[S.groupId].push(g):i[p.defId].push(g):\"none\"!==f.display&&(\"background\"===f.display?s:l).push({def:S,ui:f,instance:p,range:g,isStart:v.start&&v.start.valueOf()===g.start.valueOf(),isEnd:v.end&&v.end.valueOf()===g.end.valueOf()}))}for(var m in o)for(var y=0,E=en(o[m],n);y<E.length;y++){var S,D=E[y];f=u[(S=a[m]).defId];s.push({def:S,ui:f,instance:null,range:D,isStart:!1,isEnd:!1})}for(var c in i)for(var b=0,C=en(i[c],n);b<C.length;b++){D=C[b];s.push({def:e.defs[c],ui:u[c],instance:null,range:D,isStart:!1,isEnd:!1})}return{bg:s,fg:l}}function un(e){return\"background\"===e.ui.display||\"inverse-background\"===e.ui.display}function cn(e,t){e.fcSeg=t}function dn(e){return e.fcSeg||e.parentNode.fcSeg||null}function pn(e,t){return Oe(e,(function(e){return fn(e,t)}))}function fn(e,t){var n=[];return t[\"\"]&&n.push(t[\"\"]),t[e.defId]&&n.push(t[e.defId]),n.push(e.ui),Vt(n)}function hn(e,t){var n=e.map(vn);return n.sort((function(e,n){return ae(e,n,t)})),n.map((function(e){return e._seg}))}function vn(e){var t=e.eventRange,n=t.def,o=t.instance?t.instance.range:t.range,i=o.start?o.start.valueOf():0,a=o.end?o.end.valueOf():0;return r(r(r({},n.extendedProps),n),{id:n.publicId,start:i,end:a,duration:a-i,allDay:Number(n.allDay),_seg:e})}function gn(e,t){for(var n=t.pluginHooks.isDraggableTransformers,r=e.eventRange,o=r.def,i=r.ui,a=i.startEditable,s=0,l=n;s<l.length;s++){a=(0,l[s])(a,o,i,t)}return a}function mn(e,t){return e.isStart&&e.eventRange.ui.durationEditable&&t.options.eventResizableFromStart}function yn(e,t){return e.isEnd&&e.eventRange.ui.durationEditable}function En(e,t,n,r,o,i,a){var s=n.dateEnv,l=n.options,u=l.displayEventTime,c=l.displayEventEnd,d=e.eventRange.def,p=e.eventRange.instance;if(null==u&&(u=!1!==r),null==c&&(c=!1!==o),u&&!d.allDay&&(e.isStart||e.isEnd)){var f=i||(e.isStart?p.range.start:e.start||e.eventRange.range.start),h=a||(e.isEnd?p.range.end:e.end||e.eventRange.range.end);return c&&d.hasEnd?s.formatRange(f,h,t,{forcedStartTzo:i?null:p.forcedStartTzo,forcedEndTzo:a?null:p.forcedEndTzo}):s.format(f,t,{forcedTzo:i?null:p.forcedStartTzo})}return\"\"}function Sn(e,t,n){var r=e.eventRange.range;return{isPast:r.end<(n||t.start),isFuture:r.start>=(n||t.end),isToday:t&&sn(t,r.start)}}function Dn(e){var t=[\"fc-event\"];return e.isMirror&&t.push(\"fc-event-mirror\"),e.isDraggable&&t.push(\"fc-event-draggable\"),(e.isStartResizable||e.isEndResizable)&&t.push(\"fc-event-resizable\"),e.isDragging&&t.push(\"fc-event-dragging\"),e.isResizing&&t.push(\"fc-event-resizing\"),e.isSelected&&t.push(\"fc-event-selected\"),e.isStart&&t.push(\"fc-event-start\"),e.isEnd&&t.push(\"fc-event-end\"),e.isPast&&t.push(\"fc-event-past\"),e.isToday&&t.push(\"fc-event-today\"),e.isFuture&&t.push(\"fc-event-future\"),t}function bn(e){return e.instance?e.instance.instanceId:e.def.defId+\":\"+e.range.start.toISOString()}var Cn={start:_t,end:_t,allDay:Boolean};function wn(e,t,n){var o=function(e,t){var n=xt(e,Cn),o=n.refined,i=n.extra,a=o.start?t.createMarkerMeta(o.start):null,s=o.end?t.createMarkerMeta(o.end):null,l=o.allDay;null==l&&(l=a&&a.isTimeUnspecified&&(!s||s.isTimeUnspecified));return r({range:{start:a?a.marker:null,end:s?s.marker:null},allDay:l},i)}(e,t),i=o.range;if(!i.start)return null;if(!i.end){if(null==n)return null;i.end=t.add(i.start,n)}return o}function Rn(e,t){return rn(e.range,t.range)&&e.allDay===t.allDay&&function(e,t){for(var n in t)if(\"range\"!==n&&\"allDay\"!==n&&e[n]!==t[n])return!1;for(var n in e)if(!(n in t))return!1;return!0}(e,t)}function Tn(e,t,n){return r(r({},kn(e,t,n)),{timeZone:t.timeZone})}function kn(e,t,n){return{start:t.toDate(e.start),end:t.toDate(e.end),startStr:t.formatIso(e.start,{omitTime:n}),endStr:t.formatIso(e.end,{omitTime:n})}}function Mn(e,t,n){var r=Yt({editable:!1},n),o=Xt(r.refined,r.extra,\"\",e.allDay,!0,n);return{def:o,ui:fn(o,t),instance:Ie(o.defId,e.range),range:e.range,isStart:!0,isEnd:!0}}function xn(e,t,n){n.emitter.trigger(\"select\",r(r({},_n(e,n)),{jsEvent:t?t.origEvent:null,view:n.viewApi||n.calendarApi.view}))}function _n(e,t){for(var n,o,i={},a=0,s=t.pluginHooks.dateSpanTransforms;a<s.length;a++){var l=s[a];r(i,l(e,t))}return r(i,(n=e,o=t.dateEnv,r(r({},kn(n.range,o,n.allDay)),{allDay:n.allDay}))),i}function In(e,t,n){var r=n.dateEnv,o=n.options,i=t;return e?(i=be(i),i=r.add(i,o.defaultAllDayEventDuration)):i=r.add(i,o.defaultTimedEventDuration),i}function Pn(e,t,n,r){var o=pn(e.defs,t),i={defs:{},instances:{}};for(var a in e.defs){var s=e.defs[a];i.defs[a]=Nn(s,o[a],n,r)}for(var l in e.instances){var u=e.instances[l];s=i.defs[u.defId];i.instances[l]=Hn(u,s,o[u.defId],n,r)}return i}function Nn(e,t,n,o){var i=n.standardProps||{};null==i.hasEnd&&t.durationEditable&&(n.startDelta||n.endDelta)&&(i.hasEnd=!0);var a=r(r(r({},e),i),{ui:r(r({},e.ui),i.ui)});n.extendedProps&&(a.extendedProps=r(r({},a.extendedProps),n.extendedProps));for(var s=0,l=o.pluginHooks.eventDefMutationAppliers;s<l.length;s++){(0,l[s])(a,n,o)}return!a.hasEnd&&o.options.forceEventDuration&&(a.hasEnd=!0),a}function Hn(e,t,n,o,i){var a=i.dateEnv,s=o.standardProps&&!0===o.standardProps.allDay,l=o.standardProps&&!1===o.standardProps.hasEnd,u=r({},e);return s&&(u.range=Kt(u.range)),o.datesDelta&&n.startEditable&&(u.range={start:a.add(u.range.start,o.datesDelta),end:a.add(u.range.end,o.datesDelta)}),o.startDelta&&n.durationEditable&&(u.range={start:a.add(u.range.start,o.startDelta),end:u.range.end}),o.endDelta&&n.durationEditable&&(u.range={start:u.range.start,end:a.add(u.range.end,o.endDelta)}),l&&(u.range={start:u.range.start,end:In(t.allDay,u.range.start,i)}),t.allDay&&(u.range={start:be(u.range.start),end:be(u.range.end)}),u.range.end<u.range.start&&(u.range.end=In(t.allDay,u.range.start,i)),u}var On=function(){function e(e,t,n){this.type=e,this.getCurrentData=t,this.dateEnv=n}return Object.defineProperty(e.prototype,\"calendar\",{get:function(){return this.getCurrentData().calendarApi},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"title\",{get:function(){return this.getCurrentData().viewTitle},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"activeStart\",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"activeEnd\",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"currentStart\",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"currentEnd\",{get:function(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end)},enumerable:!1,configurable:!0}),e.prototype.getOption=function(e){return this.getCurrentData().options[e]},e}(),An={id:String,defaultAllDay:Boolean,url:String,events:_t,eventDataTransform:_t,success:_t,failure:_t};function Un(e,t,n){var r;if(void 0===n&&(n=Ln(t)),\"string\"==typeof e?r={url:e}:\"function\"==typeof e||Array.isArray(e)?r={events:e}:\"object\"==typeof e&&e&&(r=e),r){var o=xt(r,n),i=o.refined,a=o.extra,s=function(e,t){for(var n=t.pluginHooks.eventSourceDefs,r=n.length-1;r>=0;r--){var o=n[r].parseMeta(e);if(o)return{sourceDefId:r,meta:o}}return null}(i,t);if(s)return{_raw:e,isFetching:!1,latestFetchId:\"\",fetchRange:null,defaultAllDay:i.defaultAllDay,eventDataTransform:i.eventDataTransform,success:i.success,failure:i.failure,publicId:i.id||\"\",sourceId:$(),sourceDefId:s.sourceDefId,meta:s.meta,ui:Wt(i,t),extendedProps:a}}return null}function Ln(e){return r(r(r({},Lt),An),e.pluginHooks.eventSourceRefiners)}function Wn(e,t){return\"function\"==typeof e&&(e=e()),null==e?t.createNowMarker():t.createMarker(e)}var Vn=function(){function e(){}return e.prototype.getCurrentData=function(){return this.currentDataManager.getCurrentData()},e.prototype.dispatch=function(e){return this.currentDataManager.dispatch(e)},Object.defineProperty(e.prototype,\"view\",{get:function(){return this.getCurrentData().viewApi},enumerable:!1,configurable:!0}),e.prototype.batchRendering=function(e){e()},e.prototype.updateSize=function(){this.trigger(\"_resize\",!0)},e.prototype.setOption=function(e,t){this.dispatch({type:\"SET_OPTION\",optionName:e,rawOptionValue:t})},e.prototype.getOption=function(e){return this.currentDataManager.currentCalendarOptionsInput[e]},e.prototype.getAvailableLocaleCodes=function(){return Object.keys(this.getCurrentData().availableRawLocales)},e.prototype.on=function(e,t){var n=this.currentDataManager;n.currentCalendarOptionsRefiners[e]?n.emitter.on(e,t):console.warn(\"Unknown listener name '\"+e+\"'\")},e.prototype.off=function(e,t){this.currentDataManager.emitter.off(e,t)},e.prototype.trigger=function(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];(t=this.currentDataManager.emitter).trigger.apply(t,o([e],n))},e.prototype.changeView=function(e,t){var n=this;this.batchRendering((function(){if(n.unselect(),t)if(t.start&&t.end)n.dispatch({type:\"CHANGE_VIEW_TYPE\",viewType:e}),n.dispatch({type:\"SET_OPTION\",optionName:\"visibleRange\",rawOptionValue:t});else{var r=n.getCurrentData().dateEnv;n.dispatch({type:\"CHANGE_VIEW_TYPE\",viewType:e,dateMarker:r.createMarker(t)})}else n.dispatch({type:\"CHANGE_VIEW_TYPE\",viewType:e})}))},e.prototype.zoomTo=function(e,t){var n;t=t||\"day\",n=this.getCurrentData().viewSpecs[t]||this.getUnitViewSpec(t),this.unselect(),n?this.dispatch({type:\"CHANGE_VIEW_TYPE\",viewType:n.type,dateMarker:e}):this.dispatch({type:\"CHANGE_DATE\",dateMarker:e})},e.prototype.getUnitViewSpec=function(e){var t,n,r=this.getCurrentData(),o=r.viewSpecs,i=r.toolbarConfig,a=[].concat(i.viewsWithButtons);for(var s in o)a.push(s);for(t=0;t<a.length;t++)if((n=o[a[t]])&&n.singleUnit===e)return n},e.prototype.prev=function(){this.unselect(),this.dispatch({type:\"PREV\"})},e.prototype.next=function(){this.unselect(),this.dispatch({type:\"NEXT\"})},e.prototype.prevYear=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:e.dateEnv.addYears(e.currentDate,-1)})},e.prototype.nextYear=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:e.dateEnv.addYears(e.currentDate,1)})},e.prototype.today=function(){var e=this.getCurrentData();this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:Wn(e.calendarOptions.now,e.dateEnv)})},e.prototype.gotoDate=function(e){var t=this.getCurrentData();this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:t.dateEnv.createMarker(e)})},e.prototype.incrementDate=function(e){var t=this.getCurrentData(),n=Ye(e);n&&(this.unselect(),this.dispatch({type:\"CHANGE_DATE\",dateMarker:t.dateEnv.add(t.currentDate,n)}))},e.prototype.getDate=function(){var e=this.getCurrentData();return e.dateEnv.toDate(e.currentDate)},e.prototype.formatDate=function(e,t){var n=this.getCurrentData().dateEnv;return n.format(n.createMarker(e),St(t))},e.prototype.formatRange=function(e,t,n){var r=this.getCurrentData().dateEnv;return r.formatRange(r.createMarker(e),r.createMarker(t),St(n),n)},e.prototype.formatIso=function(e,t){var n=this.getCurrentData().dateEnv;return n.formatIso(n.createMarker(e),{omitTime:t})},e.prototype.select=function(e,t){var n;n=null==t?null!=e.start?e:{start:e,end:null}:{start:e,end:t};var r=this.getCurrentData(),o=wn(n,r.dateEnv,Ye({days:1}));o&&(this.dispatch({type:\"SELECT_DATES\",selection:o}),xn(o,null,r))},e.prototype.unselect=function(e){var t=this.getCurrentData();t.dateSelection&&(this.dispatch({type:\"UNSELECT_DATES\"}),function(e,t){t.emitter.trigger(\"unselect\",{jsEvent:e?e.origEvent:null,view:t.viewApi||t.calendarApi.view})}(e,t))},e.prototype.addEvent=function(e,t){if(e instanceof zn){var n=e._def,r=e._instance;return this.getCurrentData().eventStore.defs[n.defId]||(this.dispatch({type:\"ADD_EVENTS\",eventStore:Pt({def:n,instance:r})}),this.triggerEventAdd(e)),e}var o,i=this.getCurrentData();if(t instanceof L)o=t.internalEventSource;else if(\"boolean\"==typeof t)t&&(o=Ue(i.eventSources)[0]);else if(null!=t){var a=this.getEventSourceById(t);if(!a)return console.warn('Could not find an event source with ID \"'+t+'\"'),null;o=a.internalEventSource}var s=qt(e,o,i,!1);if(s){var l=new zn(i,s.def,s.def.recurringDef?null:s.instance);return this.dispatch({type:\"ADD_EVENTS\",eventStore:Pt(s)}),this.triggerEventAdd(l),l}return null},e.prototype.triggerEventAdd=function(e){var t=this;this.getCurrentData().emitter.trigger(\"eventAdd\",{event:e,relatedEvents:[],revert:function(){t.dispatch({type:\"REMOVE_EVENTS\",eventStore:Fn(e)})}})},e.prototype.getEventById=function(e){var t=this.getCurrentData(),n=t.eventStore,r=n.defs,o=n.instances;for(var i in e=String(e),r){var a=r[i];if(a.publicId===e){if(a.recurringDef)return new zn(t,a,null);for(var s in o){var l=o[s];if(l.defId===a.defId)return new zn(t,a,l)}}}return null},e.prototype.getEvents=function(){var e=this.getCurrentData();return Bn(e.eventStore,e)},e.prototype.removeAllEvents=function(){this.dispatch({type:\"REMOVE_ALL_EVENTS\"})},e.prototype.getEventSources=function(){var e=this.getCurrentData(),t=e.eventSources,n=[];for(var r in t)n.push(new L(e,t[r]));return n},e.prototype.getEventSourceById=function(e){var t=this.getCurrentData(),n=t.eventSources;for(var r in e=String(e),n)if(n[r].publicId===e)return new L(t,n[r]);return null},e.prototype.addEventSource=function(e){var t=this.getCurrentData();if(e instanceof L)return t.eventSources[e.internalEventSource.sourceId]||this.dispatch({type:\"ADD_EVENT_SOURCES\",sources:[e.internalEventSource]}),e;var n=Un(e,t);return n?(this.dispatch({type:\"ADD_EVENT_SOURCES\",sources:[n]}),new L(t,n)):null},e.prototype.removeAllEventSources=function(){this.dispatch({type:\"REMOVE_ALL_EVENT_SOURCES\"})},e.prototype.refetchEvents=function(){this.dispatch({type:\"FETCH_EVENT_SOURCES\"})},e.prototype.scrollToTime=function(e){var t=Ye(e);t&&this.trigger(\"_scrollRequest\",{time:t})},e}(),zn=function(){function e(e,t,n){this._context=e,this._def=t,this._instance=n||null}return e.prototype.setProp=function(e,t){var n,r;if(e in jt)console.warn(\"Could not set date-related prop 'name'. Use one of the date-related methods instead.\");else if(e in Bt)t=Bt[e](t),this.mutate({standardProps:(n={},n[e]=t,n)});else if(e in Lt){var o=Lt[e](t);\"color\"===e?o={backgroundColor:t,borderColor:t}:\"editable\"===e?o={startEditable:t,durationEditable:t}:((r={})[e]=t,o=r),this.mutate({standardProps:{ui:o}})}else console.warn(\"Could not set prop '\"+e+\"'. Use setExtendedProp instead.\")},e.prototype.setExtendedProp=function(e,t){var n;this.mutate({extendedProps:(n={},n[e]=t,n)})},e.prototype.setStart=function(e,t){void 0===t&&(t={});var n=this._context.dateEnv,r=n.createMarker(e);if(r&&this._instance){var o=Qt(this._instance.range.start,r,n,t.granularity);t.maintainDuration?this.mutate({datesDelta:o}):this.mutate({startDelta:o})}},e.prototype.setEnd=function(e,t){void 0===t&&(t={});var n,r=this._context.dateEnv;if((null==e||(n=r.createMarker(e)))&&this._instance)if(n){var o=Qt(this._instance.range.end,n,r,t.granularity);this.mutate({endDelta:o})}else this.mutate({standardProps:{hasEnd:!1}})},e.prototype.setDates=function(e,t,n){void 0===n&&(n={});var r,o,i,a=this._context.dateEnv,s={allDay:n.allDay},l=a.createMarker(e);if(l&&((null==t||(r=a.createMarker(t)))&&this._instance)){var u=this._instance.range;!0===n.allDay&&(u=Kt(u));var c=Qt(u.start,l,a,n.granularity);if(r){var d=Qt(u.end,r,a,n.granularity);i=d,(o=c).years===i.years&&o.months===i.months&&o.days===i.days&&o.milliseconds===i.milliseconds?this.mutate({datesDelta:c,standardProps:s}):this.mutate({startDelta:c,endDelta:d,standardProps:s})}else s.hasEnd=!1,this.mutate({datesDelta:c,standardProps:s})}},e.prototype.moveStart=function(e){var t=Ye(e);t&&this.mutate({startDelta:t})},e.prototype.moveEnd=function(e){var t=Ye(e);t&&this.mutate({endDelta:t})},e.prototype.moveDates=function(e){var t=Ye(e);t&&this.mutate({datesDelta:t})},e.prototype.setAllDay=function(e,t){void 0===t&&(t={});var n={allDay:e},r=t.maintainDuration;null==r&&(r=this._context.options.allDayMaintainDuration),this._def.allDay!==e&&(n.hasEnd=r),this.mutate({standardProps:n})},e.prototype.formatRange=function(e){var t=this._context.dateEnv,n=this._instance,r=St(e);return this._def.hasEnd?t.formatRange(n.range.start,n.range.end,r,{forcedStartTzo:n.forcedStartTzo,forcedEndTzo:n.forcedEndTzo}):t.format(n.range.start,r,{forcedTzo:n.forcedStartTzo})},e.prototype.mutate=function(t){var n=this._instance;if(n){var r=this._def,o=this._context,i=Nt(o.getCurrentData().eventStore,n.instanceId);i=Pn(i,{\"\":{display:\"\",startEditable:!0,durationEditable:!0,constraints:[],overlap:null,allows:[],backgroundColor:\"\",borderColor:\"\",textColor:\"\",classNames:[]}},t,o);var a=new e(o,r,n);this._def=i.defs[r.defId],this._instance=i.instances[n.instanceId],o.dispatch({type:\"MERGE_EVENTS\",eventStore:i}),o.emitter.trigger(\"eventChange\",{oldEvent:a,event:this,relatedEvents:Bn(i,o,n),revert:function(){o.dispatch({type:\"REMOVE_EVENTS\",eventStore:i})}})}},e.prototype.remove=function(){var e=this._context,t=Fn(this);e.dispatch({type:\"REMOVE_EVENTS\",eventStore:t}),e.emitter.trigger(\"eventRemove\",{event:this,relatedEvents:[],revert:function(){e.dispatch({type:\"MERGE_EVENTS\",eventStore:t})}})},Object.defineProperty(e.prototype,\"source\",{get:function(){var e=this._def.sourceId;return e?new L(this._context,this._context.getCurrentData().eventSources[e]):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"start\",{get:function(){return this._instance?this._context.dateEnv.toDate(this._instance.range.start):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"end\",{get:function(){return this._instance&&this._def.hasEnd?this._context.dateEnv.toDate(this._instance.range.end):null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"startStr\",{get:function(){var e=this._instance;return e?this._context.dateEnv.formatIso(e.range.start,{omitTime:this._def.allDay,forcedTzo:e.forcedStartTzo}):\"\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"endStr\",{get:function(){var e=this._instance;return e&&this._def.hasEnd?this._context.dateEnv.formatIso(e.range.end,{omitTime:this._def.allDay,forcedTzo:e.forcedEndTzo}):\"\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"id\",{get:function(){return this._def.publicId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"groupId\",{get:function(){return this._def.groupId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"allDay\",{get:function(){return this._def.allDay},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"title\",{get:function(){return this._def.title},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"url\",{get:function(){return this._def.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"display\",{get:function(){return this._def.ui.display||\"auto\"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"startEditable\",{get:function(){return this._def.ui.startEditable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"durationEditable\",{get:function(){return this._def.ui.durationEditable},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"constraint\",{get:function(){return this._def.ui.constraints[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"overlap\",{get:function(){return this._def.ui.overlap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"allow\",{get:function(){return this._def.ui.allows[0]||null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"backgroundColor\",{get:function(){return this._def.ui.backgroundColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"borderColor\",{get:function(){return this._def.ui.borderColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"textColor\",{get:function(){return this._def.ui.textColor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"classNames\",{get:function(){return this._def.ui.classNames},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,\"extendedProps\",{get:function(){return this._def.extendedProps},enumerable:!1,configurable:!0}),e.prototype.toPlainObject=function(e){void 0===e&&(e={});var t=this._def,n=t.ui,o=this.startStr,i=this.endStr,a={};return t.title&&(a.title=t.title),o&&(a.start=o),i&&(a.end=i),t.publicId&&(a.id=t.publicId),t.groupId&&(a.groupId=t.groupId),t.url&&(a.url=t.url),n.display&&\"auto\"!==n.display&&(a.display=n.display),e.collapseColor&&n.backgroundColor&&n.backgroundColor===n.borderColor?a.color=n.backgroundColor:(n.backgroundColor&&(a.backgroundColor=n.backgroundColor),n.borderColor&&(a.borderColor=n.borderColor)),n.textColor&&(a.textColor=n.textColor),n.classNames.length&&(a.classNames=n.classNames),Object.keys(t.extendedProps).length&&(e.collapseExtendedProps?r(a,t.extendedProps):a.extendedProps=t.extendedProps),a},e.prototype.toJSON=function(){return this.toPlainObject()},e}();function Fn(e){var t,n,r=e._def,o=e._instance;return{defs:(t={},t[r.defId]=r,t),instances:o?(n={},n[o.instanceId]=o,n):{}}}function Bn(e,t,n){var r=e.defs,o=e.instances,i=[],a=n?n.instanceId:\"\";for(var s in o){var l=o[s],u=r[l.defId];l.instanceId!==a&&i.push(new zn(t,u,l))}return i}var jn={};var Gn,qn=function(){function e(){}return e.prototype.getMarkerYear=function(e){return e.getUTCFullYear()},e.prototype.getMarkerMonth=function(e){return e.getUTCMonth()},e.prototype.getMarkerDay=function(e){return e.getUTCDate()},e.prototype.arrayToMarker=function(e){return Me(e)},e.prototype.markerToArray=function(e){return ke(e)},e}();Gn=qn,jn[\"gregory\"]=Gn;var Yn=/^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;function Zn(e){var t=Yn.exec(e);if(t){var n=new Date(Date.UTC(Number(t[1]),t[3]?Number(t[3])-1:0,Number(t[5]||1),Number(t[7]||0),Number(t[8]||0),Number(t[10]||0),t[12]?1e3*Number(\"0.\"+t[12]):0));if(xe(n)){var r=null;return t[13]&&(r=(\"-\"===t[15]?-1:1)*(60*Number(t[16]||0)+Number(t[18]||0))),{marker:n,isTimeUnspecified:!t[6],timeZoneOffset:r}}}return null}var Xn=function(){function e(e){var t=this.timeZone=e.timeZone,n=\"local\"!==t&&\"UTC\"!==t;e.namedTimeZoneImpl&&n&&(this.namedTimeZoneImpl=new e.namedTimeZoneImpl(t)),this.canComputeOffset=Boolean(!n||this.namedTimeZoneImpl),this.calendarSystem=function(e){return new jn[e]}(e.calendarSystem),this.locale=e.locale,this.weekDow=e.locale.week.dow,this.weekDoy=e.locale.week.doy,\"ISO\"===e.weekNumberCalculation&&(this.weekDow=1,this.weekDoy=4),\"number\"==typeof e.firstDay&&(this.weekDow=e.firstDay),\"function\"==typeof e.weekNumberCalculation&&(this.weekNumberFunc=e.weekNumberCalculation),this.weekText=null!=e.weekText?e.weekText:e.locale.options.weekText,this.cmdFormatter=e.cmdFormatter,this.defaultSeparator=e.defaultSeparator}return e.prototype.createMarker=function(e){var t=this.createMarkerMeta(e);return null===t?null:t.marker},e.prototype.createNowMarker=function(){return this.canComputeOffset?this.timestampToMarker((new Date).valueOf()):Me(Re(new Date))},e.prototype.createMarkerMeta=function(e){if(\"string\"==typeof e)return this.parse(e);var t=null;return\"number\"==typeof e?t=this.timestampToMarker(e):e instanceof Date?(e=e.valueOf(),isNaN(e)||(t=this.timestampToMarker(e))):Array.isArray(e)&&(t=Me(e)),null!==t&&xe(t)?{marker:t,isTimeUnspecified:!1,forcedTzo:null}:null},e.prototype.parse=function(e){var t=Zn(e);if(null===t)return null;var n=t.marker,r=null;return null!==t.timeZoneOffset&&(this.canComputeOffset?n=this.timestampToMarker(n.valueOf()-60*t.timeZoneOffset*1e3):r=t.timeZoneOffset),{marker:n,isTimeUnspecified:t.isTimeUnspecified,forcedTzo:r}},e.prototype.getYear=function(e){return this.calendarSystem.getMarkerYear(e)},e.prototype.getMonth=function(e){return this.calendarSystem.getMarkerMonth(e)},e.prototype.add=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]+=t.years,n[1]+=t.months,n[2]+=t.days,n[6]+=t.milliseconds,this.calendarSystem.arrayToMarker(n)},e.prototype.subtract=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]-=t.years,n[1]-=t.months,n[2]-=t.days,n[6]-=t.milliseconds,this.calendarSystem.arrayToMarker(n)},e.prototype.addYears=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[0]+=t,this.calendarSystem.arrayToMarker(n)},e.prototype.addMonths=function(e,t){var n=this.calendarSystem.markerToArray(e);return n[1]+=t,this.calendarSystem.arrayToMarker(n)},e.prototype.diffWholeYears=function(e,t){var n=this.calendarSystem;return _e(e)===_e(t)&&n.getMarkerDay(e)===n.getMarkerDay(t)&&n.getMarkerMonth(e)===n.getMarkerMonth(t)?n.getMarkerYear(t)-n.getMarkerYear(e):null},e.prototype.diffWholeMonths=function(e,t){var n=this.calendarSystem;return _e(e)===_e(t)&&n.getMarkerDay(e)===n.getMarkerDay(t)?n.getMarkerMonth(t)-n.getMarkerMonth(e)+12*(n.getMarkerYear(t)-n.getMarkerYear(e)):null},e.prototype.greatestWholeUnit=function(e,t){var n=this.diffWholeYears(e,t);return null!==n?{unit:\"year\",value:n}:null!==(n=this.diffWholeMonths(e,t))?{unit:\"month\",value:n}:null!==(n=Se(e,t))?{unit:\"week\",value:n}:null!==(n=De(e,t))?{unit:\"day\",value:n}:de(n=function(e,t){return(t.valueOf()-e.valueOf())/36e5}(e,t))?{unit:\"hour\",value:n}:de(n=function(e,t){return(t.valueOf()-e.valueOf())/6e4}(e,t))?{unit:\"minute\",value:n}:de(n=function(e,t){return(t.valueOf()-e.valueOf())/1e3}(e,t))?{unit:\"second\",value:n}:{unit:\"millisecond\",value:t.valueOf()-e.valueOf()}},e.prototype.countDurationsBetween=function(e,t,n){var r;return n.years&&null!==(r=this.diffWholeYears(e,t))?r/(Je(n)/365):n.months&&null!==(r=this.diffWholeMonths(e,t))?r/function(e){return Je(e)/30}(n):n.days&&null!==(r=De(e,t))?r/Je(n):(t.valueOf()-e.valueOf())/$e(n)},e.prototype.startOf=function(e,t){return\"year\"===t?this.startOfYear(e):\"month\"===t?this.startOfMonth(e):\"week\"===t?this.startOfWeek(e):\"day\"===t?be(e):\"hour\"===t?function(e){return Me([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours()])}(e):\"minute\"===t?function(e){return Me([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes()])}(e):\"second\"===t?function(e){return Me([e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()])}(e):void 0},e.prototype.startOfYear=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e)])},e.prototype.startOfMonth=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e),this.calendarSystem.getMarkerMonth(e)])},e.prototype.startOfWeek=function(e){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(e),this.calendarSystem.getMarkerMonth(e),e.getUTCDate()-(e.getUTCDay()-this.weekDow+7)%7])},e.prototype.computeWeekNumber=function(e){return this.weekNumberFunc?this.weekNumberFunc(this.toDate(e)):function(e,t,n){var r=e.getUTCFullYear(),o=Ce(e,r,t,n);if(o<1)return Ce(e,r-1,t,n);var i=Ce(e,r+1,t,n);return i>=1?Math.min(o,i):o}(e,this.weekDow,this.weekDoy)},e.prototype.format=function(e,t,n){return void 0===n&&(n={}),t.format({marker:e,timeZoneOffset:null!=n.forcedTzo?n.forcedTzo:this.offsetForMarker(e)},this)},e.prototype.formatRange=function(e,t,n,r){return void 0===r&&(r={}),r.isEndExclusive&&(t=ge(t,-1)),n.formatRange({marker:e,timeZoneOffset:null!=r.forcedStartTzo?r.forcedStartTzo:this.offsetForMarker(e)},{marker:t,timeZoneOffset:null!=r.forcedEndTzo?r.forcedEndTzo:this.offsetForMarker(t)},this,r.defaultSeparator)},e.prototype.formatIso=function(e,t){void 0===t&&(t={});var n=null;return t.omitTimeZoneOffset||(n=null!=t.forcedTzo?t.forcedTzo:this.offsetForMarker(e)),function(e,t,n){void 0===n&&(n=!1);var r=e.toISOString();return r=r.replace(\".000\",\"\"),n&&(r=r.replace(\"T00:00:00Z\",\"\")),r.length>10&&(null==t?r=r.replace(\"Z\",\"\"):0!==t&&(r=r.replace(\"Z\",rt(t,!0)))),r}(e,n,t.omitTime)},e.prototype.timestampToMarker=function(e){return\"local\"===this.timeZone?Me(Re(new Date(e))):\"UTC\"!==this.timeZone&&this.namedTimeZoneImpl?Me(this.namedTimeZoneImpl.timestampToArray(e)):new Date(e)},e.prototype.offsetForMarker=function(e){return\"local\"===this.timeZone?-Te(ke(e)).getTimezoneOffset():\"UTC\"===this.timeZone?0:this.namedTimeZoneImpl?this.namedTimeZoneImpl.offsetForArray(ke(e)):null},e.prototype.toDate=function(e,t){return\"local\"===this.timeZone?Te(ke(e)):\"UTC\"===this.timeZone?new Date(e.valueOf()):this.namedTimeZoneImpl?new Date(e.valueOf()-1e3*this.namedTimeZoneImpl.offsetForArray(ke(e))*60):new Date(e.valueOf()-(t||0))},e}(),Kn=[],Jn={code:\"en\",week:{dow:0,doy:4},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\",allDayText:\"all-day\",moreLinkText:\"more\",noEventsText:\"No events to display\"};function $n(e){for(var t=e.length>0?e[0].code:\"en\",n=Kn.concat(e),r={en:Jn},o=0,i=n;o<i.length;o++){var a=i[o];r[a.code]=a}return{map:r,defaultCode:t}}function Qn(e,t){return\"object\"!=typeof e||Array.isArray(e)?function(e,t){var n=[].concat(e||[]),r=function(e,t){for(var n=0;n<e.length;n++)for(var r=e[n].toLocaleLowerCase().split(\"-\"),o=r.length;o>0;o--){var i=r.slice(0,o).join(\"-\");if(t[i])return t[i]}return null}(n,t)||Jn;return er(e,n,r)}(e,t):er(e.code,[e.code],e)}function er(e,t,n){var r=Ne([Jn,n],[\"buttonText\"]);delete r.code;var o=r.week;return delete r.week,{codeArg:e,codes:t,week:o,simpleNumberFormat:new Intl.NumberFormat(e),options:r}}function tr(e){var t=Qn(e.locale||\"en\",$n([]).map);return new Xn(r(r({timeZone:bt.timeZone,calendarSystem:\"gregory\"},e),{locale:t}))}var nr,rr={startTime:\"09:00\",endTime:\"17:00\",daysOfWeek:[1,2,3,4,5],display:\"inverse-background\",classNames:\"fc-non-business\",groupId:\"_businessHours\"};function or(e,t){return It(function(e){var t;t=!0===e?[{}]:Array.isArray(e)?e.filter((function(e){return e.daysOfWeek})):\"object\"==typeof e&&e?[e]:[];return t=t.map((function(e){return r(r({},rr),e)}))}(e),null,t)}function ir(e,t){return e.left>=t.left&&e.left<t.right&&e.top>=t.top&&e.top<t.bottom}function ar(e,t){var n={left:Math.max(e.left,t.left),right:Math.min(e.right,t.right),top:Math.max(e.top,t.top),bottom:Math.min(e.bottom,t.bottom)};return n.left<n.right&&n.top<n.bottom&&n}function sr(e,t){return{left:Math.min(Math.max(e.left,t.left),t.right),top:Math.min(Math.max(e.top,t.top),t.bottom)}}function lr(e){return{left:(e.left+e.right)/2,top:(e.top+e.bottom)/2}}function ur(e,t){return{left:e.left-t.left,top:e.top-t.top}}function cr(){return null==nr&&(nr=function(){if(\"undefined\"==typeof document)return!0;var e=document.createElement(\"div\");e.style.position=\"absolute\",e.style.top=\"0px\",e.style.left=\"0px\",e.innerHTML=\"<table><tr><td><div></div></td></tr></table>\",e.querySelector(\"table\").style.height=\"100px\",e.querySelector(\"div\").style.height=\"100%\",document.body.appendChild(e);var t=e.querySelector(\"div\").offsetHeight>0;return document.body.removeChild(e),t}()),nr}var dr={defs:{},instances:{}},pr=function(){function e(){this.getKeysForEventDefs=it(this._getKeysForEventDefs),this.splitDateSelection=it(this._splitDateSpan),this.splitEventStore=it(this._splitEventStore),this.splitIndividualUi=it(this._splitIndividualUi),this.splitEventDrag=it(this._splitInteraction),this.splitEventResize=it(this._splitInteraction),this.eventUiBuilders={}}return e.prototype.splitProps=function(e){var t=this,n=this.getKeyInfo(e),r=this.getKeysForEventDefs(e.eventStore),o=this.splitDateSelection(e.dateSelection),i=this.splitIndividualUi(e.eventUiBases,r),a=this.splitEventStore(e.eventStore,r),s=this.splitEventDrag(e.eventDrag),l=this.splitEventResize(e.eventResize),u={};for(var c in this.eventUiBuilders=Oe(n,(function(e,n){return t.eventUiBuilders[n]||it(fr)})),n){var d=n[c],p=a[c]||dr,f=this.eventUiBuilders[c];u[c]={businessHours:d.businessHours||e.businessHours,dateSelection:o[c]||null,eventStore:p,eventUiBases:f(e.eventUiBases[\"\"],d.ui,i[c]),eventSelection:p.instances[e.eventSelection]?e.eventSelection:\"\",eventDrag:s[c]||null,eventResize:l[c]||null}}return u},e.prototype._splitDateSpan=function(e){var t={};if(e)for(var n=0,r=this.getKeysForDateSpan(e);n<r.length;n++){t[r[n]]=e}return t},e.prototype._getKeysForEventDefs=function(e){var t=this;return Oe(e.defs,(function(e){return t.getKeysForEventDef(e)}))},e.prototype._splitEventStore=function(e,t){var n=e.defs,r=e.instances,o={};for(var i in n)for(var a=0,s=t[i];a<s.length;a++){o[p=s[a]]||(o[p]={defs:{},instances:{}}),o[p].defs[i]=n[i]}for(var l in r)for(var u=r[l],c=0,d=t[u.defId];c<d.length;c++){var p;o[p=d[c]]&&(o[p].instances[l]=u)}return o},e.prototype._splitIndividualUi=function(e,t){var n={};for(var r in e)if(r)for(var o=0,i=t[r];o<i.length;o++){var a=i[o];n[a]||(n[a]={}),n[a][r]=e[r]}return n},e.prototype._splitInteraction=function(e){var t={};if(e){var n=this._splitEventStore(e.affectedEvents,this._getKeysForEventDefs(e.affectedEvents)),r=this._getKeysForEventDefs(e.mutatedEvents),o=this._splitEventStore(e.mutatedEvents,r),i=function(r){t[r]||(t[r]={affectedEvents:n[r]||dr,mutatedEvents:o[r]||dr,isEvent:e.isEvent})};for(var a in n)i(a);for(var a in o)i(a)}return t},e}();function fr(e,t,n){var o=[];e&&o.push(e),t&&o.push(t);var i={\"\":Vt(o)};return n&&r(i,n),i}function hr(e,t,n,r){return{dow:e.getUTCDay(),isDisabled:Boolean(r&&!sn(r.activeRange,e)),isOther:Boolean(r&&!sn(r.currentRange,e)),isToday:Boolean(t&&sn(t,e)),isPast:Boolean(n?e<n:!!t&&e<t.start),isFuture:Boolean(n?e>n:!!t&&e>=t.end)}}function vr(e,t){var n=[\"fc-day\",\"fc-day-\"+fe[e.dow]];return e.isDisabled?n.push(\"fc-day-disabled\"):(e.isToday&&(n.push(\"fc-day-today\"),n.push(t.getClass(\"today\"))),e.isPast&&n.push(\"fc-day-past\"),e.isFuture&&n.push(\"fc-day-future\"),e.isOther&&n.push(\"fc-day-other\")),n}function gr(e,t){return void 0===t&&(t=\"day\"),JSON.stringify({date:tt(e),type:t})}var mr,yr=null;function Er(){return null===yr&&(yr=function(){var e=document.createElement(\"div\");j(e,{position:\"absolute\",top:-1e3,left:0,border:0,padding:0,overflow:\"scroll\",direction:\"rtl\"}),e.innerHTML=\"<div></div>\",document.body.appendChild(e);var t=e.firstChild.getBoundingClientRect().left>e.getBoundingClientRect().left;return W(e),t}()),yr}function Sr(){return mr||(mr=function(){var e=document.createElement(\"div\");e.style.overflow=\"scroll\",document.body.appendChild(e);var t=Dr(e);return document.body.removeChild(e),t}()),mr}function Dr(e){return{x:e.offsetHeight-e.clientHeight,y:e.offsetWidth-e.clientWidth}}function br(e,t){void 0===t&&(t=!1);var n=window.getComputedStyle(e),r=parseInt(n.borderLeftWidth,10)||0,o=parseInt(n.borderRightWidth,10)||0,i=parseInt(n.borderTopWidth,10)||0,a=parseInt(n.borderBottomWidth,10)||0,s=Dr(e),l=s.y-r-o,u={borderLeft:r,borderRight:o,borderTop:i,borderBottom:a,scrollbarBottom:s.x-i-a,scrollbarLeft:0,scrollbarRight:0};return Er()&&\"rtl\"===n.direction?u.scrollbarLeft=l:u.scrollbarRight=l,t&&(u.paddingLeft=parseInt(n.paddingLeft,10)||0,u.paddingRight=parseInt(n.paddingRight,10)||0,u.paddingTop=parseInt(n.paddingTop,10)||0,u.paddingBottom=parseInt(n.paddingBottom,10)||0),u}function Cr(e,t,n){void 0===t&&(t=!1);var r=n?e.getBoundingClientRect():wr(e),o=br(e,t),i={left:r.left+o.borderLeft+o.scrollbarLeft,right:r.right-o.borderRight-o.scrollbarRight,top:r.top+o.borderTop,bottom:r.bottom-o.borderBottom-o.scrollbarBottom};return t&&(i.left+=o.paddingLeft,i.right-=o.paddingRight,i.top+=o.paddingTop,i.bottom-=o.paddingBottom),i}function wr(e){var t=e.getBoundingClientRect();return{left:t.left+window.pageXOffset,top:t.top+window.pageYOffset,right:t.right+window.pageXOffset,bottom:t.bottom+window.pageYOffset}}function Rr(e){for(var t=[];e instanceof HTMLElement;){var n=window.getComputedStyle(e);if(\"fixed\"===n.position)break;/(auto|scroll)/.test(n.overflow+n.overflowY+n.overflowX)&&t.push(e),e=e.parentNode}return t}function Tr(e,t,n){var r=!1,o=function(){r||(r=!0,t.apply(this,arguments))},i=function(){r||(r=!0,n&&n.apply(this,arguments))},a=e(o,i);a&&\"function\"==typeof a.then&&a.then(o,i)}var kr=function(){function e(){this.handlers={},this.thisContext=null}return e.prototype.setThisContext=function(e){this.thisContext=e},e.prototype.setOptions=function(e){this.options=e},e.prototype.on=function(e,t){!function(e,t,n){(e[t]||(e[t]=[])).push(n)}(this.handlers,e,t)},e.prototype.off=function(e,t){!function(e,t,n){n?e[t]&&(e[t]=e[t].filter((function(e){return e!==n}))):delete e[t]}(this.handlers,e,t)},e.prototype.trigger=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=this.handlers[e]||[],o=this.options&&this.options[e],i=[].concat(o||[],r),a=0,s=i;a<s.length;a++){var l=s[a];l.apply(this.thisContext,t)}},e.prototype.hasHandlers=function(e){return this.handlers[e]&&this.handlers[e].length||this.options&&this.options[e]},e}();var Mr=function(){function e(e,t,n,r){this.els=t;var o=this.originClientRect=e.getBoundingClientRect();n&&this.buildElHorizontals(o.left),r&&this.buildElVerticals(o.top)}return e.prototype.buildElHorizontals=function(e){for(var t=[],n=[],r=0,o=this.els;r<o.length;r++){var i=o[r].getBoundingClientRect();t.push(i.left-e),n.push(i.right-e)}this.lefts=t,this.rights=n},e.prototype.buildElVerticals=function(e){for(var t=[],n=[],r=0,o=this.els;r<o.length;r++){var i=o[r].getBoundingClientRect();t.push(i.top-e),n.push(i.bottom-e)}this.tops=t,this.bottoms=n},e.prototype.leftToIndex=function(e){var t,n=this.lefts,r=this.rights,o=n.length;for(t=0;t<o;t++)if(e>=n[t]&&e<r[t])return t},e.prototype.topToIndex=function(e){var t,n=this.tops,r=this.bottoms,o=n.length;for(t=0;t<o;t++)if(e>=n[t]&&e<r[t])return t},e.prototype.getWidth=function(e){return this.rights[e]-this.lefts[e]},e.prototype.getHeight=function(e){return this.bottoms[e]-this.tops[e]},e}(),xr=function(){function e(){}return e.prototype.getMaxScrollTop=function(){return this.getScrollHeight()-this.getClientHeight()},e.prototype.getMaxScrollLeft=function(){return this.getScrollWidth()-this.getClientWidth()},e.prototype.canScrollVertically=function(){return this.getMaxScrollTop()>0},e.prototype.canScrollHorizontally=function(){return this.getMaxScrollLeft()>0},e.prototype.canScrollUp=function(){return this.getScrollTop()>0},e.prototype.canScrollDown=function(){return this.getScrollTop()<this.getMaxScrollTop()},e.prototype.canScrollLeft=function(){return this.getScrollLeft()>0},e.prototype.canScrollRight=function(){return this.getScrollLeft()<this.getMaxScrollLeft()},e}(),_r=function(e){function t(t){var n=e.call(this)||this;return n.el=t,n}return n(t,e),t.prototype.getScrollTop=function(){return this.el.scrollTop},t.prototype.getScrollLeft=function(){return this.el.scrollLeft},t.prototype.setScrollTop=function(e){this.el.scrollTop=e},t.prototype.setScrollLeft=function(e){this.el.scrollLeft=e},t.prototype.getScrollWidth=function(){return this.el.scrollWidth},t.prototype.getScrollHeight=function(){return this.el.scrollHeight},t.prototype.getClientHeight=function(){return this.el.clientHeight},t.prototype.getClientWidth=function(){return this.el.clientWidth},t}(xr),Ir=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getScrollTop=function(){return window.pageYOffset},t.prototype.getScrollLeft=function(){return window.pageXOffset},t.prototype.setScrollTop=function(e){window.scroll(window.pageXOffset,e)},t.prototype.setScrollLeft=function(e){window.scroll(e,window.pageYOffset)},t.prototype.getScrollWidth=function(){return document.documentElement.scrollWidth},t.prototype.getScrollHeight=function(){return document.documentElement.scrollHeight},t.prototype.getClientHeight=function(){return document.documentElement.clientHeight},t.prototype.getClientWidth=function(){return document.documentElement.clientWidth},t}(xr),Pr=function(){function e(e){this.iconOverrideOption&&this.setIconOverride(e[this.iconOverrideOption])}return e.prototype.setIconOverride=function(e){var t,n;if(\"object\"==typeof e&&e){for(n in t=r({},this.iconClasses),e)t[n]=this.applyIconOverridePrefix(e[n]);this.iconClasses=t}else!1===e&&(this.iconClasses={})},e.prototype.applyIconOverridePrefix=function(e){var t=this.iconOverridePrefix;return t&&0!==e.indexOf(t)&&(e=t+e),e},e.prototype.getClass=function(e){return this.classes[e]||\"\"},e.prototype.getIconClass=function(e,t){var n;return(n=t&&this.rtlIconClasses&&this.rtlIconClasses[e]||this.iconClasses[e])?this.baseIconClass+\" \"+n:\"\"},e.prototype.getCustomButtonIconClass=function(e){var t;return this.iconOverrideCustomButtonOption&&(t=e[this.iconOverrideCustomButtonOption])?this.baseIconClass+\" \"+this.applyIconOverridePrefix(t):\"\"},e}();if(Pr.prototype.classes={},Pr.prototype.iconClasses={},Pr.prototype.baseIconClass=\"\",Pr.prototype.iconOverridePrefix=\"\",\"undefined\"==typeof FullCalendarVDom)throw new Error(\"Please import the top-level fullcalendar lib before attempting to import a plugin.\");var Nr=FullCalendarVDom.Component,Hr=FullCalendarVDom.createElement,Or=FullCalendarVDom.render,Ar=FullCalendarVDom.createRef,Ur=FullCalendarVDom.Fragment,Lr=FullCalendarVDom.createContext,Wr=FullCalendarVDom.flushToDom,Vr=function(){function e(e,t,n){var o=this;this.execFunc=e,this.emitter=t,this.scrollTime=n,this.handleScrollRequest=function(e){o.queuedRequest=r({},o.queuedRequest||{},e),o.drain()},t.on(\"_scrollRequest\",this.handleScrollRequest),this.fireInitialScroll()}return e.prototype.detach=function(){this.emitter.off(\"_scrollRequest\",this.handleScrollRequest)},e.prototype.update=function(e){e?this.fireInitialScroll():this.drain()},e.prototype.fireInitialScroll=function(){this.handleScrollRequest({time:this.scrollTime})},e.prototype.drain=function(){this.queuedRequest&&this.execFunc(this.queuedRequest)&&(this.queuedRequest=null)},e}(),zr=Lr({});function Fr(e,t,n,r,o,i,a,s,l,u,c,d,p){return{dateEnv:o,options:n,pluginHooks:a,emitter:u,dispatch:s,getCurrentData:l,calendarApi:c,viewSpec:e,viewApi:t,dateProfileGenerator:r,theme:i,isRtl:\"rtl\"===n.direction,addResizeHandler:function(e){u.on(\"_resize\",e)},removeResizeHandler:function(e){u.off(\"_resize\",e)},createScrollResponder:function(e){return new Vr(e,u,Ye(n.scrollTime))},registerInteractiveComponent:d,unregisterInteractiveComponent:p}}var Br=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.shouldComponentUpdate=function(e,t){return this.debug&&console.log(We(e,this.props),We(t,this.state)),!Ve(this.props,e,this.propEquality)||!Ve(this.state,t,this.stateEquality)},t.addPropsEquality=Gr,t.addStateEquality=qr,t.contextType=zr,t}(Nr);Br.prototype.propEquality={},Br.prototype.stateEquality={};var jr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.contextType=zr,t}(Br);function Gr(e){var t=Object.create(this.prototype.propEquality);r(t,e),this.prototype.propEquality=t}function qr(e){var t=Object.create(this.prototype.stateEquality);r(t,e),this.prototype.stateEquality=t}function Yr(e,t){\"function\"==typeof e?e(t):e&&(e.current=t)}function Zr(e,t,n,r,o){switch(t.type){case\"RECEIVE_EVENTS\":return function(e,t,n,r,o,i){if(t&&n===t.latestFetchId){var a=It(function(e,t,n){var r=n.options.eventDataTransform,o=t?t.eventDataTransform:null;o&&(e=Xr(e,o));r&&(e=Xr(e,r));return e}(o,t,i),t,i);return r&&(a=Be(a,r,i)),Ot(Kr(e,t.sourceId),a)}return e}(e,n[t.sourceId],t.fetchId,t.fetchRange,t.rawEvents,o);case\"ADD_EVENTS\":return function(e,t,n,r){n&&(t=Be(t,n,r));return Ot(e,t)}(e,t.eventStore,r?r.activeRange:null,o);case\"MERGE_EVENTS\":return Ot(e,t.eventStore);case\"PREV\":case\"NEXT\":case\"CHANGE_DATE\":case\"CHANGE_VIEW_TYPE\":return r?Be(e,r.activeRange,o):e;case\"REMOVE_EVENTS\":return function(e,t){var n=e.defs,r=e.instances,o={},i={};for(var a in n)t.defs[a]||(o[a]=n[a]);for(var s in r)!t.instances[s]&&o[r[s].defId]&&(i[s]=r[s]);return{defs:o,instances:i}}(e,t.eventStore);case\"REMOVE_EVENT_SOURCE\":return Kr(e,t.sourceId);case\"REMOVE_ALL_EVENT_SOURCES\":return At(e,(function(e){return!e.sourceId}));case\"REMOVE_ALL_EVENTS\":return{defs:{},instances:{}};default:return e}}function Xr(e,t){var n;if(t){n=[];for(var r=0,o=e;r<o.length;r++){var i=o[r],a=t(i);a?n.push(a):null==a&&n.push(i)}}else n=e;return n}function Kr(e,t){return At(e,(function(e){return e.sourceId!==t}))}function Jr(e,t){return $r({eventDrag:e},t)}function $r(e,t){var n=t.getCurrentData(),o=r({businessHours:n.businessHours,dateSelection:\"\",eventStore:n.eventStore,eventUiBases:n.eventUiBases,eventSelection:\"\",eventDrag:null,eventResize:null},e);return(t.pluginHooks.isPropsValid||Qr)(o,t)}function Qr(e,t,n,o){return void 0===n&&(n={}),!(e.eventDrag&&!function(e,t,n,o){var i=t.getCurrentData(),a=e.eventDrag,s=a.mutatedEvents,l=s.defs,u=s.instances,c=pn(l,a.isEvent?e.eventUiBases:{\"\":i.selectionConfig});o&&(c=Oe(c,o));var d=(v=e.eventStore,g=a.affectedEvents.instances,{defs:v.defs,instances:He(v.instances,(function(e){return!g[e.instanceId]}))}),p=d.defs,f=d.instances,h=pn(p,e.eventUiBases);var v,g;for(var m in u){var y=u[m],E=y.range,S=c[y.defId],D=l[y.defId];if(!eo(S.constraints,E,d,e.businessHours,t))return!1;var b=t.options.eventOverlap,C=\"function\"==typeof b?b:null;for(var w in f){var R=f[w];if(on(E,R.range)){if(!1===h[R.defId].overlap&&a.isEvent)return!1;if(!1===S.overlap)return!1;if(C&&!C(new zn(t,p[R.defId],R),new zn(t,D,y)))return!1}}for(var T=i.eventStore,k=0,M=S.allows;k<M.length;k++){var x=M[k],_=r(r({},n),{range:y.range,allDay:D.allDay}),I=T.defs[D.defId],P=T.instances[m],N=void 0;if(N=I?new zn(t,I,P):new zn(t,D),!x(_n(_,t),N))return!1}}return!0}(e,t,n,o))&&!(e.dateSelection&&!function(e,t,n,o){var i=e.eventStore,a=i.defs,s=i.instances,l=e.dateSelection,u=l.range,c=t.getCurrentData().selectionConfig;o&&(c=o(c));if(!eo(c.constraints,u,i,e.businessHours,t))return!1;var d=t.options.selectOverlap,p=\"function\"==typeof d?d:null;for(var f in s){var h=s[f];if(on(u,h.range)){if(!1===c.overlap)return!1;if(p&&!p(new zn(t,a[h.defId],h),null))return!1}}for(var v=0,g=c.allows;v<g.length;v++){var m=g[v],y=r(r({},n),l);if(!m(_n(y,t),null))return!1}return!0}(e,t,n,o))}function eo(e,t,n,r,o){for(var i=0,a=e;i<a.length;i++){if(!ro(to(a[i],t,n,r,o),t))return!1}return!0}function to(e,t,n,r,o){return\"businessHours\"===e?no(Be(r,t,o)):\"string\"==typeof e?no(At(n,(function(t){return t.groupId===e}))):\"object\"==typeof e&&e?no(Be(e,t,o)):[]}function no(e){var t=e.instances,n=[];for(var r in t)n.push(t[r].range);return n}function ro(e,t){for(var n=0,r=e;n<r.length;n++){if(an(r[n],t))return!0}return!1}var oo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.uid=$(),t}return n(t,e),t.prototype.prepareHits=function(){},t.prototype.queryHit=function(e,t,n,r){return null},t.prototype.isInteractionValid=function(e){var t=this.props.dateProfile,n=e.mutatedEvents.instances;if(t)for(var r in n)if(!an(t.validRange,n[r].range))return!1;return Jr(e,this.context)},t.prototype.isDateSelectionValid=function(e){var t,n,r=this.props.dateProfile;return!(r&&!an(r.validRange,e.range))&&(t=e,n=this.context,$r({dateSelection:t},n))},t.prototype.isValidSegDownEl=function(e){return!this.props.eventDrag&&!this.props.eventResize&&!V(e,\".fc-event-mirror\")&&(this.isPopover()||!this.isInPopover(e))},t.prototype.isValidDateDownEl=function(e){return!(V(e,\".fc-event:not(.fc-bg-event)\")||V(e,\".fc-daygrid-more-link\")||V(e,\"a[data-navlink]\")||this.isInPopover(e))},t.prototype.isPopover=function(){return!1},t.prototype.isInPopover=function(e){return Boolean(V(e,\".fc-popover\"))},t}(jr);function io(e){return{id:$(),deps:e.deps||[],reducers:e.reducers||[],contextInit:[].concat(e.contextInit||[]),eventRefiners:e.eventRefiners||{},eventDefMemberAdders:e.eventDefMemberAdders||[],eventSourceRefiners:e.eventSourceRefiners||{},isDraggableTransformers:e.isDraggableTransformers||[],eventDragMutationMassagers:e.eventDragMutationMassagers||[],eventDefMutationAppliers:e.eventDefMutationAppliers||[],dateSelectionTransformers:e.dateSelectionTransformers||[],datePointTransforms:e.datePointTransforms||[],dateSpanTransforms:e.dateSpanTransforms||[],views:e.views||{},viewPropsTransformers:e.viewPropsTransformers||[],isPropsValid:e.isPropsValid||null,externalDefTransforms:e.externalDefTransforms||[],eventResizeJoinTransforms:e.eventResizeJoinTransforms||[],viewContainerAppends:e.viewContainerAppends||[],eventDropTransformers:e.eventDropTransformers||[],componentInteractions:e.componentInteractions||[],calendarInteractions:e.calendarInteractions||[],themeClasses:e.themeClasses||{},eventSourceDefs:e.eventSourceDefs||[],cmdFormatter:e.cmdFormatter,recurringTypes:e.recurringTypes||[],namedTimeZonedImpl:e.namedTimeZonedImpl,initialView:e.initialView||\"\",elementDraggingImpl:e.elementDraggingImpl,optionChangeHandlers:e.optionChangeHandlers||{},scrollGridImpl:e.scrollGridImpl||null,contentTypeHandlers:e.contentTypeHandlers||{},listenerRefiners:e.listenerRefiners||{},optionRefiners:e.optionRefiners||{},propSetHandlers:e.propSetHandlers||{}}}function ao(){var e,t=[],n=[];return function(o,i){return e&&ot(o,t)&&ot(i,n)||(e=function(e,t){var n={},o={reducers:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],eventResizeJoinTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],themeClasses:{},eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],namedTimeZonedImpl:null,initialView:\"\",elementDraggingImpl:null,optionChangeHandlers:{},scrollGridImpl:null,contentTypeHandlers:{},listenerRefiners:{},optionRefiners:{},propSetHandlers:{}};function i(e){for(var t=0,a=e;t<a.length;t++){var s=a[t];n[s.id]||(n[s.id]=!0,i(s.deps),u=s,o={reducers:(l=o).reducers.concat(u.reducers),contextInit:l.contextInit.concat(u.contextInit),eventRefiners:r(r({},l.eventRefiners),u.eventRefiners),eventDefMemberAdders:l.eventDefMemberAdders.concat(u.eventDefMemberAdders),eventSourceRefiners:r(r({},l.eventSourceRefiners),u.eventSourceRefiners),isDraggableTransformers:l.isDraggableTransformers.concat(u.isDraggableTransformers),eventDragMutationMassagers:l.eventDragMutationMassagers.concat(u.eventDragMutationMassagers),eventDefMutationAppliers:l.eventDefMutationAppliers.concat(u.eventDefMutationAppliers),dateSelectionTransformers:l.dateSelectionTransformers.concat(u.dateSelectionTransformers),datePointTransforms:l.datePointTransforms.concat(u.datePointTransforms),dateSpanTransforms:l.dateSpanTransforms.concat(u.dateSpanTransforms),views:r(r({},l.views),u.views),viewPropsTransformers:l.viewPropsTransformers.concat(u.viewPropsTransformers),isPropsValid:u.isPropsValid||l.isPropsValid,externalDefTransforms:l.externalDefTransforms.concat(u.externalDefTransforms),eventResizeJoinTransforms:l.eventResizeJoinTransforms.concat(u.eventResizeJoinTransforms),viewContainerAppends:l.viewContainerAppends.concat(u.viewContainerAppends),eventDropTransformers:l.eventDropTransformers.concat(u.eventDropTransformers),calendarInteractions:l.calendarInteractions.concat(u.calendarInteractions),componentInteractions:l.componentInteractions.concat(u.componentInteractions),themeClasses:r(r({},l.themeClasses),u.themeClasses),eventSourceDefs:l.eventSourceDefs.concat(u.eventSourceDefs),cmdFormatter:u.cmdFormatter||l.cmdFormatter,recurringTypes:l.recurringTypes.concat(u.recurringTypes),namedTimeZonedImpl:u.namedTimeZonedImpl||l.namedTimeZonedImpl,initialView:l.initialView||u.initialView,elementDraggingImpl:l.elementDraggingImpl||u.elementDraggingImpl,optionChangeHandlers:r(r({},l.optionChangeHandlers),u.optionChangeHandlers),scrollGridImpl:u.scrollGridImpl||l.scrollGridImpl,contentTypeHandlers:r(r({},l.contentTypeHandlers),u.contentTypeHandlers),listenerRefiners:r(r({},l.listenerRefiners),u.listenerRefiners),optionRefiners:r(r({},l.optionRefiners),u.optionRefiners),propSetHandlers:r(r({},l.propSetHandlers),u.propSetHandlers)})}var l,u}return e&&i(e),i(t),o}(o,i)),t=o,n=i,e}}var so=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Pr);function lo(e,t,n,o){if(t[e])return t[e];var i=function(e,t,n,o){var i=n[e],a=o[e],s=function(e){return i&&null!==i[e]?i[e]:a&&null!==a[e]?a[e]:null},l=s(\"component\"),u=s(\"superType\"),c=null;if(u){if(u===e)throw new Error(\"Can't have a custom view type that references itself\");c=lo(u,t,n,o)}!l&&c&&(l=c.component);if(!l)return null;return{type:e,component:l,defaults:r(r({},c?c.defaults:{}),i?i.rawOptions:{}),overrides:r(r({},c?c.overrides:{}),a?a.rawOptions:{})}}(e,t,n,o);return i&&(t[e]=i),i}so.prototype.classes={root:\"fc-theme-standard\",tableCellShaded:\"fc-cell-shaded\",buttonGroup:\"fc-button-group\",button:\"fc-button fc-button-primary\",buttonActive:\"fc-button-active\"},so.prototype.baseIconClass=\"fc-icon\",so.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\"},so.prototype.rtlIconClasses={prev:\"fc-icon-chevron-right\",next:\"fc-icon-chevron-left\",prevYear:\"fc-icon-chevrons-right\",nextYear:\"fc-icon-chevrons-left\"},so.prototype.iconOverrideOption=\"buttonIcons\",so.prototype.iconOverrideCustomButtonOption=\"icon\",so.prototype.iconOverridePrefix=\"fc-icon-\";var uo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Ar(),t.handleRootEl=function(e){Yr(t.rootElRef,e),t.props.elRef&&Yr(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.hookProps;return Hr(ho,{hookProps:n,didMount:t.didMount,willUnmount:t.willUnmount,elRef:this.handleRootEl},(function(r){return Hr(po,{hookProps:n,content:t.content,defaultContent:t.defaultContent,backupElRef:e.rootElRef},(function(e,o){return t.children(r,go(t.classNames,n),e,o)}))}))},t}(jr),co=Lr(0);function po(e){return Hr(co.Consumer,null,(function(t){return Hr(fo,r({renderId:t},e))}))}var fo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.innerElRef=Ar(),t}return n(t,e),t.prototype.render=function(){return this.props.children(this.innerElRef,this.renderInnerContent())},t.prototype.componentDidMount=function(){this.updateCustomContent()},t.prototype.componentDidUpdate=function(){this.updateCustomContent()},t.prototype.renderInnerContent=function(){var e=this.context.pluginHooks.contentTypeHandlers,t=this.props,n=this.customContentInfo,r=mo(t.content,t.hookProps),o=null;if(void 0===r&&(r=mo(t.defaultContent,t.hookProps)),void 0!==r){if(n)n.contentVal=r[n.contentKey];else if(\"object\"==typeof r)for(var i in e)if(void 0!==r[i]){n=this.customContentInfo={contentKey:i,contentVal:r[i],handler:e[i]()};break}o=n?[]:r}return o},t.prototype.updateCustomContent=function(){this.customContentInfo&&this.customContentInfo.handler(this.innerElRef.current||this.props.backupElRef.current,this.customContentInfo.contentVal)},t}(jr),ho=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleRootEl=function(e){t.rootEl=e,t.props.elRef&&Yr(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){return this.props.children(this.handleRootEl)},t.prototype.componentDidMount=function(){var e=this.props.didMount;e&&e(r(r({},this.props.hookProps),{el:this.rootEl}))},t.prototype.componentWillUnmount=function(){var e=this.props.willUnmount;e&&e(r(r({},this.props.hookProps),{el:this.rootEl}))},t}(jr);function vo(){var e,t,n=[];return function(r,o){return t&&Le(t,o)&&r===e||(e=r,t=o,n=go(r,o)),n}}function go(e,t){return\"function\"==typeof e&&(e=e(t)),Ut(e)}function mo(e,t){return\"function\"==typeof e?e(t,Hr):e}var yo=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.normalizeClassNames=vo(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r={view:t.viewApi},o=this.normalizeClassNames(n.viewClassNames,r);return Hr(ho,{hookProps:r,didMount:n.viewDidMount,willUnmount:n.viewWillUnmount,elRef:e.elRef},(function(t){return e.children(t,[\"fc-\"+e.viewSpec.type+\"-view\",\"fc-view\"].concat(o))}))},t}(jr);function Eo(e){return Oe(e,So)}function So(e){var t,n=\"function\"==typeof e?{component:e}:e,o=n.component;return n.content&&(t=n,o=function(e){return Hr(zr.Consumer,null,(function(n){return Hr(yo,{viewSpec:n.viewSpec},(function(o,i){var a=r(r({},e),{nextDayThreshold:n.options.nextDayThreshold});return Hr(uo,{hookProps:a,classNames:t.classNames,content:t.content,didMount:t.didMount,willUnmount:t.willUnmount,elRef:o},(function(e,t,n,r){return Hr(\"div\",{className:i.concat(t).join(\" \"),ref:e},r)}))}))}))}),{superType:n.type,component:o,rawOptions:n}}function Do(e,t,n,o){var i=Eo(e),a=Eo(t.views);return Oe(function(e,t){var n,r={};for(n in e)lo(n,r,e,t);for(n in t)lo(n,r,e,t);return r}(i,a),(function(e){return function(e,t,n,o,i){var a=e.overrides.duration||e.defaults.duration||o.duration||n.duration,s=null,l=\"\",u=\"\",c={};if(a&&(s=function(e){var t=JSON.stringify(e),n=bo[t];void 0===n&&(n=Ye(e),bo[t]=n);return n}(a))){var d=et(s);l=d.unit,1===d.value&&(u=l,c=t[l]?t[l].rawOptions:{})}var p=function(t){var n=t.buttonText||{},r=e.defaults.buttonTextKey;return null!=r&&null!=n[r]?n[r]:null!=n[e.type]?n[e.type]:null!=n[u]?n[u]:void 0};return{type:e.type,component:e.component,duration:s,durationUnit:l,singleUnit:u,optionDefaults:e.defaults,optionOverrides:r(r({},c),e.overrides),buttonTextOverride:p(o)||p(n)||e.overrides.buttonText,buttonTextDefault:p(i)||e.defaults.buttonText||p(bt)||e.type}}(e,a,t,n,o)}))}var bo={};var Co=function(){function e(e){this.props=e,this.nowDate=Wn(e.nowInput,e.dateEnv),this.initHiddenDays()}return e.prototype.buildPrev=function(e,t,n){var r=this.props.dateEnv,o=r.subtract(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(o,-1,n)},e.prototype.buildNext=function(e,t,n){var r=this.props.dateEnv,o=r.add(r.startOf(t,e.currentRangeUnit),e.dateIncrement);return this.build(o,1,n)},e.prototype.build=function(e,t,n){void 0===n&&(n=!0);var r,o,i,a,s,l,u,c,d=this.props;return r=this.buildValidRange(),r=this.trimHiddenDays(r),n&&(u=e,e=null!=(c=r).start&&u<c.start?c.start:null!=c.end&&u>=c.end?new Date(c.end.valueOf()-1):u),o=this.buildCurrentRangeInfo(e,t),i=/^(year|month|week|day)$/.test(o.unit),a=this.buildRenderRange(this.trimHiddenDays(o.range),o.unit,i),s=a=this.trimHiddenDays(a),d.showNonCurrentDates||(s=nn(s,o.range)),s=nn(s=this.adjustActiveRange(s),r),l=on(o.range,r),{validRange:r,currentRange:o.range,currentRangeUnit:o.unit,isRangeAllDay:i,activeRange:s,renderRange:a,slotMinTime:d.slotMinTime,slotMaxTime:d.slotMaxTime,isValid:l,dateIncrement:this.buildDateIncrement(o.duration)}},e.prototype.buildValidRange=function(){var e=this.props.validRangeInput,t=\"function\"==typeof e?e.call(this.props.calendarApi,this.nowDate):e;return this.refineRange(t)||{start:null,end:null}},e.prototype.buildCurrentRangeInfo=function(e,t){var n,r=this.props,o=null,i=null,a=null;return r.duration?(o=r.duration,i=r.durationUnit,a=this.buildRangeFromDuration(e,t,o,i)):(n=this.props.dayCount)?(i=\"day\",a=this.buildRangeFromDayCount(e,t,n)):(a=this.buildCustomVisibleRange(e))?i=r.dateEnv.greatestWholeUnit(a.start,a.end).unit:(i=et(o=this.getFallbackDuration()).unit,a=this.buildRangeFromDuration(e,t,o,i)),{duration:o,unit:i,range:a}},e.prototype.getFallbackDuration=function(){return Ye({day:1})},e.prototype.adjustActiveRange=function(e){var t=this.props,n=t.dateEnv,r=t.usesMinMaxTime,o=t.slotMinTime,i=t.slotMaxTime,a=e.start,s=e.end;return r&&(Je(o)<0&&(a=be(a),a=n.add(a,o)),Je(i)>1&&(s=ve(s=be(s),-1),s=n.add(s,i))),{start:a,end:s}},e.prototype.buildRangeFromDuration=function(e,t,n,r){var o,i,a,s=this.props,l=s.dateEnv,u=s.dateAlignment;if(!u){var c=this.props.dateIncrement;u=c&&$e(c)<$e(n)?et(c).unit:r}function d(){o=l.startOf(e,u),i=l.add(o,n),a={start:o,end:i}}return Je(n)<=1&&this.isHiddenDay(o)&&(o=be(o=this.skipHiddenDays(o,t))),d(),this.trimHiddenDays(a)||(e=this.skipHiddenDays(e,t),d()),a},e.prototype.buildRangeFromDayCount=function(e,t,n){var r,o=this.props,i=o.dateEnv,a=o.dateAlignment,s=0,l=e;a&&(l=i.startOf(l,a)),l=be(l),r=l=this.skipHiddenDays(l,t);do{r=ve(r,1),this.isHiddenDay(r)||s++}while(s<n);return{start:l,end:r}},e.prototype.buildCustomVisibleRange=function(e){var t=this.props,n=t.visibleRangeInput,r=\"function\"==typeof n?n.call(t.calendarApi,t.dateEnv.toDate(e)):n,o=this.refineRange(r);return!o||null!=o.start&&null!=o.end?o:null},e.prototype.buildRenderRange=function(e,t,n){return e},e.prototype.buildDateIncrement=function(e){var t,n=this.props.dateIncrement;return n||((t=this.props.dateAlignment)?Ye(1,t):e||Ye({days:1}))},e.prototype.refineRange=function(e){if(e){var t=(n=e,r=this.props.dateEnv,o=null,i=null,n.start&&(o=r.createMarker(n.start)),n.end&&(i=r.createMarker(n.end)),o||i?o&&i&&i<o?null:{start:o,end:i}:null);return t&&(t=Jt(t)),t}var n,r,o,i;return null},e.prototype.initHiddenDays=function(){var e,t=this.props.hiddenDays||[],n=[],r=0;for(!1===this.props.weekends&&t.push(0,6),e=0;e<7;e++)(n[e]=-1!==t.indexOf(e))||r++;if(!r)throw new Error(\"invalid hiddenDays\");this.isHiddenDayHash=n},e.prototype.trimHiddenDays=function(e){var t=e.start,n=e.end;return t&&(t=this.skipHiddenDays(t)),n&&(n=this.skipHiddenDays(n,-1,!0)),null==t||null==n||t<n?{start:t,end:n}:null},e.prototype.isHiddenDay=function(e){return e instanceof Date&&(e=e.getUTCDay()),this.isHiddenDayHash[e]},e.prototype.skipHiddenDays=function(e,t,n){for(void 0===t&&(t=1),void 0===n&&(n=!1);this.isHiddenDayHash[(e.getUTCDay()+(n?t:0)+7)%7];)e=ve(e,t);return e},e}();function wo(e,t,n){var r=t?t.activeRange:null;return ko({},function(e,t){var n=Ln(t),r=[].concat(e.eventSources||[]),o=[];e.initialEvents&&r.unshift(e.initialEvents);e.events&&r.unshift(e.events);for(var i=0,a=r;i<a.length;i++){var s=Un(a[i],t,n);s&&o.push(s)}return o}(e,n),r,n)}function Ro(e,t,n,o){var i,a,s=n?n.activeRange:null;switch(t.type){case\"ADD_EVENT_SOURCES\":return ko(e,t.sources,s,o);case\"REMOVE_EVENT_SOURCE\":return i=e,a=t.sourceId,He(i,(function(e){return e.sourceId!==a}));case\"PREV\":case\"NEXT\":case\"CHANGE_DATE\":case\"CHANGE_VIEW_TYPE\":return n?Mo(e,s,o):e;case\"FETCH_EVENT_SOURCES\":return xo(e,t.sourceIds?Ae(t.sourceIds):Io(e,o),s,o);case\"RECEIVE_EVENTS\":case\"RECEIVE_EVENT_ERROR\":return function(e,t,n,o){var i,a=e[t];if(a&&n===a.latestFetchId)return r(r({},e),((i={})[t]=r(r({},a),{isFetching:!1,fetchRange:o}),i));return e}(e,t.sourceId,t.fetchId,t.fetchRange);case\"REMOVE_ALL_EVENT_SOURCES\":return{};default:return e}}function To(e){var t=0;for(var n in e)e[n].isFetching&&t++;return t}function ko(e,t,n,o){for(var i={},a=0,s=t;a<s.length;a++){var l=s[a];i[l.sourceId]=l}return n&&(i=Mo(i,n,o)),r(r({},e),i)}function Mo(e,t,n){return xo(e,He(e,(function(e){return function(e,t,n){return Po(e,n)?!n.options.lazyFetching||!e.fetchRange||e.isFetching||t.start<e.fetchRange.start||t.end>e.fetchRange.end:!e.latestFetchId}(e,t,n)})),t,n)}function xo(e,t,n,r){var o={};for(var i in e){var a=e[i];t[i]?o[i]=_o(a,n,r):o[i]=a}return o}function _o(e,t,n){var o=n.options,i=n.calendarApi,a=n.pluginHooks.eventSourceDefs[e.sourceDefId],s=$();return a.fetch({eventSource:e,range:t,context:n},(function(r){var a=r.rawEvents;o.eventSourceSuccess&&(a=o.eventSourceSuccess.call(i,a,r.xhr)||a),e.success&&(a=e.success.call(i,a,r.xhr)||a),n.dispatch({type:\"RECEIVE_EVENTS\",sourceId:e.sourceId,fetchId:s,fetchRange:t,rawEvents:a})}),(function(r){console.warn(r.message,r),o.eventSourceFailure&&o.eventSourceFailure.call(i,r),e.failure&&e.failure(r),n.dispatch({type:\"RECEIVE_EVENT_ERROR\",sourceId:e.sourceId,fetchId:s,fetchRange:t,error:r})})),r(r({},e),{isFetching:!0,latestFetchId:s})}function Io(e,t){return He(e,(function(e){return Po(e,t)}))}function Po(e,t){return!t.pluginHooks.eventSourceDefs[e.sourceDefId].ignoreRange}function No(e,t){switch(t.type){case\"UNSELECT_DATES\":return null;case\"SELECT_DATES\":return t.selection;default:return e}}function Ho(e,t){switch(t.type){case\"UNSELECT_EVENT\":return\"\";case\"SELECT_EVENT\":return t.eventInstanceId;default:return e}}function Oo(e,t){var n;switch(t.type){case\"UNSET_EVENT_DRAG\":return null;case\"SET_EVENT_DRAG\":return{affectedEvents:(n=t.state).affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Ao(e,t){var n;switch(t.type){case\"UNSET_EVENT_RESIZE\":return null;case\"SET_EVENT_RESIZE\":return{affectedEvents:(n=t.state).affectedEvents,mutatedEvents:n.mutatedEvents,isEvent:n.isEvent};default:return e}}function Uo(e,t,n,r,o){var i=[];return{headerToolbar:e.headerToolbar?Lo(e.headerToolbar,e,t,n,r,o,i):null,footerToolbar:e.footerToolbar?Lo(e.footerToolbar,e,t,n,r,o,i):null,viewsWithButtons:i}}function Lo(e,t,n,r,o,i,a){return Oe(e,(function(e){return function(e,t,n,r,o,i,a){var s=\"rtl\"===t.direction,l=t.customButtons||{},u=n.buttonText||{},c=t.buttonText||{};return(e?e.split(\" \"):[]).map((function(e){return e.split(\",\").map((function(e){if(\"title\"===e)return{buttonName:e};var t,n=void 0,d=void 0,p=void 0,f=void 0;return(t=l[e])?(d=function(e){t.click&&t.click.call(e.target,e,e.target)},(p=r.getCustomButtonIconClass(t))||(p=r.getIconClass(e,s))||(f=t.text)):(n=o[e])?(a.push(e),d=function(){i.changeView(e)},(f=n.buttonTextOverride)||(p=r.getIconClass(e,s))||(f=n.buttonTextDefault)):i[e]&&(d=function(){i[e]()},(f=u[e])||(p=r.getIconClass(e,s))||(f=c[e])),{buttonName:e,buttonClick:d,buttonIcon:p,buttonText:f}}))}))}(e,t,n,r,o,i,a)}))}function Wo(e,t,n,r,o){var i=null;\"GET\"===(e=e.toUpperCase())?t=function(e,t){return e+(-1===e.indexOf(\"?\")?\"?\":\"&\")+Vo(t)}(t,n):i=Vo(n);var a=new XMLHttpRequest;a.open(e,t,!0),\"GET\"!==e&&a.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),a.onload=function(){if(a.status>=200&&a.status<400){var e=!1,t=void 0;try{t=JSON.parse(a.responseText),e=!0}catch(e){}e?r(t,a):o(\"Failure parsing JSON\",a)}else o(\"Request failed\",a)},a.onerror=function(){o(\"Request failed\",a)},a.send(i)}function Vo(e){var t=[];for(var n in e)t.push(encodeURIComponent(n)+\"=\"+encodeURIComponent(e[n]));return t.join(\"&\")}function zo(e,t){for(var n=Ue(t.getCurrentData().eventSources),r=[],o=0,i=e;o<i.length;o++){for(var a=i[o],s=!1,l=0;l<n.length;l++)if(n[l]._raw===a){n.splice(l,1),s=!0;break}s||r.push(a)}for(var u=0,c=n;u<c.length;u++){var d=c[u];t.dispatch({type:\"REMOVE_EVENT_SOURCE\",sourceId:d.sourceId})}for(var p=0,f=r;p<f.length;p++){var h=f[p];t.calendarApi.addEventSource(h)}}var Fo=[io({eventSourceDefs:[{ignoreRange:!0,parseMeta:function(e){return Array.isArray(e.events)?e.events:null},fetch:function(e,t){t({rawEvents:e.eventSource.meta})}}]}),io({eventSourceDefs:[{parseMeta:function(e){return\"function\"==typeof e.events?e.events:null},fetch:function(e,t,n){var r=e.context.dateEnv;Tr(e.eventSource.meta.bind(null,Tn(e.range,r)),(function(e){t({rawEvents:e})}),n)}}]}),io({eventSourceRefiners:{method:String,extraParams:_t,startParam:String,endParam:String,timeZoneParam:String},eventSourceDefs:[{parseMeta:function(e){return e.url?{url:e.url,method:(e.method||\"GET\").toUpperCase(),extraParams:e.extraParams,startParam:e.startParam,endParam:e.endParam,timeZoneParam:e.timeZoneParam}:null},fetch:function(e,t,n){var o=e.eventSource.meta,i=function(e,t,n){var o,i,a,s,l=n.dateEnv,u=n.options,c={};null==(o=e.startParam)&&(o=u.startParam);null==(i=e.endParam)&&(i=u.endParam);null==(a=e.timeZoneParam)&&(a=u.timeZoneParam);s=\"function\"==typeof e.extraParams?e.extraParams():e.extraParams||{};r(c,s),c[o]=l.formatIso(t.start),c[i]=l.formatIso(t.end),\"local\"!==l.timeZone&&(c[a]=l.timeZone);return c}(o,e.range,e.context);Wo(o.method,o.url,i,(function(e,n){t({rawEvents:e,xhr:n})}),(function(e,t){n({message:e,xhr:t})}))}}]}),io({recurringTypes:[{parse:function(e,t){if(e.daysOfWeek||e.startTime||e.endTime||e.startRecur||e.endRecur){var n={daysOfWeek:e.daysOfWeek||null,startTime:e.startTime||null,endTime:e.endTime||null,startRecur:e.startRecur?t.createMarker(e.startRecur):null,endRecur:e.endRecur?t.createMarker(e.endRecur):null},r=void 0;return e.duration&&(r=e.duration),!r&&e.startTime&&e.endTime&&(o=e.endTime,i=e.startTime,r={years:o.years-i.years,months:o.months-i.months,days:o.days-i.days,milliseconds:o.milliseconds-i.milliseconds}),{allDayGuess:Boolean(!e.startTime&&!e.endTime),duration:r,typeData:n}}var o,i;return null},expand:function(e,t,n){var r=nn(t,{start:e.startRecur,end:e.endRecur});return r?function(e,t,n,r){var o=e?Ae(e):null,i=be(n.start),a=n.end,s=[];for(;i<a;){var l=void 0;o&&!o[i.getUTCDay()]||(l=t?r.add(i,t):i,s.push(l)),i=ve(i,1)}return s}(e.daysOfWeek,e.startTime,r,n):[]}}],eventRefiners:{daysOfWeek:_t,startTime:Ye,endTime:Ye,duration:Ye,startRecur:_t,endRecur:_t}}),io({optionChangeHandlers:{events:function(e,t){zo([e],t)},eventSources:zo}}),io({contentTypeHandlers:{html:function(){return Bo},domNodes:function(){return jo}},propSetHandlers:{dateProfile:function(e,t){t.emitter.trigger(\"datesSet\",r(r({},Tn(e.activeRange,t.dateEnv)),{view:t.viewApi}))},eventStore:function(e,t){var n=t.emitter;n.hasHandlers(\"eventsSet\")&&n.trigger(\"eventsSet\",Bn(e,t))}}})];function Bo(e,t){e.innerHTML=t}function jo(e,t){var n=Array.prototype.slice.call(e.childNodes),r=Array.prototype.slice.call(t);if(!ot(n,r)){for(var o=0,i=r;o<i.length;o++){var a=i[o];e.appendChild(a)}n.forEach(W)}}var Go=function(){function e(e){this.drainedOption=e,this.isRunning=!1,this.isDirty=!1,this.pauseDepths={},this.timeoutId=0}return e.prototype.request=function(e){this.isDirty=!0,this.isPaused()||(this.clearTimeout(),null==e?this.tryDrain():this.timeoutId=setTimeout(this.tryDrain.bind(this),e))},e.prototype.pause=function(e){void 0===e&&(e=\"\");var t=this.pauseDepths;t[e]=(t[e]||0)+1,this.clearTimeout()},e.prototype.resume=function(e,t){void 0===e&&(e=\"\");var n=this.pauseDepths;if(e in n){if(t)delete n[e];else--n[e]<=0&&delete n[e];this.tryDrain()}},e.prototype.isPaused=function(){return Object.keys(this.pauseDepths).length},e.prototype.tryDrain=function(){if(!this.isRunning&&!this.isPaused()){for(this.isRunning=!0;this.isDirty;)this.isDirty=!1,this.drained();this.isRunning=!1}},e.prototype.clear=function(){this.clearTimeout(),this.isDirty=!1,this.pauseDepths={}},e.prototype.clearTimeout=function(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=0)},e.prototype.drained=function(){this.drainedOption&&this.drainedOption()},e}(),qo=function(){function e(e,t){this.runTaskOption=e,this.drainedOption=t,this.queue=[],this.delayedRunner=new Go(this.drain.bind(this))}return e.prototype.request=function(e,t){this.queue.push(e),this.delayedRunner.request(t)},e.prototype.pause=function(e){this.delayedRunner.pause(e)},e.prototype.resume=function(e,t){this.delayedRunner.resume(e,t)},e.prototype.drain=function(){for(var e=this.queue;e.length;){for(var t=[],n=void 0;n=e.shift();)this.runTask(n),t.push(n);this.drained(t)}},e.prototype.runTask=function(e){this.runTaskOption&&this.runTaskOption(e)},e.prototype.drained=function(e){this.drainedOption&&this.drainedOption(e)},e}();function Yo(e,t,n){var r;return r=/^(year|month)$/.test(e.currentRangeUnit)?e.currentRange:e.activeRange,n.formatRange(r.start,r.end,St(t.titleFormat||function(e){var t=e.currentRangeUnit;if(\"year\"===t)return{year:\"numeric\"};if(\"month\"===t)return{year:\"numeric\",month:\"long\"};var n=De(e.currentRange.start,e.currentRange.end);return null!==n&&n>1?{year:\"numeric\",month:\"short\",day:\"numeric\"}:{year:\"numeric\",month:\"long\",day:\"numeric\"}}(e)),{isEndExclusive:e.isRangeAllDay,defaultSeparator:t.titleRangeSeparator})}var Zo=function(){function e(e){var t=this;this.computeOptionsData=it(this._computeOptionsData),this.computeCurrentViewData=it(this._computeCurrentViewData),this.organizeRawLocales=it($n),this.buildLocale=it(Qn),this.buildPluginHooks=ao(),this.buildDateEnv=it(Xo),this.buildTheme=it(Ko),this.parseToolbars=it(Uo),this.buildViewSpecs=it(Do),this.buildDateProfileGenerator=at(Jo),this.buildViewApi=it($o),this.buildViewUiProps=at(ti),this.buildEventUiBySource=it(Qo,Le),this.buildEventUiBases=it(ei),this.parseContextBusinessHours=at(ni),this.buildTitle=it(Yo),this.emitter=new kr,this.actionRunner=new qo(this._handleAction.bind(this),this.updateData.bind(this)),this.currentCalendarOptionsInput={},this.currentCalendarOptionsRefined={},this.currentViewOptionsInput={},this.currentViewOptionsRefined={},this.currentCalendarOptionsRefiners={},this.getCurrentData=function(){return t.data},this.dispatch=function(e){t.actionRunner.request(e)},this.props=e,this.actionRunner.pause();var n={},o=this.computeOptionsData(e.optionOverrides,n,e.calendarApi),i=o.calendarOptions.initialView||o.pluginHooks.initialView,a=this.computeCurrentViewData(i,o,e.optionOverrides,n);e.calendarApi.currentDataManager=this,this.emitter.setThisContext(e.calendarApi),this.emitter.setOptions(a.options);var s,l,u,c=(s=o.calendarOptions,l=o.dateEnv,null!=(u=s.initialDate)?l.createMarker(u):Wn(s.now,l)),d=a.dateProfileGenerator.build(c);sn(d.activeRange,c)||(c=d.currentRange.start);for(var p={dateEnv:o.dateEnv,options:o.calendarOptions,pluginHooks:o.pluginHooks,calendarApi:e.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},f=0,h=o.pluginHooks.contextInit;f<h.length;f++){(0,h[f])(p)}for(var v=wo(o.calendarOptions,d,p),g={dynamicOptionOverrides:n,currentViewType:i,currentDate:c,dateProfile:d,businessHours:this.parseContextBusinessHours(p),eventSources:v,eventUiBases:{},loadingLevel:To(v),eventStore:{defs:{},instances:{}},renderableEventStore:{defs:{},instances:{}},dateSelection:null,eventSelection:\"\",eventDrag:null,eventResize:null,selectionConfig:this.buildViewUiProps(p).selectionConfig},m=r(r({},p),g),y=0,E=o.pluginHooks.reducers;y<E.length;y++){var S=E[y];r(g,S(null,null,m))}g.loadingLevel&&this.emitter.trigger(\"loading\",!0),this.state=g,this.updateData(),this.actionRunner.resume()}return e.prototype.resetOptions=function(e,t){var n=this.props;n.optionOverrides=t?r(r({},n.optionOverrides),e):e,this.actionRunner.request({type:\"NOTHING\"})},e.prototype._handleAction=function(e){var t=this.props,n=this.state,o=this.emitter,i=function(e,t){var n;switch(t.type){case\"SET_OPTION\":return r(r({},e),((n={})[t.optionName]=t.rawOptionValue,n));default:return e}}(n.dynamicOptionOverrides,e),a=this.computeOptionsData(t.optionOverrides,i,t.calendarApi),s=function(e,t){switch(t.type){case\"CHANGE_VIEW_TYPE\":return t.viewType}return e}(n.currentViewType,e),l=this.computeCurrentViewData(s,a,t.optionOverrides,i);t.calendarApi.currentDataManager=this,o.setThisContext(t.calendarApi),o.setOptions(l.options);var u={dateEnv:a.dateEnv,options:a.calendarOptions,pluginHooks:a.pluginHooks,calendarApi:t.calendarApi,dispatch:this.dispatch,emitter:o,getCurrentData:this.getCurrentData},c=n.currentDate,d=n.dateProfile;this.data&&this.data.dateProfileGenerator!==l.dateProfileGenerator&&(d=l.dateProfileGenerator.build(c)),d=function(e,t,n,r){var o;switch(t.type){case\"CHANGE_VIEW_TYPE\":return r.build(t.dateMarker||n);case\"CHANGE_DATE\":if(!e.activeRange||!sn(e.currentRange,t.dateMarker))return r.build(t.dateMarker);break;case\"PREV\":if((o=r.buildPrev(e,n)).isValid)return o;break;case\"NEXT\":if((o=r.buildNext(e,n)).isValid)return o}return e}(d,e,c=function(e,t){switch(t.type){case\"CHANGE_DATE\":return t.dateMarker;default:return e}}(c,e),l.dateProfileGenerator),sn(d.currentRange,c)||(c=d.currentRange.start);for(var p=Ro(n.eventSources,e,d,u),f=To(p),h=Zr(n.eventStore,e,p,d,u),v=f&&!l.options.progressiveEventRendering&&n.renderableEventStore||h,g=this.buildViewUiProps(u),m=g.eventUiSingleBase,y=g.selectionConfig,E=this.buildEventUiBySource(p),S=this.buildEventUiBases(v.defs,m,E),D=n.loadingLevel||0,b=f,C={dynamicOptionOverrides:i,currentViewType:s,currentDate:c,dateProfile:d,eventSources:p,eventStore:h,renderableEventStore:v,selectionConfig:y,eventUiBases:S,loadingLevel:b,businessHours:this.parseContextBusinessHours(u),dateSelection:No(n.dateSelection,e),eventSelection:Ho(n.eventSelection,e),eventDrag:Oo(n.eventDrag,e),eventResize:Ao(n.eventResize,e)},w=r(r({},u),C),R=0,T=a.pluginHooks.reducers;R<T.length;R++){var k=T[R];r(C,k(n,e,w))}!D&&b?o.trigger(\"loading\",!0):D&&!b&&o.trigger(\"loading\",!1),this.state=C,t.onAction&&t.onAction(e)},e.prototype.updateData=function(){var e,t,n,o,i,a,s,l,u,c=this.props,d=this.state,p=this.data,f=this.computeOptionsData(c.optionOverrides,d.dynamicOptionOverrides,c.calendarApi),h=this.computeCurrentViewData(d.currentViewType,f,c.optionOverrides,d.dynamicOptionOverrides),v=this.data=r(r(r({viewTitle:this.buildTitle(d.dateProfile,h.options,f.dateEnv),calendarApi:c.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},f),h),d),g=f.pluginHooks.optionChangeHandlers,m=p&&p.calendarOptions,y=f.calendarOptions;if(m&&m!==y)for(var E in m.timeZone!==y.timeZone&&(d.eventSources=v.eventSources=(a=v.eventSources,s=d.dateProfile,l=v,u=s?s.activeRange:null,xo(a,Io(a,l),u,l)),d.eventStore=v.eventStore=(e=v.eventStore,t=p.dateEnv,n=v.dateEnv,o=e.defs,i=Oe(e.instances,(function(e){var i=o[e.defId];return i.allDay||i.recurringDef?e:r(r({},e),{range:{start:n.createMarker(t.toDate(e.range.start,e.forcedStartTzo)),end:n.createMarker(t.toDate(e.range.end,e.forcedEndTzo))},forcedStartTzo:n.canComputeOffset?null:e.forcedStartTzo,forcedEndTzo:n.canComputeOffset?null:e.forcedEndTzo})})),{defs:o,instances:i})),g)m[E]!==y[E]&&g[E](y[E],v);c.onData&&c.onData(v)},e.prototype._computeOptionsData=function(e,t,n){var r=this.processRawCalendarOptions(e,t),o=r.refinedOptions,i=r.pluginHooks,a=r.localeDefaults,s=r.availableLocaleData;ri(r.extra);var l=this.buildDateEnv(o.timeZone,o.locale,o.weekNumberCalculation,o.firstDay,o.weekText,i,s,o.defaultRangeSeparator),u=this.buildViewSpecs(i.views,e,t,a),c=this.buildTheme(o,i);return{calendarOptions:o,pluginHooks:i,dateEnv:l,viewSpecs:u,theme:c,toolbarConfig:this.parseToolbars(o,e,c,u,n),localeDefaults:a,availableRawLocales:s.map}},e.prototype.processRawCalendarOptions=function(e,t){var n=Mt([bt,e,t]),o=n.locales,i=n.locale,a=this.organizeRawLocales(o),s=a.map,l=this.buildLocale(i||a.defaultCode,s).options,u=this.buildPluginHooks(e.plugins||[],Fo),c=this.currentCalendarOptionsRefiners=r(r(r(r(r({},Dt),Ct),wt),u.listenerRefiners),u.optionRefiners),d={},p=Mt([bt,l,e,t]),f={},h=this.currentCalendarOptionsInput,v=this.currentCalendarOptionsRefined,g=!1;for(var m in p)\"plugins\"!==m&&(p[m]===h[m]||Rt[m]&&m in h&&Rt[m](h[m],p[m])?f[m]=v[m]:c[m]?(f[m]=c[m](p[m]),g=!0):d[m]=h[m]);return g&&(this.currentCalendarOptionsInput=p,this.currentCalendarOptionsRefined=f),{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks:u,availableLocaleData:a,localeDefaults:l,extra:d}},e.prototype._computeCurrentViewData=function(e,t,n,r){var o=t.viewSpecs[e];if(!o)throw new Error('viewType \"'+e+\"\\\" is not available. Please make sure you've loaded all neccessary plugins\");var i=this.processRawViewOptions(o,t.pluginHooks,t.localeDefaults,n,r),a=i.refinedOptions;return ri(i.extra),{viewSpec:o,options:a,dateProfileGenerator:this.buildDateProfileGenerator({dateProfileGeneratorClass:o.optionDefaults.dateProfileGeneratorClass,duration:o.duration,durationUnit:o.durationUnit,usesMinMaxTime:o.optionDefaults.usesMinMaxTime,dateEnv:t.dateEnv,calendarApi:this.props.calendarApi,slotMinTime:a.slotMinTime,slotMaxTime:a.slotMaxTime,showNonCurrentDates:a.showNonCurrentDates,dayCount:a.dayCount,dateAlignment:a.dateAlignment,dateIncrement:a.dateIncrement,hiddenDays:a.hiddenDays,weekends:a.weekends,nowInput:a.now,validRangeInput:a.validRange,visibleRangeInput:a.visibleRange,monthMode:a.monthMode,fixedWeekCount:a.fixedWeekCount}),viewApi:this.buildViewApi(e,this.getCurrentData,t.dateEnv)}},e.prototype.processRawViewOptions=function(e,t,n,o,i){var a=Mt([bt,e.optionDefaults,n,o,e.optionOverrides,i]),s=r(r(r(r(r(r({},Dt),Ct),wt),kt),t.listenerRefiners),t.optionRefiners),l={},u=this.currentViewOptionsInput,c=this.currentViewOptionsRefined,d=!1,p={};for(var f in a)a[f]===u[f]?l[f]=c[f]:(a[f]===this.currentCalendarOptionsInput[f]?f in this.currentCalendarOptionsRefined&&(l[f]=this.currentCalendarOptionsRefined[f]):s[f]?l[f]=s[f](a[f]):p[f]=a[f],d=!0);return d&&(this.currentViewOptionsInput=a,this.currentViewOptionsRefined=l),{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined,extra:p}},e}();function Xo(e,t,n,r,o,i,a,s){var l=Qn(t||a.defaultCode,a.map);return new Xn({calendarSystem:\"gregory\",timeZone:e,namedTimeZoneImpl:i.namedTimeZonedImpl,locale:l,weekNumberCalculation:n,firstDay:r,weekText:o,cmdFormatter:i.cmdFormatter,defaultSeparator:s})}function Ko(e,t){return new(t.themeClasses[e.themeSystem]||so)(e)}function Jo(e){return new(e.dateProfileGeneratorClass||Co)(e)}function $o(e,t,n){return new On(e,t,n)}function Qo(e){return Oe(e,(function(e){return e.ui}))}function ei(e,t,n){var r={\"\":t};for(var o in e){var i=e[o];i.sourceId&&n[i.sourceId]&&(r[o]=n[i.sourceId])}return r}function ti(e){var t=e.options;return{eventUiSingleBase:Wt({display:t.eventDisplay,editable:t.editable,startEditable:t.eventStartEditable,durationEditable:t.eventDurationEditable,constraint:t.eventConstraint,overlap:\"boolean\"==typeof t.eventOverlap?t.eventOverlap:void 0,allow:t.eventAllow,backgroundColor:t.eventBackgroundColor,borderColor:t.eventBorderColor,textColor:t.eventTextColor,color:t.eventColor},e),selectionConfig:Wt({constraint:t.selectConstraint,overlap:\"boolean\"==typeof t.selectOverlap?t.selectOverlap:void 0,allow:t.selectAllow},e)}}function ni(e){return or(e.options.businessHours,e)}function ri(e,t){for(var n in e)console.warn(\"Unknown option '\"+n+\"'\"+(t?\" for view '\"+t+\"'\":\"\"))}var oi=function(e){function t(t){var n=e.call(this,t)||this;return n.handleData=function(e){n.dataManager?n.setState(e):n.state=e},n.dataManager=new Zo({optionOverrides:t.optionOverrides,calendarApi:t.calendarApi,onData:n.handleData}),n}return n(t,e),t.prototype.render=function(){return this.props.children(this.state)},t.prototype.componentDidUpdate=function(e){var t=this.props.optionOverrides;t!==e.optionOverrides&&this.dataManager.resetOptions(t)},t}(Nr);var ii=function(e){this.timeZoneName=e},ai=function(){function e(e){this.component=e.component}return e.prototype.destroy=function(){},e}();function si(e,t){return{component:e,el:t.el,useEventCenter:null==t.useEventCenter||t.useEventCenter}}function li(e){var t;return(t={})[e.component.uid]=e,t}var ui={},ci=function(){function e(e,t){this.emitter=new kr}return e.prototype.destroy=function(){},e.prototype.setMirrorIsVisible=function(e){},e.prototype.setMirrorNeedsRevert=function(e){},e.prototype.setAutoScrollEnabled=function(e){},e}(),di={},pi={startTime:Ye,duration:Ye,create:Boolean,sourceId:String};function fi(e){var t=xt(e,pi),n=t.refined,r=t.extra;return{startTime:n.startTime||null,duration:n.duration||null,create:null==n.create||n.create,sourceId:n.sourceId,leftoverProps:r}}var hi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e,t,n=this.props,r=n.model,o=n.extraClassName,i=!1,a=r.center;return r.left?(i=!0,e=r.left):e=r.start,r.right?(i=!0,t=r.right):t=r.end,Hr(\"div\",{className:[o||\"\",\"fc-toolbar\",i?\"fc-toolbar-ltr\":\"\"].join(\" \")},this.renderSection(\"start\",e||[]),this.renderSection(\"center\",a||[]),this.renderSection(\"end\",t||[]))},t.prototype.renderSection=function(e,t){var n=this.props;return Hr(vi,{key:e,widgetGroups:t,title:n.title,activeButton:n.activeButton,isTodayEnabled:n.isTodayEnabled,isPrevEnabled:n.isPrevEnabled,isNextEnabled:n.isNextEnabled})},t}(jr),vi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props.widgetGroups.map((function(t){return e.renderWidgetGroup(t)}));return Hr.apply(void 0,o([\"div\",{className:\"fc-toolbar-chunk\"}],t))},t.prototype.renderWidgetGroup=function(e){for(var t=this.props,n=this.context.theme,i=[],a=!0,s=0,l=e;s<l.length;s++){var u=l[s],c=u.buttonName,d=u.buttonClick,p=u.buttonText,f=u.buttonIcon;if(\"title\"===c)a=!1,i.push(Hr(\"h2\",{className:\"fc-toolbar-title\"},t.title));else{var h=f?{\"aria-label\":c}:{},v=[\"fc-\"+c+\"-button\",n.getClass(\"button\")];c===t.activeButton&&v.push(n.getClass(\"buttonActive\"));var g=!t.isTodayEnabled&&\"today\"===c||!t.isPrevEnabled&&\"prev\"===c||!t.isNextEnabled&&\"next\"===c;i.push(Hr(\"button\",r({disabled:g,className:v.join(\" \"),onClick:d,type:\"button\"},h),p||(f?Hr(\"span\",{className:f}):\"\")))}}if(i.length>1){var m=a&&n.getClass(\"buttonGroup\")||\"\";return Hr.apply(void 0,o([\"div\",{className:m}],i))}return i[0]},t}(jr),gi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={availableWidth:null},t.handleEl=function(e){t.el=e,Yr(t.props.elRef,e),t.updateAvailableWidth()},t.handleResize=function(){t.updateAvailableWidth()},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state,n=e.aspectRatio,r=[\"fc-view-harness\",n||e.liquid||e.height?\"fc-view-harness-active\":\"fc-view-harness-passive\"],o=\"\",i=\"\";return n?null!==t.availableWidth?o=t.availableWidth/n:i=1/n*100+\"%\":o=e.height||\"\",Hr(\"div\",{ref:this.handleEl,onClick:e.onClick,className:r.join(\" \"),style:{height:o,paddingBottom:i}},e.children)},t.prototype.componentDidMount=function(){this.context.addResizeHandler(this.handleResize)},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleResize)},t.prototype.updateAvailableWidth=function(){this.el&&this.props.aspectRatio&&this.setState({availableWidth:this.el.offsetWidth})},t}(jr),mi=function(e){function t(t){var n=e.call(this,t)||this;return n.handleSegClick=function(e,t){var r=n.component,o=r.context,i=dn(t);if(i&&r.isValidSegDownEl(e.target)){var a=V(e.target,\".fc-event-forced-url\"),s=a?a.querySelector(\"a[href]\").href:\"\";o.emitter.trigger(\"eventClick\",{el:t,event:new zn(r.context,i.eventRange.def,i.eventRange.instance),jsEvent:e,view:o.viewApi}),s&&!e.defaultPrevented&&(window.location.href=s)}},n.destroy=Z(t.el,\"click\",\".fc-event\",n.handleSegClick),n}return n(t,e),t}(ai),yi=function(e){function t(t){var n,r,o,i,a,s=e.call(this,t)||this;return s.handleEventElRemove=function(e){e===s.currentSegEl&&s.handleSegLeave(null,s.currentSegEl)},s.handleSegEnter=function(e,t){dn(t)&&(s.currentSegEl=t,s.triggerEvent(\"eventMouseEnter\",e,t))},s.handleSegLeave=function(e,t){s.currentSegEl&&(s.currentSegEl=null,s.triggerEvent(\"eventMouseLeave\",e,t))},s.removeHoverListeners=(n=t.el,r=\".fc-event\",o=s.handleSegEnter,i=s.handleSegLeave,Z(n,\"mouseover\",r,(function(e,t){if(t!==a){a=t,o(e,t);var n=function(e){a=null,i(e,t),t.removeEventListener(\"mouseleave\",n)};t.addEventListener(\"mouseleave\",n)}}))),s}return n(t,e),t.prototype.destroy=function(){this.removeHoverListeners()},t.prototype.triggerEvent=function(e,t,n){var r=this.component,o=r.context,i=dn(n);t&&!r.isValidSegDownEl(t.target)||o.emitter.trigger(e,{el:n,event:new zn(o,i.eventRange.def,i.eventRange.instance),jsEvent:t,view:o.viewApi})},t}(ai),Ei=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildViewContext=it(Fr),t.buildViewPropTransformers=it(Di),t.buildToolbarProps=it(Si),t.handleNavLinkClick=Y(\"a[data-navlink]\",t._handleNavLinkClick.bind(t)),t.headerRef=Ar(),t.footerRef=Ar(),t.interactionsStore={},t.registerInteractiveComponent=function(e,n){var r=si(e,n),o=[mi,yi].concat(t.props.pluginHooks.componentInteractions).map((function(e){return new e(r)}));t.interactionsStore[e.uid]=o,ui[e.uid]=r},t.unregisterInteractiveComponent=function(e){for(var n=0,r=t.interactionsStore[e.uid];n<r.length;n++){r[n].destroy()}delete t.interactionsStore[e.uid],delete ui[e.uid]},t.resizeRunner=new Go((function(){t.props.emitter.trigger(\"_resize\",!0),t.props.emitter.trigger(\"windowResize\",{view:t.props.viewApi})})),t.handleWindowResize=function(e){var n=t.props.options;n.handleWindowResize&&e.target===window&&t.resizeRunner.request(n.windowResizeDelay)},t}return n(t,e),t.prototype.render=function(){var e,t=this.props,n=t.toolbarConfig,o=t.options,i=this.buildToolbarProps(t.viewSpec,t.dateProfile,t.dateProfileGenerator,t.currentDate,Wn(t.options.now,t.dateEnv),t.viewTitle),a=!1,s=\"\";t.isHeightAuto||t.forPrint?s=\"\":null!=o.height?a=!0:null!=o.contentHeight?s=o.contentHeight:e=Math.max(o.aspectRatio,.5);var l=this.buildViewContext(t.viewSpec,t.viewApi,t.options,t.dateProfileGenerator,t.dateEnv,t.theme,t.pluginHooks,t.dispatch,t.getCurrentData,t.emitter,t.calendarApi,this.registerInteractiveComponent,this.unregisterInteractiveComponent);return Hr(zr.Provider,{value:l},n.headerToolbar&&Hr(hi,r({ref:this.headerRef,extraClassName:\"fc-header-toolbar\",model:n.headerToolbar},i)),Hr(gi,{liquid:a,height:s,aspectRatio:e,onClick:this.handleNavLinkClick},this.renderView(t),this.buildAppendContent()),n.footerToolbar&&Hr(hi,r({ref:this.footerRef,extraClassName:\"fc-footer-toolbar\",model:n.footerToolbar},i)))},t.prototype.componentDidMount=function(){var e=this.props;this.calendarInteractions=e.pluginHooks.calendarInteractions.map((function(t){return new t(e)})),window.addEventListener(\"resize\",this.handleWindowResize);var t=e.pluginHooks.propSetHandlers;for(var n in t)t[n](e[n],e)},t.prototype.componentDidUpdate=function(e){var t=this.props,n=t.pluginHooks.propSetHandlers;for(var r in n)t[r]!==e[r]&&n[r](t[r],t)},t.prototype.componentWillUnmount=function(){window.removeEventListener(\"resize\",this.handleWindowResize),this.resizeRunner.clear();for(var e=0,t=this.calendarInteractions;e<t.length;e++){t[e].destroy()}this.props.emitter.trigger(\"_unmount\")},t.prototype._handleNavLinkClick=function(e,t){var n=this.props,r=n.dateEnv,o=n.options,i=n.calendarApi,a=t.getAttribute(\"data-navlink\");a=a?JSON.parse(a):{};var s=r.createMarker(a.date),l=a.type,u=\"day\"===l?o.navLinkDayClick:\"week\"===l?o.navLinkWeekClick:null;\"function\"==typeof u?u.call(i,r.toDate(s),e):(\"string\"==typeof u&&(l=u),i.zoomTo(s,l))},t.prototype.buildAppendContent=function(){var e=this.props,t=e.pluginHooks.viewContainerAppends.map((function(t){return t(e)}));return Hr.apply(void 0,o([Ur,{}],t))},t.prototype.renderView=function(e){for(var t=e.pluginHooks,n=e.viewSpec,o={dateProfile:e.dateProfile,businessHours:e.businessHours,eventStore:e.renderableEventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,isHeightAuto:e.isHeightAuto,forPrint:e.forPrint},i=0,a=this.buildViewPropTransformers(t.viewPropsTransformers);i<a.length;i++){var s=a[i];r(o,s.transform(o,e))}var l=n.component;return Hr(l,r({},o))},t}(Br);function Si(e,t,n,r,o,i){var a=n.build(o,void 0,!1),s=n.buildPrev(t,r,!1),l=n.buildNext(t,r,!1);return{title:i,activeButton:e.type,isTodayEnabled:a.isValid&&!sn(t.currentRange,o),isPrevEnabled:s.isValid,isNextEnabled:l.isValid}}function Di(e){return e.map((function(e){return new e}))}var bi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={forPrint:!1},t.handleBeforePrint=function(){t.setState({forPrint:!0})},t.handleAfterPrint=function(){t.setState({forPrint:!1})},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.options,n=this.state.forPrint,r=n||\"auto\"===t.height||\"auto\"===t.contentHeight,o=r||null==t.height?\"\":t.height,i=[\"fc\",n?\"fc-media-print\":\"fc-media-screen\",\"fc-direction-\"+t.direction,e.theme.getClass(\"root\")];return cr()||i.push(\"fc-liquid-hack\"),e.children(i,o,r,n)},t.prototype.componentDidMount=function(){var e=this.props.emitter;e.on(\"_beforeprint\",this.handleBeforePrint),e.on(\"_afterprint\",this.handleAfterPrint)},t.prototype.componentWillUnmount=function(){var e=this.props.emitter;e.off(\"_beforeprint\",this.handleBeforePrint),e.off(\"_afterprint\",this.handleAfterPrint)},t}(jr);function Ci(e,t){return St(!e||t>10?{weekday:\"short\"}:t>1?{weekday:\"short\",month:\"numeric\",day:\"numeric\",omitCommas:!0}:{weekday:\"long\"})}var wi=\"fc-col-header-cell\",Ri=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.context,t=e.dateEnv,n=e.options,o=e.theme,i=e.viewApi,a=this.props,s=a.date,l=a.dateProfile,u=hr(s,a.todayRange,null,l),c=[wi].concat(vr(u,o)),d=t.format(s,a.dayHeaderFormat),p=n.navLinks&&!u.isDisabled&&a.colCnt>1?{\"data-navlink\":gr(s),tabIndex:0}:{},f=r(r(r({date:t.toDate(s),view:i},a.extraHookProps),{text:d}),u);return Hr(uo,{hookProps:f,classNames:n.dayHeaderClassNames,content:n.dayHeaderContent,defaultContent:ki,didMount:n.dayHeaderDidMount,willUnmount:n.dayHeaderWillUnmount},(function(e,t,n,o){return Hr(\"th\",r({ref:e,className:c.concat(t).join(\" \"),\"data-date\":u.isDisabled?void 0:tt(s),colSpan:a.colSpan},a.extraDataAttrs),Hr(\"div\",{className:\"fc-scrollgrid-sync-inner\"},!u.isDisabled&&Hr(\"a\",r({ref:n,className:[\"fc-col-header-cell-cushion\",a.isSticky?\"fc-sticky\":\"\"].join(\" \")},p),o)))}))},t}(jr),Ti=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.dateEnv,o=t.theme,i=t.viewApi,a=t.options,s=ve(new Date(2592e5),e.dow),l={dow:e.dow,isDisabled:!1,isFuture:!1,isPast:!1,isToday:!1,isOther:!1},u=[wi].concat(vr(l,o),e.extraClassNames||[]),c=n.format(s,e.dayHeaderFormat),d=r(r(r(r({date:s},l),{view:i}),e.extraHookProps),{text:c});return Hr(uo,{hookProps:d,classNames:a.dayHeaderClassNames,content:a.dayHeaderContent,defaultContent:ki,didMount:a.dayHeaderDidMount,willUnmount:a.dayHeaderWillUnmount},(function(t,n,o,i){return Hr(\"th\",r({ref:t,className:u.concat(n).join(\" \"),colSpan:e.colSpan},e.extraDataAttrs),Hr(\"div\",{className:\"fc-scrollgrid-sync-inner\"},Hr(\"a\",{className:[\"fc-col-header-cell-cushion\",e.isSticky?\"fc-sticky\":\"\"].join(\" \"),ref:o},i)))}))},t}(jr);function ki(e){return e.text}var Mi=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.initialNowDate=Wn(n.options.now,n.dateEnv),r.initialNowQueriedMs=(new Date).valueOf(),r.state=r.computeTiming().currentState,r}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state;return e.children(t.nowDate,t.todayRange)},t.prototype.componentDidMount=function(){this.setTimeout()},t.prototype.componentDidUpdate=function(e){e.unit!==this.props.unit&&(this.clearTimeout(),this.setTimeout())},t.prototype.componentWillUnmount=function(){this.clearTimeout()},t.prototype.computeTiming=function(){var e=this.props,t=this.context,n=ge(this.initialNowDate,(new Date).valueOf()-this.initialNowQueriedMs),r=t.dateEnv.startOf(n,e.unit),o=t.dateEnv.add(r,Ye(1,e.unit)),i=o.valueOf()-n.valueOf();return{currentState:{nowDate:r,todayRange:xi(r)},nextState:{nowDate:o,todayRange:xi(o)},waitMs:i}},t.prototype.setTimeout=function(){var e=this,t=this.computeTiming(),n=t.nextState,r=t.waitMs;this.timeoutId=setTimeout((function(){e.setState(n,(function(){e.setTimeout()}))}),r)},t.prototype.clearTimeout=function(){this.timeoutId&&clearTimeout(this.timeoutId)},t.contextType=zr,t}(Nr);function xi(e){var t=be(e);return{start:t,end:ve(t,1)}}var _i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.createDayHeaderFormatter=it(Ii),t}return n(t,e),t.prototype.render=function(){var e=this.context,t=this.props,n=t.dates,r=t.dateProfile,o=t.datesRepDistinctDays,i=t.renderIntro,a=this.createDayHeaderFormatter(e.options.dayHeaderFormat,o,n.length);return Hr(Mi,{unit:\"day\"},(function(e,t){return Hr(\"tr\",null,i&&i(),n.map((function(e){return o?Hr(Ri,{key:e.toISOString(),date:e,dateProfile:r,todayRange:t,colCnt:n.length,dayHeaderFormat:a}):Hr(Ti,{key:e.getUTCDay(),dow:e.getUTCDay(),dayHeaderFormat:a})})))}))},t}(jr);function Ii(e,t,n){return e||Ci(t,n)}var Pi=function(){function e(e,t){for(var n=e.start,r=e.end,o=[],i=[],a=-1;n<r;)t.isHiddenDay(n)?o.push(a+.5):(a++,o.push(a),i.push(n)),n=ve(n,1);this.dates=i,this.indices=o,this.cnt=i.length}return e.prototype.sliceRange=function(e){var t=this.getDateDayIndex(e.start),n=this.getDateDayIndex(ve(e.end,-1)),r=Math.max(0,t),o=Math.min(this.cnt-1,n);return(r=Math.ceil(r))<=(o=Math.floor(o))?{firstIndex:r,lastIndex:o,isStart:t===r,isEnd:n===o}:null},e.prototype.getDateDayIndex=function(e){var t=this.indices,n=Math.floor(ye(this.dates[0],e));return n<0?t[0]-1:n>=t.length?t[t.length-1]+1:t[n]},e}(),Ni=function(){function e(e,t){var n,r,o,i=e.dates;if(t){for(r=i[0].getUTCDay(),n=1;n<i.length&&i[n].getUTCDay()!==r;n++);o=Math.ceil(i.length/n)}else o=1,n=i.length;this.rowCnt=o,this.colCnt=n,this.daySeries=e,this.cells=this.buildCells(),this.headerDates=this.buildHeaderDates()}return e.prototype.buildCells=function(){for(var e=[],t=0;t<this.rowCnt;t++){for(var n=[],r=0;r<this.colCnt;r++)n.push(this.buildCell(t,r));e.push(n)}return e},e.prototype.buildCell=function(e,t){var n=this.daySeries.dates[e*this.colCnt+t];return{key:n.toISOString(),date:n}},e.prototype.buildHeaderDates=function(){for(var e=[],t=0;t<this.colCnt;t++)e.push(this.cells[0][t].date);return e},e.prototype.sliceRange=function(e){var t=this.colCnt,n=this.daySeries.sliceRange(e),r=[];if(n)for(var o=n.firstIndex,i=n.lastIndex,a=o;a<=i;){var s=Math.floor(a/t),l=Math.min((s+1)*t,i+1);r.push({row:s,firstCol:a%t,lastCol:(l-1)%t,isStart:n.isStart&&a===o,isEnd:n.isEnd&&l-1===i}),a=l}return r},e}(),Hi=function(){function e(){this.sliceBusinessHours=it(this._sliceBusinessHours),this.sliceDateSelection=it(this._sliceDateSpan),this.sliceEventStore=it(this._sliceEventStore),this.sliceEventDrag=it(this._sliceInteraction),this.sliceEventResize=it(this._sliceInteraction),this.forceDayIfListItem=!1}return e.prototype.sliceProps=function(e,t,n,r){for(var i=[],a=4;a<arguments.length;a++)i[a-4]=arguments[a];var s=e.eventUiBases,l=this.sliceEventStore.apply(this,o([e.eventStore,s,t,n],i));return{dateSelectionSegs:this.sliceDateSelection.apply(this,o([e.dateSelection,s,r],i)),businessHourSegs:this.sliceBusinessHours.apply(this,o([e.businessHours,t,n,r],i)),fgEventSegs:l.fg,bgEventSegs:l.bg,eventDrag:this.sliceEventDrag.apply(this,o([e.eventDrag,s,t,n],i)),eventResize:this.sliceEventResize.apply(this,o([e.eventResize,s,t,n],i)),eventSelection:e.eventSelection}},e.prototype.sliceNowDate=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return this._sliceDateSpan.apply(this,o([{range:{start:e,end:ge(e,1)},allDay:!1},{},t],n))},e.prototype._sliceBusinessHours=function(e,t,n,r){for(var i=[],a=4;a<arguments.length;a++)i[a-4]=arguments[a];return e?this._sliceEventStore.apply(this,o([Be(e,Oi(t,Boolean(n)),r),{},t,n],i)).bg:[]},e.prototype._sliceEventStore=function(e,t,n,r){for(var o=[],i=4;i<arguments.length;i++)o[i-4]=arguments[i];if(e){var a=ln(e,t,Oi(n,Boolean(r)),r);return{bg:this.sliceEventRanges(a.bg,o),fg:this.sliceEventRanges(a.fg,o)}}return{bg:[],fg:[]}},e.prototype._sliceInteraction=function(e,t,n,r){for(var o=[],i=4;i<arguments.length;i++)o[i-4]=arguments[i];if(!e)return null;var a=ln(e.mutatedEvents,t,Oi(n,Boolean(r)),r);return{segs:this.sliceEventRanges(a.fg,o),affectedInstances:e.affectedEvents.instances,isEvent:e.isEvent}},e.prototype._sliceDateSpan=function(e,t,n){for(var r=[],i=3;i<arguments.length;i++)r[i-3]=arguments[i];if(!e)return[];for(var a=Mn(e,t,n),s=this.sliceRange.apply(this,o([e.range],r)),l=0,u=s;l<u.length;l++){var c=u[l];c.eventRange=a}return s},e.prototype.sliceEventRanges=function(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];n.push.apply(n,this.sliceEventRange(i,t))}return n},e.prototype.sliceEventRange=function(e,t){var n=e.range;this.forceDayIfListItem&&\"list-item\"===e.ui.display&&(n={start:n.start,end:ve(n.start,1)});for(var r=this.sliceRange.apply(this,o([n],t)),i=0,a=r;i<a.length;i++){var s=a[i];s.eventRange=e,s.isStart=e.isStart&&s.isStart,s.isEnd=e.isEnd&&s.isEnd}return r},e}();function Oi(e,t){var n=e.activeRange;return t?n:{start:ge(n.start,e.slotMinTime.milliseconds),end:ge(n.end,e.slotMaxTime.milliseconds-864e5)}}var Ai=/^(visible|hidden)$/,Ui=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleEl=function(e){t.el=e,Yr(t.props.elRef,e)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.liquid,n=e.liquidIsAbsolute,r=t&&n,o=[\"fc-scroller\"];return t&&(n?o.push(\"fc-scroller-liquid-absolute\"):o.push(\"fc-scroller-liquid\")),Hr(\"div\",{ref:this.handleEl,className:o.join(\" \"),style:{overflowX:e.overflowX,overflowY:e.overflowY,left:r&&-(e.overcomeLeft||0)||\"\",right:r&&-(e.overcomeRight||0)||\"\",bottom:r&&-(e.overcomeBottom||0)||\"\",marginLeft:!r&&-(e.overcomeLeft||0)||\"\",marginRight:!r&&-(e.overcomeRight||0)||\"\",marginBottom:!r&&-(e.overcomeBottom||0)||\"\",maxHeight:e.maxHeight||\"\"}},e.children)},t.prototype.needsXScrolling=function(){if(Ai.test(this.props.overflowX))return!1;for(var e=this.el,t=this.el.getBoundingClientRect().width-this.getYScrollbarWidth(),n=e.children,r=0;r<n.length;r++){if(n[r].getBoundingClientRect().width>t)return!0}return!1},t.prototype.needsYScrolling=function(){if(Ai.test(this.props.overflowY))return!1;for(var e=this.el,t=this.el.getBoundingClientRect().height-this.getXScrollbarWidth(),n=e.children,r=0;r<n.length;r++){if(n[r].getBoundingClientRect().height>t)return!0}return!1},t.prototype.getXScrollbarWidth=function(){return Ai.test(this.props.overflowX)?0:this.el.offsetHeight-this.el.clientHeight},t.prototype.getYScrollbarWidth=function(){return Ai.test(this.props.overflowY)?0:this.el.offsetWidth-this.el.clientWidth},t}(jr),Li=function(){function e(e){var t=this;this.masterCallback=e,this.currentMap={},this.depths={},this.callbackMap={},this.handleValue=function(e,n){var r=t,o=r.depths,i=r.currentMap,a=!1,s=!1;null!==e?(a=n in i,i[n]=e,o[n]=(o[n]||0)+1,s=!0):0==--o[n]&&(delete i[n],delete t.callbackMap[n],a=!0),t.masterCallback&&(a&&t.masterCallback(null,String(n)),s&&t.masterCallback(e,String(n)))}}return e.prototype.createRef=function(e){var t=this,n=this.callbackMap[e];return n||(n=this.callbackMap[e]=function(n){t.handleValue(n,String(e))}),n},e.prototype.collect=function(e,t,n){return Fe(this.currentMap,e,t,n)},e.prototype.getAll=function(){return Ue(this.currentMap)},e}();function Wi(e){for(var t=0,n=0,r=F(e,\".fc-scrollgrid-shrink\");n<r.length;n++){var o=r[n];t=Math.max(t,pe(o))}return Math.ceil(t)}function Vi(e,t){return e.liquid&&t.liquid}function zi(e,t){return null!=t.maxHeight||Vi(e,t)}function Fi(e,t,n){var r=n.expandRows;return\"function\"==typeof t.content?t.content(n):Hr(\"table\",{className:[t.tableClassName,e.syncRowHeights?\"fc-scrollgrid-sync-table\":\"\"].join(\" \"),style:{minWidth:n.tableMinWidth,width:n.clientWidth,height:r?n.clientHeight:\"\"}},n.tableColGroupNode,Hr(\"tbody\",{},\"function\"==typeof t.rowContent?t.rowContent(n):t.rowContent))}function Bi(e,t){return ot(e,t,Le)}function ji(e,t){for(var n=[],r=0,i=e;r<i.length;r++)for(var a=i[r],s=a.span||1,l=0;l<s;l++)n.push(Hr(\"col\",{style:{width:\"shrink\"===a.width?Gi(t):a.width||\"\",minWidth:a.minWidth||\"\"}}));return Hr.apply(void 0,o([\"colgroup\",{}],n))}function Gi(e){return null==e?4:e}function qi(e){for(var t=0,n=e;t<n.length;t++){if(\"shrink\"===n[t].width)return!0}return!1}function Yi(e,t){var n=[\"fc-scrollgrid\",t.theme.getClass(\"table\")];return e&&n.push(\"fc-scrollgrid-liquid\"),n}function Zi(e,t){var n=[\"fc-scrollgrid-section\",\"fc-scrollgrid-section-\"+e.type,e.className];return t&&e.liquid&&null==e.maxHeight&&n.push(\"fc-scrollgrid-section-liquid\"),e.isSticky&&n.push(\"fc-scrollgrid-section-sticky\"),n}function Xi(e){return Hr(\"div\",{className:\"fc-scrollgrid-sticky-shim\",style:{width:e.clientWidth,minWidth:e.tableMinWidth}})}function Ki(e){var t=e.stickyHeaderDates;return null!=t&&\"auto\"!==t||(t=\"auto\"===e.height||\"auto\"===e.viewHeight),t}function Ji(e){var t=e.stickyFooterScrollbar;return null!=t&&\"auto\"!==t||(t=\"auto\"===e.height||\"auto\"===e.viewHeight),t}var $i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.processCols=it((function(e){return e}),Bi),t.renderMicroColGroup=it(ji),t.scrollerRefs=new Li,t.scrollerElRefs=new Li(t._handleScrollerEl.bind(t)),t.state={shrinkWidth:null,forceYScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{}},t.handleSizing=function(){t.setState(r({shrinkWidth:t.computeShrinkWidth()},t.computeScrollerDims()))},t}return n(t,e),t.prototype.render=function(){for(var e,t=this.props,n=this.state,r=this.context,i=t.sections||[],a=this.processCols(t.cols),s=this.renderMicroColGroup(a,n.shrinkWidth),l=Yi(t.liquid,r),u=i.length,c=0,d=[],p=[],f=[];c<u&&\"header\"===(e=i[c]).type;)d.push(this.renderSection(e,c,s)),c++;for(;c<u&&\"body\"===(e=i[c]).type;)p.push(this.renderSection(e,c,s)),c++;for(;c<u&&\"footer\"===(e=i[c]).type;)f.push(this.renderSection(e,c,s)),c++;var h=!cr();return Hr(\"table\",{className:l.join(\" \"),style:{height:t.height}},Boolean(!h&&d.length)&&Hr.apply(void 0,o([\"thead\",{}],d)),Boolean(!h&&p.length)&&Hr.apply(void 0,o([\"tbody\",{}],p)),Boolean(!h&&f.length)&&Hr.apply(void 0,o([\"tfoot\",{}],f)),h&&Hr.apply(void 0,o([\"tbody\",{}],d,p,f)))},t.prototype.renderSection=function(e,t,n){return\"outerContent\"in e?Hr(Ur,{key:e.key},e.outerContent):Hr(\"tr\",{key:e.key,className:Zi(e,this.props.liquid).join(\" \")},this.renderChunkTd(e,t,n,e.chunk))},t.prototype.renderChunkTd=function(e,t,n,r){if(\"outerContent\"in r)return r.outerContent;var o=this.props,i=this.state,a=i.forceYScrollbars,s=i.scrollerClientWidths,l=i.scrollerClientHeights,u=zi(o,e),c=Vi(o,e),d=o.liquid?a?\"scroll\":u?\"auto\":\"hidden\":\"visible\",p=Fi(e,r,{tableColGroupNode:n,tableMinWidth:\"\",clientWidth:void 0!==s[t]?s[t]:null,clientHeight:void 0!==l[t]?l[t]:null,expandRows:e.expandRows,syncRowHeights:!1,rowSyncHeights:[],reportRowHeightChange:function(){}});return Hr(\"td\",{ref:r.elRef},Hr(\"div\",{className:\"fc-scroller-harness\"+(c?\" fc-scroller-harness-liquid\":\"\")},Hr(Ui,{ref:this.scrollerRefs.createRef(t),elRef:this.scrollerElRefs.createRef(t),overflowY:d,overflowX:o.liquid?\"hidden\":\"visible\",maxHeight:e.maxHeight,liquid:c,liquidIsAbsolute:!0},p)))},t.prototype._handleScrollerEl=function(e,t){var n=parseInt(t,10);Yr(this.props.sections[n].chunk.scrollerElRef,e)},t.prototype.componentDidMount=function(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)},t.prototype.componentDidUpdate=function(){this.handleSizing()},t.prototype.componentWillUnmount=function(){this.context.removeResizeHandler(this.handleSizing)},t.prototype.computeShrinkWidth=function(){return qi(this.props.cols)?Wi(this.scrollerElRefs.getAll()):0},t.prototype.computeScrollerDims=function(){for(var e=Sr(),t=this.props.sections.length,n=this.scrollerRefs,r=this.scrollerElRefs,o=!1,i={},a={},s=0;s<t;s++){var l=n.currentMap[s];if(l&&l.needsYScrolling()){o=!0;break}}for(s=0;s<t;s++){var u=r.currentMap[s];if(u){var c=u.parentNode;i[s]=Math.floor(c.getBoundingClientRect().width-(o?e.y:0)),a[s]=Math.floor(c.getBoundingClientRect().height)}}return{forceYScrollbars:o,scrollerClientWidths:i,scrollerClientHeights:a}},t}(jr);$i.addStateEquality({scrollerClientWidths:Le,scrollerClientHeights:Le});var Qi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.elRef=Ar(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=e.seg,o=r.eventRange,i=o.ui,a={event:new zn(t,o.def,o.instance),view:t.viewApi,timeText:e.timeText,textColor:i.textColor,backgroundColor:i.backgroundColor,borderColor:i.borderColor,isDraggable:!e.disableDragging&&gn(r,t),isStartResizable:!e.disableResizing&&mn(r,t),isEndResizable:!e.disableResizing&&yn(r),isMirror:Boolean(e.isDragging||e.isResizing||e.isDateSelecting),isStart:Boolean(r.isStart),isEnd:Boolean(r.isEnd),isPast:Boolean(e.isPast),isFuture:Boolean(e.isFuture),isToday:Boolean(e.isToday),isSelected:Boolean(e.isSelected),isDragging:Boolean(e.isDragging),isResizing:Boolean(e.isResizing)},s=Dn(a).concat(i.classNames);return Hr(uo,{hookProps:a,classNames:n.eventClassNames,content:n.eventContent,defaultContent:e.defaultContent,didMount:n.eventDidMount,willUnmount:n.eventWillUnmount,elRef:this.elRef},(function(t,n,r,o){return e.children(t,s.concat(n),r,o,a)}))},t.prototype.componentDidMount=function(){cn(this.elRef.current,this.props.seg)},t.prototype.componentDidUpdate=function(e){var t=this.props.seg;t!==e.seg&&cn(this.elRef.current,t)},t}(jr),ea=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.seg,o=t.options.eventTimeFormat||e.defaultTimeFormat,i=En(n,o,t,e.defaultDisplayEventTime,e.defaultDisplayEventEnd);return Hr(Qi,{seg:n,timeText:i,disableDragging:e.disableDragging,disableResizing:e.disableResizing,defaultContent:e.defaultContent||ta,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(t,o,i,a,s){return Hr(\"a\",r({className:e.extraClassNames.concat(o).join(\" \"),style:{borderColor:s.borderColor,backgroundColor:s.backgroundColor},ref:t},function(e){var t=e.eventRange.def.url;return t?{href:t}:{}}(n)),Hr(\"div\",{className:\"fc-event-main\",ref:i,style:{color:s.textColor}},a),s.isStartResizable&&Hr(\"div\",{className:\"fc-event-resizer fc-event-resizer-start\"}),s.isEndResizable&&Hr(\"div\",{className:\"fc-event-resizer fc-event-resizer-end\"}))}))},t}(jr);function ta(e){return Hr(\"div\",{className:\"fc-event-main-frame\"},e.timeText&&Hr(\"div\",{className:\"fc-event-time\"},e.timeText),Hr(\"div\",{className:\"fc-event-title-container\"},Hr(\"div\",{className:\"fc-event-title fc-sticky\"},e.event.title||Hr(Ur,null,\"\u00A0\"))))}var na=function(e){return Hr(zr.Consumer,null,(function(t){var n=t.options,r={isAxis:e.isAxis,date:t.dateEnv.toDate(e.date),view:t.viewApi};return Hr(uo,{hookProps:r,classNames:n.nowIndicatorClassNames,content:n.nowIndicatorContent,didMount:n.nowIndicatorDidMount,willUnmount:n.nowIndicatorWillUnmount},e.children)}))},ra=St({day:\"numeric\"}),oa=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refineHookProps=at(aa),t.normalizeClassNames=vo(),t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=this.refineHookProps({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraProps:e.extraHookProps,viewApi:t.viewApi,dateEnv:t.dateEnv}),o=vr(r,t.theme).concat(r.isDisabled?[]:this.normalizeClassNames(n.dayCellClassNames,r)),i=r.isDisabled?{}:{\"data-date\":tt(e.date)};return Hr(ho,{hookProps:r,didMount:n.dayCellDidMount,willUnmount:n.dayCellWillUnmount,elRef:e.elRef},(function(t){return e.children(t,o,i,r.isDisabled)}))},t}(jr),ia=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,r=aa({date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraProps:e.extraHookProps,viewApi:t.viewApi,dateEnv:t.dateEnv});return Hr(po,{hookProps:r,content:n.dayCellContent,defaultContent:e.defaultContent},e.children)},t}(jr);function aa(e){var t=e.date,n=e.dateEnv,o=hr(t,e.todayRange,null,e.dateProfile);return r(r(r({date:n.toDate(t),view:e.viewApi},o),{dayNumberText:e.showDayNumber?n.format(t,ra):\"\"}),e.extraProps)}function sa(e){return Hr(\"div\",{className:\"fc-\"+e})}var la=function(e){return Hr(Qi,{defaultContent:ua,seg:e.seg,timeText:\"\",disableDragging:!0,disableResizing:!0,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(e,t,n,r,o){return Hr(\"div\",{ref:e,className:[\"fc-bg-event\"].concat(t).join(\" \"),style:{backgroundColor:o.backgroundColor}},r)}))};function ua(e){return e.event.title&&Hr(\"div\",{className:\"fc-event-title\"},e.event.title)}var ca=function(e){return Hr(zr.Consumer,null,(function(t){var n=t.dateEnv,r=t.options,o=e.date,i=r.weekNumberFormat||e.defaultFormat,a=n.computeWeekNumber(o),s=n.format(o,i);return Hr(uo,{hookProps:{num:a,text:s,date:o},classNames:r.weekNumberClassNames,content:r.weekNumberContent,defaultContent:da,didMount:r.weekNumberDidMount,willUnmount:r.weekNumberWillUnmount},e.children)}))};function da(e){return e.text}var pa=function(e){function t(t,n){void 0===n&&(n={});var o=e.call(this)||this;return o.isRendering=!1,o.isRendered=!1,o.currentClassNames=[],o.customContentRenderId=0,o.handleAction=function(e){switch(e.type){case\"SET_EVENT_DRAG\":case\"SET_EVENT_RESIZE\":o.renderRunner.tryDrain()}},o.handleData=function(e){o.currentData=e,o.renderRunner.request(e.calendarOptions.rerenderDelay)},o.handleRenderRequest=function(){if(o.isRendering){o.isRendered=!0;var e=o.currentData;Or(Hr(bi,{options:e.calendarOptions,theme:e.theme,emitter:e.emitter},(function(t,n,i,a){return o.setClassNames(t),o.setHeight(n),Hr(co.Provider,{value:o.customContentRenderId},Hr(Ei,r({isHeightAuto:i,forPrint:a},e)))})),o.el)}else o.isRendered&&(o.isRendered=!1,Or(null,o.el),o.setClassNames([]),o.setHeight(\"\"));Wr()},o.el=t,o.renderRunner=new Go(o.handleRenderRequest),new Zo({optionOverrides:n,calendarApi:o,onAction:o.handleAction,onData:o.handleData}),o}return n(t,e),Object.defineProperty(t.prototype,\"view\",{get:function(){return this.currentData.viewApi},enumerable:!1,configurable:!0}),t.prototype.render=function(){var e=this.isRendering;e?this.customContentRenderId++:this.isRendering=!0,this.renderRunner.request(),e&&this.updateSize()},t.prototype.destroy=function(){this.isRendering&&(this.isRendering=!1,this.renderRunner.request())},t.prototype.updateSize=function(){e.prototype.updateSize.call(this),Wr()},t.prototype.batchRendering=function(e){this.renderRunner.pause(\"batchRendering\"),e(),this.renderRunner.resume(\"batchRendering\")},t.prototype.pauseRendering=function(){this.renderRunner.pause(\"pauseRendering\")},t.prototype.resumeRendering=function(){this.renderRunner.resume(\"pauseRendering\",!0)},t.prototype.resetOptions=function(e,t){this.currentDataManager.resetOptions(e,t)},t.prototype.setClassNames=function(e){if(!ot(e,this.currentClassNames)){for(var t=this.el.classList,n=0,r=this.currentClassNames;n<r.length;n++){var o=r[n];t.remove(o)}for(var i=0,a=e;i<a.length;i++){o=a[i];t.add(o)}this.currentClassNames=e}},t.prototype.setHeight=function(e){G(this.el,\"height\",e)},t}(Vn);di.touchMouseIgnoreWait=500;var fa=0,ha=0,va=!1,ga=function(){function e(e){var t=this;this.subjectEl=null,this.selector=\"\",this.handleSelector=\"\",this.shouldIgnoreMove=!1,this.shouldWatchScroll=!0,this.isDragging=!1,this.isTouchDragging=!1,this.wasTouchScroll=!1,this.handleMouseDown=function(e){if(!t.shouldIgnoreMouse()&&function(e){return 0===e.button&&!e.ctrlKey}(e)&&t.tryStart(e)){var n=t.createEventFromMouse(e,!0);t.emitter.trigger(\"pointerdown\",n),t.initScrollWatch(n),t.shouldIgnoreMove||document.addEventListener(\"mousemove\",t.handleMouseMove),document.addEventListener(\"mouseup\",t.handleMouseUp)}},this.handleMouseMove=function(e){var n=t.createEventFromMouse(e);t.recordCoords(n),t.emitter.trigger(\"pointermove\",n)},this.handleMouseUp=function(e){document.removeEventListener(\"mousemove\",t.handleMouseMove),document.removeEventListener(\"mouseup\",t.handleMouseUp),t.emitter.trigger(\"pointerup\",t.createEventFromMouse(e)),t.cleanup()},this.handleTouchStart=function(e){if(t.tryStart(e)){t.isTouchDragging=!0;var n=t.createEventFromTouch(e,!0);t.emitter.trigger(\"pointerdown\",n),t.initScrollWatch(n);var r=e.target;t.shouldIgnoreMove||r.addEventListener(\"touchmove\",t.handleTouchMove),r.addEventListener(\"touchend\",t.handleTouchEnd),r.addEventListener(\"touchcancel\",t.handleTouchEnd),window.addEventListener(\"scroll\",t.handleTouchScroll,!0)}},this.handleTouchMove=function(e){var n=t.createEventFromTouch(e);t.recordCoords(n),t.emitter.trigger(\"pointermove\",n)},this.handleTouchEnd=function(e){if(t.isDragging){var n=e.target;n.removeEventListener(\"touchmove\",t.handleTouchMove),n.removeEventListener(\"touchend\",t.handleTouchEnd),n.removeEventListener(\"touchcancel\",t.handleTouchEnd),window.removeEventListener(\"scroll\",t.handleTouchScroll,!0),t.emitter.trigger(\"pointerup\",t.createEventFromTouch(e)),t.cleanup(),t.isTouchDragging=!1,fa++,setTimeout((function(){fa--}),di.touchMouseIgnoreWait)}},this.handleTouchScroll=function(){t.wasTouchScroll=!0},this.handleScroll=function(e){if(!t.shouldIgnoreMove){var n=window.pageXOffset-t.prevScrollX+t.prevPageX,r=window.pageYOffset-t.prevScrollY+t.prevPageY;t.emitter.trigger(\"pointermove\",{origEvent:e,isTouch:t.isTouchDragging,subjectEl:t.subjectEl,pageX:n,pageY:r,deltaX:n-t.origPageX,deltaY:r-t.origPageY})}},this.containerEl=e,this.emitter=new kr,e.addEventListener(\"mousedown\",this.handleMouseDown),e.addEventListener(\"touchstart\",this.handleTouchStart,{passive:!0}),ha++||window.addEventListener(\"touchmove\",ma,{passive:!1})}return e.prototype.destroy=function(){this.containerEl.removeEventListener(\"mousedown\",this.handleMouseDown),this.containerEl.removeEventListener(\"touchstart\",this.handleTouchStart,{passive:!0}),--ha||window.removeEventListener(\"touchmove\",ma,{passive:!1})},e.prototype.tryStart=function(e){var t=this.querySubjectEl(e),n=e.target;return!(!t||this.handleSelector&&!V(n,this.handleSelector))&&(this.subjectEl=t,this.isDragging=!0,this.wasTouchScroll=!1,!0)},e.prototype.cleanup=function(){va=!1,this.isDragging=!1,this.subjectEl=null,this.destroyScrollWatch()},e.prototype.querySubjectEl=function(e){return this.selector?V(e.target,this.selector):this.containerEl},e.prototype.shouldIgnoreMouse=function(){return fa||this.isTouchDragging},e.prototype.cancelTouchScroll=function(){this.isDragging&&(va=!0)},e.prototype.initScrollWatch=function(e){this.shouldWatchScroll&&(this.recordCoords(e),window.addEventListener(\"scroll\",this.handleScroll,!0))},e.prototype.recordCoords=function(e){this.shouldWatchScroll&&(this.prevPageX=e.pageX,this.prevPageY=e.pageY,this.prevScrollX=window.pageXOffset,this.prevScrollY=window.pageYOffset)},e.prototype.destroyScrollWatch=function(){this.shouldWatchScroll&&window.removeEventListener(\"scroll\",this.handleScroll,!0)},e.prototype.createEventFromMouse=function(e,t){var n=0,r=0;return t?(this.origPageX=e.pageX,this.origPageY=e.pageY):(n=e.pageX-this.origPageX,r=e.pageY-this.origPageY),{origEvent:e,isTouch:!1,subjectEl:this.subjectEl,pageX:e.pageX,pageY:e.pageY,deltaX:n,deltaY:r}},e.prototype.createEventFromTouch=function(e,t){var n,r,o=e.touches,i=0,a=0;return o&&o.length?(n=o[0].pageX,r=o[0].pageY):(n=e.pageX,r=e.pageY),t?(this.origPageX=n,this.origPageY=r):(i=n-this.origPageX,a=r-this.origPageY),{origEvent:e,isTouch:!0,subjectEl:this.subjectEl,pageX:n,pageY:r,deltaX:i,deltaY:a}},e}();function ma(e){va&&e.preventDefault()}var ya=function(){function e(){this.isVisible=!1,this.sourceEl=null,this.mirrorEl=null,this.sourceElRect=null,this.parentNode=document.body,this.zIndex=9999,this.revertDuration=0}return e.prototype.start=function(e,t,n){this.sourceEl=e,this.sourceElRect=this.sourceEl.getBoundingClientRect(),this.origScreenX=t-window.pageXOffset,this.origScreenY=n-window.pageYOffset,this.deltaX=0,this.deltaY=0,this.updateElPosition()},e.prototype.handleMove=function(e,t){this.deltaX=e-window.pageXOffset-this.origScreenX,this.deltaY=t-window.pageYOffset-this.origScreenY,this.updateElPosition()},e.prototype.setIsVisible=function(e){e?this.isVisible||(this.mirrorEl&&(this.mirrorEl.style.display=\"\"),this.isVisible=e,this.updateElPosition()):this.isVisible&&(this.mirrorEl&&(this.mirrorEl.style.display=\"none\"),this.isVisible=e)},e.prototype.stop=function(e,t){var n=this,r=function(){n.cleanup(),t()};e&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)?this.doRevertAnimation(r,this.revertDuration):setTimeout(r,0)},e.prototype.doRevertAnimation=function(e,t){var n=this.mirrorEl,r=this.sourceEl.getBoundingClientRect();n.style.transition=\"top \"+t+\"ms,left \"+t+\"ms\",j(n,{left:r.left,top:r.top}),K(n,(function(){n.style.transition=\"\",e()}))},e.prototype.cleanup=function(){this.mirrorEl&&(W(this.mirrorEl),this.mirrorEl=null),this.sourceEl=null},e.prototype.updateElPosition=function(){this.sourceEl&&this.isVisible&&j(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY})},e.prototype.getMirrorEl=function(){var e=this.sourceElRect,t=this.mirrorEl;return t||((t=this.mirrorEl=this.sourceEl.cloneNode(!0)).classList.add(\"fc-unselectable\"),t.classList.add(\"fc-event-dragging\"),j(t,{position:\"fixed\",zIndex:this.zIndex,visibility:\"\",boxSizing:\"border-box\",width:e.right-e.left,height:e.bottom-e.top,right:\"auto\",bottom:\"auto\",margin:0}),this.parentNode.appendChild(t)),t},e}(),Ea=function(e){function t(t,n){var r=e.call(this)||this;return r.handleScroll=function(){r.scrollTop=r.scrollController.getScrollTop(),r.scrollLeft=r.scrollController.getScrollLeft(),r.handleScrollChange()},r.scrollController=t,r.doesListening=n,r.scrollTop=r.origScrollTop=t.getScrollTop(),r.scrollLeft=r.origScrollLeft=t.getScrollLeft(),r.scrollWidth=t.getScrollWidth(),r.scrollHeight=t.getScrollHeight(),r.clientWidth=t.getClientWidth(),r.clientHeight=t.getClientHeight(),r.clientRect=r.computeClientRect(),r.doesListening&&r.getEventTarget().addEventListener(\"scroll\",r.handleScroll),r}return n(t,e),t.prototype.destroy=function(){this.doesListening&&this.getEventTarget().removeEventListener(\"scroll\",this.handleScroll)},t.prototype.getScrollTop=function(){return this.scrollTop},t.prototype.getScrollLeft=function(){return this.scrollLeft},t.prototype.setScrollTop=function(e){this.scrollController.setScrollTop(e),this.doesListening||(this.scrollTop=Math.max(Math.min(e,this.getMaxScrollTop()),0),this.handleScrollChange())},t.prototype.setScrollLeft=function(e){this.scrollController.setScrollLeft(e),this.doesListening||(this.scrollLeft=Math.max(Math.min(e,this.getMaxScrollLeft()),0),this.handleScrollChange())},t.prototype.getClientWidth=function(){return this.clientWidth},t.prototype.getClientHeight=function(){return this.clientHeight},t.prototype.getScrollWidth=function(){return this.scrollWidth},t.prototype.getScrollHeight=function(){return this.scrollHeight},t.prototype.handleScrollChange=function(){},t}(xr),Sa=function(e){function t(t,n){return e.call(this,new _r(t),n)||this}return n(t,e),t.prototype.getEventTarget=function(){return this.scrollController.el},t.prototype.computeClientRect=function(){return Cr(this.scrollController.el)},t}(Ea),Da=function(e){function t(t){return e.call(this,new Ir,t)||this}return n(t,e),t.prototype.getEventTarget=function(){return window},t.prototype.computeClientRect=function(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight}},t.prototype.handleScrollChange=function(){this.clientRect=this.computeClientRect()},t}(Ea),ba=\"function\"==typeof performance?performance.now:Date.now,Ca=function(){function e(){var e=this;this.isEnabled=!0,this.scrollQuery=[window,\".fc-scroller\"],this.edgeThreshold=50,this.maxVelocity=300,this.pointerScreenX=null,this.pointerScreenY=null,this.isAnimating=!1,this.scrollCaches=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.animate=function(){if(e.isAnimating){var t=e.computeBestEdge(e.pointerScreenX+window.pageXOffset,e.pointerScreenY+window.pageYOffset);if(t){var n=ba();e.handleSide(t,(n-e.msSinceRequest)/1e3),e.requestAnimation(n)}else e.isAnimating=!1}}}return e.prototype.start=function(e,t){this.isEnabled&&(this.scrollCaches=this.buildCaches(),this.pointerScreenX=null,this.pointerScreenY=null,this.everMovedUp=!1,this.everMovedDown=!1,this.everMovedLeft=!1,this.everMovedRight=!1,this.handleMove(e,t))},e.prototype.handleMove=function(e,t){if(this.isEnabled){var n=e-window.pageXOffset,r=t-window.pageYOffset,o=null===this.pointerScreenY?0:r-this.pointerScreenY,i=null===this.pointerScreenX?0:n-this.pointerScreenX;o<0?this.everMovedUp=!0:o>0&&(this.everMovedDown=!0),i<0?this.everMovedLeft=!0:i>0&&(this.everMovedRight=!0),this.pointerScreenX=n,this.pointerScreenY=r,this.isAnimating||(this.isAnimating=!0,this.requestAnimation(ba()))}},e.prototype.stop=function(){if(this.isEnabled){this.isAnimating=!1;for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}this.scrollCaches=null}},e.prototype.requestAnimation=function(e){this.msSinceRequest=e,requestAnimationFrame(this.animate)},e.prototype.handleSide=function(e,t){var n=e.scrollCache,r=this.edgeThreshold,o=r-e.distance,i=o*o/(r*r)*this.maxVelocity*t,a=1;switch(e.name){case\"left\":a=-1;case\"right\":n.setScrollLeft(n.getScrollLeft()+i*a);break;case\"top\":a=-1;case\"bottom\":n.setScrollTop(n.getScrollTop()+i*a)}},e.prototype.computeBestEdge=function(e,t){for(var n=this.edgeThreshold,r=null,o=0,i=this.scrollCaches;o<i.length;o++){var a=i[o],s=a.clientRect,l=e-s.left,u=s.right-e,c=t-s.top,d=s.bottom-t;l>=0&&u>=0&&c>=0&&d>=0&&(c<=n&&this.everMovedUp&&a.canScrollUp()&&(!r||r.distance>c)&&(r={scrollCache:a,name:\"top\",distance:c}),d<=n&&this.everMovedDown&&a.canScrollDown()&&(!r||r.distance>d)&&(r={scrollCache:a,name:\"bottom\",distance:d}),l<=n&&this.everMovedLeft&&a.canScrollLeft()&&(!r||r.distance>l)&&(r={scrollCache:a,name:\"left\",distance:l}),u<=n&&this.everMovedRight&&a.canScrollRight()&&(!r||r.distance>u)&&(r={scrollCache:a,name:\"right\",distance:u}))}return r},e.prototype.buildCaches=function(){return this.queryScrollEls().map((function(e){return e===window?new Da(!1):new Sa(e,!1)}))},e.prototype.queryScrollEls=function(){for(var e=[],t=0,n=this.scrollQuery;t<n.length;t++){var r=n[t];\"object\"==typeof r?e.push(r):e.push.apply(e,Array.prototype.slice.call(document.querySelectorAll(r)))}return e},e}(),wa=function(e){function t(t,n){var r=e.call(this,t)||this;r.delay=null,r.minDistance=0,r.touchScrollAllowed=!0,r.mirrorNeedsRevert=!1,r.isInteracting=!1,r.isDragging=!1,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,r.delayTimeoutId=null,r.onPointerDown=function(e){r.isDragging||(r.isInteracting=!0,r.isDelayEnded=!1,r.isDistanceSurpassed=!1,te(document.body),re(document.body),e.isTouch||e.origEvent.preventDefault(),r.emitter.trigger(\"pointerdown\",e),r.isInteracting&&!r.pointer.shouldIgnoreMove&&(r.mirror.setIsVisible(!1),r.mirror.start(e.subjectEl,e.pageX,e.pageY),r.startDelay(e),r.minDistance||r.handleDistanceSurpassed(e)))},r.onPointerMove=function(e){if(r.isInteracting){if(r.emitter.trigger(\"pointermove\",e),!r.isDistanceSurpassed){var t=r.minDistance,n=e.deltaX,o=e.deltaY;n*n+o*o>=t*t&&r.handleDistanceSurpassed(e)}r.isDragging&&(\"scroll\"!==e.origEvent.type&&(r.mirror.handleMove(e.pageX,e.pageY),r.autoScroller.handleMove(e.pageX,e.pageY)),r.emitter.trigger(\"dragmove\",e))}},r.onPointerUp=function(e){r.isInteracting&&(r.isInteracting=!1,ne(document.body),oe(document.body),r.emitter.trigger(\"pointerup\",e),r.isDragging&&(r.autoScroller.stop(),r.tryStopDrag(e)),r.delayTimeoutId&&(clearTimeout(r.delayTimeoutId),r.delayTimeoutId=null))};var o=r.pointer=new ga(t);return o.emitter.on(\"pointerdown\",r.onPointerDown),o.emitter.on(\"pointermove\",r.onPointerMove),o.emitter.on(\"pointerup\",r.onPointerUp),n&&(o.selector=n),r.mirror=new ya,r.autoScroller=new Ca,r}return n(t,e),t.prototype.destroy=function(){this.pointer.destroy(),this.onPointerUp({})},t.prototype.startDelay=function(e){var t=this;\"number\"==typeof this.delay?this.delayTimeoutId=setTimeout((function(){t.delayTimeoutId=null,t.handleDelayEnd(e)}),this.delay):this.handleDelayEnd(e)},t.prototype.handleDelayEnd=function(e){this.isDelayEnded=!0,this.tryStartDrag(e)},t.prototype.handleDistanceSurpassed=function(e){this.isDistanceSurpassed=!0,this.tryStartDrag(e)},t.prototype.tryStartDrag=function(e){this.isDelayEnded&&this.isDistanceSurpassed&&(this.pointer.wasTouchScroll&&!this.touchScrollAllowed||(this.isDragging=!0,this.mirrorNeedsRevert=!1,this.autoScroller.start(e.pageX,e.pageY),this.emitter.trigger(\"dragstart\",e),!1===this.touchScrollAllowed&&this.pointer.cancelTouchScroll()))},t.prototype.tryStopDrag=function(e){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,e))},t.prototype.stopDrag=function(e){this.isDragging=!1,this.emitter.trigger(\"dragend\",e)},t.prototype.setIgnoreMove=function(e){this.pointer.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){this.mirror.setIsVisible(e)},t.prototype.setMirrorNeedsRevert=function(e){this.mirrorNeedsRevert=e},t.prototype.setAutoScrollEnabled=function(e){this.autoScroller.isEnabled=e},t}(ci),Ra=function(){function e(e){this.origRect=wr(e),this.scrollCaches=Rr(e).map((function(e){return new Sa(e,!0)}))}return e.prototype.destroy=function(){for(var e=0,t=this.scrollCaches;e<t.length;e++){t[e].destroy()}},e.prototype.computeLeft=function(){for(var e=this.origRect.left,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollLeft-r.getScrollLeft()}return e},e.prototype.computeTop=function(){for(var e=this.origRect.top,t=0,n=this.scrollCaches;t<n.length;t++){var r=n[t];e+=r.origScrollTop-r.getScrollTop()}return e},e.prototype.isWithinClipping=function(e,t){for(var n,r,o={left:e,top:t},i=0,a=this.scrollCaches;i<a.length;i++){var s=a[i];if(n=s.getEventTarget(),r=void 0,\"HTML\"!==(r=n.tagName)&&\"BODY\"!==r&&!ir(o,s.clientRect))return!1}return!0},e}();var Ta=function(){function e(e,t){var n=this;this.useSubjectCenter=!1,this.requireInitial=!0,this.initialHit=null,this.movingHit=null,this.finalHit=null,this.handlePointerDown=function(e){var t=n.dragging;n.initialHit=null,n.movingHit=null,n.finalHit=null,n.prepareHits(),n.processFirstCoord(e),n.initialHit||!n.requireInitial?(t.setIgnoreMove(!1),n.emitter.trigger(\"pointerdown\",e)):t.setIgnoreMove(!0)},this.handleDragStart=function(e){n.emitter.trigger(\"dragstart\",e),n.handleMove(e,!0)},this.handleDragMove=function(e){n.emitter.trigger(\"dragmove\",e),n.handleMove(e)},this.handlePointerUp=function(e){n.releaseHits(),n.emitter.trigger(\"pointerup\",e)},this.handleDragEnd=function(e){n.movingHit&&n.emitter.trigger(\"hitupdate\",null,!0,e),n.finalHit=n.movingHit,n.movingHit=null,n.emitter.trigger(\"dragend\",e)},this.droppableStore=t,e.emitter.on(\"pointerdown\",this.handlePointerDown),e.emitter.on(\"dragstart\",this.handleDragStart),e.emitter.on(\"dragmove\",this.handleDragMove),e.emitter.on(\"pointerup\",this.handlePointerUp),e.emitter.on(\"dragend\",this.handleDragEnd),this.dragging=e,this.emitter=new kr}return e.prototype.processFirstCoord=function(e){var t,n={left:e.pageX,top:e.pageY},r=n,o=e.subjectEl;o!==document&&(r=sr(r,t=wr(o)));var i=this.initialHit=this.queryHitForOffset(r.left,r.top);if(i){if(this.useSubjectCenter&&t){var a=ar(t,i.rect);a&&(r=lr(a))}this.coordAdjust=ur(r,n)}else this.coordAdjust={left:0,top:0}},e.prototype.handleMove=function(e,t){var n=this.queryHitForOffset(e.pageX+this.coordAdjust.left,e.pageY+this.coordAdjust.top);!t&&ka(this.movingHit,n)||(this.movingHit=n,this.emitter.trigger(\"hitupdate\",n,!1,e))},e.prototype.prepareHits=function(){this.offsetTrackers=Oe(this.droppableStore,(function(e){return e.component.prepareHits(),new Ra(e.el)}))},e.prototype.releaseHits=function(){var e=this.offsetTrackers;for(var t in e)e[t].destroy();this.offsetTrackers={}},e.prototype.queryHitForOffset=function(e,t){var n=this.droppableStore,r=this.offsetTrackers,o=null;for(var i in n){var a=n[i].component,s=r[i];if(s&&s.isWithinClipping(e,t)){var l=s.computeLeft(),u=s.computeTop(),c=e-l,d=t-u,p=s.origRect,f=p.right-p.left,h=p.bottom-p.top;if(c>=0&&c<f&&d>=0&&d<h){var v=a.queryHit(c,d,f,h),g=a.context.getCurrentData().dateProfile;v&&an(g.activeRange,v.dateSpan.range)&&(!o||v.layer>o.layer)&&(v.rect.left+=l,v.rect.right+=l,v.rect.top+=u,v.rect.bottom+=u,o=v)}}}return o},e}();function ka(e,t){return!e&&!t||Boolean(e)===Boolean(t)&&Rn(e.dateSpan,t.dateSpan)}function Ma(e,t){for(var n,o,i={},a=0,s=t.pluginHooks.datePointTransforms;a<s.length;a++){var l=s[a];r(i,l(e,t))}return r(i,(n=e,{date:(o=t.dateEnv).toDate(n.range.start),dateStr:o.formatIso(n.range.start,{omitTime:n.allDay}),allDay:n.allDay})),i}var xa=function(e){function t(t){var n=e.call(this,t)||this;n.handlePointerDown=function(e){var t=n.dragging,r=e.origEvent.target;t.setIgnoreMove(!n.component.isValidDateDownEl(r))},n.handleDragEnd=function(e){var t=n.component;if(!n.dragging.pointer.wasTouchScroll){var o=n.hitDragging,i=o.initialHit,a=o.finalHit;if(i&&a&&ka(i,a)){var s=t.context,l=r(r({},Ma(i.dateSpan,s)),{dayEl:i.dayEl,jsEvent:e.origEvent,view:s.viewApi||s.calendarApi.view});s.emitter.trigger(\"dateClick\",l)}}},n.dragging=new wa(t.el),n.dragging.autoScroller.isEnabled=!1;var o=n.hitDragging=new Ta(n.dragging,li(t));return o.emitter.on(\"pointerdown\",n.handlePointerDown),o.emitter.on(\"dragend\",n.handleDragEnd),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t}(ai),_a=function(e){function t(t){var n=e.call(this,t)||this;n.dragSelection=null,n.handlePointerDown=function(e){var t=n,r=t.component,o=t.dragging,i=r.context.options.selectable&&r.isValidDateDownEl(e.origEvent.target);o.setIgnoreMove(!i),o.delay=e.isTouch?function(e){var t=e.context.options,n=t.selectLongPressDelay;null==n&&(n=t.longPressDelay);return n}(r):null},n.handleDragStart=function(e){n.component.context.calendarApi.unselect(e)},n.handleHitUpdate=function(e,t){var o=n.component.context,i=null,a=!1;e&&((i=function(e,t,n){var o=e.dateSpan,i=t.dateSpan,a=[o.range.start,o.range.end,i.range.start,i.range.end];a.sort(ce);for(var s={},l=0,u=n;l<u.length;l++){var c=(0,u[l])(e,t);if(!1===c)return null;c&&r(s,c)}return s.range={start:a[0],end:a[3]},s.allDay=o.allDay,s}(n.hitDragging.initialHit,e,o.pluginHooks.dateSelectionTransformers))&&n.component.isDateSelectionValid(i)||(a=!0,i=null)),i?o.dispatch({type:\"SELECT_DATES\",selection:i}):t||o.dispatch({type:\"UNSELECT_DATES\"}),a?Q():ee(),t||(n.dragSelection=i)},n.handlePointerUp=function(e){n.dragSelection&&(xn(n.dragSelection,e,n.component.context),n.dragSelection=null)};var o=t.component.context.options,i=n.dragging=new wa(t.el);i.touchScrollAllowed=!1,i.minDistance=o.selectMinDistance||0,i.autoScroller.isEnabled=o.dragScroll;var a=n.hitDragging=new Ta(n.dragging,li(t));return a.emitter.on(\"pointerdown\",n.handlePointerDown),a.emitter.on(\"dragstart\",n.handleDragStart),a.emitter.on(\"hitupdate\",n.handleHitUpdate),a.emitter.on(\"pointerup\",n.handlePointerUp),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t}(ai);var Ia=function(e){function t(n){var o=e.call(this,n)||this;o.subjectEl=null,o.subjectSeg=null,o.isDragging=!1,o.eventRange=null,o.relevantEvents=null,o.receivingContext=null,o.validMutation=null,o.mutatedRelevantEvents=null,o.handlePointerDown=function(e){var t=e.origEvent.target,n=o,r=n.component,i=n.dragging,a=i.mirror,s=r.context.options,l=r.context;o.subjectEl=e.subjectEl;var u=o.subjectSeg=dn(e.subjectEl),c=(o.eventRange=u.eventRange).instance.instanceId;o.relevantEvents=Nt(l.getCurrentData().eventStore,c),i.minDistance=e.isTouch?0:s.eventDragMinDistance,i.delay=e.isTouch&&c!==r.props.eventSelection?function(e){var t=e.context.options,n=t.eventLongPressDelay;null==n&&(n=t.longPressDelay);return n}(r):null,a.parentNode=V(t,\".fc\"),a.revertDuration=s.dragRevertDuration;var d=r.isValidSegDownEl(t)&&!V(t,\".fc-event-resizer\");i.setIgnoreMove(!d),o.isDragging=d&&e.subjectEl.classList.contains(\"fc-event-draggable\")},o.handleDragStart=function(e){var t=o.component.context,n=o.eventRange,r=n.instance.instanceId;e.isTouch?r!==o.component.props.eventSelection&&t.dispatch({type:\"SELECT_EVENT\",eventInstanceId:r}):t.dispatch({type:\"UNSELECT_EVENT\"}),o.isDragging&&(t.calendarApi.unselect(e),t.emitter.trigger(\"eventDragStart\",{el:o.subjectEl,event:new zn(t,n.def,n.instance),jsEvent:e.origEvent,view:t.viewApi}))},o.handleHitUpdate=function(e,t){if(o.isDragging){var n=o.relevantEvents,r=o.hitDragging.initialHit,i=o.component.context,a=null,s=null,l=null,u=!1,c={affectedEvents:n,mutatedEvents:{defs:{},instances:{}},isEvent:!0};if(e){var d=e.component,p=(a=d.context).options;i===a||p.editable&&p.droppable?(s=function(e,t,n){var r=e.dateSpan,o=t.dateSpan,i=r.range.start,a=o.range.start,s={};r.allDay!==o.allDay&&(s.allDay=o.allDay,s.hasEnd=t.component.context.options.allDayMaintainDuration,o.allDay&&(i=be(i)));var l=Qt(i,a,e.component.context.dateEnv,e.component===t.component?e.component.largeUnit:null);l.milliseconds&&(s.allDay=!1);for(var u={datesDelta:l,standardProps:s},c=0,d=n;c<d.length;c++){(0,d[c])(u,e,t)}return u}(r,e,a.getCurrentData().pluginHooks.eventDragMutationMassagers))&&(l=Pn(n,a.getCurrentData().eventUiBases,s,a),c.mutatedEvents=l,d.isInteractionValid(c)||(u=!0,s=null,l=null,c.mutatedEvents={defs:{},instances:{}})):a=null}o.displayDrag(a,c),u?Q():ee(),t||(i===a&&ka(r,e)&&(s=null),o.dragging.setMirrorNeedsRevert(!s),o.dragging.setMirrorIsVisible(!e||!document.querySelector(\".fc-event-mirror\")),o.receivingContext=a,o.validMutation=s,o.mutatedRelevantEvents=l)}},o.handlePointerUp=function(){o.isDragging||o.cleanup()},o.handleDragEnd=function(e){if(o.isDragging){var t=o.component.context,n=t.viewApi,i=o,a=i.receivingContext,s=i.validMutation,l=o.eventRange.def,u=o.eventRange.instance,c=new zn(t,l,u),d=o.relevantEvents,p=o.mutatedRelevantEvents,f=o.hitDragging.finalHit;if(o.clearDrag(),t.emitter.trigger(\"eventDragStop\",{el:o.subjectEl,event:c,jsEvent:e.origEvent,view:n}),s){if(a===t){var h=new zn(t,p.defs[l.defId],u?p.instances[u.instanceId]:null);t.dispatch({type:\"MERGE_EVENTS\",eventStore:p});for(var v={oldEvent:c,event:h,relatedEvents:Bn(p,t,u),revert:function(){t.dispatch({type:\"MERGE_EVENTS\",eventStore:d})}},g={},m=0,y=t.getCurrentData().pluginHooks.eventDropTransformers;m<y.length;m++){var E=y[m];r(g,E(s,t))}t.emitter.trigger(\"eventDrop\",r(r(r({},v),g),{el:e.subjectEl,delta:s.datesDelta,jsEvent:e.origEvent,view:n})),t.emitter.trigger(\"eventChange\",v)}else if(a){var S={event:c,relatedEvents:Bn(d,t,u),revert:function(){t.dispatch({type:\"MERGE_EVENTS\",eventStore:d})}};t.emitter.trigger(\"eventLeave\",r(r({},S),{draggedEl:e.subjectEl,view:n})),t.dispatch({type:\"REMOVE_EVENTS\",eventStore:d}),t.emitter.trigger(\"eventRemove\",S);var D=p.defs[l.defId],b=p.instances[u.instanceId],C=new zn(a,D,b);a.dispatch({type:\"MERGE_EVENTS\",eventStore:p});var w={event:C,relatedEvents:Bn(p,a,b),revert:function(){a.dispatch({type:\"REMOVE_EVENTS\",eventStore:p})}};a.emitter.trigger(\"eventAdd\",w),e.isTouch&&a.dispatch({type:\"SELECT_EVENT\",eventInstanceId:u.instanceId}),a.emitter.trigger(\"drop\",r(r({},Ma(f.dateSpan,a)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:f.component.context.viewApi})),a.emitter.trigger(\"eventReceive\",r(r({},w),{draggedEl:e.subjectEl,view:f.component.context.viewApi}))}}else t.emitter.trigger(\"_noEventDrop\")}o.cleanup()};var i=o.component.context.options,a=o.dragging=new wa(n.el);a.pointer.selector=t.SELECTOR,a.touchScrollAllowed=!1,a.autoScroller.isEnabled=i.dragScroll;var s=o.hitDragging=new Ta(o.dragging,ui);return s.useSubjectCenter=n.useEventCenter,s.emitter.on(\"pointerdown\",o.handlePointerDown),s.emitter.on(\"dragstart\",o.handleDragStart),s.emitter.on(\"hitupdate\",o.handleHitUpdate),s.emitter.on(\"pointerup\",o.handlePointerUp),s.emitter.on(\"dragend\",o.handleDragEnd),o}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t.prototype.displayDrag=function(e,t){var n=this.component.context,r=this.receivingContext;r&&r!==e&&(r===n?r.dispatch({type:\"SET_EVENT_DRAG\",state:{affectedEvents:t.affectedEvents,mutatedEvents:{defs:{},instances:{}},isEvent:!0}}):r.dispatch({type:\"UNSET_EVENT_DRAG\"})),e&&e.dispatch({type:\"SET_EVENT_DRAG\",state:t})},t.prototype.clearDrag=function(){var e=this.component.context,t=this.receivingContext;t&&t.dispatch({type:\"UNSET_EVENT_DRAG\"}),e!==t&&e.dispatch({type:\"UNSET_EVENT_DRAG\"})},t.prototype.cleanup=function(){this.subjectSeg=null,this.isDragging=!1,this.eventRange=null,this.relevantEvents=null,this.receivingContext=null,this.validMutation=null,this.mutatedRelevantEvents=null},t.SELECTOR=\".fc-event-draggable, .fc-event-resizable\",t}(ai);var Pa=function(e){function t(t){var n=e.call(this,t)||this;n.draggingSegEl=null,n.draggingSeg=null,n.eventRange=null,n.relevantEvents=null,n.validMutation=null,n.mutatedRelevantEvents=null,n.handlePointerDown=function(e){var t=n.component,r=dn(n.querySegEl(e)),o=n.eventRange=r.eventRange;n.dragging.minDistance=t.context.options.eventDragMinDistance,n.dragging.setIgnoreMove(!n.component.isValidSegDownEl(e.origEvent.target)||e.isTouch&&n.component.props.eventSelection!==o.instance.instanceId)},n.handleDragStart=function(e){var t=n.component.context,r=n.eventRange;n.relevantEvents=Nt(t.getCurrentData().eventStore,n.eventRange.instance.instanceId);var o=n.querySegEl(e);n.draggingSegEl=o,n.draggingSeg=dn(o),t.calendarApi.unselect(),t.emitter.trigger(\"eventResizeStart\",{el:o,event:new zn(t,r.def,r.instance),jsEvent:e.origEvent,view:t.viewApi})},n.handleHitUpdate=function(e,t,o){var i=n.component.context,a=n.relevantEvents,s=n.hitDragging.initialHit,l=n.eventRange.instance,u=null,c=null,d=!1,p={affectedEvents:a,mutatedEvents:{defs:{},instances:{}},isEvent:!0};e&&(u=function(e,t,n,o,i){for(var a=e.component.context.dateEnv,s=e.dateSpan.range.start,l=t.dateSpan.range.start,u=Qt(s,l,a,e.component.largeUnit),c={},d=0,p=i;d<p.length;d++){var f=(0,p[d])(e,t);if(!1===f)return null;f&&r(c,f)}if(n){if(a.add(o.start,u)<o.end)return c.startDelta=u,c}else if(a.add(o.end,u)>o.start)return c.endDelta=u,c;return null}(s,e,o.subjectEl.classList.contains(\"fc-event-resizer-start\"),l.range,i.pluginHooks.eventResizeJoinTransforms)),u&&(c=Pn(a,i.getCurrentData().eventUiBases,u,i),p.mutatedEvents=c,n.component.isInteractionValid(p)||(d=!0,u=null,c=null,p.mutatedEvents=null)),c?i.dispatch({type:\"SET_EVENT_RESIZE\",state:p}):i.dispatch({type:\"UNSET_EVENT_RESIZE\"}),d?Q():ee(),t||(u&&ka(s,e)&&(u=null),n.validMutation=u,n.mutatedRelevantEvents=c)},n.handleDragEnd=function(e){var t=n.component.context,o=n.eventRange.def,i=n.eventRange.instance,a=new zn(t,o,i),s=n.relevantEvents,l=n.mutatedRelevantEvents;if(t.emitter.trigger(\"eventResizeStop\",{el:n.draggingSegEl,event:a,jsEvent:e.origEvent,view:t.viewApi}),n.validMutation){var u=new zn(t,l.defs[o.defId],i?l.instances[i.instanceId]:null);t.dispatch({type:\"MERGE_EVENTS\",eventStore:l});var c={oldEvent:a,event:u,relatedEvents:Bn(l,t,i),revert:function(){t.dispatch({type:\"MERGE_EVENTS\",eventStore:s})}};t.emitter.trigger(\"eventResize\",r(r({},c),{el:n.draggingSegEl,startDelta:n.validMutation.startDelta||Ye(0),endDelta:n.validMutation.endDelta||Ye(0),jsEvent:e.origEvent,view:t.viewApi})),t.emitter.trigger(\"eventChange\",c)}else t.emitter.trigger(\"_noEventResize\");n.draggingSeg=null,n.relevantEvents=null,n.validMutation=null};var o=t.component,i=n.dragging=new wa(t.el);i.pointer.selector=\".fc-event-resizer\",i.touchScrollAllowed=!1,i.autoScroller.isEnabled=o.context.options.dragScroll;var a=n.hitDragging=new Ta(n.dragging,li(t));return a.emitter.on(\"pointerdown\",n.handlePointerDown),a.emitter.on(\"dragstart\",n.handleDragStart),a.emitter.on(\"hitupdate\",n.handleHitUpdate),a.emitter.on(\"dragend\",n.handleDragEnd),n}return n(t,e),t.prototype.destroy=function(){this.dragging.destroy()},t.prototype.querySegEl=function(e){return V(e.subjectEl,\".fc-event\")},t}(ai);var Na=function(){function e(e){var t=this;this.context=e,this.isRecentPointerDateSelect=!1,this.matchesCancel=!1,this.matchesEvent=!1,this.onSelect=function(e){e.jsEvent&&(t.isRecentPointerDateSelect=!0)},this.onDocumentPointerDown=function(e){var n=t.context.options.unselectCancel,r=e.origEvent.target;t.matchesCancel=!!V(r,n),t.matchesEvent=!!V(r,Ia.SELECTOR)},this.onDocumentPointerUp=function(e){var n=t.context,r=t.documentPointer,o=n.getCurrentData();if(!r.wasTouchScroll){if(o.dateSelection&&!t.isRecentPointerDateSelect){var i=n.options.unselectAuto;!i||i&&t.matchesCancel||n.calendarApi.unselect(e)}o.eventSelection&&!t.matchesEvent&&n.dispatch({type:\"UNSELECT_EVENT\"})}t.isRecentPointerDateSelect=!1};var n=this.documentPointer=new ga(document);n.shouldIgnoreMove=!0,n.shouldWatchScroll=!1,n.emitter.on(\"pointerdown\",this.onDocumentPointerDown),n.emitter.on(\"pointerup\",this.onDocumentPointerUp),e.emitter.on(\"select\",this.onSelect)}return e.prototype.destroy=function(){this.context.emitter.off(\"select\",this.onSelect),this.documentPointer.destroy()},e}(),Ha={dateClick:_t,eventDragStart:_t,eventDragStop:_t,eventDrop:_t,eventResizeStart:_t,eventResizeStop:_t,eventResize:_t,drop:_t,eventReceive:_t,eventLeave:_t},Oa=function(){function e(e,t){var n=this;this.receivingContext=null,this.droppableEvent=null,this.suppliedDragMeta=null,this.dragMeta=null,this.handleDragStart=function(e){n.dragMeta=n.buildDragMeta(e.subjectEl)},this.handleHitUpdate=function(e,t,o){var i=n.hitDragging.dragging,a=null,s=null,l=!1,u={affectedEvents:{defs:{},instances:{}},mutatedEvents:{defs:{},instances:{}},isEvent:n.dragMeta.create};e&&(a=e.component.context,n.canDropElOnCalendar(o.subjectEl,a)&&(s=function(e,t,n){for(var o=r({},t.leftoverProps),i=0,a=n.pluginHooks.externalDefTransforms;i<a.length;i++){var s=a[i];r(o,s(e,t))}var l=Yt(o,n),u=l.refined,c=l.extra,d=Xt(u,c,t.sourceId,e.allDay,n.options.forceEventDuration||Boolean(t.duration),n),p=e.range.start;e.allDay&&t.startTime&&(p=n.dateEnv.add(p,t.startTime));var f=t.duration?n.dateEnv.add(p,t.duration):In(e.allDay,p,n),h=Ie(d.defId,{start:p,end:f});return{def:d,instance:h}}(e.dateSpan,n.dragMeta,a),u.mutatedEvents=Pt(s),(l=!Jr(u,a))&&(u.mutatedEvents={defs:{},instances:{}},s=null))),n.displayDrag(a,u),i.setMirrorIsVisible(t||!s||!document.querySelector(\".fc-event-mirror\")),l?Q():ee(),t||(i.setMirrorNeedsRevert(!s),n.receivingContext=a,n.droppableEvent=s)},this.handleDragEnd=function(e){var t=n,o=t.receivingContext,i=t.droppableEvent;if(n.clearDrag(),o&&i){var a=n.hitDragging.finalHit,s=a.component.context.viewApi,l=n.dragMeta;if(o.emitter.trigger(\"drop\",r(r({},Ma(a.dateSpan,o)),{draggedEl:e.subjectEl,jsEvent:e.origEvent,view:s})),l.create){var u=Pt(i);o.dispatch({type:\"MERGE_EVENTS\",eventStore:u}),e.isTouch&&o.dispatch({type:\"SELECT_EVENT\",eventInstanceId:i.instance.instanceId}),o.emitter.trigger(\"eventReceive\",{event:new zn(o,i.def,i.instance),relatedEvents:[],revert:function(){o.dispatch({type:\"REMOVE_EVENTS\",eventStore:u})},draggedEl:e.subjectEl,view:s})}}n.receivingContext=null,n.droppableEvent=null};var o=this.hitDragging=new Ta(e,ui);o.requireInitial=!1,o.emitter.on(\"dragstart\",this.handleDragStart),o.emitter.on(\"hitupdate\",this.handleHitUpdate),o.emitter.on(\"dragend\",this.handleDragEnd),this.suppliedDragMeta=t}return e.prototype.buildDragMeta=function(e){return\"object\"==typeof this.suppliedDragMeta?fi(this.suppliedDragMeta):\"function\"==typeof this.suppliedDragMeta?fi(this.suppliedDragMeta(e)):fi((t=function(e,t){var n=di.dataAttrPrefix,r=(n?n+\"-\":\"\")+t;return e.getAttribute(\"data-\"+r)||\"\"}(e,\"event\"))?JSON.parse(t):{create:!1});var t},e.prototype.displayDrag=function(e,t){var n=this.receivingContext;n&&n!==e&&n.dispatch({type:\"UNSET_EVENT_DRAG\"}),e&&e.dispatch({type:\"SET_EVENT_DRAG\",state:t})},e.prototype.clearDrag=function(){this.receivingContext&&this.receivingContext.dispatch({type:\"UNSET_EVENT_DRAG\"})},e.prototype.canDropElOnCalendar=function(e,t){var n=t.options.dropAccept;return\"function\"==typeof n?n.call(t.calendarApi,e):\"string\"!=typeof n||!n||Boolean(z(e,n))},e}();di.dataAttrPrefix=\"\";var Aa=function(){function e(e,t){var n=this;void 0===t&&(t={}),this.handlePointerDown=function(e){var t=n.dragging,r=n.settings,o=r.minDistance,i=r.longPressDelay;t.minDistance=null!=o?o:e.isTouch?0:bt.eventDragMinDistance,t.delay=e.isTouch?null!=i?i:bt.longPressDelay:0},this.handleDragStart=function(e){e.isTouch&&n.dragging.delay&&e.subjectEl.classList.contains(\"fc-event\")&&n.dragging.mirror.getMirrorEl().classList.add(\"fc-event-selected\")},this.settings=t;var r=this.dragging=new wa(e);r.touchScrollAllowed=!1,null!=t.itemSelector&&(r.pointer.selector=t.itemSelector),null!=t.appendTo&&(r.mirror.parentNode=t.appendTo),r.emitter.on(\"pointerdown\",this.handlePointerDown),r.emitter.on(\"dragstart\",this.handleDragStart),new Oa(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),Ua=function(e){function t(t){var n=e.call(this,t)||this;n.shouldIgnoreMove=!1,n.mirrorSelector=\"\",n.currentMirrorEl=null,n.handlePointerDown=function(e){n.emitter.trigger(\"pointerdown\",e),n.shouldIgnoreMove||n.emitter.trigger(\"dragstart\",e)},n.handlePointerMove=function(e){n.shouldIgnoreMove||n.emitter.trigger(\"dragmove\",e)},n.handlePointerUp=function(e){n.emitter.trigger(\"pointerup\",e),n.shouldIgnoreMove||n.emitter.trigger(\"dragend\",e)};var r=n.pointer=new ga(t);return r.emitter.on(\"pointerdown\",n.handlePointerDown),r.emitter.on(\"pointermove\",n.handlePointerMove),r.emitter.on(\"pointerup\",n.handlePointerUp),n}return n(t,e),t.prototype.destroy=function(){this.pointer.destroy()},t.prototype.setIgnoreMove=function(e){this.shouldIgnoreMove=e},t.prototype.setMirrorIsVisible=function(e){if(e)this.currentMirrorEl&&(this.currentMirrorEl.style.visibility=\"\",this.currentMirrorEl=null);else{var t=this.mirrorSelector?document.querySelector(this.mirrorSelector):null;t&&(this.currentMirrorEl=t,t.style.visibility=\"hidden\")}},t}(ci),La=function(){function e(e,t){var n=document;e===document||e instanceof Element?(n=e,t=t||{}):t=e||{};var r=this.dragging=new Ua(n);\"string\"==typeof t.itemSelector?r.pointer.selector=t.itemSelector:n===document&&(r.pointer.selector=\"[data-event]\"),\"string\"==typeof t.mirrorSelector&&(r.mirrorSelector=t.mirrorSelector),new Oa(r,t.eventData)}return e.prototype.destroy=function(){this.dragging.destroy()},e}(),Wa=io({componentInteractions:[xa,_a,Ia,Pa],calendarInteractions:[Na],elementDraggingImpl:wa,listenerRefiners:Ha}),Va=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.headerElRef=Ar(),t}return n(t,e),t.prototype.renderSimpleLayout=function(e,t){var n=this.props,r=this.context,o=[],i=Ki(r.options);return e&&o.push({type:\"header\",key:\"header\",isSticky:i,chunk:{elRef:this.headerElRef,tableClassName:\"fc-col-header\",rowContent:e}}),o.push({type:\"body\",key:\"body\",liquid:!0,chunk:{content:t}}),Hr(yo,{viewSpec:r.viewSpec},(function(e,t){return Hr(\"div\",{ref:e,className:[\"fc-daygrid\"].concat(t).join(\" \")},Hr($i,{liquid:!n.isHeightAuto&&!n.forPrint,cols:[],sections:o}))}))},t.prototype.renderHScrollLayout=function(e,t,n,r){var o=this.context.pluginHooks.scrollGridImpl;if(!o)throw new Error(\"No ScrollGrid implementation\");var i=this.props,a=this.context,s=!i.forPrint&&Ki(a.options),l=!i.forPrint&&Ji(a.options),u=[];return e&&u.push({type:\"header\",key:\"header\",isSticky:s,chunks:[{key:\"main\",elRef:this.headerElRef,tableClassName:\"fc-col-header\",rowContent:e}]}),u.push({type:\"body\",key:\"body\",liquid:!0,chunks:[{key:\"main\",content:t}]}),l&&u.push({type:\"footer\",key:\"footer\",isSticky:!0,chunks:[{key:\"main\",content:Xi}]}),Hr(yo,{viewSpec:a.viewSpec},(function(e,t){return Hr(\"div\",{ref:e,className:[\"fc-daygrid\"].concat(t).join(\" \")},Hr(o,{liquid:!i.isHeightAuto&&!i.forPrint,colGroups:[{cols:[{span:n,minWidth:r}]}],sections:u}))}))},t}(oo);function za(e,t){for(var n=[],r=0;r<t;r++)n[r]=[];for(var o=0,i=e;o<i.length;o++){var a=i[o];n[a.row].push(a)}return n}function Fa(e,t){for(var n=[],r=0;r<t;r++)n[r]=[];for(var o=0,i=e;o<i.length;o++){var a=i[o];n[a.firstCol].push(a)}return n}function Ba(e,t){var n=[];if(e){for(a=0;a<t;a++)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,o=e.segs;r<o.length;r++){var i=o[r];n[i.row].segs.push(i)}}else for(var a=0;a<t;a++)n[a]=null;return n}var ja=St({week:\"narrow\"}),Ga=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleRootEl=function(e){t.rootEl=e,Yr(t.props.elRef,e)},t.handleMoreLinkClick=function(e){var n=t.props;if(n.onMoreClick){var r=n.segsByEachCol,o=r.filter((function(e){return n.segIsHidden[e.eventRange.instance.instanceId]}));n.onMoreClick({date:n.date,allSegs:r,hiddenSegs:o,moreCnt:n.moreCnt,dayEl:t.rootEl,ev:e})}},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,o=t.viewApi,i=this.props,a=i.date,s=i.dateProfile,l={num:i.moreCnt,text:i.buildMoreLinkText(i.moreCnt),view:o},u=n.navLinks?{\"data-navlink\":gr(a,\"week\"),tabIndex:0}:{};return Hr(oa,{date:a,dateProfile:s,todayRange:i.todayRange,showDayNumber:i.showDayNumber,extraHookProps:i.extraHookProps,elRef:this.handleRootEl},(function(t,o,c,d){return Hr(\"td\",r({ref:t,className:[\"fc-daygrid-day\"].concat(o,i.extraClassNames||[]).join(\" \")},c,i.extraDataAttrs),Hr(\"div\",{className:\"fc-daygrid-day-frame fc-scrollgrid-sync-inner\",ref:i.innerElRef},i.showWeekNumber&&Hr(ca,{date:a,defaultFormat:ja},(function(e,t,n,o){return Hr(\"a\",r({ref:e,className:[\"fc-daygrid-week-number\"].concat(t).join(\" \")},u),o)})),!d&&Hr(Za,{date:a,dateProfile:s,showDayNumber:i.showDayNumber,forceDayTop:i.forceDayTop,todayRange:i.todayRange,extraHookProps:i.extraHookProps}),Hr(\"div\",{className:\"fc-daygrid-day-events\",ref:i.fgContentElRef,style:{paddingBottom:i.fgPaddingBottom}},i.fgContent,Boolean(i.moreCnt)&&Hr(\"div\",{className:\"fc-daygrid-day-bottom\",style:{marginTop:i.moreMarginTop}},Hr(uo,{hookProps:l,classNames:n.moreLinkClassNames,content:n.moreLinkContent,defaultContent:Ya,didMount:n.moreLinkDidMount,willUnmount:n.moreLinkWillUnmount},(function(t,n,r,o){return Hr(\"a\",{onClick:e.handleMoreLinkClick,ref:t,className:[\"fc-daygrid-more-link\"].concat(n).join(\" \")},o)})))),Hr(\"div\",{className:\"fc-daygrid-day-bg\"},i.bgContent)))}))},t}(oo);function qa(e){return e.dayNumberText}function Ya(e){return e.text}var Za=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context.options.navLinks?{\"data-navlink\":gr(e.date),tabIndex:0}:{};return Hr(ia,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,showDayNumber:e.showDayNumber,extraHookProps:e.extraHookProps,defaultContent:qa},(function(n,o){return(o||e.forceDayTop)&&Hr(\"div\",{className:\"fc-daygrid-day-top\",ref:n},Hr(\"a\",r({className:\"fc-daygrid-day-number\"},t),o||Hr(Ur,null,\"\u00A0\")))}))},t}(jr),Xa=St({hour:\"numeric\",minute:\"2-digit\",omitZeroMinute:!0,meridiem:\"narrow\"});function Ka(e){var t=e.eventRange.ui.display;return\"list-item\"===t||\"auto\"===t&&!e.eventRange.def.allDay&&e.firstCol===e.lastCol&&e.isStart&&e.isEnd}var Ja=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options.eventTimeFormat||Xa,o=En(e.seg,n,t,!0,e.defaultDisplayEventEnd);return Hr(Qi,{seg:e.seg,timeText:o,defaultContent:$a,isDragging:e.isDragging,isResizing:!1,isDateSelecting:!1,isSelected:e.isSelected,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday},(function(t,n,o,i){return Hr(\"a\",r({className:[\"fc-daygrid-event\",\"fc-daygrid-dot-event\"].concat(n).join(\" \"),ref:t},(a=e.seg,(s=a.eventRange.def.url)?{href:s}:{})),i);var a,s}))},t}(jr);function $a(e){return Hr(Ur,null,Hr(\"div\",{className:\"fc-daygrid-event-dot\",style:{borderColor:e.borderColor||e.backgroundColor}}),e.timeText&&Hr(\"div\",{className:\"fc-event-time\"},e.timeText),Hr(\"div\",{className:\"fc-event-title\"},e.event.title||Hr(Ur,null,\"\u00A0\")))}var Qa=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Hr(ea,r({},e,{extraClassNames:[\"fc-daygrid-event\",\"fc-daygrid-block-event\",\"fc-h-event\"],defaultTimeFormat:Xa,defaultDisplayEventEnd:e.defaultDisplayEventEnd,disableResizing:!e.seg.eventRange.def.allDay}))},t}(jr);function es(e,t,n,o,i,a,s,l){for(var u=[],c=[],d={},p={},f={},h={},v={},g=0;g<s;g++)u.push([]),c.push(0);for(var m=0,y=t=hn(t,l);m<y.length;m++){T(w=y[m],i[w.eventRange.instance.instanceId+\":\"+w.firstCol]||0)}!0===n||!0===o?function(e,t,n,r){ns(e,t,n,!0,(function(e){return e.bottom<=r}))}(c,d,u,a):\"number\"==typeof n?function(e,t,n,r){ns(e,t,n,!1,(function(e,t){return t<r}))}(c,d,u,n):\"number\"==typeof o&&function(e,t,n,r){ns(e,t,n,!0,(function(e,t){return t<r}))}(c,d,u,o);for(var E=0;E<s;E++){for(var S=0,D=0,b=0,C=u[E];b<C.length;b++){var w,R=C[b];d[(w=R.seg).eventRange.instance.instanceId]||(p[w.eventRange.instance.instanceId]=R.top,w.firstCol===w.lastCol&&w.isStart&&w.isEnd?(f[w.eventRange.instance.instanceId]=R.top-S,D=0,S=R.bottom):D+=R.bottom-R.top)}D&&(c[E]?h[E]=D:v[E]=D)}function T(e,t){if(!k(e,t,0))for(var n=e.firstCol;n<=e.lastCol;n++)for(var r=0,o=u[n];r<o.length;r++){if(k(e,t,o[r].bottom))return}}function k(e,t,n){if(function(e,t,n){for(var r=e.firstCol;r<=e.lastCol;r++)for(var o=0,i=u[r];o<i.length;o++){var a=i[o];if(n<a.bottom&&n+t>a.top)return!1}return!0}(e,t,n)){for(var r=e.firstCol;r<=e.lastCol;r++){for(var o=u[r],i=0;i<o.length&&n>=o[i].top;)i++;o.splice(i,0,{seg:e,top:n,bottom:n+t})}return!0}return!1}for(var M in i)i[M]||(d[M.split(\":\")[0]]=!0);return{segsByFirstCol:u.map(ts),segsByEachCol:u.map((function(t,n){var o=function(e){for(var t=[],n=0,r=e;n<r.length;n++){var o=r[n];t.push(o.seg)}return t}(t);return o=function(e,t,n){for(var o=t,i=ve(o,1),a={start:o,end:i},s=[],l=0,u=e;l<u.length;l++){var c=u[l],d=c.eventRange,p=d.range,f=nn(p,a);f&&s.push(r(r({},c),{firstCol:n,lastCol:n,eventRange:{def:d.def,ui:r(r({},d.ui),{durationEditable:!1}),instance:d.instance,range:f},isStart:c.isStart&&f.start.valueOf()===p.start.valueOf(),isEnd:c.isEnd&&f.end.valueOf()===p.end.valueOf()}))}return s}(o,e[n].date,n)})),segIsHidden:d,segTops:p,segMarginTops:f,moreCnts:c,moreTops:h,paddingBottoms:v}}function ts(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];i.seg.firstCol===t&&n.push(i.seg)}return n}function ns(e,t,n,r,o){for(var i=e.length,a={},s=[],l=0;l<i;l++)s.push([]);for(l=0;l<i;l++)for(var u=0,c=0,d=n[l];c<d.length;c++){var p=d[c];o(p,u)?f(p):h(p),p.top!==p.bottom&&u++}function f(e){var t=e.seg,n=t.eventRange.instance.instanceId;if(!a[n]){a[n]=!0;for(var r=t.firstCol;r<=t.lastCol;r++)s[r].push(e)}}function h(n){var o=n.seg,i=o.eventRange.instance.instanceId;if(!t[i]){t[i]=!0;for(var a=o.firstCol;a<=o.lastCol;a++){var l=++e[a];if(r&&1===l){var u=s[a].pop();u&&h(u)}}}}}var rs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.cellElRefs=new Li,t.frameElRefs=new Li,t.fgElRefs=new Li,t.segHarnessRefs=new Li,t.rootElRef=Ar(),t.state={framePositions:null,maxContentHeight:null,segHeights:{}},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.state,r=this.context,o=t.cells.length,i=Fa(t.businessHourSegs,o),a=Fa(t.bgEventSegs,o),s=Fa(this.getHighlightSegs(),o),l=Fa(this.getMirrorSegs(),o),u=es(t.cells,t.fgEventSegs,t.dayMaxEvents,t.dayMaxEventRows,n.segHeights,n.maxContentHeight,o,r.options.eventOrder),c=u.paddingBottoms,d=u.segsByFirstCol,p=u.segsByEachCol,f=u.segIsHidden,h=u.segTops,v=u.segMarginTops,g=u.moreCnts,m=u.moreTops,y=t.eventDrag&&t.eventDrag.affectedInstances||t.eventResize&&t.eventResize.affectedInstances||{};return Hr(\"tr\",{ref:this.rootElRef},t.renderIntro&&t.renderIntro(),t.cells.map((function(n,r){var o=e.renderFgSegs(d[r],f,h,v,y,t.todayRange),u=e.renderFgSegs(l[r],{},h,{},{},t.todayRange,Boolean(t.eventDrag),Boolean(t.eventResize),!1);return Hr(Ga,{key:n.key,elRef:e.cellElRefs.createRef(n.key),innerElRef:e.frameElRefs.createRef(n.key),dateProfile:t.dateProfile,date:n.date,showDayNumber:t.showDayNumbers,showWeekNumber:t.showWeekNumbers&&0===r,forceDayTop:t.showWeekNumbers,todayRange:t.todayRange,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,moreCnt:g[r],buildMoreLinkText:t.buildMoreLinkText,onMoreClick:t.onMoreClick,segIsHidden:f,moreMarginTop:m[r],segsByEachCol:p[r],fgPaddingBottom:c[r],fgContentElRef:e.fgElRefs.createRef(n.key),fgContent:Hr(Ur,null,Hr(Ur,null,o),Hr(Ur,null,u)),bgContent:Hr(Ur,null,e.renderFillSegs(s[r],\"highlight\"),e.renderFillSegs(i[r],\"non-business\"),e.renderFillSegs(a[r],\"bg-event\"))})})))},t.prototype.componentDidMount=function(){this.updateSizing(!0)},t.prototype.componentDidUpdate=function(e,t){var n=this.props;this.updateSizing(!Le(e,n))},t.prototype.getHighlightSegs=function(){var e=this.props;return e.eventDrag&&e.eventDrag.segs.length?e.eventDrag.segs:e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:e.dateSelectionSegs},t.prototype.getMirrorSegs=function(){var e=this.props;return e.eventResize&&e.eventResize.segs.length?e.eventResize.segs:[]},t.prototype.renderFgSegs=function(e,t,n,o,i,a,s,l,u){var c=this.context,d=this.props.eventSelection,p=this.state.framePositions,f=1===this.props.cells.length,h=[];if(p)for(var v=0,g=e;v<g.length;v++){var m=g[v],y=m.eventRange.instance.instanceId,E=s||l||u,S=i[y],D=t[y]||S,b=t[y]||E||m.firstCol!==m.lastCol||!m.isStart||!m.isEnd,C=void 0,w=void 0,R=void 0,T=void 0;b?(w=n[y],c.isRtl?(T=0,R=p.lefts[m.lastCol]-p.lefts[m.firstCol]):(R=0,T=p.rights[m.firstCol]-p.rights[m.lastCol])):C=o[y],h.push(Hr(\"div\",{className:\"fc-daygrid-event-harness\"+(b?\" fc-daygrid-event-harness-abs\":\"\"),key:y,ref:E?null:this.segHarnessRefs.createRef(y+\":\"+m.firstCol),style:{visibility:D?\"hidden\":\"\",marginTop:C||\"\",top:w||\"\",left:R||\"\",right:T||\"\"}},Ka(m)?Hr(Ja,r({seg:m,isDragging:s,isSelected:y===d,defaultDisplayEventEnd:f},Sn(m,a))):Hr(Qa,r({seg:m,isDragging:s,isResizing:l,isDateSelecting:u,isSelected:y===d,defaultDisplayEventEnd:f},Sn(m,a)))))}return h},t.prototype.renderFillSegs=function(e,t){var n=this.context.isRtl,i=this.props.todayRange,a=this.state.framePositions,s=[];if(a)for(var l=0,u=e;l<u.length;l++){var c=u[l],d=n?{right:0,left:a.lefts[c.lastCol]-a.lefts[c.firstCol]}:{left:0,right:a.rights[c.firstCol]-a.rights[c.lastCol]};s.push(Hr(\"div\",{key:bn(c.eventRange),className:\"fc-daygrid-bg-harness\",style:d},\"bg-event\"===t?Hr(la,r({seg:c},Sn(c,i))):sa(t)))}return Hr.apply(void 0,o([Ur,{}],s))},t.prototype.updateSizing=function(e){var t=this.props,n=this.frameElRefs;if(null!==t.clientWidth){if(e){var r=t.cells.map((function(e){return n.currentMap[e.key]}));if(r.length){var o=this.rootElRef.current;this.setState({framePositions:new Mr(o,r,!0,!1)})}}var i=!0===t.dayMaxEvents||!0===t.dayMaxEventRows;this.setState({segHeights:this.computeSegHeights(),maxContentHeight:i?this.computeMaxContentHeight():null})}},t.prototype.computeSegHeights=function(){return Oe(this.segHarnessRefs.currentMap,(function(e){return e.getBoundingClientRect().height}))},t.prototype.computeMaxContentHeight=function(){var e=this.props.cells[0].key,t=this.cellElRefs.currentMap[e],n=this.fgElRefs.currentMap[e];return t.getBoundingClientRect().bottom-n.getBoundingClientRect().top},t.prototype.getCellEls=function(){var e=this.cellElRefs.currentMap;return this.props.cells.map((function(t){return e[t.key]}))},t}(oo);rs.addStateEquality({segHeights:Le});var os=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.repositioner=new Go(t.updateSize.bind(t)),t.handleRootEl=function(e){t.rootEl=e,t.props.elRef&&Yr(t.props.elRef,e)},t.handleDocumentMousedown=function(e){var n=t.props.onClose;n&&!t.rootEl.contains(e.target)&&n()},t.handleDocumentScroll=function(){t.repositioner.request(10)},t.handleCloseClick=function(){var e=t.props.onClose;e&&e()},t}return n(t,e),t.prototype.render=function(){var e=this.context.theme,t=this.props,n=[\"fc-popover\",e.getClass(\"popover\")].concat(t.extraClassNames||[]);return Hr(\"div\",r({className:n.join(\" \")},t.extraAttrs,{ref:this.handleRootEl}),Hr(\"div\",{className:\"fc-popover-header \"+e.getClass(\"popoverHeader\")},Hr(\"span\",{className:\"fc-popover-title\"},t.title),Hr(\"span\",{className:\"fc-popover-close \"+e.getIconClass(\"close\"),onClick:this.handleCloseClick})),Hr(\"div\",{className:\"fc-popover-body \"+e.getClass(\"popoverContent\")},t.children))},t.prototype.componentDidMount=function(){document.addEventListener(\"mousedown\",this.handleDocumentMousedown),document.addEventListener(\"scroll\",this.handleDocumentScroll),this.updateSize()},t.prototype.componentWillUnmount=function(){document.removeEventListener(\"mousedown\",this.handleDocumentMousedown),document.removeEventListener(\"scroll\",this.handleDocumentScroll)},t.prototype.updateSize=function(){var e=this.props,t=e.alignmentEl,n=e.topAlignmentEl,r=this.rootEl;if(r){var o,i=r.getBoundingClientRect(),a=t.getBoundingClientRect(),s=n?n.getBoundingClientRect().top:a.top;s=Math.min(s,window.innerHeight-i.height-10),s=Math.max(s,10),o=this.context.isRtl?a.right-i.width:a.left,o=Math.min(o,window.innerWidth-i.width-10),j(r,{top:s,left:o=Math.max(o,10)})}},t}(jr),is=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handlePopoverEl=function(e){t.popoverEl=e,e?t.context.registerInteractiveComponent(t,{el:e,useEventCenter:!1}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this.context,t=e.options,n=e.dateEnv,o=this.props,i=o.date,a=o.hiddenInstances,s=o.todayRange,l=o.dateProfile,u=o.selectedInstanceId,c=n.format(i,t.dayPopoverFormat);return Hr(oa,{date:i,dateProfile:l,todayRange:s,elRef:this.handlePopoverEl},(function(e,t,n){return Hr(os,{elRef:e,title:c,extraClassNames:[\"fc-more-popover\"].concat(t),extraAttrs:n,onClose:o.onCloseClick,alignmentEl:o.alignmentEl,topAlignmentEl:o.topAlignmentEl},Hr(ia,{date:i,dateProfile:l,todayRange:s},(function(e,t){return t&&Hr(\"div\",{className:\"fc-more-popover-misc\",ref:e},t)})),o.segs.map((function(e){var t=e.eventRange.instance.instanceId;return Hr(\"div\",{className:\"fc-daygrid-event-harness\",key:t,style:{visibility:a[t]?\"hidden\":\"\"}},Ka(e)?Hr(Ja,r({seg:e,isDragging:!1,isSelected:t===u,defaultDisplayEventEnd:!1},Sn(e,s))):Hr(Qa,r({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:t===u,defaultDisplayEventEnd:!1},Sn(e,s))))})))}))},t.prototype.queryHit=function(e,t,n,r){var o=this.props.date;if(e<n&&t<r)return{component:this,dateSpan:{allDay:!0,range:{start:o,end:ve(o,1)}},dayEl:this.popoverEl,rect:{left:0,top:0,right:n,bottom:r},layer:1}},t.prototype.isPopover=function(){return!0},t}(oo),as=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.splitBusinessHourSegs=it(za),t.splitBgEventSegs=it(za),t.splitFgEventSegs=it(za),t.splitDateSelectionSegs=it(za),t.splitEventDrag=it(Ba),t.splitEventResize=it(Ba),t.buildBuildMoreLinkText=it(ss),t.rowRefs=new Li,t.state={morePopoverState:null},t.handleRootEl=function(e){t.rootEl=e,Yr(t.props.elRef,e)},t.handleMoreLinkClick=function(e){var n=t.context,o=n.dateEnv,i=n.options.moreLinkClick;function a(e){var t=e.eventRange,r=t.def,i=t.instance,a=t.range;return{event:new zn(n,r,i),start:o.toDate(a.start),end:o.toDate(a.end),isStart:e.isStart,isEnd:e.isEnd}}\"function\"==typeof i&&(i=i({date:o.toDate(e.date),allDay:!0,allSegs:e.allSegs.map(a),hiddenSegs:e.hiddenSegs.map(a),jsEvent:e.ev,view:n.viewApi})),i&&\"popover\"!==i?\"string\"==typeof i&&n.calendarApi.zoomTo(e.date,i):t.setState({morePopoverState:r(r({},e),{currentFgEventSegs:t.props.fgEventSegs})})},t.handleMorePopoverClose=function(){t.setState({morePopoverState:null})},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.dateProfile,r=t.dayMaxEventRows,o=t.dayMaxEvents,i=t.expandRows,a=this.state.morePopoverState,s=t.cells.length,l=this.splitBusinessHourSegs(t.businessHourSegs,s),u=this.splitBgEventSegs(t.bgEventSegs,s),c=this.splitFgEventSegs(t.fgEventSegs,s),d=this.splitDateSelectionSegs(t.dateSelectionSegs,s),p=this.splitEventDrag(t.eventDrag,s),f=this.splitEventResize(t.eventResize,s),h=this.buildBuildMoreLinkText(this.context.options.moreLinkText),v=!0===o||!0===r;return v&&!i&&(v=!1,r=null,o=null),Hr(\"div\",{className:[\"fc-daygrid-body\",v?\"fc-daygrid-body-balanced\":\"fc-daygrid-body-unbalanced\",i?\"\":\"fc-daygrid-body-natural\"].join(\" \"),ref:this.handleRootEl,style:{width:t.clientWidth,minWidth:t.tableMinWidth}},Hr(Mi,{unit:\"day\"},(function(v,g){return Hr(Ur,null,Hr(\"table\",{className:\"fc-scrollgrid-sync-table\",style:{width:t.clientWidth,minWidth:t.tableMinWidth,height:i?t.clientHeight:\"\"}},t.colGroupNode,Hr(\"tbody\",null,t.cells.map((function(i,a){return Hr(rs,{ref:e.rowRefs.createRef(a),key:i.length?i[0].date.toISOString():a,showDayNumbers:s>1,showWeekNumbers:t.showWeekNumbers,todayRange:g,dateProfile:n,cells:i,renderIntro:t.renderRowIntro,businessHourSegs:l[a],eventSelection:t.eventSelection,bgEventSegs:u[a].filter(ls),fgEventSegs:c[a],dateSelectionSegs:d[a],eventDrag:p[a],eventResize:f[a],dayMaxEvents:o,dayMaxEventRows:r,clientWidth:t.clientWidth,clientHeight:t.clientHeight,buildMoreLinkText:h,onMoreClick:e.handleMoreLinkClick})})))),!t.forPrint&&a&&a.currentFgEventSegs===t.fgEventSegs&&Hr(is,{date:a.date,dateProfile:n,segs:a.allSegs,alignmentEl:a.dayEl,topAlignmentEl:1===s?t.headerAlignElRef.current:null,onCloseClick:e.handleMorePopoverClose,selectedInstanceId:t.eventSelection,hiddenInstances:(t.eventDrag?t.eventDrag.affectedInstances:null)||(t.eventResize?t.eventResize.affectedInstances:null)||{},todayRange:g}))})))},t.prototype.prepareHits=function(){this.rowPositions=new Mr(this.rootEl,this.rowRefs.collect().map((function(e){return e.getCellEls()[0]})),!1,!0),this.colPositions=new Mr(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),!0,!1)},t.prototype.positionToHit=function(e,t){var n=this.colPositions,r=this.rowPositions,o=n.leftToIndex(e),i=r.topToIndex(t);if(null!=i&&null!=o)return{row:i,col:o,dateSpan:{range:this.getCellRange(i,o),allDay:!0},dayEl:this.getCellEl(i,o),relativeRect:{left:n.lefts[o],right:n.rights[o],top:r.tops[i],bottom:r.bottoms[i]}}},t.prototype.getCellEl=function(e,t){return this.rowRefs.currentMap[e].getCellEls()[t]},t.prototype.getCellRange=function(e,t){var n=this.props.cells[e][t].date;return{start:n,end:ve(n,1)}},t}(oo);function ss(e){return\"function\"==typeof e?e:function(t){return\"+\"+t+\" \"+e}}function ls(e){return e.eventRange.def.allDay}var us=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.slicer=new cs,t.tableRef=Ar(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return Hr(as,r({ref:this.tableRef,elRef:this.handleRootEl},this.slicer.sliceProps(e,e.dateProfile,e.nextDayThreshold,t,e.dayTableModel),{dateProfile:e.dateProfile,cells:e.dayTableModel.cells,colGroupNode:e.colGroupNode,tableMinWidth:e.tableMinWidth,renderRowIntro:e.renderRowIntro,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,showWeekNumbers:e.showWeekNumbers,expandRows:e.expandRows,headerAlignElRef:e.headerAlignElRef,clientWidth:e.clientWidth,clientHeight:e.clientHeight,forPrint:e.forPrint}))},t.prototype.prepareHits=function(){this.tableRef.current.prepareHits()},t.prototype.queryHit=function(e,t){var n=this.tableRef.current.positionToHit(e,t);if(n)return{component:this,dateSpan:n.dateSpan,dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}},t}(oo),cs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.forceDayIfListItem=!0,t}return n(t,e),t.prototype.sliceRange=function(e,t){return t.sliceRange(e)},t}(Hi),ds=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDayTableModel=it(ps),t.headerRef=Ar(),t.tableRef=Ar(),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,r=t.dateProfileGenerator,o=this.props,i=this.buildDayTableModel(o.dateProfile,r),a=n.dayHeaders&&Hr(_i,{ref:this.headerRef,dateProfile:o.dateProfile,dates:i.headerDates,datesRepDistinctDays:1===i.rowCnt}),s=function(t){return Hr(us,{ref:e.tableRef,dateProfile:o.dateProfile,dayTableModel:i,businessHours:o.businessHours,dateSelection:o.dateSelection,eventStore:o.eventStore,eventUiBases:o.eventUiBases,eventSelection:o.eventSelection,eventDrag:o.eventDrag,eventResize:o.eventResize,nextDayThreshold:n.nextDayThreshold,colGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,dayMaxEvents:n.dayMaxEvents,dayMaxEventRows:n.dayMaxEventRows,showWeekNumbers:n.weekNumbers,expandRows:!o.isHeightAuto,headerAlignElRef:e.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:o.forPrint})};return n.dayMinWidth?this.renderHScrollLayout(a,s,i.colCnt,n.dayMinWidth):this.renderSimpleLayout(a,s)},t}(Va);function ps(e,t){var n=new Pi(e.renderRange,t);return new Ni(n,/year|month|week/.test(e.currentRangeUnit))}var fs=io({initialView:\"dayGridMonth\",optionRefiners:{moreLinkClick:_t,moreLinkClassNames:_t,moreLinkContent:_t,moreLinkDidMount:_t,moreLinkWillUnmount:_t},views:{dayGrid:{component:ds,dateProfileGeneratorClass:function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.buildRenderRange=function(t,n,r){var o,i=this.props.dateEnv,a=e.prototype.buildRenderRange.call(this,t,n,r),s=a.start,l=a.end;(/^(year|month)$/.test(n)&&(s=i.startOfWeek(s),(o=i.startOfWeek(l)).valueOf()!==l.valueOf()&&(l=he(o,1))),this.props.monthMode&&this.props.fixedWeekCount)&&(l=he(l,6-Math.ceil(me(s,l))));return{start:s,end:l}},t}(Co)},dayGridDay:{type:\"dayGrid\",duration:{days:1}},dayGridWeek:{type:\"dayGrid\",duration:{weeks:1}},dayGridMonth:{type:\"dayGrid\",duration:{months:1},monthMode:!0,fixedWeekCount:!0}}}),hs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.getKeyInfo=function(){return{allDay:{},timed:{}}},t.prototype.getKeysForDateSpan=function(e){return e.allDay?[\"allDay\"]:[\"timed\"]},t.prototype.getKeysForEventDef=function(e){return e.allDay?un(e)?[\"timed\",\"allDay\"]:[\"allDay\"]:[\"timed\"]},t}(pr),vs=function(){function e(e,t,n){this.positions=e,this.dateProfile=t,this.slatMetas=n}return e.prototype.safeComputeTop=function(e){var t=this.dateProfile;if(sn(t.currentRange,e)){var n=be(e),r=e.valueOf()-n.valueOf();if(r>=$e(t.slotMinTime)&&r<$e(t.slotMaxTime))return this.computeTimeTop(Ye(r))}},e.prototype.computeDateTop=function(e,t){return t||(t=be(e)),this.computeTimeTop(Ye(e.valueOf()-t.valueOf()))},e.prototype.computeTimeTop=function(e){var t,n,r=this.positions,o=this.dateProfile,i=this.slatMetas,a=r.els.length,s=i[1].date.valueOf()-i[0].date.valueOf(),l=(e.milliseconds-$e(o.slotMinTime))/s;return l=Math.max(0,l),l=Math.min(a,l),t=Math.floor(l),n=l-(t=Math.min(t,a-1)),r.tops[t]+r.getHeight(t)*n},e}(),gs=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}],ms=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.rootElRef=Ar(),t.slatElRefs=new Li,t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context;return Hr(\"div\",{className:\"fc-timegrid-slots\",ref:this.rootElRef},Hr(\"table\",{className:t.theme.getClass(\"table\"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},e.tableColGroupNode,Hr(ys,{slatElRefs:this.slatElRefs,axis:e.axis,slatMetas:e.slatMetas})))},t.prototype.componentDidMount=function(){this.updateSizing()},t.prototype.componentDidUpdate=function(){this.updateSizing()},t.prototype.componentWillUnmount=function(){this.props.onCoords&&this.props.onCoords(null)},t.prototype.updateSizing=function(){var e,t=this.props;t.onCoords&&null!==t.clientWidth&&(this.rootElRef.current.offsetHeight&&t.onCoords(new vs(new Mr(this.rootElRef.current,(e=this.slatElRefs.currentMap,t.slatMetas.map((function(t){return e[t.key]}))),!1,!0),this.props.dateProfile,t.slatMetas)))},t}(jr);var ys=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=t.options,o=e.slatElRefs;return Hr(\"tbody\",null,e.slatMetas.map((function(i,a){var s={time:i.time,date:t.dateEnv.toDate(i.date),view:t.viewApi},l=[\"fc-timegrid-slot\",\"fc-timegrid-slot-lane\",i.isLabeled?\"\":\"fc-timegrid-slot-minor\"];return Hr(\"tr\",{key:i.key,ref:o.createRef(i.key)},e.axis&&Hr(Ss,r({},i)),Hr(uo,{hookProps:s,classNames:n.slotLaneClassNames,content:n.slotLaneContent,didMount:n.slotLaneDidMount,willUnmount:n.slotLaneWillUnmount},(function(e,t,n,r){return Hr(\"td\",{ref:e,className:l.concat(t).join(\" \"),\"data-time\":i.isoTimeStr},r)})))})))},t}(jr),Es=St({hour:\"numeric\",minute:\"2-digit\",omitZeroMinute:!0,meridiem:\"short\"});function Ss(e){var t=[\"fc-timegrid-slot\",\"fc-timegrid-slot-label\",e.isLabeled?\"fc-scrollgrid-shrink\":\"fc-timegrid-slot-minor\"];return Hr(zr.Consumer,null,(function(n){if(e.isLabeled){var r=n.dateEnv,o=n.options,i=n.viewApi,a=null==o.slotLabelFormat?Es:Array.isArray(o.slotLabelFormat)?St(o.slotLabelFormat[0]):St(o.slotLabelFormat),s={level:0,time:e.time,date:r.toDate(e.date),view:i,text:r.format(e.date,a)};return Hr(uo,{hookProps:s,classNames:o.slotLabelClassNames,content:o.slotLabelContent,defaultContent:Ds,didMount:o.slotLabelDidMount,willUnmount:o.slotLabelWillUnmount},(function(n,r,o,i){return Hr(\"td\",{ref:n,className:t.concat(r).join(\" \"),\"data-time\":e.isoTimeStr},Hr(\"div\",{className:\"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame\"},Hr(\"div\",{className:\"fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion\",ref:o},i)))}))}return Hr(\"td\",{className:t.join(\" \"),\"data-time\":e.isoTimeStr})}))}function Ds(e){return e.text}function bs(e,t,n,r,o){for(var i=new Date(0),a=e,s=Ye(0),l=n||function(e){var t,n,r;for(t=gs.length-1;t>=0;t--)if(n=Ye(gs[t]),null!==(r=Qe(n,e))&&r>1)return n;return e}(r),u=[];$e(a)<$e(t);){var c=o.add(i,a),d=null!==Qe(s,l);u.push({date:c,time:a,key:c.toISOString(),isoTimeStr:nt(c),isLabeled:d}),a=Xe(a,r),s=Xe(s,r)}return u}var Cs=St({week:\"short\"}),ws=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.allDaySplitter=new hs,t.headerElRef=Ar(),t.rootElRef=Ar(),t.scrollerElRef=Ar(),t.state={slatCoords:null},t.handleScrollTopRequest=function(e){var n=t.scrollerElRef.current;n&&(n.scrollTop=e)},t.renderHeadAxis=function(e){void 0===e&&(e=\"\");var n=t.context.options,o=t.props.dateProfile.renderRange,i=ye(o.start,o.end),a=n.navLinks&&1===i?{\"data-navlink\":gr(o.start,\"week\"),tabIndex:0}:{};return n.weekNumbers?Hr(ca,{date:o.start,defaultFormat:Cs},(function(t,n,o,i){return Hr(\"th\",{ref:t,className:[\"fc-timegrid-axis\",\"fc-scrollgrid-shrink\"].concat(n).join(\" \")},Hr(\"div\",{className:\"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid\",style:{height:e}},Hr(\"a\",r({ref:o,className:\"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner\"},a),i)))})):Hr(\"th\",{className:\"fc-timegrid-axis\"},Hr(\"div\",{className:\"fc-timegrid-axis-frame\",style:{height:e}}))},t.renderTableRowAxis=function(e){var n=t.context,r=n.options,o=n.viewApi,i={text:r.allDayText,view:o};return Hr(uo,{hookProps:i,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:Rs,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(t,n,r,o){return Hr(\"td\",{ref:t,className:[\"fc-timegrid-axis\",\"fc-scrollgrid-shrink\"].concat(n).join(\" \")},Hr(\"div\",{className:\"fc-timegrid-axis-frame fc-scrollgrid-shrink-frame\"+(null==e?\" fc-timegrid-axis-frame-liquid\":\"\"),style:{height:e}},Hr(\"span\",{className:\"fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner\",ref:r},o)))}))},t.handleSlatCoords=function(e){t.setState({slatCoords:e})},t}return n(t,e),t.prototype.renderSimpleLayout=function(e,t,n){var r=this.context,o=this.props,i=[],a=Ki(r.options);return e&&i.push({type:\"header\",key:\"header\",isSticky:a,chunk:{elRef:this.headerElRef,tableClassName:\"fc-col-header\",rowContent:e}}),t&&(i.push({type:\"body\",key:\"all-day\",chunk:{content:t}}),i.push({type:\"body\",key:\"all-day-divider\",outerContent:Hr(\"tr\",{className:\"fc-scrollgrid-section\"},Hr(\"td\",{className:\"fc-timegrid-divider \"+r.theme.getClass(\"tableCellShaded\")}))})),i.push({type:\"body\",key:\"body\",liquid:!0,expandRows:Boolean(r.options.expandRows),chunk:{scrollerElRef:this.scrollerElRef,content:n}}),Hr(yo,{viewSpec:r.viewSpec,elRef:this.rootElRef},(function(e,t){return Hr(\"div\",{className:[\"fc-timegrid\"].concat(t).join(\" \"),ref:e},Hr($i,{liquid:!o.isHeightAuto&&!o.forPrint,cols:[{width:\"shrink\"}],sections:i}))}))},t.prototype.renderHScrollLayout=function(e,t,n,r,o,i,a){var s=this,l=this.context.pluginHooks.scrollGridImpl;if(!l)throw new Error(\"No ScrollGrid implementation\");var u=this.context,c=this.props,d=!c.forPrint&&Ki(u.options),p=!c.forPrint&&Ji(u.options),f=[];e&&f.push({type:\"header\",key:\"header\",isSticky:d,syncRowHeights:!0,chunks:[{key:\"axis\",rowContent:function(e){return Hr(\"tr\",null,s.renderHeadAxis(e.rowSyncHeights[0]))}},{key:\"cols\",elRef:this.headerElRef,tableClassName:\"fc-col-header\",rowContent:e}]}),t&&(f.push({type:\"body\",key:\"all-day\",syncRowHeights:!0,chunks:[{key:\"axis\",rowContent:function(e){return Hr(\"tr\",null,s.renderTableRowAxis(e.rowSyncHeights[0]))}},{key:\"cols\",content:t}]}),f.push({key:\"all-day-divider\",type:\"body\",outerContent:Hr(\"tr\",{className:\"fc-scrollgrid-section\"},Hr(\"td\",{colSpan:2,className:\"fc-timegrid-divider \"+u.theme.getClass(\"tableCellShaded\")}))}));var h=u.options.nowIndicator;return f.push({type:\"body\",key:\"body\",liquid:!0,expandRows:Boolean(u.options.expandRows),chunks:[{key:\"axis\",content:function(e){return Hr(\"div\",{className:\"fc-timegrid-axis-chunk\"},Hr(\"table\",{style:{height:e.expandRows?e.clientHeight:\"\"}},e.tableColGroupNode,Hr(\"tbody\",null,Hr(Ts,{slatMetas:i}))),Hr(\"div\",{className:\"fc-timegrid-now-indicator-container\"},Hr(Mi,{unit:h?\"minute\":\"day\"},(function(e){var t=h&&a&&a.safeComputeTop(e);return\"number\"==typeof t?Hr(na,{isAxis:!0,date:e},(function(e,n,r,o){return Hr(\"div\",{ref:e,className:[\"fc-timegrid-now-indicator-arrow\"].concat(n).join(\" \"),style:{top:t}},o)})):null}))))}},{key:\"cols\",scrollerElRef:this.scrollerElRef,content:n}]}),p&&f.push({key:\"footer\",type:\"footer\",isSticky:!0,chunks:[{key:\"axis\",content:Xi},{key:\"cols\",content:Xi}]}),Hr(yo,{viewSpec:u.viewSpec,elRef:this.rootElRef},(function(e,t){return Hr(\"div\",{className:[\"fc-timegrid\"].concat(t).join(\" \"),ref:e},Hr(l,{liquid:!c.isHeightAuto&&!c.forPrint,colGroups:[{width:\"shrink\",cols:[{width:\"shrink\"}]},{cols:[{span:r,minWidth:o}]}],sections:f}))}))},t.prototype.getAllDayMaxEventProps=function(){var e=this.context.options,t=e.dayMaxEvents,n=e.dayMaxEventRows;return!0!==t&&!0!==n||(t=void 0,n=5),{dayMaxEvents:t,dayMaxEventRows:n}},t}(oo);function Rs(e){return e.text}var Ts=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){return this.props.slatMetas.map((function(e){return Hr(\"tr\",{key:e.key},Hr(Ss,r({},e)))}))},t}(jr);function ks(e,t){var n,r=[];for(n=0;n<t;n++)r.push([]);if(e)for(n=0;n<e.length;n++)r[e[n].col].push(e[n]);return r}function Ms(e,t){var n=[];if(e){for(a=0;a<t;a++)n[a]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(var r=0,o=e.segs;r<o.length;r++){var i=o[r];n[i.col].segs.push(i)}}else for(var a=0;a<t;a++)n[a]=null;return n}function xs(e,t,n,r,o){return _s(e,t,n,r),function(e,t){for(var n=0,r=e;n<r.length;n++){(c=r[n]).level=null,c.forwardCoord=null,c.backwardCoord=null,c.forwardPressure=null}var o,i=function(e){var t,n,r,o=[];for(t=0;t<e.length;t++){for(n=e[t],r=0;r<o.length&&Is(n,o[r]).length;r++);n.level=r,(o[r]||(o[r]=[])).push(n)}return o}(e=hn(e,t));if(function(e){var t,n,r,o,i;for(t=0;t<e.length;t++)for(n=e[t],r=0;r<n.length;r++)for((o=n[r]).forwardSegs=[],i=t+1;i<e.length;i++)Is(o,e[i],o.forwardSegs)}(i),o=i[0]){for(var a=0,s=o;a<s.length;a++){Ps(c=s[a])}for(var l=0,u=o;l<u.length;l++){var c;Ns(c=u[l],0,0,t)}}return e}(e,o)}function _s(e,t,n,r){for(var o=0,i=e;o<i.length;o++){var a=i[o];a.top=n.computeDateTop(a.start,t),a.bottom=Math.max(a.top+(r||0),n.computeDateTop(a.end,t))}}function Is(e,t,n){void 0===n&&(n=[]);for(var r=0;r<t.length;r++)o=e,i=t[r],o.bottom>i.top&&o.top<i.bottom&&n.push(t[r]);var o,i;return n}function Ps(e){var t,n,r=e.forwardSegs,o=0;if(null==e.forwardPressure){for(t=0;t<r.length;t++)Ps(n=r[t]),o=Math.max(o,1+n.forwardPressure);e.forwardPressure=o}}function Ns(e,t,n,r){var o,i=e.forwardSegs;if(null==e.forwardCoord)for(i.length?(!function(e,t){var n=e.map(Hs),r=[{field:\"forwardPressure\",order:-1},{field:\"backwardCoord\",order:1}].concat(t);n.sort((function(e,t){return ae(e,t,r)})),n.map((function(e){return e._seg}))}(i,r),Ns(i[0],t+1,n,r),e.forwardCoord=i[0].backwardCoord):e.forwardCoord=1,e.backwardCoord=e.forwardCoord-(e.forwardCoord-n)/(t+1),o=0;o<i.length;o++)Ns(i[o],0,e.forwardCoord,r)}function Hs(e){var t=vn(e);return t.forwardPressure=e.forwardPressure,t.backwardCoord=e.backwardCoord,t}var Os=St({hour:\"numeric\",minute:\"2-digit\",meridiem:!1}),As=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=[\"fc-timegrid-event\",\"fc-v-event\"];return this.props.isCondensed&&e.push(\"fc-timegrid-event-condensed\"),Hr(ea,r({},this.props,{defaultTimeFormat:Os,extraClassNames:e}))},t}(jr);di.timeGridEventCondensedHeight=30;var Us=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context.options.selectMirror,o=t.eventDrag&&t.eventDrag.segs||t.eventResize&&t.eventResize.segs||n&&t.dateSelectionSegs||[],i=t.eventDrag&&t.eventDrag.affectedInstances||t.eventResize&&t.eventResize.affectedInstances||{};return Hr(oa,{elRef:t.elRef,date:t.date,dateProfile:t.dateProfile,todayRange:t.todayRange,extraHookProps:t.extraHookProps},(function(a,s,l){return Hr(\"td\",r({ref:a,className:[\"fc-timegrid-col\"].concat(s,t.extraClassNames||[]).join(\" \")},l,t.extraDataAttrs),Hr(\"div\",{className:\"fc-timegrid-col-frame\"},Hr(\"div\",{className:\"fc-timegrid-col-bg\"},e.renderFillSegs(t.businessHourSegs,\"non-business\"),e.renderFillSegs(t.bgEventSegs,\"bg-event\"),e.renderFillSegs(t.dateSelectionSegs,\"highlight\")),Hr(\"div\",{className:\"fc-timegrid-col-events\"},e.renderFgSegs(t.fgEventSegs,i)),Hr(\"div\",{className:\"fc-timegrid-col-events\"},e.renderFgSegs(o,{},Boolean(t.eventDrag),Boolean(t.eventResize),Boolean(n))),Hr(\"div\",{className:\"fc-timegrid-now-indicator-container\"},e.renderNowIndicator(t.nowIndicatorSegs)),Hr(Ls,{date:t.date,dateProfile:t.dateProfile,todayRange:t.todayRange,extraHookProps:t.extraHookProps})))}))},t.prototype.renderFgSegs=function(e,t,n,r,o){var i=this.props;return i.forPrint?this.renderPrintFgSegs(e):i.slatCoords?this.renderPositionedFgSegs(e,t,n,r,o):void 0},t.prototype.renderPrintFgSegs=function(e){var t=this.props;return(e=hn(e,this.context.options.eventOrder)).map((function(e){return Hr(\"div\",{className:\"fc-timegrid-event-harness\",key:e.eventRange.instance.instanceId},Hr(As,r({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1,isCondensed:!1},Sn(e,t.todayRange,t.nowDate))))}))},t.prototype.renderPositionedFgSegs=function(e,t,n,o,i){var a=this,s=this.context,l=this.props;return(e=xs(e,l.date,l.slatCoords,s.options.eventMinHeight,s.options.eventOrder)).map((function(e){var s=e.eventRange.instance.instanceId,u=n||o||i?r({left:0,right:0},a.computeSegTopBottomCss(e)):a.computeFgSegPositionCss(e);return Hr(\"div\",{className:\"fc-timegrid-event-harness\"+(e.level>0?\" fc-timegrid-event-harness-inset\":\"\"),key:s,style:r({visibility:t[s]?\"hidden\":\"\"},u)},Hr(As,r({seg:e,isDragging:n,isResizing:o,isDateSelecting:i,isSelected:s===l.eventSelection,isCondensed:e.bottom-e.top<di.timeGridEventCondensedHeight},Sn(e,l.todayRange,l.nowDate))))}))},t.prototype.renderFillSegs=function(e,t){var n=this,o=this.context,i=this.props;if(i.slatCoords){_s(e,i.date,i.slatCoords,o.options.eventMinHeight);var a=e.map((function(e){return Hr(\"div\",{key:bn(e.eventRange),className:\"fc-timegrid-bg-harness\",style:n.computeSegTopBottomCss(e)},\"bg-event\"===t?Hr(la,r({seg:e},Sn(e,i.todayRange,i.nowDate))):sa(t))}));return Hr(Ur,null,a)}},t.prototype.renderNowIndicator=function(e){var t=this.props,n=t.slatCoords,r=t.date;if(n)return e.map((function(e,t){return Hr(na,{isAxis:!1,date:r,key:t},(function(t,o,i,a){return Hr(\"div\",{ref:t,className:[\"fc-timegrid-now-indicator-line\"].concat(o).join(\" \"),style:{top:n.computeDateTop(e.start,r)}},a)}))}))},t.prototype.computeFgSegPositionCss=function(e){var t,n,o=this.context,i=o.isRtl,a=o.options.slotEventOverlap,s=e.backwardCoord,l=e.forwardCoord;a&&(l=Math.min(1,s+2*(l-s))),i?(t=1-l,n=s):(t=s,n=1-l);var u={zIndex:e.level+1,left:100*t+\"%\",right:100*n+\"%\"};return a&&e.forwardPressure&&(u[i?\"marginLeft\":\"marginRight\"]=20),r(r({},u),this.computeSegTopBottomCss(e))},t.prototype.computeSegTopBottomCss=function(e){return{top:e.top,bottom:-e.bottom}},t}(jr),Ls=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props;return Hr(ia,{date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,extraHookProps:e.extraHookProps},(function(e,t){return t&&Hr(\"div\",{className:\"fc-timegrid-col-misc\",ref:e},t)}))},t}(jr),Ws=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.splitFgEventSegs=it(ks),t.splitBgEventSegs=it(ks),t.splitBusinessHourSegs=it(ks),t.splitNowIndicatorSegs=it(ks),t.splitDateSelectionSegs=it(ks),t.splitEventDrag=it(Ms),t.splitEventResize=it(Ms),t.rootElRef=Ar(),t.cellElRefs=new Li,t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context.options.nowIndicator&&t.slatCoords&&t.slatCoords.safeComputeTop(t.nowDate),r=t.cells.length,o=this.splitFgEventSegs(t.fgEventSegs,r),i=this.splitBgEventSegs(t.bgEventSegs,r),a=this.splitBusinessHourSegs(t.businessHourSegs,r),s=this.splitNowIndicatorSegs(t.nowIndicatorSegs,r),l=this.splitDateSelectionSegs(t.dateSelectionSegs,r),u=this.splitEventDrag(t.eventDrag,r),c=this.splitEventResize(t.eventResize,r);return Hr(\"div\",{className:\"fc-timegrid-cols\",ref:this.rootElRef},Hr(\"table\",{style:{minWidth:t.tableMinWidth,width:t.clientWidth}},t.tableColGroupNode,Hr(\"tbody\",null,Hr(\"tr\",null,t.axis&&Hr(\"td\",{className:\"fc-timegrid-col fc-timegrid-axis\"},Hr(\"div\",{className:\"fc-timegrid-col-frame\"},Hr(\"div\",{className:\"fc-timegrid-now-indicator-container\"},\"number\"==typeof n&&Hr(na,{isAxis:!0,date:t.nowDate},(function(e,t,r,o){return Hr(\"div\",{ref:e,className:[\"fc-timegrid-now-indicator-arrow\"].concat(t).join(\" \"),style:{top:n}},o)}))))),t.cells.map((function(n,r){return Hr(Us,{key:n.key,elRef:e.cellElRefs.createRef(n.key),dateProfile:t.dateProfile,date:n.date,nowDate:t.nowDate,todayRange:t.todayRange,extraHookProps:n.extraHookProps,extraDataAttrs:n.extraDataAttrs,extraClassNames:n.extraClassNames,fgEventSegs:o[r],bgEventSegs:i[r],businessHourSegs:a[r],nowIndicatorSegs:s[r],dateSelectionSegs:l[r],eventDrag:u[r],eventResize:c[r],slatCoords:t.slatCoords,eventSelection:t.eventSelection,forPrint:t.forPrint})}))))))},t.prototype.componentDidMount=function(){this.updateCoords()},t.prototype.componentDidUpdate=function(){this.updateCoords()},t.prototype.updateCoords=function(){var e,t=this.props;t.onColCoords&&null!==t.clientWidth&&t.onColCoords(new Mr(this.rootElRef.current,(e=this.cellElRefs.currentMap,t.cells.map((function(t){return e[t.key]}))),!0,!1))},t}(jr);var Vs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.processSlotOptions=it(zs),t.state={slatCoords:null},t.handleScrollRequest=function(e){var n=t.props.onScrollTopRequest,r=t.state.slatCoords;if(n&&r){if(e.time){var o=r.computeTimeTop(e.time);(o=Math.ceil(o))&&o++,n(o)}return!0}},t.handleColCoords=function(e){t.colCoords=e},t.handleSlatCoords=function(e){t.setState({slatCoords:e}),t.props.onSlatCoords&&t.props.onSlatCoords(e)},t}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.state;return Hr(\"div\",{className:\"fc-timegrid-body\",ref:e.rootElRef,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},Hr(ms,{axis:e.axis,dateProfile:e.dateProfile,slatMetas:e.slatMetas,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:\"\",tableMinWidth:e.tableMinWidth,tableColGroupNode:e.axis?e.tableColGroupNode:null,onCoords:this.handleSlatCoords}),Hr(Ws,{cells:e.cells,axis:e.axis,dateProfile:e.dateProfile,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange,nowDate:e.nowDate,nowIndicatorSegs:e.nowIndicatorSegs,clientWidth:e.clientWidth,tableMinWidth:e.tableMinWidth,tableColGroupNode:e.tableColGroupNode,slatCoords:t.slatCoords,onColCoords:this.handleColCoords,forPrint:e.forPrint}))},t.prototype.componentDidMount=function(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)},t.prototype.componentDidUpdate=function(e){this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)},t.prototype.componentWillUnmount=function(){this.scrollResponder.detach()},t.prototype.positionToHit=function(e,t){var n=this.context,r=n.dateEnv,o=n.options,i=this.colCoords,a=this.props.dateProfile,s=this.state.slatCoords,l=this.processSlotOptions(this.props.slotDuration,o.snapDuration),u=l.snapDuration,c=l.snapsPerSlot,d=i.leftToIndex(e),p=s.positions.topToIndex(t);if(null!=d&&null!=p){var f=s.positions.tops[p],h=s.positions.getHeight(p),v=(t-f)/h,g=p*c+Math.floor(v*c),m=this.props.cells[d].date,y=Xe(a.slotMinTime,Ke(u,g)),E=r.add(m,y);return{col:d,dateSpan:{range:{start:E,end:r.add(E,u)},allDay:!1},dayEl:i.els[d],relativeRect:{left:i.lefts[d],right:i.rights[d],top:f,bottom:f+h}}}},t}(jr);function zs(e,t){var n=t||e,r=Qe(e,n);return null===r&&(n=e,r=1),{snapDuration:n,snapsPerSlot:r}}var Fs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildDayRanges=it(Bs),t.slicer=new js,t.timeColsRef=Ar(),t.handleRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,o=t.dateProfile,i=t.dayTableModel,a=n.options.nowIndicator,s=this.buildDayRanges(i,o,n.dateEnv);return Hr(Mi,{unit:a?\"minute\":\"day\"},(function(l,u){return Hr(Vs,r({ref:e.timeColsRef,rootElRef:e.handleRootEl},e.slicer.sliceProps(t,o,null,n,s),{forPrint:t.forPrint,axis:t.axis,dateProfile:o,slatMetas:t.slatMetas,slotDuration:t.slotDuration,cells:i.cells[0],tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,expandRows:t.expandRows,nowDate:l,nowIndicatorSegs:a&&e.slicer.sliceNowDate(l,n,s),todayRange:u,onScrollTopRequest:t.onScrollTopRequest,onSlatCoords:t.onSlatCoords}))}))},t.prototype.queryHit=function(e,t){var n=this.timeColsRef.current.positionToHit(e,t);if(n)return{component:this,dateSpan:n.dateSpan,dayEl:n.dayEl,rect:{left:n.relativeRect.left,right:n.relativeRect.right,top:n.relativeRect.top,bottom:n.relativeRect.bottom},layer:0}},t}(oo);function Bs(e,t,n){for(var r=[],o=0,i=e.headerDates;o<i.length;o++){var a=i[o];r.push({start:n.add(a,t.slotMinTime),end:n.add(a,t.slotMaxTime)})}return r}var js=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.sliceRange=function(e,t){for(var n=[],r=0;r<t.length;r++){var o=nn(e,t[r]);o&&n.push({start:o.start,end:o.end,isStart:o.start.valueOf()===e.start.valueOf(),isEnd:o.end.valueOf()===e.end.valueOf(),col:r})}return n},t}(Hi),Gs=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buildTimeColsModel=it(qs),t.buildSlatMetas=it(bs),t}return n(t,e),t.prototype.render=function(){var e=this,t=this.context,n=t.options,o=t.dateEnv,i=t.dateProfileGenerator,a=this.props,s=a.dateProfile,l=this.buildTimeColsModel(s,i),u=this.allDaySplitter.splitProps(a),c=this.buildSlatMetas(s.slotMinTime,s.slotMaxTime,n.slotLabelInterval,n.slotDuration,o),d=n.dayMinWidth,p=!d,f=d,h=n.dayHeaders&&Hr(_i,{dates:l.headerDates,dateProfile:s,datesRepDistinctDays:!0,renderIntro:p?this.renderHeadAxis:null}),v=!1!==n.allDaySlot&&function(t){return Hr(us,r({},u.allDay,{dateProfile:s,dayTableModel:l,nextDayThreshold:n.nextDayThreshold,tableMinWidth:t.tableMinWidth,colGroupNode:t.tableColGroupNode,renderRowIntro:p?e.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:e.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:a.forPrint},e.getAllDayMaxEventProps()))},g=function(t){return Hr(Fs,r({},u.timed,{dayTableModel:l,dateProfile:s,axis:p,slotDuration:n.slotDuration,slatMetas:c,forPrint:a.forPrint,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,onSlatCoords:e.handleSlatCoords,expandRows:t.expandRows,onScrollTopRequest:e.handleScrollTopRequest}))};return f?this.renderHScrollLayout(h,v,g,l.colCnt,d,c,this.state.slatCoords):this.renderSimpleLayout(h,v,g)},t}(ws);function qs(e,t){var n=new Pi(e.renderRange,t);return new Ni(n,!1)}var Ys=io({initialView:\"timeGridWeek\",optionRefiners:{allDaySlot:Boolean},views:{timeGrid:{component:Gs,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:\"00:30:00\",slotEventOverlap:!0},timeGridDay:{type:\"timeGrid\",duration:{days:1}},timeGridWeek:{type:\"timeGrid\",duration:{weeks:1}}}}),Zs=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=e.dayDate,n=e.todayRange,o=this.context,i=o.theme,a=o.dateEnv,s=o.options,l=o.viewApi,u=hr(t,n),c=s.listDayFormat?a.format(t,s.listDayFormat):\"\",d=s.listDaySideFormat?a.format(t,s.listDaySideFormat):\"\",p=s.navLinks?gr(t):null,f=r({date:a.toDate(t),view:l,text:c,sideText:d,navLinkData:p},u),h=[\"fc-list-day\"].concat(vr(u,i));return Hr(uo,{hookProps:f,classNames:s.dayHeaderClassNames,content:s.dayHeaderContent,defaultContent:Xs,didMount:s.dayHeaderDidMount,willUnmount:s.dayHeaderWillUnmount},(function(e,n,r,o){return Hr(\"tr\",{ref:e,className:h.concat(n).join(\" \"),\"data-date\":tt(t)},Hr(\"th\",{colSpan:3},Hr(\"div\",{className:\"fc-list-day-cushion \"+i.getClass(\"tableCellShaded\"),ref:r},o)))}))},t}(jr);function Xs(e){var t=e.navLinkData?{\"data-navlink\":e.navLinkData,tabIndex:0}:{};return Hr(Ur,null,e.text&&Hr(\"a\",r({className:\"fc-list-day-text\"},t),e.text),e.sideText&&Hr(\"a\",r({className:\"fc-list-day-side-text\"},t),e.sideText))}var Ks=St({hour:\"numeric\",minute:\"2-digit\",meridiem:\"short\"}),Js=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.render=function(){var e=this.props,t=this.context,n=e.seg,r=t.options.eventTimeFormat||Ks;return Hr(Qi,{seg:n,timeText:\"\",disableDragging:!0,disableResizing:!0,defaultContent:$s,isPast:e.isPast,isFuture:e.isFuture,isToday:e.isToday,isSelected:e.isSelected,isDragging:e.isDragging,isResizing:e.isResizing,isDateSelecting:e.isDateSelecting},(function(e,o,i,a,s){return Hr(\"tr\",{className:[\"fc-list-event\",s.event.url?\"fc-event-forced-url\":\"\"].concat(o).join(\" \"),ref:e},function(e,t,n){var r=n.options;if(!1!==r.displayEventTime){var o=e.eventRange.def,i=e.eventRange.instance,a=!1,s=void 0;if(o.allDay?a=!0:$t(e.eventRange.range)?e.isStart?s=En(e,t,n,null,null,i.range.start,e.end):e.isEnd?s=En(e,t,n,null,null,e.start,i.range.end):a=!0:s=En(e,t,n),a){var l={text:n.options.allDayText,view:n.viewApi};return Hr(uo,{hookProps:l,classNames:r.allDayClassNames,content:r.allDayContent,defaultContent:Qs,didMount:r.allDayDidMount,willUnmount:r.allDayWillUnmount},(function(e,t,n,r){return Hr(\"td\",{className:[\"fc-list-event-time\"].concat(t).join(\" \"),ref:e},r)}))}return Hr(\"td\",{className:\"fc-list-event-time\"},s)}return null}(n,r,t),Hr(\"td\",{className:\"fc-list-event-graphic\"},Hr(\"span\",{className:\"fc-list-event-dot\",style:{borderColor:s.borderColor||s.backgroundColor}})),Hr(\"td\",{className:\"fc-list-event-title\",ref:i},a))}))},t}(jr);function $s(e){var t=e.event,n=t.url;return Hr(\"a\",r({},n?{href:n}:{}),t.title)}function Qs(e){return e.text}var el=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.computeDateVars=it(nl),t.eventStoreToSegs=it(t._eventStoreToSegs),t.setRootEl=function(e){e?t.context.registerInteractiveComponent(t,{el:e}):t.context.unregisterInteractiveComponent(t)},t}return n(t,e),t.prototype.render=function(){var e=this,t=this.props,n=this.context,r=[\"fc-list\",n.theme.getClass(\"table\"),!1!==n.options.stickyHeaderDates?\"fc-list-sticky\":\"\"],o=this.computeDateVars(t.dateProfile),i=o.dayDates,a=o.dayRanges,s=this.eventStoreToSegs(t.eventStore,t.eventUiBases,a);return Hr(yo,{viewSpec:n.viewSpec,elRef:this.setRootEl},(function(n,o){return Hr(\"div\",{ref:n,className:r.concat(o).join(\" \")},Hr(Ui,{liquid:!t.isHeightAuto,overflowX:t.isHeightAuto?\"visible\":\"hidden\",overflowY:t.isHeightAuto?\"visible\":\"auto\"},s.length>0?e.renderSegList(s,i):e.renderEmptyMessage()))}))},t.prototype.renderEmptyMessage=function(){var e=this.context,t=e.options,n=e.viewApi,r={text:t.noEventsText,view:n};return Hr(uo,{hookProps:r,classNames:t.noEventsClassNames,content:t.noEventsContent,defaultContent:tl,didMount:t.noEventsDidMount,willUnmount:t.noEventsWillUnmount},(function(e,t,n,r){return Hr(\"div\",{className:[\"fc-list-empty\"].concat(t).join(\" \"),ref:e},Hr(\"div\",{className:\"fc-list-empty-cushion\",ref:n},r))}))},t.prototype.renderSegList=function(e,t){var n=this.context,o=n.theme,i=n.options,a=function(e){var t,n,r=[];for(t=0;t<e.length;t++)n=e[t],(r[n.dayIndex]||(r[n.dayIndex]=[])).push(n);return r}(e);return Hr(Mi,{unit:\"day\"},(function(e,n){for(var s=[],l=0;l<a.length;l++){var u=a[l];if(u){var c=t[l].toISOString();s.push(Hr(Zs,{key:c,dayDate:t[l],todayRange:n}));for(var d=0,p=u=hn(u,i.eventOrder);d<p.length;d++){var f=p[d];s.push(Hr(Js,r({key:c+\":\"+f.eventRange.instance.instanceId,seg:f,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:!1},Sn(f,n,e))))}}}return Hr(\"table\",{className:\"fc-list-table \"+o.getClass(\"table\")},Hr(\"tbody\",null,s))}))},t.prototype._eventStoreToSegs=function(e,t,n){return this.eventRangesToSegs(ln(e,t,this.props.dateProfile.activeRange,this.context.options.nextDayThreshold).fg,n)},t.prototype.eventRangesToSegs=function(e,t){for(var n=[],r=0,o=e;r<o.length;r++){var i=o[r];n.push.apply(n,this.eventRangeToSegs(i,t))}return n},t.prototype.eventRangeToSegs=function(e,t){var n,r,o,i=this.context.dateEnv,a=this.context.options.nextDayThreshold,s=e.range,l=e.def.allDay,u=[];for(n=0;n<t.length;n++)if((r=nn(s,t[n]))&&(o={component:this,eventRange:e,start:r.start,end:r.end,isStart:e.isStart&&r.start.valueOf()===s.start.valueOf(),isEnd:e.isEnd&&r.end.valueOf()===s.end.valueOf(),dayIndex:n},u.push(o),!o.isEnd&&!l&&n+1<t.length&&s.end<i.add(t[n+1].start,a))){o.end=s.end,o.isEnd=!0;break}return u},t}(oo);function tl(e){return e.text}function nl(e){for(var t=be(e.renderRange.start),n=e.renderRange.end,r=[],o=[];t<n;)r.push(t),o.push({start:t,end:ve(t,1)}),t=ve(t,1);return{dayDates:r,dayRanges:o}}function rl(e){return!1===e?null:St(e)}var ol=io({optionRefiners:{listDayFormat:rl,listDaySideFormat:rl,noEventsClassNames:_t,noEventsContent:_t,noEventsDidMount:_t,noEventsWillUnmount:_t},views:{list:{component:el,buttonTextKey:\"list\",listDayFormat:{month:\"long\",day:\"numeric\",year:\"numeric\"}},listDay:{type:\"list\",duration:{days:1},listDayFormat:{weekday:\"long\"}},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\"}},listYear:{type:\"list\",duration:{year:1},listDaySideFormat:{weekday:\"long\"}}}}),il=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Pr);il.prototype.classes={root:\"fc-theme-bootstrap\",table:\"table-bordered\",tableCellShaded:\"table-active\",buttonGroup:\"btn-group\",button:\"btn btn-default\",buttonActive:\"active\",popover:\"popover\",popoverHeader:\"popover-header\",popoverContent:\"popover-body\"},il.prototype.baseIconClass=\"fa\",il.prototype.iconClasses={close:\"fa-times\",prev:\"fa-chevron-left\",next:\"fa-chevron-right\",prevYear:\"fa-angle-double-left\",nextYear:\"fa-angle-double-right\"},il.prototype.rtlIconClasses={prev:\"fa-chevron-right\",next:\"fa-chevron-left\",prevYear:\"fa-angle-double-right\",nextYear:\"fa-angle-double-left\"},il.prototype.iconOverrideOption=\"bootstrapFontAwesome\",il.prototype.iconOverrideCustomButtonOption=\"bootstrapFontAwesome\",il.prototype.iconOverridePrefix=\"fa-\";var al=io({themeClasses:{bootstrap:il}});var sl=io({eventSourceDefs:[{parseMeta:function(e){var t=e.googleCalendarId;return!t&&e.url&&(t=function(e){var t;if(/^[^/]+@([^/.]+\\.)*(google|googlemail|gmail)\\.com$/.test(e))return e;if((t=/^https:\\/\\/www.googleapis.com\\/calendar\\/v3\\/calendars\\/([^/]*)/.exec(e))||(t=/^https?:\\/\\/www.google.com\\/calendar\\/feeds\\/([^/]*)/.exec(e)))return decodeURIComponent(t[1])}(e.url)),t?{googleCalendarId:t,googleCalendarApiKey:e.googleCalendarApiKey,googleCalendarApiBase:e.googleCalendarApiBase,extraParams:e.extraParams}:null},fetch:function(e,t,n){var o=e.context,i=o.dateEnv,a=o.options,s=e.eventSource.meta,l=s.googleCalendarApiKey||a.googleCalendarApiKey;if(l){var u=function(e){var t=e.googleCalendarApiBase;t||(t=\"https://www.googleapis.com/calendar/v3/calendars\");return t+\"/\"+encodeURIComponent(e.googleCalendarId)+\"/events\"}(s),c=s.extraParams,d=\"function\"==typeof c?c():c,p=function(e,t,n,o){var i,a,s;o.canComputeOffset?(a=o.formatIso(e.start),s=o.formatIso(e.end)):(a=ve(e.start,-1).toISOString(),s=ve(e.end,1).toISOString());i=r(r({},n||{}),{key:t,timeMin:a,timeMax:s,singleEvents:!0,maxResults:9999}),\"local\"!==o.timeZone&&(i.timeZone=o.timeZone);return i}(e.range,l,d,i);Wo(\"GET\",u,p,(function(e,r){var o,i;e.error?n({message:\"Google Calendar API: \"+e.error.message,errors:e.error.errors,xhr:r}):t({rawEvents:(o=e.items,i=p.timeZone,o.map((function(e){return function(e,t){var n=e.htmlLink||null;n&&t&&(n=function(e,t){return e.replace(/(\\?.*?)?(#|$)/,(function(e,n,r){return(n?n+\"&\":\"?\")+t+r}))}(n,\"ctz=\"+t));return{id:e.id,title:e.summary,start:e.start.dateTime||e.start.date,end:e.end.dateTime||e.end.date,url:n,location:e.location,description:e.description}}(e,i)}))),xhr:r})}),(function(e,t){n({message:e,xhr:t})}))}else n({message:\"Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/\"})}}],optionRefiners:{googleCalendarApiKey:String},eventSourceRefiners:{googleCalendarApiKey:String,googleCalendarId:String,googleCalendarApiBase:String,extraParams:_t}});return Fo.push(Wa,fs,Ys,ol,al,sl),e.BASE_OPTION_DEFAULTS=bt,e.BASE_OPTION_REFINERS=Dt,e.BaseComponent=jr,e.BgEvent=la,e.BootstrapTheme=il,e.Calendar=pa,e.CalendarApi=Vn,e.CalendarContent=Ei,e.CalendarDataManager=Zo,e.CalendarDataProvider=oi,e.CalendarRoot=bi,e.Component=Nr,e.ContentHook=po,e.CustomContentRenderContext=co,e.DateComponent=oo,e.DateEnv=Xn,e.DateProfileGenerator=Co,e.DayCellContent=ia,e.DayCellRoot=oa,e.DayGridView=ds,e.DayHeader=_i,e.DaySeriesModel=Pi,e.DayTable=us,e.DayTableModel=Ni,e.DayTableSlicer=cs,e.DayTimeCols=Fs,e.DayTimeColsSlicer=js,e.DayTimeColsView=Gs,e.DelayedRunner=Go,e.Draggable=Aa,e.ElementDragging=ci,e.ElementScrollController=_r,e.Emitter=kr,e.EventApi=zn,e.EventRoot=Qi,e.EventSourceApi=L,e.FeaturefulElementDragging=wa,e.Fragment=Ur,e.Interaction=ai,e.ListView=el,e.MountHook=ho,e.NamedTimeZoneImpl=ii,e.NowIndicatorRoot=na,e.NowTimer=Mi,e.PointerDragging=ga,e.PositionCache=Mr,e.RefMap=Li,e.RenderHook=uo,e.ScrollController=xr,e.ScrollResponder=Vr,e.Scroller=Ui,e.SimpleScrollGrid=$i,e.Slicer=Hi,e.Splitter=pr,e.StandardEvent=ea,e.Table=as,e.TableDateCell=Ri,e.TableDowCell=Ti,e.TableView=Va,e.Theme=Pr,e.ThirdPartyDraggable=La,e.TimeCols=Vs,e.TimeColsSlatsCoords=vs,e.TimeColsView=ws,e.ViewApi=On,e.ViewContextType=zr,e.ViewRoot=yo,e.WeekNumberRoot=ca,e.WindowScrollController=Ir,e.addDays=ve,e.addDurations=Xe,e.addMs=ge,e.addWeeks=he,e.allowContextMenu=oe,e.allowSelection=ne,e.applyMutationToEventStore=Pn,e.applyStyle=j,e.applyStyleProp=G,e.asCleanDays=function(e){return e.years||e.months||e.milliseconds?0:e.days},e.asRoughMinutes=function(e){return $e(e)/6e4},e.asRoughMs=$e,e.asRoughSeconds=function(e){return $e(e)/1e3},e.buildClassNameNormalizer=vo,e.buildDayRanges=Bs,e.buildDayTableModel=ps,e.buildEventApis=Bn,e.buildEventRangeKey=bn,e.buildHashFromArray=function(e,t){for(var n={},r=0;r<e.length;r++){var o=t(e[r],r);n[o[0]]=o[1]}return n},e.buildNavLinkData=gr,e.buildSegCompareObj=vn,e.buildSegTimeText=En,e.buildSlatMetas=bs,e.buildTimeColsModel=qs,e.collectFromHash=Fe,e.combineEventUis=Vt,e.compareByFieldSpec=se,e.compareByFieldSpecs=ae,e.compareNumbers=ce,e.compareObjs=Ve,e.computeEdges=br,e.computeFallbackHeaderFormat=Ci,e.computeHeightAndMargins=function(e){return e.getBoundingClientRect().height+function(e){var t=window.getComputedStyle(e);return parseInt(t.marginTop,10)+parseInt(t.marginBottom,10)}(e)},e.computeInnerRect=Cr,e.computeRect=wr,e.computeSegDraggable=gn,e.computeSegEndResizable=yn,e.computeSegStartResizable=mn,e.computeShrinkWidth=Wi,e.computeSmallestCellWidth=pe,e.computeVisibleDayRange=Jt,e.config=di,e.constrainPoint=sr,e.createContext=Lr,e.createDuration=Ye,e.createElement=Hr,e.createEmptyEventStore=Ht,e.createEventInstance=Ie,e.createEventUi=Wt,e.createFormatter=St,e.createPlugin=io,e.createRef=Ar,e.diffDates=Qt,e.diffDayAndTime=Ee,e.diffDays=ye,e.diffPoints=ur,e.diffWeeks=me,e.diffWholeDays=De,e.diffWholeWeeks=Se,e.disableCursor=Q,e.elementClosest=V,e.elementMatches=z,e.enableCursor=ee,e.eventTupleToStore=Pt,e.filterEventStoreDefs=At,e.filterHash=He,e.findDirectChildren=function(e,t){for(var n=e instanceof HTMLElement?[e]:e,r=[],o=0;o<n.length;o++)for(var i=n[o].children,a=0;a<i.length;a++){var s=i[a];t&&!z(s,t)||r.push(s)}return r},e.findElements=F,e.flexibleCompare=le,e.flushToDom=Wr,e.formatDate=function(e,t){void 0===t&&(t={});var n=tr(t),r=St(t),o=n.createMarkerMeta(e);return o?n.format(o.marker,r,{forcedTzo:o.forcedTzo}):\"\"},e.formatDayString=tt,e.formatIsoTimeString=nt,e.formatRange=function(e,t,n){var r=tr(\"object\"==typeof n&&n?n:{}),o=St(n),i=r.createMarkerMeta(e),a=r.createMarkerMeta(t);return i&&a?r.formatRange(i.marker,a.marker,o,{forcedStartTzo:i.forcedTzo,forcedEndTzo:a.forcedTzo,isEndExclusive:n.isEndExclusive,defaultSeparator:bt.defaultRangeSeparator}):\"\"},e.getAllowYScrolling=zi,e.getCanVGrowWithinCell=cr,e.getClippingParents=Rr,e.getDateMeta=hr,e.getDayClassNames=vr,e.getDefaultEventEnd=In,e.getElSeg=dn,e.getEventClassNames=Dn,e.getIsRtlScrollbarOnLeft=Er,e.getRectCenter=lr,e.getRelevantEvents=Nt,e.getScrollGridClassNames=Yi,e.getScrollbarWidths=Sr,e.getSectionClassNames=Zi,e.getSectionHasLiquidHeight=Vi,e.getSegMeta=Sn,e.getSlotClassNames=function(e,t){var n=[\"fc-slot\",\"fc-slot-\"+fe[e.dow]];return e.isDisabled?n.push(\"fc-slot-disabled\"):(e.isToday&&(n.push(\"fc-slot-today\"),n.push(t.getClass(\"today\"))),e.isPast&&n.push(\"fc-slot-past\"),e.isFuture&&n.push(\"fc-slot-future\")),n},e.getStickyFooterScrollbar=Ji,e.getStickyHeaderDates=Ki,e.getUnequalProps=We,e.globalLocales=Kn,e.globalPlugins=Fo,e.greatestDurationDenominator=et,e.guid=$,e.hasBgRendering=un,e.hasShrinkWidth=qi,e.identity=_t,e.interactionSettingsStore=ui,e.interactionSettingsToStore=li,e.intersectRanges=nn,e.intersectRects=ar,e.isArraysEqual=ot,e.isColPropsEqual=Bi,e.isDateSpansEqual=Rn,e.isInt=de,e.isInteractionValid=Jr,e.isMultiDayRange=$t,e.isPropsEqual=Le,e.isPropsValid=Qr,e.isValidDate=xe,e.listenBySelector=Z,e.mapHash=Oe,e.memoize=it,e.memoizeArraylike=function(e,t,n){var r=[],o=[];return function(i){for(var a=r.length,s=i.length,l=0;l<a;l++)if(i[l]){if(!ot(r[l],i[l])){n&&n(o[l]);var u=e.apply(this,i[l]);t&&t(u,o[l])||(o[l]=u)}}else n&&n(o[l]);for(;l<s;l++)o[l]=e.apply(this,i[l]);return r=i,o.splice(s),o}},e.memoizeHashlike=function(e,t,n){var r={},o={};return function(i){var a={};for(var s in i)if(o[s])if(ot(r[s],i[s]))a[s]=o[s];else{n&&n(o[s]);var l=e.apply(this,i[s]);a[s]=t&&t(l,o[s])?o[s]:l}else a[s]=e.apply(this,i[s]);return r=i,o=a,a}},e.memoizeObjArg=at,e.mergeEventStores=Ot,e.multiplyDuration=Ke,e.padStart=ue,e.parseBusinessHours=or,e.parseClassNames=Ut,e.parseDragMeta=fi,e.parseEventDef=Xt,e.parseFieldSpecs=ie,e.parseMarker=Zn,e.pointInsideRect=ir,e.preventContextMenu=re,e.preventDefault=q,e.preventSelection=te,e.rangeContainsMarker=sn,e.rangeContainsRange=an,e.rangesEqual=rn,e.rangesIntersect=on,e.refineEventDef=Yt,e.refineProps=xt,e.removeElement=W,e.removeExact=function(e,t){for(var n=0,r=0;r<e.length;)e[r]===t?(e.splice(r,1),n++):r++;return n},e.render=Or,e.renderChunkContent=Fi,e.renderFill=sa,e.renderMicroColGroup=ji,e.renderScrollShim=Xi,e.requestJson=Wo,e.sanitizeShrinkWidth=Gi,e.setElSeg=cn,e.setRef=Yr,e.sliceEventStore=ln,e.sliceEvents=function(e,t){return ln(e.eventStore,e.eventUiBases,e.dateProfile.activeRange,t?e.nextDayThreshold:null).fg},e.sortEventSegs=hn,e.startOfDay=be,e.translateRect=function(e,t,n){return{left:e.left+t,right:e.right+t,top:e.top+n,bottom:e.bottom+n}},e.triggerDateSelect=xn,e.unpromisify=Tr,e.version=\"<%= version %>\",e.whenTransitionDone=K,e.wholeDivideDurations=Qe,e}({});\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n", "/*\n * International Telephone Input v17.0.16\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n\n// wrap in UMD\n(function(factory) {\n    if (typeof module === \"object\" && module.exports) module.exports = factory(); else window.intlTelInput = factory();\n})(function(undefined) {\n    \"use strict\";\n    return function() {\n        // Array of country objects for the flag dropdown.\n        // Here is the criteria for the plugin to support a given country/territory\n        // - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n        // - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n        // - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n        // - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n        // Each country array has the following information:\n        // [\n        //    Country name,\n        //    iso2 code,\n        //    International dial code,\n        //    Order (if >1 country with same dial code),\n        //    Area codes\n        // ]\n        var allCountries = [ [ \"Afghanistan (\u202B\u0627\u0641\u063A\u0627\u0646\u0633\u062A\u0627\u0646\u202C\u200E)\", \"af\", \"93\" ], [ \"Albania (Shqip\u00EBri)\", \"al\", \"355\" ], [ \"Algeria (\u202B\u0627\u0644\u062C\u0632\u0627\u0626\u0631\u202C\u200E)\", \"dz\", \"213\" ], [ \"American Samoa\", \"as\", \"1\", 5, [ \"684\" ] ], [ \"Andorra\", \"ad\", \"376\" ], [ \"Angola\", \"ao\", \"244\" ], [ \"Anguilla\", \"ai\", \"1\", 6, [ \"264\" ] ], [ \"Antigua and Barbuda\", \"ag\", \"1\", 7, [ \"268\" ] ], [ \"Argentina\", \"ar\", \"54\" ], [ \"Armenia (\u0540\u0561\u0575\u0561\u057D\u057F\u0561\u0576)\", \"am\", \"374\" ], [ \"Aruba\", \"aw\", \"297\" ], [ \"Ascension Island\", \"ac\", \"247\" ], [ \"Australia\", \"au\", \"61\", 0 ], [ \"Austria (\u00D6sterreich)\", \"at\", \"43\" ], [ \"Azerbaijan (Az\u0259rbaycan)\", \"az\", \"994\" ], [ \"Bahamas\", \"bs\", \"1\", 8, [ \"242\" ] ], [ \"Bahrain (\u202B\u0627\u0644\u0628\u062D\u0631\u064A\u0646\u202C\u200E)\", \"bh\", \"973\" ], [ \"Bangladesh (\u09AC\u09BE\u0982\u09B2\u09BE\u09A6\u09C7\u09B6)\", \"bd\", \"880\" ], [ \"Barbados\", \"bb\", \"1\", 9, [ \"246\" ] ], [ \"Belarus (\u0411\u0435\u043B\u0430\u0440\u0443\u0441\u044C)\", \"by\", \"375\" ], [ \"Belgium (Belgi\u00EB)\", \"be\", \"32\" ], [ \"Belize\", \"bz\", \"501\" ], [ \"Benin (B\u00E9nin)\", \"bj\", \"229\" ], [ \"Bermuda\", \"bm\", \"1\", 10, [ \"441\" ] ], [ \"Bhutan (\u0F60\u0F56\u0FB2\u0F74\u0F42)\", \"bt\", \"975\" ], [ \"Bolivia\", \"bo\", \"591\" ], [ \"Bosnia and Herzegovina (\u0411\u043E\u0441\u043D\u0430 \u0438 \u0425\u0435\u0440\u0446\u0435\u0433\u043E\u0432\u0438\u043D\u0430)\", \"ba\", \"387\" ], [ \"Botswana\", \"bw\", \"267\" ], [ \"Brazil (Brasil)\", \"br\", \"55\" ], [ \"British Indian Ocean Territory\", \"io\", \"246\" ], [ \"British Virgin Islands\", \"vg\", \"1\", 11, [ \"284\" ] ], [ \"Brunei\", \"bn\", \"673\" ], [ \"Bulgaria (\u0411\u044A\u043B\u0433\u0430\u0440\u0438\u044F)\", \"bg\", \"359\" ], [ \"Burkina Faso\", \"bf\", \"226\" ], [ \"Burundi (Uburundi)\", \"bi\", \"257\" ], [ \"Cambodia (\u1780\u1798\u17D2\u1796\u17BB\u1787\u17B6)\", \"kh\", \"855\" ], [ \"Cameroon (Cameroun)\", \"cm\", \"237\" ], [ \"Canada\", \"ca\", \"1\", 1, [ \"204\", \"226\", \"236\", \"249\", \"250\", \"289\", \"306\", \"343\", \"365\", \"387\", \"403\", \"416\", \"418\", \"431\", \"437\", \"438\", \"450\", \"506\", \"514\", \"519\", \"548\", \"579\", \"581\", \"587\", \"604\", \"613\", \"639\", \"647\", \"672\", \"705\", \"709\", \"742\", \"778\", \"780\", \"782\", \"807\", \"819\", \"825\", \"867\", \"873\", \"902\", \"905\" ] ], [ \"Cape Verde (Kabu Verdi)\", \"cv\", \"238\" ], [ \"Caribbean Netherlands\", \"bq\", \"599\", 1, [ \"3\", \"4\", \"7\" ] ], [ \"Cayman Islands\", \"ky\", \"1\", 12, [ \"345\" ] ], [ \"Central African Republic (R\u00E9publique centrafricaine)\", \"cf\", \"236\" ], [ \"Chad (Tchad)\", \"td\", \"235\" ], [ \"Chile\", \"cl\", \"56\" ], [ \"China (\u4E2D\u56FD)\", \"cn\", \"86\" ], [ \"Christmas Island\", \"cx\", \"61\", 2, [ \"89164\" ] ], [ \"Cocos (Keeling) Islands\", \"cc\", \"61\", 1, [ \"89162\" ] ], [ \"Colombia\", \"co\", \"57\" ], [ \"Comoros (\u202B\u062C\u0632\u0631 \u0627\u0644\u0642\u0645\u0631\u202C\u200E)\", \"km\", \"269\" ], [ \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\", \"cd\", \"243\" ], [ \"Congo (Republic) (Congo-Brazzaville)\", \"cg\", \"242\" ], [ \"Cook Islands\", \"ck\", \"682\" ], [ \"Costa Rica\", \"cr\", \"506\" ], [ \"C\u00F4te d\u2019Ivoire\", \"ci\", \"225\" ], [ \"Croatia (Hrvatska)\", \"hr\", \"385\" ], [ \"Cuba\", \"cu\", \"53\" ], [ \"Cura\u00E7ao\", \"cw\", \"599\", 0 ], [ \"Cyprus (\u039A\u03CD\u03C0\u03C1\u03BF\u03C2)\", \"cy\", \"357\" ], [ \"Czech Republic (\u010Cesk\u00E1 republika)\", \"cz\", \"420\" ], [ \"Denmark (Danmark)\", \"dk\", \"45\" ], [ \"Djibouti\", \"dj\", \"253\" ], [ \"Dominica\", \"dm\", \"1\", 13, [ \"767\" ] ], [ \"Dominican Republic (Rep\u00FAblica Dominicana)\", \"do\", \"1\", 2, [ \"809\", \"829\", \"849\" ] ], [ \"Ecuador\", \"ec\", \"593\" ], [ \"Egypt (\u202B\u0645\u0635\u0631\u202C\u200E)\", \"eg\", \"20\" ], [ \"El Salvador\", \"sv\", \"503\" ], [ \"Equatorial Guinea (Guinea Ecuatorial)\", \"gq\", \"240\" ], [ \"Eritrea\", \"er\", \"291\" ], [ \"Estonia (Eesti)\", \"ee\", \"372\" ], [ \"Eswatini\", \"sz\", \"268\" ], [ \"Ethiopia\", \"et\", \"251\" ], [ \"Falkland Islands (Islas Malvinas)\", \"fk\", \"500\" ], [ \"Faroe Islands (F\u00F8royar)\", \"fo\", \"298\" ], [ \"Fiji\", \"fj\", \"679\" ], [ \"Finland (Suomi)\", \"fi\", \"358\", 0 ], [ \"France\", \"fr\", \"33\" ], [ \"French Guiana (Guyane fran\u00E7aise)\", \"gf\", \"594\" ], [ \"French Polynesia (Polyn\u00E9sie fran\u00E7aise)\", \"pf\", \"689\" ], [ \"Gabon\", \"ga\", \"241\" ], [ \"Gambia\", \"gm\", \"220\" ], [ \"Georgia (\u10E1\u10D0\u10E5\u10D0\u10E0\u10D7\u10D5\u10D4\u10DA\u10DD)\", \"ge\", \"995\" ], [ \"Germany (Deutschland)\", \"de\", \"49\" ], [ \"Ghana (Gaana)\", \"gh\", \"233\" ], [ \"Gibraltar\", \"gi\", \"350\" ], [ \"Greece (\u0395\u03BB\u03BB\u03AC\u03B4\u03B1)\", \"gr\", \"30\" ], [ \"Greenland (Kalaallit Nunaat)\", \"gl\", \"299\" ], [ \"Grenada\", \"gd\", \"1\", 14, [ \"473\" ] ], [ \"Guadeloupe\", \"gp\", \"590\", 0 ], [ \"Guam\", \"gu\", \"1\", 15, [ \"671\" ] ], [ \"Guatemala\", \"gt\", \"502\" ], [ \"Guernsey\", \"gg\", \"44\", 1, [ \"1481\", \"7781\", \"7839\", \"7911\" ] ], [ \"Guinea (Guin\u00E9e)\", \"gn\", \"224\" ], [ \"Guinea-Bissau (Guin\u00E9 Bissau)\", \"gw\", \"245\" ], [ \"Guyana\", \"gy\", \"592\" ], [ \"Haiti\", \"ht\", \"509\" ], [ \"Honduras\", \"hn\", \"504\" ], [ \"Hong Kong (\u9999\u6E2F)\", \"hk\", \"852\" ], [ \"Hungary (Magyarorsz\u00E1g)\", \"hu\", \"36\" ], [ \"Iceland (\u00CDsland)\", \"is\", \"354\" ], [ \"India (\u092D\u093E\u0930\u0924)\", \"in\", \"91\" ], [ \"Indonesia\", \"id\", \"62\" ], [ \"Iran (\u202B\u0627\u06CC\u0631\u0627\u0646\u202C\u200E)\", \"ir\", \"98\" ], [ \"Iraq (\u202B\u0627\u0644\u0639\u0631\u0627\u0642\u202C\u200E)\", \"iq\", \"964\" ], [ \"Ireland\", \"ie\", \"353\" ], [ \"Isle of Man\", \"im\", \"44\", 2, [ \"1624\", \"74576\", \"7524\", \"7924\", \"7624\" ] ], [ \"Israel (\u202B\u05D9\u05E9\u05E8\u05D0\u05DC\u202C\u200E)\", \"il\", \"972\" ], [ \"Italy (Italia)\", \"it\", \"39\", 0 ], [ \"Jamaica\", \"jm\", \"1\", 4, [ \"876\", \"658\" ] ], [ \"Japan (\u65E5\u672C)\", \"jp\", \"81\" ], [ \"Jersey\", \"je\", \"44\", 3, [ \"1534\", \"7509\", \"7700\", \"7797\", \"7829\", \"7937\" ] ], [ \"Jordan (\u202B\u0627\u0644\u0623\u0631\u062F\u0646\u202C\u200E)\", \"jo\", \"962\" ], [ \"Kazakhstan (\u041A\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043D)\", \"kz\", \"7\", 1, [ \"33\", \"7\" ] ], [ \"Kenya\", \"ke\", \"254\" ], [ \"Kiribati\", \"ki\", \"686\" ], [ \"Kosovo\", \"xk\", \"383\" ], [ \"Kuwait (\u202B\u0627\u0644\u0643\u0648\u064A\u062A\u202C\u200E)\", \"kw\", \"965\" ], [ \"Kyrgyzstan (\u041A\u044B\u0440\u0433\u044B\u0437\u0441\u0442\u0430\u043D)\", \"kg\", \"996\" ], [ \"Laos (\u0EA5\u0EB2\u0EA7)\", \"la\", \"856\" ], [ \"Latvia (Latvija)\", \"lv\", \"371\" ], [ \"Lebanon (\u202B\u0644\u0628\u0646\u0627\u0646\u202C\u200E)\", \"lb\", \"961\" ], [ \"Lesotho\", \"ls\", \"266\" ], [ \"Liberia\", \"lr\", \"231\" ], [ \"Libya (\u202B\u0644\u064A\u0628\u064A\u0627\u202C\u200E)\", \"ly\", \"218\" ], [ \"Liechtenstein\", \"li\", \"423\" ], [ \"Lithuania (Lietuva)\", \"lt\", \"370\" ], [ \"Luxembourg\", \"lu\", \"352\" ], [ \"Macau (\u6FB3\u9580)\", \"mo\", \"853\" ], [ \"North Macedonia (\u041C\u0430\u043A\u0435\u0434\u043E\u043D\u0438\u0458\u0430)\", \"mk\", \"389\" ], [ \"Madagascar (Madagasikara)\", \"mg\", \"261\" ], [ \"Malawi\", \"mw\", \"265\" ], [ \"Malaysia\", \"my\", \"60\" ], [ \"Maldives\", \"mv\", \"960\" ], [ \"Mali\", \"ml\", \"223\" ], [ \"Malta\", \"mt\", \"356\" ], [ \"Marshall Islands\", \"mh\", \"692\" ], [ \"Martinique\", \"mq\", \"596\" ], [ \"Mauritania (\u202B\u0645\u0648\u0631\u064A\u062A\u0627\u0646\u064A\u0627\u202C\u200E)\", \"mr\", \"222\" ], [ \"Mauritius (Moris)\", \"mu\", \"230\" ], [ \"Mayotte\", \"yt\", \"262\", 1, [ \"269\", \"639\" ] ], [ \"Mexico (M\u00E9xico)\", \"mx\", \"52\" ], [ \"Micronesia\", \"fm\", \"691\" ], [ \"Moldova (Republica Moldova)\", \"md\", \"373\" ], [ \"Monaco\", \"mc\", \"377\" ], [ \"Mongolia (\u041C\u043E\u043D\u0433\u043E\u043B)\", \"mn\", \"976\" ], [ \"Montenegro (Crna Gora)\", \"me\", \"382\" ], [ \"Montserrat\", \"ms\", \"1\", 16, [ \"664\" ] ], [ \"Morocco (\u202B\u0627\u0644\u0645\u063A\u0631\u0628\u202C\u200E)\", \"ma\", \"212\", 0 ], [ \"Mozambique (Mo\u00E7ambique)\", \"mz\", \"258\" ], [ \"Myanmar (Burma) (\u1019\u103C\u1014\u103A\u1019\u102C)\", \"mm\", \"95\" ], [ \"Namibia (Namibi\u00EB)\", \"na\", \"264\" ], [ \"Nauru\", \"nr\", \"674\" ], [ \"Nepal (\u0928\u0947\u092A\u093E\u0932)\", \"np\", \"977\" ], [ \"Netherlands (Nederland)\", \"nl\", \"31\" ], [ \"New Caledonia (Nouvelle-Cal\u00E9donie)\", \"nc\", \"687\" ], [ \"New Zealand\", \"nz\", \"64\" ], [ \"Nicaragua\", \"ni\", \"505\" ], [ \"Niger (Nijar)\", \"ne\", \"227\" ], [ \"Nigeria\", \"ng\", \"234\" ], [ \"Niue\", \"nu\", \"683\" ], [ \"Norfolk Island\", \"nf\", \"672\" ], [ \"North Korea (\uC870\uC120 \uBBFC\uC8FC\uC8FC\uC758 \uC778\uBBFC \uACF5\uD654\uAD6D)\", \"kp\", \"850\" ], [ \"Northern Mariana Islands\", \"mp\", \"1\", 17, [ \"670\" ] ], [ \"Norway (Norge)\", \"no\", \"47\", 0 ], [ \"Oman (\u202B\u0639\u064F\u0645\u0627\u0646\u202C\u200E)\", \"om\", \"968\" ], [ \"Pakistan (\u202B\u067E\u0627\u06A9\u0633\u062A\u0627\u0646\u202C\u200E)\", \"pk\", \"92\" ], [ \"Palau\", \"pw\", \"680\" ], [ \"Palestine (\u202B\u0641\u0644\u0633\u0637\u064A\u0646\u202C\u200E)\", \"ps\", \"970\" ], [ \"Panama (Panam\u00E1)\", \"pa\", \"507\" ], [ \"Papua New Guinea\", \"pg\", \"675\" ], [ \"Paraguay\", \"py\", \"595\" ], [ \"Peru (Per\u00FA)\", \"pe\", \"51\" ], [ \"Philippines\", \"ph\", \"63\" ], [ \"Poland (Polska)\", \"pl\", \"48\" ], [ \"Portugal\", \"pt\", \"351\" ], [ \"Puerto Rico\", \"pr\", \"1\", 3, [ \"787\", \"939\" ] ], [ \"Qatar (\u202B\u0642\u0637\u0631\u202C\u200E)\", \"qa\", \"974\" ], [ \"R\u00E9union (La R\u00E9union)\", \"re\", \"262\", 0 ], [ \"Romania (Rom\u00E2nia)\", \"ro\", \"40\" ], [ \"Russia (\u0420\u043E\u0441\u0441\u0438\u044F)\", \"ru\", \"7\", 0 ], [ \"Rwanda\", \"rw\", \"250\" ], [ \"Saint Barth\u00E9lemy\", \"bl\", \"590\", 1 ], [ \"Saint Helena\", \"sh\", \"290\" ], [ \"Saint Kitts and Nevis\", \"kn\", \"1\", 18, [ \"869\" ] ], [ \"Saint Lucia\", \"lc\", \"1\", 19, [ \"758\" ] ], [ \"Saint Martin (Saint-Martin (partie fran\u00E7aise))\", \"mf\", \"590\", 2 ], [ \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\", \"pm\", \"508\" ], [ \"Saint Vincent and the Grenadines\", \"vc\", \"1\", 20, [ \"784\" ] ], [ \"Samoa\", \"ws\", \"685\" ], [ \"San Marino\", \"sm\", \"378\" ], [ \"S\u00E3o Tom\u00E9 and Pr\u00EDncipe (S\u00E3o Tom\u00E9 e Pr\u00EDncipe)\", \"st\", \"239\" ], [ \"Saudi Arabia (\u202B\u0627\u0644\u0645\u0645\u0644\u0643\u0629 \u0627\u0644\u0639\u0631\u0628\u064A\u0629 \u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629\u202C\u200E)\", \"sa\", \"966\" ], [ \"Senegal (S\u00E9n\u00E9gal)\", \"sn\", \"221\" ], [ \"Serbia (\u0421\u0440\u0431\u0438\u0458\u0430)\", \"rs\", \"381\" ], [ \"Seychelles\", \"sc\", \"248\" ], [ \"Sierra Leone\", \"sl\", \"232\" ], [ \"Singapore\", \"sg\", \"65\" ], [ \"Sint Maarten\", \"sx\", \"1\", 21, [ \"721\" ] ], [ \"Slovakia (Slovensko)\", \"sk\", \"421\" ], [ \"Slovenia (Slovenija)\", \"si\", \"386\" ], [ \"Solomon Islands\", \"sb\", \"677\" ], [ \"Somalia (Soomaaliya)\", \"so\", \"252\" ], [ \"South Africa\", \"za\", \"27\" ], [ \"South Korea (\uB300\uD55C\uBBFC\uAD6D)\", \"kr\", \"82\" ], [ \"South Sudan (\u202B\u062C\u0646\u0648\u0628 \u0627\u0644\u0633\u0648\u062F\u0627\u0646\u202C\u200E)\", \"ss\", \"211\" ], [ \"Spain (Espa\u00F1a)\", \"es\", \"34\" ], [ \"Sri Lanka (\u0DC1\u0DCA\u200D\u0DBB\u0DD3 \u0DBD\u0D82\u0D9A\u0DCF\u0DC0)\", \"lk\", \"94\" ], [ \"Sudan (\u202B\u0627\u0644\u0633\u0648\u062F\u0627\u0646\u202C\u200E)\", \"sd\", \"249\" ], [ \"Suriname\", \"sr\", \"597\" ], [ \"Svalbard and Jan Mayen\", \"sj\", \"47\", 1, [ \"79\" ] ], [ \"Sweden (Sverige)\", \"se\", \"46\" ], [ \"Switzerland (Schweiz)\", \"ch\", \"41\" ], [ \"Syria (\u202B\u0633\u0648\u0631\u064A\u0627\u202C\u200E)\", \"sy\", \"963\" ], [ \"Taiwan (\u53F0\u7063)\", \"tw\", \"886\" ], [ \"Tajikistan\", \"tj\", \"992\" ], [ \"Tanzania\", \"tz\", \"255\" ], [ \"Thailand (\u0E44\u0E17\u0E22)\", \"th\", \"66\" ], [ \"Timor-Leste\", \"tl\", \"670\" ], [ \"Togo\", \"tg\", \"228\" ], [ \"Tokelau\", \"tk\", \"690\" ], [ \"Tonga\", \"to\", \"676\" ], [ \"Trinidad and Tobago\", \"tt\", \"1\", 22, [ \"868\" ] ], [ \"Tunisia (\u202B\u062A\u0648\u0646\u0633\u202C\u200E)\", \"tn\", \"216\" ], [ \"Turkey (T\u00FCrkiye)\", \"tr\", \"90\" ], [ \"Turkmenistan\", \"tm\", \"993\" ], [ \"Turks and Caicos Islands\", \"tc\", \"1\", 23, [ \"649\" ] ], [ \"Tuvalu\", \"tv\", \"688\" ], [ \"U.S. Virgin Islands\", \"vi\", \"1\", 24, [ \"340\" ] ], [ \"Uganda\", \"ug\", \"256\" ], [ \"Ukraine (\u0423\u043A\u0440\u0430\u0457\u043D\u0430)\", \"ua\", \"380\" ], [ \"United Arab Emirates (\u202B\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062A \u0627\u0644\u0639\u0631\u0628\u064A\u0629 \u0627\u0644\u0645\u062A\u062D\u062F\u0629\u202C\u200E)\", \"ae\", \"971\" ], [ \"United Kingdom\", \"gb\", \"44\", 0 ], [ \"United States\", \"us\", \"1\", 0 ], [ \"Uruguay\", \"uy\", \"598\" ], [ \"Uzbekistan (O\u02BBzbekiston)\", \"uz\", \"998\" ], [ \"Vanuatu\", \"vu\", \"678\" ], [ \"Vatican City (Citt\u00E0 del Vaticano)\", \"va\", \"39\", 1, [ \"06698\" ] ], [ \"Venezuela\", \"ve\", \"58\" ], [ \"Vietnam (Vi\u1EC7t Nam)\", \"vn\", \"84\" ], [ \"Wallis and Futuna (Wallis-et-Futuna)\", \"wf\", \"681\" ], [ \"Western Sahara (\u202B\u0627\u0644\u0635\u062D\u0631\u0627\u0621 \u0627\u0644\u063A\u0631\u0628\u064A\u0629\u202C\u200E)\", \"eh\", \"212\", 1, [ \"5288\", \"5289\" ] ], [ \"Yemen (\u202B\u0627\u0644\u064A\u0645\u0646\u202C\u200E)\", \"ye\", \"967\" ], [ \"Zambia\", \"zm\", \"260\" ], [ \"Zimbabwe\", \"zw\", \"263\" ], [ \"\u00C5land Islands\", \"ax\", \"358\", 1, [ \"18\" ] ] ];\n        // loop over all of the countries above, restructuring the data to be objects with named keys\n        for (var i = 0; i < allCountries.length; i++) {\n            var c = allCountries[i];\n            allCountries[i] = {\n                name: c[0],\n                iso2: c[1],\n                dialCode: c[2],\n                priority: c[3] || 0,\n                areaCodes: c[4] || null\n            };\n        }\n        \"use strict\";\n        function _classCallCheck(instance, Constructor) {\n            if (!(instance instanceof Constructor)) {\n                throw new TypeError(\"Cannot call a class as a function\");\n            }\n        }\n        function _defineProperties(target, props) {\n            for (var i = 0; i < props.length; i++) {\n                var descriptor = props[i];\n                descriptor.enumerable = descriptor.enumerable || false;\n                descriptor.configurable = true;\n                if (\"value\" in descriptor) descriptor.writable = true;\n                Object.defineProperty(target, descriptor.key, descriptor);\n            }\n        }\n        function _createClass(Constructor, protoProps, staticProps) {\n            if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n            if (staticProps) _defineProperties(Constructor, staticProps);\n            return Constructor;\n        }\n        var intlTelInputGlobals = {\n            getInstance: function getInstance(input) {\n                var id = input.getAttribute(\"data-intl-tel-input-id\");\n                return window.intlTelInputGlobals.instances[id];\n            },\n            instances: {},\n            // using a global like this allows us to mock it in the tests\n            documentReady: function documentReady() {\n                return document.readyState === \"complete\";\n            }\n        };\n        if (typeof window === \"object\") window.intlTelInputGlobals = intlTelInputGlobals;\n        // these vars persist through all instances of the plugin\n        var id = 0;\n        var defaults = {\n            // whether or not to allow the dropdown\n            allowDropdown: true,\n            // if there is just a dial code in the input: remove it on blur\n            autoHideDialCode: true,\n            // add a placeholder in the input with an example number for the selected country\n            autoPlaceholder: \"polite\",\n            // modify the parentClass\n            customContainer: \"\",\n            // modify the auto placeholder\n            customPlaceholder: null,\n            // append menu to specified element\n            dropdownContainer: null,\n            // don't display these countries\n            excludeCountries: [],\n            // format the input value during initialisation and on setNumber\n            formatOnDisplay: true,\n            // geoIp lookup function\n            geoIpLookup: null,\n            // inject a hidden input with this name, and on submit, populate it with the result of getNumber\n            hiddenInput: \"\",\n            // initial country\n            initialCountry: \"\",\n            // localized country names e.g. { 'de': 'Deutschland' }\n            localizedCountries: null,\n            // don't insert international dial codes\n            nationalMode: true,\n            // display only these countries\n            onlyCountries: [],\n            // number type to use for placeholders\n            placeholderNumberType: \"MOBILE\",\n            // the countries at the top of the list. defaults to united states and united kingdom\n            preferredCountries: [ \"us\", \"gb\" ],\n            // display the country dial code next to the selected flag so it's not part of the typed number\n            separateDialCode: false,\n            // specify the path to the libphonenumber script to enable validation/formatting\n            utilsScript: \"\"\n        };\n        // https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes#Non-geographic_area_codes\n        var regionlessNanpNumbers = [ \"800\", \"822\", \"833\", \"844\", \"855\", \"866\", \"877\", \"880\", \"881\", \"882\", \"883\", \"884\", \"885\", \"886\", \"887\", \"888\", \"889\" ];\n        // utility function to iterate over an object. can't use Object.entries or native forEach because\n        // of IE11\n        var forEachProp = function forEachProp(obj, callback) {\n            var keys = Object.keys(obj);\n            for (var i = 0; i < keys.length; i++) {\n                callback(keys[i], obj[keys[i]]);\n            }\n        };\n        // run a method on each instance of the plugin\n        var forEachInstance = function forEachInstance(method) {\n            forEachProp(window.intlTelInputGlobals.instances, function(key) {\n                window.intlTelInputGlobals.instances[key][method]();\n            });\n        };\n        // this is our plugin class that we will create an instance of\n        // eslint-disable-next-line no-unused-vars\n        var Iti = /*#__PURE__*/\n        function() {\n            function Iti(input, options) {\n                var _this = this;\n                _classCallCheck(this, Iti);\n                this.id = id++;\n                this.telInput = input;\n                this.activeItem = null;\n                this.highlightedItem = null;\n                // process specified options / defaults\n                // alternative to Object.assign, which isn't supported by IE11\n                var customOptions = options || {};\n                this.options = {};\n                forEachProp(defaults, function(key, value) {\n                    _this.options[key] = customOptions.hasOwnProperty(key) ? customOptions[key] : value;\n                });\n                this.hadInitialPlaceholder = Boolean(input.getAttribute(\"placeholder\"));\n            }\n            _createClass(Iti, [ {\n                key: \"_init\",\n                value: function _init() {\n                    var _this2 = this;\n                    // if in nationalMode, disable options relating to dial codes\n                    if (this.options.nationalMode) this.options.autoHideDialCode = false;\n                    // if separateDialCode then doesn't make sense to A) insert dial code into input\n                    // (autoHideDialCode), and B) display national numbers (because we're displaying the country\n                    // dial code next to them)\n                    if (this.options.separateDialCode) {\n                        this.options.autoHideDialCode = this.options.nationalMode = false;\n                    }\n                    // we cannot just test screen size as some smartphones/website meta tags will report desktop\n                    // resolutions\n                    // Note: for some reason jasmine breaks if you put this in the main Plugin function with the\n                    // rest of these declarations\n                    // Note: to target Android Mobiles (and not Tablets), we must find 'Android' and 'Mobile'\n                    this.isMobile = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n                    if (this.isMobile) {\n                        // trigger the mobile dropdown css\n                        document.body.classList.add(\"iti-mobile\");\n                        // on mobile, we want a full screen dropdown, so we must append it to the body\n                        if (!this.options.dropdownContainer) this.options.dropdownContainer = document.body;\n                    }\n                    // these promises get resolved when their individual requests complete\n                    // this way the dev can do something like iti.promise.then(...) to know when all requests are\n                    // complete\n                    if (typeof Promise !== \"undefined\") {\n                        var autoCountryPromise = new Promise(function(resolve, reject) {\n                            _this2.resolveAutoCountryPromise = resolve;\n                            _this2.rejectAutoCountryPromise = reject;\n                        });\n                        var utilsScriptPromise = new Promise(function(resolve, reject) {\n                            _this2.resolveUtilsScriptPromise = resolve;\n                            _this2.rejectUtilsScriptPromise = reject;\n                        });\n                        this.promise = Promise.all([ autoCountryPromise, utilsScriptPromise ]);\n                    } else {\n                        // prevent errors when Promise doesn't exist\n                        this.resolveAutoCountryPromise = this.rejectAutoCountryPromise = function() {};\n                        this.resolveUtilsScriptPromise = this.rejectUtilsScriptPromise = function() {};\n                    }\n                    // in various situations there could be no country selected initially, but we need to be able\n                    // to assume this variable exists\n                    this.selectedCountryData = {};\n                    // process all the data: onlyCountries, excludeCountries, preferredCountries etc\n                    this._processCountryData();\n                    // generate the markup\n                    this._generateMarkup();\n                    // set the initial state of the input value and the selected flag\n                    this._setInitialState();\n                    // start all of the event listeners: autoHideDialCode, input keydown, selectedFlag click\n                    this._initListeners();\n                    // utils script, and auto country\n                    this._initRequests();\n                }\n            }, {\n                key: \"_processCountryData\",\n                value: function _processCountryData() {\n                    // process onlyCountries or excludeCountries array if present\n                    this._processAllCountries();\n                    // process the countryCodes map\n                    this._processCountryCodes();\n                    // process the preferredCountries\n                    this._processPreferredCountries();\n                    // translate countries according to localizedCountries option\n                    if (this.options.localizedCountries) this._translateCountriesByLocale();\n                    // sort countries by name\n                    if (this.options.onlyCountries.length || this.options.localizedCountries) {\n                        this.countries.sort(this._countryNameSort);\n                    }\n                }\n            }, {\n                key: \"_addCountryCode\",\n                value: function _addCountryCode(iso2, countryCode, priority) {\n                    if (countryCode.length > this.countryCodeMaxLen) {\n                        this.countryCodeMaxLen = countryCode.length;\n                    }\n                    if (!this.countryCodes.hasOwnProperty(countryCode)) {\n                        this.countryCodes[countryCode] = [];\n                    }\n                    // bail if we already have this country for this countryCode\n                    for (var i = 0; i < this.countryCodes[countryCode].length; i++) {\n                        if (this.countryCodes[countryCode][i] === iso2) return;\n                    }\n                    // check for undefined as 0 is falsy\n                    var index = priority !== undefined ? priority : this.countryCodes[countryCode].length;\n                    this.countryCodes[countryCode][index] = iso2;\n                }\n            }, {\n                key: \"_processAllCountries\",\n                value: function _processAllCountries() {\n                    if (this.options.onlyCountries.length) {\n                        var lowerCaseOnlyCountries = this.options.onlyCountries.map(function(country) {\n                            return country.toLowerCase();\n                        });\n                        this.countries = allCountries.filter(function(country) {\n                            return lowerCaseOnlyCountries.indexOf(country.iso2) > -1;\n                        });\n                    } else if (this.options.excludeCountries.length) {\n                        var lowerCaseExcludeCountries = this.options.excludeCountries.map(function(country) {\n                            return country.toLowerCase();\n                        });\n                        this.countries = allCountries.filter(function(country) {\n                            return lowerCaseExcludeCountries.indexOf(country.iso2) === -1;\n                        });\n                    } else {\n                        this.countries = allCountries;\n                    }\n                }\n            }, {\n                key: \"_translateCountriesByLocale\",\n                value: function _translateCountriesByLocale() {\n                    for (var i = 0; i < this.countries.length; i++) {\n                        var iso = this.countries[i].iso2.toLowerCase();\n                        if (this.options.localizedCountries.hasOwnProperty(iso)) {\n                            this.countries[i].name = this.options.localizedCountries[iso];\n                        }\n                    }\n                }\n            }, {\n                key: \"_countryNameSort\",\n                value: function _countryNameSort(a, b) {\n                    return a.name.localeCompare(b.name);\n                }\n            }, {\n                key: \"_processCountryCodes\",\n                value: function _processCountryCodes() {\n                    this.countryCodeMaxLen = 0;\n                    // here we store just dial codes\n                    this.dialCodes = {};\n                    // here we store \"country codes\" (both dial codes and their area codes)\n                    this.countryCodes = {};\n                    // first: add dial codes\n                    for (var i = 0; i < this.countries.length; i++) {\n                        var c = this.countries[i];\n                        if (!this.dialCodes[c.dialCode]) this.dialCodes[c.dialCode] = true;\n                        this._addCountryCode(c.iso2, c.dialCode, c.priority);\n                    }\n                    // next: add area codes\n                    // this is a second loop over countries, to make sure we have all of the \"root\" countries\n                    // already in the map, so that we can access them, as each time we add an area code substring\n                    // to the map, we also need to include the \"root\" country's code, as that also matches\n                    for (var _i = 0; _i < this.countries.length; _i++) {\n                        var _c = this.countries[_i];\n                        // area codes\n                        if (_c.areaCodes) {\n                            var rootCountryCode = this.countryCodes[_c.dialCode][0];\n                            // for each area code\n                            for (var j = 0; j < _c.areaCodes.length; j++) {\n                                var areaCode = _c.areaCodes[j];\n                                // for each digit in the area code to add all partial matches as well\n                                for (var k = 1; k < areaCode.length; k++) {\n                                    var partialDialCode = _c.dialCode + areaCode.substr(0, k);\n                                    // start with the root country, as that also matches this dial code\n                                    this._addCountryCode(rootCountryCode, partialDialCode);\n                                    this._addCountryCode(_c.iso2, partialDialCode);\n                                }\n                                // add the full area code\n                                this._addCountryCode(_c.iso2, _c.dialCode + areaCode);\n                            }\n                        }\n                    }\n                }\n            }, {\n                key: \"_processPreferredCountries\",\n                value: function _processPreferredCountries() {\n                    this.preferredCountries = [];\n                    for (var i = 0; i < this.options.preferredCountries.length; i++) {\n                        var countryCode = this.options.preferredCountries[i].toLowerCase();\n                        var countryData = this._getCountryData(countryCode, false, true);\n                        if (countryData) this.preferredCountries.push(countryData);\n                    }\n                }\n            }, {\n                key: \"_createEl\",\n                value: function _createEl(name, attrs, container) {\n                    var el = document.createElement(name);\n                    if (attrs) forEachProp(attrs, function(key, value) {\n                        return el.setAttribute(key, value);\n                    });\n                    if (container) container.appendChild(el);\n                    return el;\n                }\n            }, {\n                key: \"_generateMarkup\",\n                value: function _generateMarkup() {\n                    // if autocomplete does not exist on the element and its form, then\n                    // prevent autocomplete as there's no safe, cross-browser event we can react to, so it can\n                    // easily put the plugin in an inconsistent state e.g. the wrong flag selected for the\n                    // autocompleted number, which on submit could mean wrong number is saved (esp in nationalMode)\n                    if (!this.telInput.hasAttribute(\"autocomplete\") && !(this.telInput.form && this.telInput.form.hasAttribute(\"autocomplete\"))) {\n                        this.telInput.setAttribute(\"autocomplete\", \"off\");\n                    }\n                    // containers (mostly for positioning)\n                    var parentClass = \"iti\";\n                    if (this.options.allowDropdown) parentClass += \" iti--allow-dropdown\";\n                    if (this.options.separateDialCode) parentClass += \" iti--separate-dial-code\";\n                    if (this.options.customContainer) {\n                        parentClass += \" \";\n                        parentClass += this.options.customContainer;\n                    }\n                    var wrapper = this._createEl(\"div\", {\n                        \"class\": parentClass\n                    });\n                    this.telInput.parentNode.insertBefore(wrapper, this.telInput);\n                    this.flagsContainer = this._createEl(\"div\", {\n                        \"class\": \"iti__flag-container\"\n                    }, wrapper);\n                    wrapper.appendChild(this.telInput);\n                    // selected flag (displayed to left of input)\n                    this.selectedFlag = this._createEl(\"div\", {\n                        \"class\": \"iti__selected-flag\",\n                        role: \"combobox\",\n                        \"aria-controls\": \"iti-\".concat(this.id, \"__country-listbox\"),\n                        \"aria-owns\": \"iti-\".concat(this.id, \"__country-listbox\"),\n                        \"aria-expanded\": \"false\"\n                    }, this.flagsContainer);\n                    this.selectedFlagInner = this._createEl(\"div\", {\n                        \"class\": \"iti__flag\"\n                    }, this.selectedFlag);\n                    if (this.options.separateDialCode) {\n                        this.selectedDialCode = this._createEl(\"div\", {\n                            \"class\": \"iti__selected-dial-code\"\n                        }, this.selectedFlag);\n                    }\n                    if (this.options.allowDropdown) {\n                        // make element focusable and tab navigable\n                        this.selectedFlag.setAttribute(\"tabindex\", \"0\");\n                        this.dropdownArrow = this._createEl(\"div\", {\n                            \"class\": \"iti__arrow\"\n                        }, this.selectedFlag);\n                        // country dropdown: preferred countries, then divider, then all countries\n                        this.countryList = this._createEl(\"ul\", {\n                            \"class\": \"iti__country-list iti__hide\",\n                            id: \"iti-\".concat(this.id, \"__country-listbox\"),\n                            role: \"listbox\",\n                            \"aria-label\": \"List of countries\"\n                        });\n                        if (this.preferredCountries.length) {\n                            this._appendListItems(this.preferredCountries, \"iti__preferred\", true);\n                            this._createEl(\"li\", {\n                                \"class\": \"iti__divider\",\n                                role: \"separator\",\n                                \"aria-disabled\": \"true\"\n                            }, this.countryList);\n                        }\n                        this._appendListItems(this.countries, \"iti__standard\");\n                        // create dropdownContainer markup\n                        if (this.options.dropdownContainer) {\n                            this.dropdown = this._createEl(\"div\", {\n                                \"class\": \"iti iti--container\"\n                            });\n                            this.dropdown.appendChild(this.countryList);\n                        } else {\n                            this.flagsContainer.appendChild(this.countryList);\n                        }\n                    }\n                    if (this.options.hiddenInput) {\n                        var hiddenInputName = this.options.hiddenInput;\n                        var name = this.telInput.getAttribute(\"name\");\n                        if (name) {\n                            var i = name.lastIndexOf(\"[\");\n                            // if input name contains square brackets, then give the hidden input the same name,\n                            // replacing the contents of the last set of brackets with the given hiddenInput name\n                            if (i !== -1) hiddenInputName = \"\".concat(name.substr(0, i), \"[\").concat(hiddenInputName, \"]\");\n                        }\n                        this.hiddenInput = this._createEl(\"input\", {\n                            type: \"hidden\",\n                            name: hiddenInputName\n                        });\n                        wrapper.appendChild(this.hiddenInput);\n                    }\n                }\n            }, {\n                key: \"_appendListItems\",\n                value: function _appendListItems(countries, className, preferred) {\n                    // we create so many DOM elements, it is faster to build a temp string\n                    // and then add everything to the DOM in one go at the end\n                    var tmp = \"\";\n                    // for each country\n                    for (var i = 0; i < countries.length; i++) {\n                        var c = countries[i];\n                        var idSuffix = preferred ? \"-preferred\" : \"\";\n                        // open the list item\n                        tmp += \"<li class='iti__country \".concat(className, \"' tabIndex='-1' id='iti-\").concat(this.id, \"__item-\").concat(c.iso2).concat(idSuffix, \"' role='option' data-dial-code='\").concat(c.dialCode, \"' data-country-code='\").concat(c.iso2, \"' aria-selected='false'>\");\n                        // add the flag\n                        tmp += \"<div class='iti__flag-box'><div class='iti__flag iti__\".concat(c.iso2, \"'></div></div>\");\n                        // and the country name and dial code\n                        tmp += \"<span class='iti__country-name'>\".concat(c.name, \"</span>\");\n                        tmp += \"<span class='iti__dial-code'>+\".concat(c.dialCode, \"</span>\");\n                        // close the list item\n                        tmp += \"</li>\";\n                    }\n                    this.countryList.insertAdjacentHTML(\"beforeend\", tmp);\n                }\n            }, {\n                key: \"_setInitialState\",\n                value: function _setInitialState() {\n                    // fix firefox bug: when first load page (with input with value set to number with intl dial\n                    // code) and initialising plugin removes the dial code from the input, then refresh page,\n                    // and we try to init plugin again but this time on number without dial code so get grey flag\n                    var attributeValue = this.telInput.getAttribute(\"value\");\n                    var inputValue = this.telInput.value;\n                    var useAttribute = attributeValue && attributeValue.charAt(0) === \"+\" && (!inputValue || inputValue.charAt(0) !== \"+\");\n                    var val = useAttribute ? attributeValue : inputValue;\n                    var dialCode = this._getDialCode(val);\n                    var isRegionlessNanp = this._isRegionlessNanp(val);\n                    var _this$options = this.options, initialCountry = _this$options.initialCountry, nationalMode = _this$options.nationalMode, autoHideDialCode = _this$options.autoHideDialCode, separateDialCode = _this$options.separateDialCode;\n                    // if we already have a dial code, and it's not a regionlessNanp, we can go ahead and set the\n                    // flag, else fall back to the default country\n                    if (dialCode && !isRegionlessNanp) {\n                        this._updateFlagFromNumber(val);\n                    } else if (initialCountry !== \"auto\") {\n                        // see if we should select a flag\n                        if (initialCountry) {\n                            this._setFlag(initialCountry.toLowerCase());\n                        } else {\n                            if (dialCode && isRegionlessNanp) {\n                                // has intl dial code, is regionless nanp, and no initialCountry, so default to US\n                                this._setFlag(\"us\");\n                            } else {\n                                // no dial code and no initialCountry, so default to first in list\n                                this.defaultCountry = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.countries[0].iso2;\n                                if (!val) {\n                                    this._setFlag(this.defaultCountry);\n                                }\n                            }\n                        }\n                        // if empty and no nationalMode and no autoHideDialCode then insert the default dial code\n                        if (!val && !nationalMode && !autoHideDialCode && !separateDialCode) {\n                            this.telInput.value = \"+\".concat(this.selectedCountryData.dialCode);\n                        }\n                    }\n                    // NOTE: if initialCountry is set to auto, that will be handled separately\n                    // format - note this wont be run after _updateDialCode as that's only called if no val\n                    if (val) this._updateValFromNumber(val);\n                }\n            }, {\n                key: \"_initListeners\",\n                value: function _initListeners() {\n                    this._initKeyListeners();\n                    if (this.options.autoHideDialCode) this._initBlurListeners();\n                    if (this.options.allowDropdown) this._initDropdownListeners();\n                    if (this.hiddenInput) this._initHiddenInputListener();\n                }\n            }, {\n                key: \"_initHiddenInputListener\",\n                value: function _initHiddenInputListener() {\n                    var _this3 = this;\n                    this._handleHiddenInputSubmit = function() {\n                        _this3.hiddenInput.value = _this3.getNumber();\n                    };\n                    if (this.telInput.form) this.telInput.form.addEventListener(\"submit\", this._handleHiddenInputSubmit);\n                }\n            }, {\n                key: \"_getClosestLabel\",\n                value: function _getClosestLabel() {\n                    var el = this.telInput;\n                    while (el && el.tagName !== \"LABEL\") {\n                        el = el.parentNode;\n                    }\n                    return el;\n                }\n            }, {\n                key: \"_initDropdownListeners\",\n                value: function _initDropdownListeners() {\n                    var _this4 = this;\n                    // hack for input nested inside label (which is valid markup): clicking the selected-flag to\n                    // open the dropdown would then automatically trigger a 2nd click on the input which would\n                    // close it again\n                    this._handleLabelClick = function(e) {\n                        // if the dropdown is closed, then focus the input, else ignore the click\n                        if (_this4.countryList.classList.contains(\"iti__hide\")) _this4.telInput.focus(); else e.preventDefault();\n                    };\n                    var label = this._getClosestLabel();\n                    if (label) label.addEventListener(\"click\", this._handleLabelClick);\n                    // toggle country dropdown on click\n                    this._handleClickSelectedFlag = function() {\n                        // only intercept this event if we're opening the dropdown\n                        // else let it bubble up to the top (\"click-off-to-close\" listener)\n                        // we cannot just stopPropagation as it may be needed to close another instance\n                        if (_this4.countryList.classList.contains(\"iti__hide\") && !_this4.telInput.disabled && !_this4.telInput.readOnly) {\n                            _this4._showDropdown();\n                        }\n                    };\n                    this.selectedFlag.addEventListener(\"click\", this._handleClickSelectedFlag);\n                    // open dropdown list if currently focused\n                    this._handleFlagsContainerKeydown = function(e) {\n                        var isDropdownHidden = _this4.countryList.classList.contains(\"iti__hide\");\n                        if (isDropdownHidden && [ \"ArrowUp\", \"Up\", \"ArrowDown\", \"Down\", \" \", \"Enter\" ].indexOf(e.key) !== -1) {\n                            // prevent form from being submitted if \"ENTER\" was pressed\n                            e.preventDefault();\n                            // prevent event from being handled again by document\n                            e.stopPropagation();\n                            _this4._showDropdown();\n                        }\n                        // allow navigation from dropdown to input on TAB\n                        if (e.key === \"Tab\") _this4._closeDropdown();\n                    };\n                    this.flagsContainer.addEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n                }\n            }, {\n                key: \"_initRequests\",\n                value: function _initRequests() {\n                    var _this5 = this;\n                    // if the user has specified the path to the utils script, fetch it on window.load, else resolve\n                    if (this.options.utilsScript && !window.intlTelInputUtils) {\n                        // if the plugin is being initialised after the window.load event has already been fired\n                        if (window.intlTelInputGlobals.documentReady()) {\n                            window.intlTelInputGlobals.loadUtils(this.options.utilsScript);\n                        } else {\n                            // wait until the load event so we don't block any other requests e.g. the flags image\n                            window.addEventListener(\"load\", function() {\n                                window.intlTelInputGlobals.loadUtils(_this5.options.utilsScript);\n                            });\n                        }\n                    } else this.resolveUtilsScriptPromise();\n                    if (this.options.initialCountry === \"auto\") this._loadAutoCountry(); else this.resolveAutoCountryPromise();\n                }\n            }, {\n                key: \"_loadAutoCountry\",\n                value: function _loadAutoCountry() {\n                    // 3 options:\n                    // 1) already loaded (we're done)\n                    // 2) not already started loading (start)\n                    // 3) already started loading (do nothing - just wait for loading callback to fire)\n                    if (window.intlTelInputGlobals.autoCountry) {\n                        this.handleAutoCountry();\n                    } else if (!window.intlTelInputGlobals.startedLoadingAutoCountry) {\n                        // don't do this twice!\n                        window.intlTelInputGlobals.startedLoadingAutoCountry = true;\n                        if (typeof this.options.geoIpLookup === \"function\") {\n                            this.options.geoIpLookup(function(countryCode) {\n                                window.intlTelInputGlobals.autoCountry = countryCode.toLowerCase();\n                                // tell all instances the auto country is ready\n                                // TODO: this should just be the current instances\n                                // UPDATE: use setTimeout in case their geoIpLookup function calls this callback straight\n                                // away (e.g. if they have already done the geo ip lookup somewhere else). Using\n                                // setTimeout means that the current thread of execution will finish before executing\n                                // this, which allows the plugin to finish initialising.\n                                setTimeout(function() {\n                                    return forEachInstance(\"handleAutoCountry\");\n                                });\n                            }, function() {\n                                return forEachInstance(\"rejectAutoCountryPromise\");\n                            });\n                        }\n                    }\n                }\n            }, {\n                key: \"_initKeyListeners\",\n                value: function _initKeyListeners() {\n                    var _this6 = this;\n                    // update flag on keyup\n                    this._handleKeyupEvent = function() {\n                        if (_this6._updateFlagFromNumber(_this6.telInput.value)) {\n                            _this6._triggerCountryChange();\n                        }\n                    };\n                    this.telInput.addEventListener(\"keyup\", this._handleKeyupEvent);\n                    // update flag on cut/paste events (now supported in all major browsers)\n                    this._handleClipboardEvent = function() {\n                        // hack because \"paste\" event is fired before input is updated\n                        setTimeout(_this6._handleKeyupEvent);\n                    };\n                    this.telInput.addEventListener(\"cut\", this._handleClipboardEvent);\n                    this.telInput.addEventListener(\"paste\", this._handleClipboardEvent);\n                }\n            }, {\n                key: \"_cap\",\n                value: function _cap(number) {\n                    var max = this.telInput.getAttribute(\"maxlength\");\n                    return max && number.length > max ? number.substr(0, max) : number;\n                }\n            }, {\n                key: \"_initBlurListeners\",\n                value: function _initBlurListeners() {\n                    var _this7 = this;\n                    // on blur or form submit: if just a dial code then remove it\n                    this._handleSubmitOrBlurEvent = function() {\n                        _this7._removeEmptyDialCode();\n                    };\n                    if (this.telInput.form) this.telInput.form.addEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n                    this.telInput.addEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n                }\n            }, {\n                key: \"_removeEmptyDialCode\",\n                value: function _removeEmptyDialCode() {\n                    if (this.telInput.value.charAt(0) === \"+\") {\n                        var numeric = this._getNumeric(this.telInput.value);\n                        // if just a plus, or if just a dial code\n                        if (!numeric || this.selectedCountryData.dialCode === numeric) {\n                            this.telInput.value = \"\";\n                        }\n                    }\n                }\n            }, {\n                key: \"_getNumeric\",\n                value: function _getNumeric(s) {\n                    return s.replace(/\\D/g, \"\");\n                }\n            }, {\n                key: \"_trigger\",\n                value: function _trigger(name) {\n                    // have to use old school document.createEvent as IE11 doesn't support `new Event()` syntax\n                    var e = document.createEvent(\"Event\");\n                    e.initEvent(name, true, true);\n                    // can bubble, and is cancellable\n                    this.telInput.dispatchEvent(e);\n                }\n            }, {\n                key: \"_showDropdown\",\n                value: function _showDropdown() {\n                    this.countryList.classList.remove(\"iti__hide\");\n                    this.selectedFlag.setAttribute(\"aria-expanded\", \"true\");\n                    this._setDropdownPosition();\n                    // update highlighting and scroll to active list item\n                    if (this.activeItem) {\n                        this._highlightListItem(this.activeItem, false);\n                        this._scrollTo(this.activeItem, true);\n                    }\n                    // bind all the dropdown-related listeners: mouseover, click, click-off, keydown\n                    this._bindDropdownListeners();\n                    // update the arrow\n                    this.dropdownArrow.classList.add(\"iti__arrow--up\");\n                    this._trigger(\"open:countrydropdown\");\n                }\n            }, {\n                key: \"_toggleClass\",\n                value: function _toggleClass(el, className, shouldHaveClass) {\n                    if (shouldHaveClass && !el.classList.contains(className)) el.classList.add(className); else if (!shouldHaveClass && el.classList.contains(className)) el.classList.remove(className);\n                }\n            }, {\n                key: \"_setDropdownPosition\",\n                value: function _setDropdownPosition() {\n                    var _this8 = this;\n                    if (this.options.dropdownContainer) {\n                        this.options.dropdownContainer.appendChild(this.dropdown);\n                    }\n                    if (!this.isMobile) {\n                        var pos = this.telInput.getBoundingClientRect();\n                        // windowTop from https://stackoverflow.com/a/14384091/217866\n                        var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n                        var inputTop = pos.top + windowTop;\n                        var dropdownHeight = this.countryList.offsetHeight;\n                        // dropdownFitsBelow = (dropdownBottom < windowBottom)\n                        var dropdownFitsBelow = inputTop + this.telInput.offsetHeight + dropdownHeight < windowTop + window.innerHeight;\n                        var dropdownFitsAbove = inputTop - dropdownHeight > windowTop;\n                        // by default, the dropdown will be below the input. If we want to position it above the\n                        // input, we add the dropup class.\n                        this._toggleClass(this.countryList, \"iti__country-list--dropup\", !dropdownFitsBelow && dropdownFitsAbove);\n                        // if dropdownContainer is enabled, calculate postion\n                        if (this.options.dropdownContainer) {\n                            // by default the dropdown will be directly over the input because it's not in the flow.\n                            // If we want to position it below, we need to add some extra top value.\n                            var extraTop = !dropdownFitsBelow && dropdownFitsAbove ? 0 : this.telInput.offsetHeight;\n                            // calculate placement\n                            this.dropdown.style.top = \"\".concat(inputTop + extraTop, \"px\");\n                            this.dropdown.style.left = \"\".concat(pos.left + document.body.scrollLeft, \"px\");\n                            // close menu on window scroll\n                            this._handleWindowScroll = function() {\n                                return _this8._closeDropdown();\n                            };\n                            window.addEventListener(\"scroll\", this._handleWindowScroll);\n                        }\n                    }\n                }\n            }, {\n                key: \"_getClosestListItem\",\n                value: function _getClosestListItem(target) {\n                    var el = target;\n                    while (el && el !== this.countryList && !el.classList.contains(\"iti__country\")) {\n                        el = el.parentNode;\n                    }\n                    // if we reached the countryList element, then return null\n                    return el === this.countryList ? null : el;\n                }\n            }, {\n                key: \"_bindDropdownListeners\",\n                value: function _bindDropdownListeners() {\n                    var _this9 = this;\n                    // when mouse over a list item, just highlight that one\n                    // we add the class \"highlight\", so if they hit \"enter\" we know which one to select\n                    this._handleMouseoverCountryList = function(e) {\n                        // handle event delegation, as we're listening for this event on the countryList\n                        var listItem = _this9._getClosestListItem(e.target);\n                        if (listItem) _this9._highlightListItem(listItem, false);\n                    };\n                    this.countryList.addEventListener(\"mouseover\", this._handleMouseoverCountryList);\n                    // listen for country selection\n                    this._handleClickCountryList = function(e) {\n                        var listItem = _this9._getClosestListItem(e.target);\n                        if (listItem) _this9._selectListItem(listItem);\n                    };\n                    this.countryList.addEventListener(\"click\", this._handleClickCountryList);\n                    // click off to close\n                    // (except when this initial opening click is bubbling up)\n                    // we cannot just stopPropagation as it may be needed to close another instance\n                    var isOpening = true;\n                    this._handleClickOffToClose = function() {\n                        if (!isOpening) _this9._closeDropdown();\n                        isOpening = false;\n                    };\n                    document.documentElement.addEventListener(\"click\", this._handleClickOffToClose);\n                    // listen for up/down scrolling, enter to select, or letters to jump to country name.\n                    // use keydown as keypress doesn't fire for non-char keys and we want to catch if they\n                    // just hit down and hold it to scroll down (no keyup event).\n                    // listen on the document because that's where key events are triggered if no input has focus\n                    var query = \"\";\n                    var queryTimer = null;\n                    this._handleKeydownOnDropdown = function(e) {\n                        // prevent down key from scrolling the whole page,\n                        // and enter key from submitting a form etc\n                        e.preventDefault();\n                        // up and down to navigate\n                        if (e.key === \"ArrowUp\" || e.key === \"Up\" || e.key === \"ArrowDown\" || e.key === \"Down\") _this9._handleUpDownKey(e.key); else if (e.key === \"Enter\") _this9._handleEnterKey(); else if (e.key === \"Escape\") _this9._closeDropdown(); else if (/^[a-zA-Z\u00C0-\u00FF\u0430-\u044F\u0410-\u042F ]$/.test(e.key)) {\n                            // jump to countries that start with the query string\n                            if (queryTimer) clearTimeout(queryTimer);\n                            query += e.key.toLowerCase();\n                            _this9._searchForCountry(query);\n                            // if the timer hits 1 second, reset the query\n                            queryTimer = setTimeout(function() {\n                                query = \"\";\n                            }, 1e3);\n                        }\n                    };\n                    document.addEventListener(\"keydown\", this._handleKeydownOnDropdown);\n                }\n            }, {\n                key: \"_handleUpDownKey\",\n                value: function _handleUpDownKey(key) {\n                    var next = key === \"ArrowUp\" || key === \"Up\" ? this.highlightedItem.previousElementSibling : this.highlightedItem.nextElementSibling;\n                    if (next) {\n                        // skip the divider\n                        if (next.classList.contains(\"iti__divider\")) {\n                            next = key === \"ArrowUp\" || key === \"Up\" ? next.previousElementSibling : next.nextElementSibling;\n                        }\n                        this._highlightListItem(next, true);\n                    }\n                }\n            }, {\n                key: \"_handleEnterKey\",\n                value: function _handleEnterKey() {\n                    if (this.highlightedItem) this._selectListItem(this.highlightedItem);\n                }\n            }, {\n                key: \"_searchForCountry\",\n                value: function _searchForCountry(query) {\n                    for (var i = 0; i < this.countries.length; i++) {\n                        if (this._startsWith(this.countries[i].name, query)) {\n                            var listItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(this.countries[i].iso2));\n                            // update highlighting and scroll\n                            this._highlightListItem(listItem, false);\n                            this._scrollTo(listItem, true);\n                            break;\n                        }\n                    }\n                }\n            }, {\n                key: \"_startsWith\",\n                value: function _startsWith(a, b) {\n                    return a.substr(0, b.length).toLowerCase() === b;\n                }\n            }, {\n                key: \"_updateValFromNumber\",\n                value: function _updateValFromNumber(originalNumber) {\n                    var number = originalNumber;\n                    if (this.options.formatOnDisplay && window.intlTelInputUtils && this.selectedCountryData) {\n                        var useNational = !this.options.separateDialCode && (this.options.nationalMode || number.charAt(0) !== \"+\");\n                        var _intlTelInputUtils$nu = intlTelInputUtils.numberFormat, NATIONAL = _intlTelInputUtils$nu.NATIONAL, INTERNATIONAL = _intlTelInputUtils$nu.INTERNATIONAL;\n                        var format = useNational ? NATIONAL : INTERNATIONAL;\n                        number = intlTelInputUtils.formatNumber(number, this.selectedCountryData.iso2, format);\n                    }\n                    number = this._beforeSetNumber(number);\n                    this.telInput.value = number;\n                }\n            }, {\n                key: \"_updateFlagFromNumber\",\n                value: function _updateFlagFromNumber(originalNumber) {\n                    // if we're in nationalMode and we already have US/Canada selected, make sure the number starts\n                    // with a +1 so _getDialCode will be able to extract the area code\n                    // update: if we dont yet have selectedCountryData, but we're here (trying to update the flag\n                    // from the number), that means we're initialising the plugin with a number that already has a\n                    // dial code, so fine to ignore this bit\n                    var number = originalNumber;\n                    var selectedDialCode = this.selectedCountryData.dialCode;\n                    var isNanp = selectedDialCode === \"1\";\n                    if (number && this.options.nationalMode && isNanp && number.charAt(0) !== \"+\") {\n                        if (number.charAt(0) !== \"1\") number = \"1\".concat(number);\n                        number = \"+\".concat(number);\n                    }\n                    // update flag if user types area code for another country\n                    if (this.options.separateDialCode && selectedDialCode && number.charAt(0) !== \"+\") {\n                        number = \"+\".concat(selectedDialCode).concat(number);\n                    }\n                    // try and extract valid dial code from input\n                    var dialCode = this._getDialCode(number, true);\n                    var numeric = this._getNumeric(number);\n                    var countryCode = null;\n                    if (dialCode) {\n                        var countryCodes = this.countryCodes[this._getNumeric(dialCode)];\n                        // check if the right country is already selected. this should be false if the number is\n                        // longer than the matched dial code because in this case we need to make sure that if\n                        // there are multiple country matches, that the first one is selected (note: we could\n                        // just check that here, but it requires the same loop that we already have later)\n                        var alreadySelected = countryCodes.indexOf(this.selectedCountryData.iso2) !== -1 && numeric.length <= dialCode.length - 1;\n                        var isRegionlessNanpNumber = selectedDialCode === \"1\" && this._isRegionlessNanp(numeric);\n                        // only update the flag if:\n                        // A) NOT (we currently have a NANP flag selected, and the number is a regionlessNanp)\n                        // AND\n                        // B) the right country is not already selected\n                        if (!isRegionlessNanpNumber && !alreadySelected) {\n                            // if using onlyCountries option, countryCodes[0] may be empty, so we must find the first\n                            // non-empty index\n                            for (var j = 0; j < countryCodes.length; j++) {\n                                if (countryCodes[j]) {\n                                    countryCode = countryCodes[j];\n                                    break;\n                                }\n                            }\n                        }\n                    } else if (number.charAt(0) === \"+\" && numeric.length) {\n                        // invalid dial code, so empty\n                        // Note: use getNumeric here because the number has not been formatted yet, so could contain\n                        // bad chars\n                        countryCode = \"\";\n                    } else if (!number || number === \"+\") {\n                        // empty, or just a plus, so default\n                        countryCode = this.defaultCountry;\n                    }\n                    if (countryCode !== null) {\n                        return this._setFlag(countryCode);\n                    }\n                    return false;\n                }\n            }, {\n                key: \"_isRegionlessNanp\",\n                value: function _isRegionlessNanp(number) {\n                    var numeric = this._getNumeric(number);\n                    if (numeric.charAt(0) === \"1\") {\n                        var areaCode = numeric.substr(1, 3);\n                        return regionlessNanpNumbers.indexOf(areaCode) !== -1;\n                    }\n                    return false;\n                }\n            }, {\n                key: \"_highlightListItem\",\n                value: function _highlightListItem(listItem, shouldFocus) {\n                    var prevItem = this.highlightedItem;\n                    if (prevItem) prevItem.classList.remove(\"iti__highlight\");\n                    this.highlightedItem = listItem;\n                    this.highlightedItem.classList.add(\"iti__highlight\");\n                    if (shouldFocus) this.highlightedItem.focus();\n                }\n            }, {\n                key: \"_getCountryData\",\n                value: function _getCountryData(countryCode, ignoreOnlyCountriesOption, allowFail) {\n                    var countryList = ignoreOnlyCountriesOption ? allCountries : this.countries;\n                    for (var i = 0; i < countryList.length; i++) {\n                        if (countryList[i].iso2 === countryCode) {\n                            return countryList[i];\n                        }\n                    }\n                    if (allowFail) {\n                        return null;\n                    }\n                    throw new Error(\"No country data for '\".concat(countryCode, \"'\"));\n                }\n            }, {\n                key: \"_setFlag\",\n                value: function _setFlag(countryCode) {\n                    var prevCountry = this.selectedCountryData.iso2 ? this.selectedCountryData : {};\n                    // do this first as it will throw an error and stop if countryCode is invalid\n                    this.selectedCountryData = countryCode ? this._getCountryData(countryCode, false, false) : {};\n                    // update the defaultCountry - we only need the iso2 from now on, so just store that\n                    if (this.selectedCountryData.iso2) {\n                        this.defaultCountry = this.selectedCountryData.iso2;\n                    }\n                    this.selectedFlagInner.setAttribute(\"class\", \"iti__flag iti__\".concat(countryCode));\n                    // update the selected country's title attribute\n                    var title = countryCode ? \"\".concat(this.selectedCountryData.name, \": +\").concat(this.selectedCountryData.dialCode) : \"Unknown\";\n                    this.selectedFlag.setAttribute(\"title\", title);\n                    if (this.options.separateDialCode) {\n                        var dialCode = this.selectedCountryData.dialCode ? \"+\".concat(this.selectedCountryData.dialCode) : \"\";\n                        this.selectedDialCode.innerHTML = dialCode;\n                        // offsetWidth is zero if input is in a hidden container during initialisation\n                        var selectedFlagWidth = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth();\n                        // add 6px of padding after the grey selected-dial-code box, as this is what we use in the css\n                        this.telInput.style.paddingLeft = \"\".concat(selectedFlagWidth + 6, \"px\");\n                    }\n                    // and the input's placeholder\n                    this._updatePlaceholder();\n                    // update the active list item\n                    if (this.options.allowDropdown) {\n                        var prevItem = this.activeItem;\n                        if (prevItem) {\n                            prevItem.classList.remove(\"iti__active\");\n                            prevItem.setAttribute(\"aria-selected\", \"false\");\n                        }\n                        if (countryCode) {\n                            // check if there is a preferred item first, else fall back to standard\n                            var nextItem = this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode, \"-preferred\")) || this.countryList.querySelector(\"#iti-\".concat(this.id, \"__item-\").concat(countryCode));\n                            nextItem.setAttribute(\"aria-selected\", \"true\");\n                            nextItem.classList.add(\"iti__active\");\n                            this.activeItem = nextItem;\n                            this.selectedFlag.setAttribute(\"aria-activedescendant\", nextItem.getAttribute(\"id\"));\n                        }\n                    }\n                    // return if the flag has changed or not\n                    return prevCountry.iso2 !== countryCode;\n                }\n            }, {\n                key: \"_getHiddenSelectedFlagWidth\",\n                value: function _getHiddenSelectedFlagWidth() {\n                    // to get the right styling to apply, all we need is a shallow clone of the container,\n                    // and then to inject a deep clone of the selectedFlag element\n                    var containerClone = this.telInput.parentNode.cloneNode();\n                    containerClone.style.visibility = \"hidden\";\n                    document.body.appendChild(containerClone);\n                    var flagsContainerClone = this.flagsContainer.cloneNode();\n                    containerClone.appendChild(flagsContainerClone);\n                    var selectedFlagClone = this.selectedFlag.cloneNode(true);\n                    flagsContainerClone.appendChild(selectedFlagClone);\n                    var width = selectedFlagClone.offsetWidth;\n                    containerClone.parentNode.removeChild(containerClone);\n                    return width;\n                }\n            }, {\n                key: \"_updatePlaceholder\",\n                value: function _updatePlaceholder() {\n                    var shouldSetPlaceholder = this.options.autoPlaceholder === \"aggressive\" || !this.hadInitialPlaceholder && this.options.autoPlaceholder === \"polite\";\n                    if (window.intlTelInputUtils && shouldSetPlaceholder) {\n                        var numberType = intlTelInputUtils.numberType[this.options.placeholderNumberType];\n                        var placeholder = this.selectedCountryData.iso2 ? intlTelInputUtils.getExampleNumber(this.selectedCountryData.iso2, this.options.nationalMode, numberType) : \"\";\n                        placeholder = this._beforeSetNumber(placeholder);\n                        if (typeof this.options.customPlaceholder === \"function\") {\n                            placeholder = this.options.customPlaceholder(placeholder, this.selectedCountryData);\n                        }\n                        this.telInput.setAttribute(\"placeholder\", placeholder);\n                    }\n                }\n            }, {\n                key: \"_selectListItem\",\n                value: function _selectListItem(listItem) {\n                    // update selected flag and active list item\n                    var flagChanged = this._setFlag(listItem.getAttribute(\"data-country-code\"));\n                    this._closeDropdown();\n                    this._updateDialCode(listItem.getAttribute(\"data-dial-code\"), true);\n                    // focus the input\n                    this.telInput.focus();\n                    // put cursor at end - this fix is required for FF and IE11 (with nationalMode=false i.e. auto\n                    // inserting dial code), who try to put the cursor at the beginning the first time\n                    var len = this.telInput.value.length;\n                    this.telInput.setSelectionRange(len, len);\n                    if (flagChanged) {\n                        this._triggerCountryChange();\n                    }\n                }\n            }, {\n                key: \"_closeDropdown\",\n                value: function _closeDropdown() {\n                    this.countryList.classList.add(\"iti__hide\");\n                    this.selectedFlag.setAttribute(\"aria-expanded\", \"false\");\n                    // update the arrow\n                    this.dropdownArrow.classList.remove(\"iti__arrow--up\");\n                    // unbind key events\n                    document.removeEventListener(\"keydown\", this._handleKeydownOnDropdown);\n                    document.documentElement.removeEventListener(\"click\", this._handleClickOffToClose);\n                    this.countryList.removeEventListener(\"mouseover\", this._handleMouseoverCountryList);\n                    this.countryList.removeEventListener(\"click\", this._handleClickCountryList);\n                    // remove menu from container\n                    if (this.options.dropdownContainer) {\n                        if (!this.isMobile) window.removeEventListener(\"scroll\", this._handleWindowScroll);\n                        if (this.dropdown.parentNode) this.dropdown.parentNode.removeChild(this.dropdown);\n                    }\n                    this._trigger(\"close:countrydropdown\");\n                }\n            }, {\n                key: \"_scrollTo\",\n                value: function _scrollTo(element, middle) {\n                    var container = this.countryList;\n                    // windowTop from https://stackoverflow.com/a/14384091/217866\n                    var windowTop = window.pageYOffset || document.documentElement.scrollTop;\n                    var containerHeight = container.offsetHeight;\n                    var containerTop = container.getBoundingClientRect().top + windowTop;\n                    var containerBottom = containerTop + containerHeight;\n                    var elementHeight = element.offsetHeight;\n                    var elementTop = element.getBoundingClientRect().top + windowTop;\n                    var elementBottom = elementTop + elementHeight;\n                    var newScrollTop = elementTop - containerTop + container.scrollTop;\n                    var middleOffset = containerHeight / 2 - elementHeight / 2;\n                    if (elementTop < containerTop) {\n                        // scroll up\n                        if (middle) newScrollTop -= middleOffset;\n                        container.scrollTop = newScrollTop;\n                    } else if (elementBottom > containerBottom) {\n                        // scroll down\n                        if (middle) newScrollTop += middleOffset;\n                        var heightDifference = containerHeight - elementHeight;\n                        container.scrollTop = newScrollTop - heightDifference;\n                    }\n                }\n            }, {\n                key: \"_updateDialCode\",\n                value: function _updateDialCode(newDialCodeBare, hasSelectedListItem) {\n                    var inputVal = this.telInput.value;\n                    // save having to pass this every time\n                    var newDialCode = \"+\".concat(newDialCodeBare);\n                    var newNumber;\n                    if (inputVal.charAt(0) === \"+\") {\n                        // there's a plus so we're dealing with a replacement (doesn't matter if nationalMode or not)\n                        var prevDialCode = this._getDialCode(inputVal);\n                        if (prevDialCode) {\n                            // current number contains a valid dial code, so replace it\n                            newNumber = inputVal.replace(prevDialCode, newDialCode);\n                        } else {\n                            // current number contains an invalid dial code, so ditch it\n                            // (no way to determine where the invalid dial code ends and the rest of the number begins)\n                            newNumber = newDialCode;\n                        }\n                    } else if (this.options.nationalMode || this.options.separateDialCode) {\n                        // don't do anything\n                        return;\n                    } else {\n                        // nationalMode is disabled\n                        if (inputVal) {\n                            // there is an existing value with no dial code: prefix the new dial code\n                            newNumber = newDialCode + inputVal;\n                        } else if (hasSelectedListItem || !this.options.autoHideDialCode) {\n                            // no existing value and either they've just selected a list item, or autoHideDialCode is\n                            // disabled: insert new dial code\n                            newNumber = newDialCode;\n                        } else {\n                            return;\n                        }\n                    }\n                    this.telInput.value = newNumber;\n                }\n            }, {\n                key: \"_getDialCode\",\n                value: function _getDialCode(number, includeAreaCode) {\n                    var dialCode = \"\";\n                    // only interested in international numbers (starting with a plus)\n                    if (number.charAt(0) === \"+\") {\n                        var numericChars = \"\";\n                        // iterate over chars\n                        for (var i = 0; i < number.length; i++) {\n                            var c = number.charAt(i);\n                            // if char is number (https://stackoverflow.com/a/8935649/217866)\n                            if (!isNaN(parseInt(c, 10))) {\n                                numericChars += c;\n                                // if current numericChars make a valid dial code\n                                if (includeAreaCode) {\n                                    if (this.countryCodes[numericChars]) {\n                                        // store the actual raw string (useful for matching later)\n                                        dialCode = number.substr(0, i + 1);\n                                    }\n                                } else {\n                                    if (this.dialCodes[numericChars]) {\n                                        dialCode = number.substr(0, i + 1);\n                                        // if we're just looking for a dial code, we can break as soon as we find one\n                                        break;\n                                    }\n                                }\n                                // stop searching as soon as we can - in this case when we hit max len\n                                if (numericChars.length === this.countryCodeMaxLen) {\n                                    break;\n                                }\n                            }\n                        }\n                    }\n                    return dialCode;\n                }\n            }, {\n                key: \"_getFullNumber\",\n                value: function _getFullNumber() {\n                    var val = this.telInput.value.trim();\n                    var dialCode = this.selectedCountryData.dialCode;\n                    var prefix;\n                    var numericVal = this._getNumeric(val);\n                    if (this.options.separateDialCode && val.charAt(0) !== \"+\" && dialCode && numericVal) {\n                        // when using separateDialCode, it is visible so is effectively part of the typed number\n                        prefix = \"+\".concat(dialCode);\n                    } else {\n                        prefix = \"\";\n                    }\n                    return prefix + val;\n                }\n            }, {\n                key: \"_beforeSetNumber\",\n                value: function _beforeSetNumber(originalNumber) {\n                    var number = originalNumber;\n                    if (this.options.separateDialCode) {\n                        var dialCode = this._getDialCode(number);\n                        // if there is a valid dial code\n                        if (dialCode) {\n                            // in case _getDialCode returned an area code as well\n                            dialCode = \"+\".concat(this.selectedCountryData.dialCode);\n                            // a lot of numbers will have a space separating the dial code and the main number, and\n                            // some NANP numbers will have a hyphen e.g. +1 684-733-1234 - in both cases we want to get\n                            // rid of it\n                            // NOTE: don't just trim all non-numerics as may want to preserve an open parenthesis etc\n                            var start = number[dialCode.length] === \" \" || number[dialCode.length] === \"-\" ? dialCode.length + 1 : dialCode.length;\n                            number = number.substr(start);\n                        }\n                    }\n                    return this._cap(number);\n                }\n            }, {\n                key: \"_triggerCountryChange\",\n                value: function _triggerCountryChange() {\n                    this._trigger(\"countrychange\");\n                }\n            }, {\n                key: \"handleAutoCountry\",\n                value: function handleAutoCountry() {\n                    if (this.options.initialCountry === \"auto\") {\n                        // we must set this even if there is an initial val in the input: in case the initial val is\n                        // invalid and they delete it - they should see their auto country\n                        this.defaultCountry = window.intlTelInputGlobals.autoCountry;\n                        // if there's no initial value in the input, then update the flag\n                        if (!this.telInput.value) {\n                            this.setCountry(this.defaultCountry);\n                        }\n                        this.resolveAutoCountryPromise();\n                    }\n                }\n            }, {\n                key: \"handleUtils\",\n                value: function handleUtils() {\n                    // if the request was successful\n                    if (window.intlTelInputUtils) {\n                        // if there's an initial value in the input, then format it\n                        if (this.telInput.value) {\n                            this._updateValFromNumber(this.telInput.value);\n                        }\n                        this._updatePlaceholder();\n                    }\n                    this.resolveUtilsScriptPromise();\n                }\n            }, {\n                key: \"destroy\",\n                value: function destroy() {\n                    var form = this.telInput.form;\n                    if (this.options.allowDropdown) {\n                        // make sure the dropdown is closed (and unbind listeners)\n                        this._closeDropdown();\n                        this.selectedFlag.removeEventListener(\"click\", this._handleClickSelectedFlag);\n                        this.flagsContainer.removeEventListener(\"keydown\", this._handleFlagsContainerKeydown);\n                        // label click hack\n                        var label = this._getClosestLabel();\n                        if (label) label.removeEventListener(\"click\", this._handleLabelClick);\n                    }\n                    // unbind hiddenInput listeners\n                    if (this.hiddenInput && form) form.removeEventListener(\"submit\", this._handleHiddenInputSubmit);\n                    // unbind autoHideDialCode listeners\n                    if (this.options.autoHideDialCode) {\n                        if (form) form.removeEventListener(\"submit\", this._handleSubmitOrBlurEvent);\n                        this.telInput.removeEventListener(\"blur\", this._handleSubmitOrBlurEvent);\n                    }\n                    // unbind key events, and cut/paste events\n                    this.telInput.removeEventListener(\"keyup\", this._handleKeyupEvent);\n                    this.telInput.removeEventListener(\"cut\", this._handleClipboardEvent);\n                    this.telInput.removeEventListener(\"paste\", this._handleClipboardEvent);\n                    // remove attribute of id instance: data-intl-tel-input-id\n                    this.telInput.removeAttribute(\"data-intl-tel-input-id\");\n                    // remove markup (but leave the original input)\n                    var wrapper = this.telInput.parentNode;\n                    wrapper.parentNode.insertBefore(this.telInput, wrapper);\n                    wrapper.parentNode.removeChild(wrapper);\n                    delete window.intlTelInputGlobals.instances[this.id];\n                }\n            }, {\n                key: \"getExtension\",\n                value: function getExtension() {\n                    if (window.intlTelInputUtils) {\n                        return intlTelInputUtils.getExtension(this._getFullNumber(), this.selectedCountryData.iso2);\n                    }\n                    return \"\";\n                }\n            }, {\n                key: \"getNumber\",\n                value: function getNumber(format) {\n                    if (window.intlTelInputUtils) {\n                        var iso2 = this.selectedCountryData.iso2;\n                        return intlTelInputUtils.formatNumber(this._getFullNumber(), iso2, format);\n                    }\n                    return \"\";\n                }\n            }, {\n                key: \"getNumberType\",\n                value: function getNumberType() {\n                    if (window.intlTelInputUtils) {\n                        return intlTelInputUtils.getNumberType(this._getFullNumber(), this.selectedCountryData.iso2);\n                    }\n                    return -99;\n                }\n            }, {\n                key: \"getSelectedCountryData\",\n                value: function getSelectedCountryData() {\n                    return this.selectedCountryData;\n                }\n            }, {\n                key: \"getValidationError\",\n                value: function getValidationError() {\n                    if (window.intlTelInputUtils) {\n                        var iso2 = this.selectedCountryData.iso2;\n                        return intlTelInputUtils.getValidationError(this._getFullNumber(), iso2);\n                    }\n                    return -99;\n                }\n            }, {\n                key: \"isValidNumber\",\n                value: function isValidNumber() {\n                    var val = this._getFullNumber().trim();\n                    var countryCode = this.options.nationalMode ? this.selectedCountryData.iso2 : \"\";\n                    return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(val, countryCode) : null;\n                }\n            }, {\n                key: \"setCountry\",\n                value: function setCountry(originalCountryCode) {\n                    var countryCode = originalCountryCode.toLowerCase();\n                    // check if already selected\n                    if (!this.selectedFlagInner.classList.contains(\"iti__\".concat(countryCode))) {\n                        this._setFlag(countryCode);\n                        this._updateDialCode(this.selectedCountryData.dialCode, false);\n                        this._triggerCountryChange();\n                    }\n                }\n            }, {\n                key: \"setNumber\",\n                value: function setNumber(number) {\n                    // we must update the flag first, which updates this.selectedCountryData, which is used for\n                    // formatting the number before displaying it\n                    var flagChanged = this._updateFlagFromNumber(number);\n                    this._updateValFromNumber(number);\n                    if (flagChanged) {\n                        this._triggerCountryChange();\n                    }\n                }\n            }, {\n                key: \"setPlaceholderNumberType\",\n                value: function setPlaceholderNumberType(type) {\n                    this.options.placeholderNumberType = type;\n                    this._updatePlaceholder();\n                }\n            } ]);\n            return Iti;\n        }();\n        /********************\n *  STATIC METHODS\n ********************/\n        // get the country data object\n        intlTelInputGlobals.getCountryData = function() {\n            return allCountries;\n        };\n        // inject a <script> element to load utils.js\n        var injectScript = function injectScript(path, handleSuccess, handleFailure) {\n            // inject a new script element into the page\n            var script = document.createElement(\"script\");\n            script.onload = function() {\n                forEachInstance(\"handleUtils\");\n                if (handleSuccess) handleSuccess();\n            };\n            script.onerror = function() {\n                forEachInstance(\"rejectUtilsScriptPromise\");\n                if (handleFailure) handleFailure();\n            };\n            script.className = \"iti-load-utils\";\n            script.async = true;\n            script.src = path;\n            document.body.appendChild(script);\n        };\n        // load the utils script\n        intlTelInputGlobals.loadUtils = function(path) {\n            // 2 options:\n            // 1) not already started loading (start)\n            // 2) already started loading (do nothing - just wait for the onload callback to fire, which will\n            // trigger handleUtils on all instances, invoking their resolveUtilsScriptPromise functions)\n            if (!window.intlTelInputUtils && !window.intlTelInputGlobals.startedLoadingUtilsScript) {\n                // only do this once\n                window.intlTelInputGlobals.startedLoadingUtilsScript = true;\n                // if we have promises, then return a promise\n                if (typeof Promise !== \"undefined\") {\n                    return new Promise(function(resolve, reject) {\n                        return injectScript(path, resolve, reject);\n                    });\n                }\n                injectScript(path);\n            }\n            return null;\n        };\n        // default options\n        intlTelInputGlobals.defaults = defaults;\n        // version\n        intlTelInputGlobals.version = \"17.0.16\";\n        // convenience wrapper\n        return function(input, options) {\n            var iti = new Iti(input, options);\n            iti._init();\n            input.setAttribute(\"data-intl-tel-input-id\", iti.id);\n            window.intlTelInputGlobals.instances[iti.id] = iti;\n            return iti;\n        };\n    }();\n});", "/**\n * Exposing intl-tel-input as a component\n */\nmodule.exports = require(\"./build/js/intlTelInput\");\n", "/*\n * jQuery MiniColors: A tiny color picker built on jQuery\n *\n * Copyright: Cory LaViska for A Beautiful Site, LLC: http://www.abeautifulsite.net/\n *\n * Contribute: https://github.com/claviska/jquery-minicolors\n *\n * @license: http://opensource.org/licenses/MIT\n *\n */\n(function (factory) {\n    /* jshint ignore:start */\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node/CommonJS\n        module.exports = factory(require('jquery'));\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n    /* jshint ignore:end */\n}(function ($) {\n\n    // Defaults\n    $.minicolors = {\n        defaults: {\n            animationSpeed: 50,\n            animationEasing: 'swing',\n            change: null,\n            changeDelay: 0,\n            control: 'hue',\n            dataUris: true,\n            defaultValue: '',\n            hide: null,\n            hideSpeed: 100,\n            inline: false,\n            letterCase: 'lowercase',\n            opacity: false,\n            position: 'bottom left',\n            show: null,\n            showSpeed: 100,\n            theme: 'default'\n        }\n    };\n\n    // Public methods\n    $.extend($.fn, {\n        minicolors: function(method, data) {\n\n            switch(method) {\n\n                // Destroy the control\n                case 'destroy':\n                    $(this).each( function() {\n                        destroy($(this));\n                    });\n                    return $(this);\n\n                // Hide the color picker\n                case 'hide':\n                    hide();\n                    return $(this);\n\n                // Get/set opacity\n                case 'opacity':\n                    // Getter\n                    if( data === undefined ) {\n                        // Getter\n                        return $(this).attr('data-opacity');\n                    } else {\n                        // Setter\n                        $(this).each( function() {\n                            updateFromInput($(this).attr('data-opacity', data));\n                        });\n                    }\n                    return $(this);\n\n                // Get an RGB(A) object based on the current color/opacity\n                case 'rgbObject':\n                    return rgbObject($(this), method === 'rgbaObject');\n\n                // Get an RGB(A) string based on the current color/opacity\n                case 'rgbString':\n                case 'rgbaString':\n                    return rgbString($(this), method === 'rgbaString');\n\n                // Get/set settings on the fly\n                case 'settings':\n                    if( data === undefined ) {\n                        return $(this).data('minicolors-settings');\n                    } else {\n                        // Setter\n                        $(this).each( function() {\n                            var settings = $(this).data('minicolors-settings') || {};\n                            destroy($(this));\n                            $(this).minicolors($.extend(true, settings, data));\n                        });\n                    }\n                    return $(this);\n\n                // Show the color picker\n                case 'show':\n                    show( $(this).eq(0) );\n                    return $(this);\n\n                // Get/set the hex color value\n                case 'value':\n                    if( data === undefined ) {\n                        // Getter\n                        return $(this).val();\n                    } else {\n                        // Setter\n                        $(this).each( function() {\n                            updateFromInput($(this).val(data));\n                        });\n                    }\n                    return $(this);\n\n                // Initializes the control\n                default:\n                    if( method !== 'create' ) data = method;\n                    $(this).each( function() {\n                        init($(this), data);\n                    });\n                    return $(this);\n\n            }\n\n        }\n    });\n\n    // Initialize input elements\n    function init(input, settings) {\n\n        var minicolors = $('<div class=\"minicolors\" />'),\n            defaults = $.minicolors.defaults;\n\n        // Do nothing if already initialized\n        if( input.data('minicolors-initialized') ) return;\n\n        // Handle settings\n        settings = $.extend(true, {}, defaults, settings);\n\n        // The wrapper\n        minicolors\n            .addClass('minicolors-theme-' + settings.theme)\n            .toggleClass('minicolors-with-opacity', settings.opacity)\n            .toggleClass('minicolors-no-data-uris', settings.dataUris !== true);\n\n        // Custom positioning\n        if( settings.position !== undefined ) {\n            $.each(settings.position.split(' '), function() {\n                minicolors.addClass('minicolors-position-' + this);\n            });\n        }\n\n        // The input\n        input\n            .addClass('minicolors-input')\n            .data('minicolors-initialized', false)\n            .data('minicolors-settings', settings)\n            .prop('size', 7)\n            .wrap(minicolors)\n            .after(\n                '<div class=\"minicolors-panel minicolors-slider-' + settings.control + '\">' +\n                    '<div class=\"minicolors-slider minicolors-sprite\">' +\n                        '<div class=\"minicolors-picker\"></div>' +\n                    '</div>' +\n                    '<div class=\"minicolors-opacity-slider minicolors-sprite\">' +\n                        '<div class=\"minicolors-picker\"></div>' +\n                    '</div>' +\n                    '<div class=\"minicolors-grid minicolors-sprite\">' +\n                        '<div class=\"minicolors-grid-inner\"></div>' +\n                        '<div class=\"minicolors-picker\"><div></div></div>' +\n                    '</div>' +\n                '</div>'\n            );\n\n        // The swatch\n        if( !settings.inline ) {\n            input.after('<span class=\"minicolors-swatch minicolors-sprite\"><span class=\"minicolors-swatch-color\"></span></span>');\n            input.next('.minicolors-swatch').on('click', function(event) {\n                event.preventDefault();\n                input.focus();\n            });\n        }\n\n        // Prevent text selection in IE\n        input.parent().find('.minicolors-panel').on('selectstart', function() { return false; }).end();\n\n        // Inline controls\n        if( settings.inline ) input.parent().addClass('minicolors-inline');\n\n        updateFromInput(input, false);\n\n        input.data('minicolors-initialized', true);\n\n    }\n\n    // Returns the input back to its original state\n    function destroy(input) {\n\n        var minicolors = input.parent();\n\n        // Revert the input element\n        input\n            .removeData('minicolors-initialized')\n            .removeData('minicolors-settings')\n            .removeProp('size')\n            .removeClass('minicolors-input');\n\n        // Remove the wrap and destroy whatever remains\n        minicolors.before(input).remove();\n\n    }\n\n    // Shows the specified dropdown panel\n    function show(input) {\n\n        var minicolors = input.parent(),\n            panel = minicolors.find('.minicolors-panel'),\n            settings = input.data('minicolors-settings');\n\n        // Do nothing if uninitialized, disabled, inline, or already open\n        if( !input.data('minicolors-initialized') ||\n            input.prop('disabled') ||\n            minicolors.hasClass('minicolors-inline') ||\n            minicolors.hasClass('minicolors-focus')\n        ) return;\n\n        hide();\n\n        minicolors.addClass('minicolors-focus');\n        panel\n            .stop(true, true)\n            .fadeIn(settings.showSpeed, function() {\n                if( settings.show ) settings.show.call(input.get(0));\n            });\n\n    }\n\n    // Hides all dropdown panels\n    function hide() {\n\n        $('.minicolors-focus').each( function() {\n\n            var minicolors = $(this),\n                input = minicolors.find('.minicolors-input'),\n                panel = minicolors.find('.minicolors-panel'),\n                settings = input.data('minicolors-settings');\n\n            panel.fadeOut(settings.hideSpeed, function() {\n                if( settings.hide ) settings.hide.call(input.get(0));\n                minicolors.removeClass('minicolors-focus');\n            });\n\n        });\n    }\n\n    // Moves the selected picker\n    function move(target, event, animate) {\n\n        var input = target.parents('.minicolors').find('.minicolors-input'),\n            settings = input.data('minicolors-settings'),\n            picker = target.find('[class$=-picker]'),\n            offsetX = target.offset().left,\n            offsetY = target.offset().top,\n            x = Math.round(event.pageX - offsetX),\n            y = Math.round(event.pageY - offsetY),\n            duration = animate ? settings.animationSpeed : 0,\n            wx, wy, r, phi;\n\n        // Touch support\n        if( event.originalEvent.changedTouches ) {\n            x = event.originalEvent.changedTouches[0].pageX - offsetX;\n            y = event.originalEvent.changedTouches[0].pageY - offsetY;\n        }\n\n        // Constrain picker to its container\n        if( x < 0 ) x = 0;\n        if( y < 0 ) y = 0;\n        if( x > target.width() ) x = target.width();\n        if( y > target.height() ) y = target.height();\n\n        // Constrain color wheel values to the wheel\n        if( target.parent().is('.minicolors-slider-wheel') && picker.parent().is('.minicolors-grid') ) {\n            wx = 75 - x;\n            wy = 75 - y;\n            r = Math.sqrt(wx * wx + wy * wy);\n            phi = Math.atan2(wy, wx);\n            if( phi < 0 ) phi += Math.PI * 2;\n            if( r > 75 ) {\n                r = 75;\n                x = 75 - (75 * Math.cos(phi));\n                y = 75 - (75 * Math.sin(phi));\n            }\n            x = Math.round(x);\n            y = Math.round(y);\n        }\n\n        // Move the picker\n        if( target.is('.minicolors-grid') ) {\n            picker\n                .stop(true)\n                .animate({\n                    top: y + 'px',\n                    left: x + 'px'\n                }, duration, settings.animationEasing, function() {\n                    updateFromControl(input, target);\n                });\n        } else {\n            picker\n                .stop(true)\n                .animate({\n                    top: y + 'px'\n                }, duration, settings.animationEasing, function() {\n                    updateFromControl(input, target);\n                });\n        }\n\n    }\n\n    // Sets the input based on the color picker values\n    function updateFromControl(input, target) {\n\n        function getCoords(picker, container) {\n\n            var left, top;\n            if( !picker.length || !container ) return null;\n            left = picker.offset().left;\n            top = picker.offset().top;\n\n            return {\n                x: left - container.offset().left + (picker.outerWidth() / 2),\n                y: top - container.offset().top + (picker.outerHeight() / 2)\n            };\n\n        }\n\n        var hue, saturation, brightness, x, y, r, phi,\n\n            hex = input.val(),\n            opacity = input.attr('data-opacity'),\n\n            // Helpful references\n            minicolors = input.parent(),\n            settings = input.data('minicolors-settings'),\n            swatch = minicolors.find('.minicolors-swatch'),\n\n            // Panel objects\n            grid = minicolors.find('.minicolors-grid'),\n            slider = minicolors.find('.minicolors-slider'),\n            opacitySlider = minicolors.find('.minicolors-opacity-slider'),\n\n            // Picker objects\n            gridPicker = grid.find('[class$=-picker]'),\n            sliderPicker = slider.find('[class$=-picker]'),\n            opacityPicker = opacitySlider.find('[class$=-picker]'),\n\n            // Picker positions\n            gridPos = getCoords(gridPicker, grid),\n            sliderPos = getCoords(sliderPicker, slider),\n            opacityPos = getCoords(opacityPicker, opacitySlider);\n\n        // Handle colors\n        if( target.is('.minicolors-grid, .minicolors-slider') ) {\n\n            // Determine HSB values\n            switch(settings.control) {\n\n                case 'wheel':\n                    // Calculate hue, saturation, and brightness\n                    x = (grid.width() / 2) - gridPos.x;\n                    y = (grid.height() / 2) - gridPos.y;\n                    r = Math.sqrt(x * x + y * y);\n                    phi = Math.atan2(y, x);\n                    if( phi < 0 ) phi += Math.PI * 2;\n                    if( r > 75 ) {\n                        r = 75;\n                        gridPos.x = 69 - (75 * Math.cos(phi));\n                        gridPos.y = 69 - (75 * Math.sin(phi));\n                    }\n                    saturation = keepWithin(r / 0.75, 0, 100);\n                    hue = keepWithin(phi * 180 / Math.PI, 0, 360);\n                    brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n                    hex = hsb2hex({\n                        h: hue,\n                        s: saturation,\n                        b: brightness\n                    });\n\n                    // Update UI\n                    slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\n                    break;\n\n                case 'saturation':\n                    // Calculate hue, saturation, and brightness\n                    hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);\n                    saturation = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n                    brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n                    hex = hsb2hex({\n                        h: hue,\n                        s: saturation,\n                        b: brightness\n                    });\n\n                    // Update UI\n                    slider.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: brightness }));\n                    minicolors.find('.minicolors-grid-inner').css('opacity', saturation / 100);\n                    break;\n\n                case 'brightness':\n                    // Calculate hue, saturation, and brightness\n                    hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);\n                    saturation = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n                    brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n                    hex = hsb2hex({\n                        h: hue,\n                        s: saturation,\n                        b: brightness\n                    });\n\n                    // Update UI\n                    slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 }));\n                    minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (brightness / 100));\n                    break;\n\n                default:\n                    // Calculate hue, saturation, and brightness\n                    hue = keepWithin(360 - parseInt(sliderPos.y * (360 / slider.height()), 10), 0, 360);\n                    saturation = keepWithin(Math.floor(gridPos.x * (100 / grid.width())), 0, 100);\n                    brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n                    hex = hsb2hex({\n                        h: hue,\n                        s: saturation,\n                        b: brightness\n                    });\n\n                    // Update UI\n                    grid.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: 100 }));\n                    break;\n\n            }\n\n            // Adjust case\n            input.val( convertCase(hex, settings.letterCase) );\n\n        }\n\n        // Handle opacity\n        if( target.is('.minicolors-opacity-slider') ) {\n            if( settings.opacity ) {\n                opacity = parseFloat(1 - (opacityPos.y / opacitySlider.height())).toFixed(2);\n            } else {\n                opacity = 1;\n            }\n            if( settings.opacity ) input.attr('data-opacity', opacity);\n        }\n\n        // Set swatch color\n        swatch.find('SPAN').css({\n            backgroundColor: hex,\n            opacity: opacity\n        });\n\n        // Handle change event\n        doChange(input, hex, opacity);\n\n    }\n\n    // Sets the color picker values from the input\n    function updateFromInput(input, preserveInputValue) {\n\n        var hex,\n            hsb,\n            opacity,\n            x, y, r, phi,\n\n            // Helpful references\n            minicolors = input.parent(),\n            settings = input.data('minicolors-settings'),\n            swatch = minicolors.find('.minicolors-swatch'),\n\n            // Panel objects\n            grid = minicolors.find('.minicolors-grid'),\n            slider = minicolors.find('.minicolors-slider'),\n            opacitySlider = minicolors.find('.minicolors-opacity-slider'),\n\n            // Picker objects\n            gridPicker = grid.find('[class$=-picker]'),\n            sliderPicker = slider.find('[class$=-picker]'),\n            opacityPicker = opacitySlider.find('[class$=-picker]');\n\n        // Determine hex/HSB values\n        hex = convertCase(parseHex(input.val(), true), settings.letterCase);\n        if( !hex ){\n            hex = convertCase(parseHex(settings.defaultValue, true), settings.letterCase);\n        }\n        hsb = hex2hsb(hex);\n\n        // Update input value\n        if( !preserveInputValue ) input.val(hex);\n\n        // Determine opacity value\n        if( settings.opacity ) {\n            // Get from data-opacity attribute and keep within 0-1 range\n            opacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1);\n            if( isNaN(opacity) ) opacity = 1;\n            input.attr('data-opacity', opacity);\n            swatch.find('SPAN').css('opacity', opacity);\n\n            // Set opacity picker position\n            y = keepWithin(opacitySlider.height() - (opacitySlider.height() * opacity), 0, opacitySlider.height());\n            opacityPicker.css('top', y + 'px');\n        }\n\n        // Update swatch\n        swatch.find('SPAN').css('backgroundColor', hex);\n\n        // Determine picker locations\n        switch(settings.control) {\n\n            case 'wheel':\n                // Set grid position\n                r = keepWithin(Math.ceil(hsb.s * 0.75), 0, grid.height() / 2);\n                phi = hsb.h * Math.PI / 180;\n                x = keepWithin(75 - Math.cos(phi) * r, 0, grid.width());\n                y = keepWithin(75 - Math.sin(phi) * r, 0, grid.height());\n                gridPicker.css({\n                    top: y + 'px',\n                    left: x + 'px'\n                });\n\n                // Set slider position\n                y = 150 - (hsb.b / (100 / grid.height()));\n                if( hex === '' ) y = 0;\n                sliderPicker.css('top', y + 'px');\n\n                // Update panel color\n                slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\n                break;\n\n            case 'saturation':\n                // Set grid position\n                x = keepWithin((5 * hsb.h) / 12, 0, 150);\n                y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n                gridPicker.css({\n                    top: y + 'px',\n                    left: x + 'px'\n                });\n\n                // Set slider position\n                y = keepWithin(slider.height() - (hsb.s * (slider.height() / 100)), 0, slider.height());\n                sliderPicker.css('top', y + 'px');\n\n                // Update UI\n                slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: hsb.b }));\n                minicolors.find('.minicolors-grid-inner').css('opacity', hsb.s / 100);\n                break;\n\n            case 'brightness':\n                // Set grid position\n                x = keepWithin((5 * hsb.h) / 12, 0, 150);\n                y = keepWithin(grid.height() - Math.ceil(hsb.s / (100 / grid.height())), 0, grid.height());\n                gridPicker.css({\n                    top: y + 'px',\n                    left: x + 'px'\n                });\n\n                // Set slider position\n                y = keepWithin(slider.height() - (hsb.b * (slider.height() / 100)), 0, slider.height());\n                sliderPicker.css('top', y + 'px');\n\n                // Update UI\n                slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 }));\n                minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (hsb.b / 100));\n                break;\n\n            default:\n                // Set grid position\n                x = keepWithin(Math.ceil(hsb.s / (100 / grid.width())), 0, grid.width());\n                y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n                gridPicker.css({\n                    top: y + 'px',\n                    left: x + 'px'\n                });\n\n                // Set slider position\n                y = keepWithin(slider.height() - (hsb.h / (360 / slider.height())), 0, slider.height());\n                sliderPicker.css('top', y + 'px');\n\n                // Update panel color\n                grid.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: 100 }));\n                break;\n\n        }\n\n        // Fire change event, but only if minicolors is fully initialized\n        if( input.data('minicolors-initialized') ) {\n            doChange(input, hex, opacity);\n        }\n\n    }\n\n    // Runs the change and changeDelay callbacks\n    function doChange(input, hex, opacity) {\n\n        var settings = input.data('minicolors-settings'),\n            lastChange = input.data('minicolors-lastChange');\n\n        // Only run if it actually changed\n        if( !lastChange || lastChange.hex !== hex || lastChange.opacity !== opacity ) {\n\n            // Remember last-changed value\n            input.data('minicolors-lastChange', {\n                hex: hex,\n                opacity: opacity\n            });\n\n            // Fire change event\n            if( settings.change ) {\n                if( settings.changeDelay ) {\n                    // Call after a delay\n                    clearTimeout(input.data('minicolors-changeTimeout'));\n                    input.data('minicolors-changeTimeout', setTimeout( function() {\n                        settings.change.call(input.get(0), hex, opacity);\n                    }, settings.changeDelay));\n                } else {\n                    // Call immediately\n                    settings.change.call(input.get(0), hex, opacity);\n                }\n            }\n            input.trigger('change').trigger('input');\n        }\n\n    }\n\n    // Generates an RGB(A) object based on the input's value\n    function rgbObject(input) {\n        var hex = parseHex($(input).val(), true),\n            rgb = hex2rgb(hex),\n            opacity = $(input).attr('data-opacity');\n        if( !rgb ) return null;\n        if( opacity !== undefined ) $.extend(rgb, { a: parseFloat(opacity) });\n        return rgb;\n    }\n\n    // Genearates an RGB(A) string based on the input's value\n    function rgbString(input, alpha) {\n        var hex = parseHex($(input).val(), true),\n            rgb = hex2rgb(hex),\n            opacity = $(input).attr('data-opacity');\n        if( !rgb ) return null;\n        if( opacity === undefined ) opacity = 1;\n        if( alpha ) {\n            return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')';\n        } else {\n            return 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';\n        }\n    }\n\n    // Converts to the letter case specified in settings\n    function convertCase(string, letterCase) {\n        return letterCase === 'uppercase' ? string.toUpperCase() : string.toLowerCase();\n    }\n\n    // Parses a string and returns a valid hex string when possible\n    function parseHex(string, expand) {\n        string = string.replace(/[^A-F0-9]/ig, '');\n        if( string.length !== 3 && string.length !== 6 ) return '';\n        if( string.length === 3 && expand ) {\n            string = string[0] + string[0] + string[1] + string[1] + string[2] + string[2];\n        }\n        return '#' + string;\n    }\n\n    // Keeps value within min and max\n    function keepWithin(value, min, max) {\n        if( value < min ) value = min;\n        if( value > max ) value = max;\n        return value;\n    }\n\n    // Converts an HSB object to an RGB object\n    function hsb2rgb(hsb) {\n        var rgb = {};\n        var h = Math.round(hsb.h);\n        var s = Math.round(hsb.s * 255 / 100);\n        var v = Math.round(hsb.b * 255 / 100);\n        if(s === 0) {\n            rgb.r = rgb.g = rgb.b = v;\n        } else {\n            var t1 = v;\n            var t2 = (255 - s) * v / 255;\n            var t3 = (t1 - t2) * (h % 60) / 60;\n            if( h === 360 ) h = 0;\n            if( h < 60 ) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; }\n            else if( h < 120 ) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; }\n            else if( h < 180 ) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; }\n            else if( h < 240 ) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; }\n            else if( h < 300 ) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; }\n            else if( h < 360 ) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; }\n            else { rgb.r = 0; rgb.g = 0; rgb.b = 0; }\n        }\n        return {\n            r: Math.round(rgb.r),\n            g: Math.round(rgb.g),\n            b: Math.round(rgb.b)\n        };\n    }\n\n    // Converts an RGB object to a hex string\n    function rgb2hex(rgb) {\n        var hex = [\n            rgb.r.toString(16),\n            rgb.g.toString(16),\n            rgb.b.toString(16)\n        ];\n        $.each(hex, function(nr, val) {\n            if (val.length === 1) hex[nr] = '0' + val;\n        });\n        return '#' + hex.join('');\n    }\n\n    // Converts an HSB object to a hex string\n    function hsb2hex(hsb) {\n        return rgb2hex(hsb2rgb(hsb));\n    }\n\n    // Converts a hex string to an HSB object\n    function hex2hsb(hex) {\n        var hsb = rgb2hsb(hex2rgb(hex));\n        if( hsb.s === 0 ) hsb.h = 360;\n        return hsb;\n    }\n\n    // Converts an RGB object to an HSB object\n    function rgb2hsb(rgb) {\n        var hsb = { h: 0, s: 0, b: 0 };\n        var min = Math.min(rgb.r, rgb.g, rgb.b);\n        var max = Math.max(rgb.r, rgb.g, rgb.b);\n        var delta = max - min;\n        hsb.b = max;\n        hsb.s = max !== 0 ? 255 * delta / max : 0;\n        if( hsb.s !== 0 ) {\n            if( rgb.r === max ) {\n                hsb.h = (rgb.g - rgb.b) / delta;\n            } else if( rgb.g === max ) {\n                hsb.h = 2 + (rgb.b - rgb.r) / delta;\n            } else {\n                hsb.h = 4 + (rgb.r - rgb.g) / delta;\n            }\n        } else {\n            hsb.h = -1;\n        }\n        hsb.h *= 60;\n        if( hsb.h < 0 ) {\n            hsb.h += 360;\n        }\n        hsb.s *= 100/255;\n        hsb.b *= 100/255;\n        return hsb;\n    }\n\n    // Converts a hex string to an RGB object\n    function hex2rgb(hex) {\n        hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\n        return {\n            /* jshint ignore:start */\n            r: hex >> 16,\n            g: (hex & 0x00FF00) >> 8,\n            b: (hex & 0x0000FF)\n            /* jshint ignore:end */\n        };\n    }\n\n    // Handle events\n    $(document)\n        // Hide on clicks outside of the control\n        .on('mousedown.minicolors touchstart.minicolors', function(event) {\n            if( !$(event.target).parents().add(event.target).hasClass('minicolors') ) {\n                hide();\n            }\n        })\n        // Start moving\n        .on('mousedown.minicolors touchstart.minicolors', '.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider', function(event) {\n            var target = $(this);\n            event.preventDefault();\n            $(document).data('minicolors-target', target);\n            move(target, event, true);\n        })\n        // Move pickers\n        .on('mousemove.minicolors touchmove.minicolors', function(event) {\n            var target = $(document).data('minicolors-target');\n            if( target ) move(target, event);\n        })\n        // Stop moving\n        .on('mouseup.minicolors touchend.minicolors', function() {\n            $(this).removeData('minicolors-target');\n        })\n        // Show panel when swatch is clicked\n        .on('mousedown.minicolors touchstart.minicolors', '.minicolors-swatch', function(event) {\n            var input = $(this).parent().find('.minicolors-input');\n            event.preventDefault();\n            show(input);\n        })\n        // Show on focus\n        .on('focus.minicolors', '.minicolors-input', function() {\n            var input = $(this);\n            if( !input.data('minicolors-initialized') ) return;\n            show(input);\n        })\n        // Fix hex on blur\n        .on('blur.minicolors', '.minicolors-input', function() {\n            var input = $(this),\n                settings = input.data('minicolors-settings');\n            if( !input.data('minicolors-initialized') ) return;\n\n            // Parse Hex\n            input.val(parseHex(input.val(), true));\n\n            // Is it blank?\n            if( input.val() === '' ) input.val(parseHex(settings.defaultValue, true));\n\n            // Adjust case\n            input.val( convertCase(input.val(), settings.letterCase) );\n\n        })\n        // Handle keypresses\n        .on('keydown.minicolors', '.minicolors-input', function(event) {\n            var input = $(this);\n            if( !input.data('minicolors-initialized') ) return;\n            switch(event.keyCode) {\n                case 9: // tab\n                    hide();\n                    break;\n                case 13: // enter\n                case 27: // esc\n                    hide();\n                    input.blur();\n                    break;\n            }\n        })\n        // Update on keyup\n        .on('keyup.minicolors', '.minicolors-input', function() {\n            var input = $(this);\n            if( !input.data('minicolors-initialized') ) return;\n            updateFromInput(input, true);\n        })\n        // Update on paste\n        .on('paste.minicolors', '.minicolors-input', function() {\n            var input = $(this);\n            if( !input.data('minicolors-initialized') ) return;\n            setTimeout( function() {\n                updateFromInput(input, true);\n            }, 1);\n        });\n\n}));", null, "/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tthis._events[event] = this._events[event] || [];\n\t\t\tthis._events[event].push(fct);\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1) return delete this._events[event];\n\n\t\t\tif (event in this._events === false) return;\n\t\t\tthis._events[event].splice(this._events[event].indexOf(fct), 1);\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tif(event in self._events === false) return;\n\t\t\tfor( let fct of self._events[event] ){\n\t\t\t\tfct.apply(self, args );\n\t\t\t}\n\t\t});\n\t}\n};\n", "/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames     : [],\n\t\t\tsettings  : {},\n\t\t\trequested : {},\n\t\t\tloaded    : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn'   : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t *   ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t *   [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t *   {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self  = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self    = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin  = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' +  name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n", "\ntype TDiacraticList = {[key:string]:string};\n\n// https://github.com/andrewrk/node-diacritics/blob/master/index.js\n\nvar latin_pat:RegExp;\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}]'; // \\u{2bc}\nconst accent_reg = new RegExp(accent_pat,'g');\nvar diacritic_patterns:TDiacraticList;\n\nconst latin_convert:TDiacraticList = {\n\t'\u00E6': 'ae',\n\t'\u2C65': 'a',\n\t'\u00F8': 'o',\n};\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|'),'g');\n\n\nexport const DIACRITICS:TDiacraticList = {\n\t\" \":\"\u00A0\",\n\t0:\"\u07C0\",\n\tA:\"\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F\",\n\tAA:\"\uA732\",\n\tAE:\"\u00C6\u01FC\u01E2\",\n\tAO:\"\uA734\",\n\tAU:\"\uA736\",\n\tAV:\"\uA738\uA73A\",\n\tAY:\"\uA73C\",\n\tB:\"\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0181\",\n\tC:\"\u24B8\uFF23\uA73E\u1E08\u0106C\u0108\u010A\u010C\u00C7\u0187\u023B\",\n\tD:\"\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018A\u0189\u1D05\uA779\",\n\tDh:\"\u00D0\",\n\tDZ:\"\u01F1\u01C4\",\n\tDz:\"\u01F2\u01C5\",\n\tE:\"\u025B\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E\u1D07\",\n\tF:\"\uA77C\u24BB\uFF26\u1E1E\u0191\uA77B\",\n\tG:\"\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E\u0262\",\n\tH:\"\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D\",\n\tI:\"\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197\",\n\tJ:\"\u24BF\uFF2A\u0134\u0248\u0237\",\n\tK:\"\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2\",\n\tL:\"\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780\",\n\tLJ:\"\u01C7\",\n\tLj:\"\u01C8\",\n\tM:\"\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C\u03FB\",\n\tN:\"\uA7A4\u0220\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u019D\uA790\u1D0E\",\n\tNJ:\"\u01CA\",\n\tNj:\"\u01CB\",\n\tO:\"\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C\",\n\tOE:\"\u0152\",\n\tOI:\"\u01A2\",\n\tOO:\"\uA74E\",\n\tOU:\"\u0222\",\n\tP:\"\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754\",\n\tQ:\"\u24C6\uFF31\uA756\uA758\u024A\",\n\tR:\"\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782\",\n\tS:\"\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784\",\n\tT:\"\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786\",\n\tTh:\"\u00DE\",\n\tTZ:\"\uA728\",\n\tU:\"\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244\",\n\tV:\"\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245\",\n\tVY:\"\uA760\",\n\tW:\"\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72\",\n\tX:\"\u24CD\uFF38\u1E8A\u1E8C\",\n\tY:\"\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE\",\n\tZ:\"\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762\",\n\ta:\"\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251\",\n\taa:\"\uA733\",\n\tae:\"\u00E6\u01FD\u01E3\",\n\tao:\"\uA735\",\n\tau:\"\uA737\",\n\tav:\"\uA739\uA73B\",\n\tay:\"\uA73D\",\n\tb:\"\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253\u0182\",\n\tc:\"\uFF43\u24D2\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184\",\n\td:\"\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\u018B\u13E7\u0501\uA7AA\",\n\tdh:\"\u00F0\",\n\tdz:\"\u01F3\u01C6\",\n\te:\"\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u01DD\",\n\tf:\"\u24D5\uFF46\u1E1F\u0192\",\n\tff:\"\uFB00\",\n\tfi:\"\uFB01\",\n\tfl:\"\uFB02\",\n\tffi:\"\uFB03\",\n\tffl:\"\uFB04\",\n\tg:\"\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\uA77F\u1D79\",\n\th:\"\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265\",\n\thv:\"\u0195\",\n\ti:\"\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131\",\n\tj:\"\u24D9\uFF4A\u0135\u01F0\u0249\",\n\tk:\"\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3\",\n\tl:\"\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747\u026D\",\n\tlj:\"\u01C9\",\n\tm:\"\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F\",\n\tn:\"\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5\u043B\u0509\",\n\tnj:\"\u01CC\",\n\to:\"\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\uA74B\uA74D\u0275\u0254\u1D11\",\n\toe:\"\u0153\",\n\toi:\"\u01A3\",\n\too:\"\uA74F\",\n\tou:\"\u0223\",\n\tp:\"\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755\u03C1\",\n\tq:\"\u24E0\uFF51\u024B\uA757\uA759\",\n\tr:\"\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783\",\n\ts:\"\u24E2\uFF53\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B\u0282\",\n\tss:\"\u00DF\",\n\tt:\"\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787\",\n\tth:\"\u00FE\",\n\ttz:\"\uA729\",\n\tu:\"\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289\",\n\tv:\"\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C\",\n\tvy:\"\uA761\",\n\tw:\"\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73\",\n\tx:\"\u24E7\uFF58\u1E8B\u1E8D\",\n\ty:\"\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF\",\n\tz:\"\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763\"\n}\n\n/**\n * code points generated from toCodePoints();\n * removed 65339 to 65345\n */\nexport const code_points = [\n\t[ 67, 67 ],\n\t[ 160, 160 ],\n\t[ 192, 438 ],\n\t[ 452, 652 ],\n\t[ 961, 961 ],\n\t[ 1019, 1019 ],\n\t[ 1083, 1083 ],\n\t[ 1281, 1289 ],\n\t[ 1984, 1984 ],\n\t[ 5095, 5095 ],\n\t[ 7429, 7441 ],\n\t[ 7545, 7549 ],\n\t[ 7680, 7935 ],\n\t[ 8580, 8580 ],\n\t[ 9398, 9449 ],\n\t[ 11360, 11391 ],\n\t[ 42792, 42793 ],\n\t[ 42802, 42851 ],\n\t[ 42873, 42897 ],\n\t[ 42912, 42922 ],\n\t[ 64256, 64260 ],\n\t[ 65313, 65338 ],\n\t[ 65345, 65370 ]\n];\n\n/**\n * Remove accents\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n *\n */\nexport const asciifold = (str:string):string => {\n\treturn str\n\t\t.normalize('NFKD')\n\t\t.replace(accent_reg, '')\n\t\t.toLowerCase()\n\t\t.replace(convert_pat,function(foreignletter) {\n\t\t\treturn latin_convert[foreignletter];\n\t\t});\n};\n\n\n/**\n * Convert list of diacritics to array of code points\n *\n */\n// @ts-ignore\nfunction toCodePoints(tolerance=8){\n\tvar char_codes:number[] = [];\n\n\tfor( let letter in DIACRITICS ){\n\t\tlet _diacritics = DIACRITICS[letter];\n\t\tfor( let n = 0; n < _diacritics.length; n++ ){\n\t\t\tvar code_point = _diacritics.codePointAt(n);\n\t\t\tif( code_point ) char_codes.push( code_point );\n\t\t}\n\t}\n\n\t//https://stackoverflow.com/questions/40431572/is-there-a-simple-way-to-group-js-array-values-by-range\n\tchar_codes.sort((a, b) => a - b);\n\tvar accumulator: number[][] = [];\n\tchar_codes.reduce(function (accumulator, currentValue, index, source) {\n\n\t\tif( !index ){\n\t\t\taccumulator.push( [currentValue,currentValue] );\n\n\t\t}else if( currentValue - source[index - 1] > tolerance ){\n\t\t\taccumulator.push( [currentValue,currentValue] );\n\n\t\t}else{\n\n\t\t\tlet range = accumulator.pop();\n\t\t\tif( range ){\n\t\t\t\taccumulator.push( [range[0],currentValue]);\n\t\t\t}\n\t\t}\n\n\t\treturn accumulator;\n\t}, accumulator);\n\n}\n\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n *\n */\nexport const arrayToPattern = (chars:string[],glue:string='|'):string =>{\n\t\n\tif( chars.length == 1 ){\n\t\treturn chars[0];\n\t}\n\t\n\tvar longest = 1;\n\tchars.forEach((a)=>{longest = Math.max(longest,a.length)});\n\n\tif( longest == 1 ){\n\t\treturn '['+chars.join('')+']';\n\t}\n\n\treturn '(?:'+chars.join(glue)+')';\t\n};\n\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n *\n */\nexport const allSubstrings = (input:string):string[][] => {\n\n    if( input.length === 1) return [[input]];\n\n    var result:string[][] = [];\n    allSubstrings(input.substring(1)).forEach(function(subresult) {\n        var tmp = subresult.slice(0);\n        tmp[0] = input.charAt(0) + tmp[0];\n        result.push(tmp);\n\n        tmp = subresult.slice(0);\n        tmp.unshift(input.charAt(0));\n        result.push(tmp);\n    });\n    \n    return result;\n}\n\n/**\n * Generate a list of diacritics from the list of code points\n *\n */\nexport const generateDiacritics = ():TDiacraticList => {\t\n\n\tvar diacritics:{[key:string]:string[]} = {};\n\tcode_points.forEach((code_range)=>{\n\n\t\tfor(let i = code_range[0]; i <= code_range[1]; i++){\n\t\t\t\n\t\t\tlet diacritic\t= String.fromCharCode(i);\n\t\t\tlet\tlatin\t\t= asciifold(diacritic);\n\n\t\t\tif( latin == diacritic.toLowerCase() ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( !(latin in diacritics) ){\n\t\t\t\tdiacritics[latin] = [latin];\n\t\t\t}\n\t\t\t\n\t\t\tvar patt = new RegExp( arrayToPattern(diacritics[latin]),'iu');\n\t\t\tif( diacritic.match(patt) ){\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tdiacritics[latin].push(diacritic);\n\t\t}\n\t});\n\t\t\n\tvar latin_chars = Object.keys(diacritics);\n\t\n\t\n\t// latin character pattern\n\t// match longer substrings first\n\tlatin_chars\t\t= latin_chars.sort((a, b) => b.length - a.length );\n\tlatin_pat\t\t= new RegExp('('+ arrayToPattern(latin_chars) + accent_pat + '*)','g');\n\t\n\t\n\t// build diacritic patterns\n\t// ae needs: \n\t//\t(?:(?:ae|\u00C6|\u01FC|\u01E2)|(?:A|\u24B6|\uFF21...)(?:E|\u025B|\u24BA...))\n\tvar diacritic_patterns:TDiacraticList = {};\n\tlatin_chars.sort((a,b) => a.length -b.length).forEach((latin)=>{\n\t\t\n\t\tvar substrings\t= allSubstrings(latin);\n\t\tvar pattern = substrings.map((sub_pat)=>{\n\t\t\t\n\t\t\tsub_pat = sub_pat.map((l)=>{\n\t\t\t\tif( diacritics.hasOwnProperty(l) ){\n\t\t\t\t\treturn arrayToPattern(diacritics[l]);\n\t\t\t\t}\n\t\t\t\treturn l;\n\t\t\t});\n\t\t\t\n\t\t\treturn arrayToPattern(sub_pat,'');\n\t\t});\n\t\t\n\t\tdiacritic_patterns[latin] = arrayToPattern(pattern);\t\t\n\t});\n\t\t\t\n\treturn diacritic_patterns;\n}\n\n/**\n * Expand a regular expression pattern to include diacritics\n * \teg /a/ becomes /a\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251A\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F/\n *\n */\nexport const diacriticRegexPoints = (regex:string):string => {\n\n\tif( diacritic_patterns === undefined ){\n\t\tdiacritic_patterns = generateDiacritics();\n\t}\n\t\n\tconst decomposed\t\t= regex.normalize('NFKD').toLowerCase();\n\t\n\treturn decomposed.split(latin_pat).map((part:string)=>{\n\t\t\n\t\tif( part == '' ){\n\t\t\treturn '';\n\t\t}\n\t\t\n\t\t// \"\uFB04\" or \"ffl\"\n\t\tconst no_accent = asciifold(part);\t\t\t\t\n\t\tif( diacritic_patterns.hasOwnProperty(no_accent) ){\n\t\t\treturn diacritic_patterns[no_accent];\n\t\t}\n\t\t\n\t\t// '\u0623\u0647\u0644\u0627' (\\u{623}\\u{647}\\u{644}\\u{627}) or '\u0627\u0654\u0647\u0644\u0627' (\\u{627}\\u{654}\\u{647}\\u{644}\\u{627})\n\t\tconst composed_part = part.normalize('NFC');\n\t\tif( composed_part != part ){\n\t\t\treturn arrayToPattern([part,composed_part]);\n\t\t}\n\t\t\t\t\n\t\treturn part;\n\t}).join('');\n\t\n}\n", "\n// @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport { asciifold } from './diacritics.ts';\n\n// @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport * as T from './types.ts';\n\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n    return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n/**\n *\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n */\nexport const escape_regex = (str:string):string => {\t\n\treturn (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\t\n\tif( typeof value == 'function' ) return value;\n\t\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:number|string)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n", "/**\n * sifter.js\n * Copyright (c) 2013\u20132020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\n // @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport { scoreValue, getAttr, getAttrNesting, escape_regex, propToArray, iterate, cmp } from './utils.ts';\n// @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport { diacriticRegexPoints } from './diacritics.ts';\n// @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\nimport * as T from 'types.ts';\n\nexport default class Sifter{\n\n\tpublic items; // []|{};\n\tpublic settings: T.Settings;\n\n\t/**\n\t * Textually searches arrays and hashes of objects\n\t * by property (or multiple properties). Designed\n\t * specifically for autocomplete.\n\t *\n\t */\n\tconstructor(items:any, settings:T.Settings) {\n\t\tthis.items = items;\n\t\tthis.settings = settings || {diacritics: true};\n\t};\n\n\t/**\n\t * Splits a search string into an array of individual\n\t * regexps to be used to match results.\n\t *\n\t */\n\ttokenize(query:string, respect_word_boundaries?:boolean, weights?:T.Weights ):T.Token[] {\n\t\tif (!query || !query.length) return [];\n\n\t\tconst tokens:T.Token[]\t= [];\n\t\tconst words\t\t\t\t= query.split(/\\s+/);\n\t\tvar field_regex:RegExp;\n\n\t\tif( weights ){\n\t\t\tfield_regex = new RegExp( '^('+ Object.keys(weights).map(escape_regex).join('|')+')\\:(.*)$');\n\t\t}\n\n\t\twords.forEach((word:string) => {\n\t\t\tlet field_match;\n\t\t\tlet field:null|string\t= null;\n\t\t\tlet regex:null|string\t= null;\n\n\t\t\t// look for \"field:query\" tokens\n\t\t\tif( field_regex && (field_match = word.match(field_regex)) ){\n\t\t\t\tfield\t= field_match[1];\n\t\t\t\tword\t= field_match[2];\n\t\t\t}\n\n\t\t\tif( word.length > 0 ){\n\t\t\t\tregex = escape_regex(word);\n\t\t\t\tif( this.settings.diacritics ){\n\t\t\t\t\tregex = diacriticRegexPoints(regex);\n\t\t\t\t}\n\t\t\t\tif( respect_word_boundaries ) regex = \"\\\\b\"+regex;\n\t\t\t}\n\n\t\t\ttokens.push({\n\t\t\t\tstring : word,\n\t\t\t\tregex  : regex ? new RegExp(regex,'iu') : null,\n\t\t\t\tfield  : field,\n\t\t\t});\n\t\t});\n\n\t\treturn tokens;\n\t};\n\n\n\t/**\n\t * Returns a function to be used to score individual results.\n\t *\n\t * Good matches will have a higher score than poor matches.\n\t * If an item is not a match, 0 will be returned by the function.\n\t *\n\t * @returns {function}\n\t */\n\tgetScoreFunction(query:string, options:T.Options ){\n\t\tvar search = this.prepareSearch(query, options);\n\t\treturn this._getScoreFunction(search);\n\t}\n\n\t_getScoreFunction(search:T.PrepareObj ){\n\t\tconst tokens\t\t= search.tokens,\n\t\ttoken_count\t\t\t= tokens.length;\n\n\t\tif (!token_count) {\n\t\t\treturn function() { return 0; };\n\t\t}\n\n\t\tconst fields\t= search.options.fields,\n\t\tweights\t\t\t= search.weights,\n\t\tfield_count\t\t= fields.length,\n\t\tgetAttrFn\t\t= search.getAttrFn;\n\n\t\tif (!field_count) {\n\t\t\treturn function() { return 1; };\n\t\t}\n\n\n\t\t/**\n\t\t * Calculates the score of an object\n\t\t * against the search query.\n\t\t *\n\t\t */\n\t\tconst scoreObject = (function() {\n\n\n\t\t\tif (field_count === 1) {\n\t\t\t\treturn function(token:T.Token, data:{}) {\n\t\t\t\t\tconst field = fields[0].field;\n\t\t\t\t\treturn scoreValue(getAttrFn(data, field), token, weights[field]);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn function(token:T.Token, data:{}) {\n\t\t\t\tvar sum = 0;\n\n\t\t\t\t// is the token specific to a field?\n\t\t\t\tif( token.field ){\n\n\t\t\t\t\tconst value = getAttrFn(data, token.field);\n\n\t\t\t\t\tif( !token.regex && value ){\n\t\t\t\t\t\tsum += (1/field_count);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tsum += scoreValue(value, token, 1);\n\t\t\t\t\t}\n\n\n\n\t\t\t\t}else{\n\t\t\t\t\titerate(weights, (weight:number, field:string) => {\n\t\t\t\t\t\tsum += scoreValue(getAttrFn(data, field), token, weight);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn sum / field_count;\n\t\t\t};\n\t\t})();\n\n\t\tif (token_count === 1) {\n\t\t\treturn function(data:{}) {\n\t\t\t\treturn scoreObject(tokens[0], data);\n\t\t\t};\n\t\t}\n\n\t\tif (search.options.conjunction === 'and') {\n\t\t\treturn function(data:{}) {\n\t\t\t\tvar i = 0, score, sum = 0;\n\t\t\t\tfor (; i < token_count; i++) {\n\t\t\t\t\tscore = scoreObject(tokens[i], data);\n\t\t\t\t\tif (score <= 0) return 0;\n\t\t\t\t\tsum += score;\n\t\t\t\t}\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(data:{}) {\n\t\t\t\tvar sum = 0;\n\t\t\t\titerate(tokens,(token:T.Token)=>{\n\t\t\t\t\tsum += scoreObject(token, data);\n\t\t\t\t});\n\t\t\t\treturn sum / token_count;\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Returns a function that can be used to compare two\n\t * results, for sorting purposes. If no sorting should\n\t * be performed, `null` will be returned.\n\t *\n\t * @return function(a,b)\n\t */\n\tgetSortFunction(query:string, options:T.Options) {\n\t\tvar search  = this.prepareSearch(query, options);\n\t\treturn this._getSortFunction(search);\n\t}\n\n\t_getSortFunction(search:T.PrepareObj){\n\t\tvar i, n, implicit_score;\n\n\t\tconst self\t= this,\n\t\toptions\t\t= search.options,\n\t\tsort\t\t= (!search.query && options.sort_empty) ? options.sort_empty : options.sort,\n\t\tsort_flds:T.Sort[]\t\t= [],\n\t\tmultipliers:number[]\t= [];\n\n\n\t\tif( typeof sort == 'function' ){\n\t\t\treturn sort.bind(this);\n\t\t}\t\t\t\n\n\t\t/**\n\t\t * Fetches the specified sort field value\n\t\t * from a search result item.\n\t\t *\n\t\t */\n\t\tconst get_field = function(name:string, result:T.ResultItem):string|number {\n\t\t\tif (name === '$score') return result.score;\n\t\t\treturn search.getAttrFn(self.items[result.id], name);\n\t\t};\n\n\t\t// parse options\n\t\tif (sort) {\n\t\t\tfor (i = 0, n = sort.length; i < n; i++) {\n\t\t\t\tif (search.query || sort[i].field !== '$score') {\n\t\t\t\t\tsort_flds.push(sort[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// the \"$score\" field is implied to be the primary\n\t\t// sort field, unless it's manually specified\n\t\tif (search.query) {\n\t\t\timplicit_score = true;\n\t\t\tfor (i = 0, n = sort_flds.length; i < n; i++) {\n\t\t\t\tif (sort_flds[i].field === '$score') {\n\t\t\t\t\timplicit_score = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (implicit_score) {\n\t\t\t\tsort_flds.unshift({field: '$score', direction: 'desc'});\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0, n = sort_flds.length; i < n; i++) {\n\t\t\t\tif (sort_flds[i].field === '$score') {\n\t\t\t\t\tsort_flds.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, n = sort_flds.length; i < n; i++) {\n\t\t\tmultipliers.push(sort_flds[i].direction === 'desc' ? -1 : 1);\n\t\t}\n\n\t\t// build function\n\t\tconst sort_flds_count = sort_flds.length;\n\t\tif (!sort_flds_count) {\n\t\t\treturn null;\n\t\t} else if (sort_flds_count === 1) {\n\t\t\tconst sort_fld = sort_flds[0].field;\n\t\t\tconst multiplier = multipliers[0];\n\t\t\treturn function(a:T.ResultItem, b:T.ResultItem) {\n\t\t\t\treturn multiplier * cmp(\n\t\t\t\t\tget_field(sort_fld, a),\n\t\t\t\t\tget_field(sort_fld, b)\n\t\t\t\t);\n\t\t\t};\n\t\t} else {\n\t\t\treturn function(a:T.ResultItem, b:T.ResultItem) {\n\t\t\t\tvar i, result, field;\n\t\t\t\tfor (i = 0; i < sort_flds_count; i++) {\n\t\t\t\t\tfield = sort_flds[i].field;\n\t\t\t\t\tresult = multipliers[i] * cmp(\n\t\t\t\t\t\tget_field(field, a),\n\t\t\t\t\t\tget_field(field, b)\n\t\t\t\t\t);\n\t\t\t\t\tif (result) return result;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t};\n\t\t}\n\t};\n\n\t/**\n\t * Parses a search query and returns an object\n\t * with tokens and fields ready to be populated\n\t * with results.\n\t *\n\t */\n\tprepareSearch(query:string, optsUser:Partial<T.Options>):T.PrepareObj {\n\t\tconst weights:T.Weights = {};\n\t\tvar options\t\t= Object.assign({},optsUser);\n\n\t\tpropToArray(options,'sort');\n\t\tpropToArray(options,'sort_empty');\n\n\t\t// convert fields to new format\n\t\tif( options.fields ){\n\t\t\tpropToArray(options,'fields');\n\t\t\tconst fields:T.Field[] = [];\n\t\t\toptions.fields.forEach((field:string|T.Field) => {\n\t\t\t\tif( typeof field == 'string' ){\n\t\t\t\t\tfield = {field:field,weight:1};\n\t\t\t\t}\n\t\t\t\tfields.push(field);\n\t\t\t\tweights[field.field] = ('weight' in field) ? field.weight : 1;\n\t\t\t});\n\t\t\toptions.fields = fields;\n\t\t}\n\n\n\t\treturn {\n\t\t\toptions\t\t: options,\n\t\t\tquery\t\t: query.toLowerCase().trim(),\n\t\t\ttokens\t\t: this.tokenize(query, options.respect_word_boundaries, weights),\n\t\t\ttotal\t\t: 0,\n\t\t\titems\t\t: [],\n\t\t\tweights\t\t: weights,\n\t\t\tgetAttrFn\t: (options.nesting) ? getAttrNesting : getAttr,\n\t\t};\n\t};\n\n\t/**\n\t * Searches through all items and returns a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string, options:T.Options) : T.PrepareObj {\n\t\tvar self = this, score, search:T.PrepareObj;\n\n\t\tsearch  = this.prepareSearch(query, options);\n\t\toptions = search.options;\n\t\tquery   = search.query;\n\n\t\t// generate result scoring function\n\t\tconst fn_score = options.score || self._getScoreFunction(search);\n\n\t\t// perform search and sort\n\t\tif (query.length) {\n\t\t\titerate(self.items, (item:T.ResultItem, id:string|number) => {\n\t\t\t\tscore = fn_score(item);\n\t\t\t\tif (options.filter === false || score > 0) {\n\t\t\t\t\tsearch.items.push({'score': score, 'id': id});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\titerate(self.items, (item:T.ResultItem, id:string|number) => {\n\t\t\t\tsearch.items.push({'score': 1, 'id': id});\n\t\t\t});\n\t\t}\n\n\t\tconst fn_sort = self._getSortFunction(search);\n\t\tif (fn_sort) search.items.sort(fn_sort);\n\n\t\t// apply limits\n\t\tsearch.total = search.items.length;\n\t\tif (typeof options.limit === 'number') {\n\t\t\tsearch.items = search.items.slice(0, options.limit);\n\t\t}\n\n\t\treturn search;\n\t};\n}\n", "\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tlet div = document.createElement('div');\n\t\tdiv.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn div.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer  ->  <span class=\"highlight\">Soc</span>cer  for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0].length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tfor (var i = 0; i < node.childNodes.length; ++i) {\n\t\t\t\ti += highlightRecursive(node.childNodes[i]);\n\t\t\t}\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload                 : null, // function(query, callback) { ... }\n\tscore                : null, // function(search) { ... }\n\tonInitialize         : null, // function() { ... }\n\tonChange             : null, // function(value) { ... }\n\tonItemAdd            : null, // function(value, $item) { ... }\n\tonItemRemove         : null, // function(value) { ... }\n\tonClear              : null, // function() { ... }\n\tonOptionAdd          : null, // function(value, data) { ... }\n\tonOptionRemove       : null, // function(value) { ... }\n\tonOptionClear        : null, // function() { ... }\n\tonOptionGroupAdd     : null, // function(id, data) { ... }\n\tonOptionGroupRemove  : null, // function(id) { ... }\n\tonOptionGroupClear   : null, // function() { ... }\n\tonDropdownOpen       : null, // function(dropdown) { ... }\n\tonDropdownClose      : null, // function(dropdown) { ... }\n\tonType               : null, // function(str) { ... }\n\tonDelete             : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n", "\nimport TomSelect from './tom-select';\nimport { TomLoadCallback } from './types/index';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Prevent default\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n", "import defaults from './defaults';\nimport { hash_key } from './utils';\nimport { TomOption, TomSettings } from './types/index';\nimport { iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput } from './types/index';\n\n\nexport default function getSettings( input:TomInput, settings_user:Partial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data             = readData(option);\n\t\t\t\toption_data[field_label]    = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value]    = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n", "\nimport MicroEvent from './contrib/microevent';\nimport MicroPlugin from './contrib/microplugin';\nimport Sifter from '@orchidjs/sifter/lib/sifter';\nimport { escape_regex, iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight';\nimport * as constants from './constants';\nimport getSettings from './getSettings';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend\n} from './utils';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true; \n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:Partial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = () => true;\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\t\t\n\t\t\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\t\t\t\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\t\t\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){ \n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete'];\n\t\t\titerate(attrs,(attr) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\t\t\n\t\t// dom element\t\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\t\t\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\t\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (self.settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!self.settings.splitOn && self.settings.delimiter) {\n\t\t\tself.settings.splitOn = new RegExp('\\\\s*' + escape_regex(self.settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\tself.control_input.type\t= input.type;\n\t\t\n\t\t\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\t\t\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\t\t\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\t\n\t\taddEvent(focus_node,'resize',\t\t() => self.positionDropdown(), passive_event);\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(focus_node,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\t\n\t\t\t\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t\t\t\t\t\n\t\t};\n\n\t\tvar win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('sroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', (e) => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize'      : 'onInitialize',\n\t\t\t'change'          : 'onChange',\n\t\t\t'item_add'        : 'onItemAdd',\n\t\t\t'item_remove'     : 'onItemRemove',\n\t\t\t'item_select'     : 'onItemSelect',\n\t\t\t'clear'           : 'onClear',\n\t\t\t'option_add'      : 'onOptionAdd',\n\t\t\t'option_remove'   : 'onOptionRemove',\n\t\t\t'option_clear'    : 'onOptionClear',\n\t\t\t'optgroup_add'    : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear'  : 'onOptionGroupClear',\n\t\t\t'dropdown_open'   : 'onDropdownOpen',\n\t\t\t'dropdown_close'  : 'onDropdownClose',\n\t\t\t'type'            : 'onType',\n\t\t\t'load'            : 'onLoad',\n\t\t\t'focus'           : 'onFocus',\n\t\t\t'blur'            : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as TomSettings ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items,true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\t\t\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif (self.settings.splitOn) {\n\n\t\t\t// Wait for pasted text to be recognized in value\n\t\t\tsetTimeout(() => {\n\t\t\t\tvar pastedText = self.inputValue();\n\t\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\t\titerate( splitInput, (piece) => {\n\t\t\t\t\tself.createItem(piece);\n\t\t\t\t});\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar value = self.inputValue();\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\n\t\t\tif( self.settings.shouldLoad.call(self,value) ){\n\t\t\t\tself.load(value);\n\t\t\t}\n\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif (self.isDisabled) {\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.showInput();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, false, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, true, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\t\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.showInput();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap  = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend   = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.hideInput();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tthis.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\n\t\tif (this.settings.mode === 'single') return;\n\n\t\tconst activeItems = this.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\t\t\n\t\tthis.hideInput();\n\t\tthis.close();\n\n\t\tthis.activeItems = activeItems;\n\t\taddClasses( activeItems, 'active' );\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\t\t\t\t\t\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\t\t\t\n\t\t}else{\n\t\t\t\t\t\t\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\t\t\t\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Hides the input element out of view, while\n\t * retaining its focus.\n\t * @deprecated 1.3\n\t */\n\thideInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Restores input visibility.\n\t * @deprecated 1.3\n\t */\n\tshowInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif (self.isDisabled) return;\n\n\t\tself.ignoreFocus = true;\n\t\t\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\t\t\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields      : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort        : sort,\n\t\t\tnesting     : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar i, result, calculateScore;\n\t\tvar self     = this;\n\t\tvar options  = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tfor (i = result.items.length - 1; i >= 0; i--) {\n\t\t\t\tlet hashed = hash_key(result.items[i].id);\n\t\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\t\t\t\t\tresult.items.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_value, active_group;\n\t\tvar create;\n\t\tconst groups: {[key:string]:DocumentFragment} = {};\n\n\t\tconst groups_order:string[]\t= [];\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option\t\t\t= self.activeOption;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\t\tif( active_option ){\n\t\t\tactive_value = active_option.dataset.value;\n\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet opt_value\t\t= results.items[i].id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\t\t\tlet option_el\t\t= self.getOption(opt_value,true) as HTMLElement;\n\t\t\t\n\t\t\t\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_value) );\n\t\t\t}\n\n\t\t\toptgroup    = option[self.settings.optgroupField] || '';\n\t\t\toptgroups   = Array.isArray(optgroup) ? optgroup : [optgroup];\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\t\t\t\tif (!self.optgroups.hasOwnProperty(optgroup)) {\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}\n\t\t\t\tif (!groups.hasOwnProperty(optgroup)) {\n\t\t\t\t\tgroups[optgroup] = document.createDocumentFragment();\n\t\t\t\t\tgroups_order.push(optgroup);\n\t\t\t\t}\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\t\t\t\t}\n\n\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\tif( active_value == opt_value && active_group && active_group.dataset.group === optgroup ){\n\t\t\t\t\tactive_option = option_el;\n\t\t\t\t}\n\n\t\t\t\tgroups[optgroup].appendChild(option_el);\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif (this.settings.lockOptgroupOrder) {\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\tvar a_order = self.optgroups[a] && self.optgroups[a].$order || 0;\n\t\t\t\tvar b_order = self.optgroups[b] && self.optgroups[b].$order || 0;\n\t\t\t\treturn a_order - b_order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (optgroup) => {\n\t\t\tif (self.optgroups.hasOwnProperty(optgroup) && groups[optgroup].children.length) {\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', self.optgroups[optgroup]);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, groups[optgroup] );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:self.optgroups[optgroup],options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, groups[optgroup] );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\t\t\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\t\t\t\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !dropdown_content.contains(active_option) && self.settings.mode === 'single' && self.items.length ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option)  ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t *   this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\t\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\t\t\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\t\tif( !self.options.hasOwnProperty(value_old) ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || self.options[value_old].$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions() {\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\t\tvar selected:TomOptions\t= {};\n\t\titerate(this.options,(option,key)=>{\n    \t\tif( this.items.indexOf(key as string) >= 0 ){\n\t\t\t\tselected[key] = this.options[key];\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:null|string, create:boolean=false):null|HTMLElement {\n\t\tconst hashed = hash_key(value);\n\n\t\tif( hashed !== null && this.options.hasOwnProperty(hashed) ){\n\t\t\tconst option = this.options[hashed];\n\t\t\t\t\t\t\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\t\t\t\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tfor (let i = 0, n = items.length; i < n; i++) {\n\t\t\tself.isPending = (i < n - 1);\n\t\t\tself.addItem(items[i], silent);\n\t\t}\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, triggerDropdown:boolean=true, callback:TomCreateCallback = ()=>{} ):boolean{\n\t\tvar self  = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self     = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\t\t\n\t\t\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.checkValidity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.checkValidity();\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\t\t\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\t\t\t\t\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\toption_el.selected = true;\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\t\t\t\t\t\t\t\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\t\t\t\t\t\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value];\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.hideInput();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top  + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop   : top + 'px',\n\t\t\tleft  : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.showInput();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\t\t\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret]);\n\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tif (direction < 0 && selection.start === 0 && selection.length === 0) {\n\t\t\t\trm_items.push( items[self.caretPos - 1]);\n\n\t\t\t} else if (direction > 0 && selection.start === self.inputValue().length) {\n\t\t\t\trm_items.push(items[self.caretPos]);\n\t\t\t}\n\t\t}\n\n\t\tconst values = rm_items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif (!values.length || (typeof self.settings.onDelete === 'function' && self.settings.onDelete.call(self,values,e) === false)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.showInput();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\t\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.isLocked = false;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= true;\n\t\tself.control_input.disabled\t\t= true;\n\t\tself.focus_node.tabIndex\t\t= -1;\n\t\tself.isDisabled\t\t\t\t\t= true;\n\t\tthis.close();\n\t\tself.lock();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= false;\n\t\tself.control_input.disabled\t\t= false;\n\t\tself.focus_node.tabIndex\t\t= self.tabIndex;\n\t\tself.isDisabled\t\t\t\t\t= false;\n\t\tself.unlock();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._render(templateName, data);\n\t}\n\n\t/**\n\t * _render() can be called directly when we know we don't want to hit the cache\n\t * return type could be null for some templates, we need https://github.com/microsoft/TypeScript/issues/33014\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tvar value = '', id, html;\n\t\tconst self = this;\n\t\t\n\t\tif( templateName === 'option' || templateName == 'item' ){\n\t\t\tvalue\t= get_hash(data[self.settings.valueField]);\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( html == null ){\n\t\t\treturn html;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tself.options[value].$div = html;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option, value)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\t\t\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n", "/**\n * Plugin: \"change_listener\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\taddEvent(this.input,'change',()=>{\n\t\tthis.sync();\n\t});\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { preventDefault, hash_key } from '../../utils';\nimport { getDom } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_onOptionSelect = self.onOptionSelect;\n\n\tself.settings.hideSelected = false;\n\n\n\t// update the checkbox for an option\n\tvar UpdateCheckbox = function(option:HTMLElement){\n\t\tsetTimeout(()=>{\n\t\t\tvar checkbox = option.querySelector('input') as HTMLInputElement;\n\t\t\tif( option.classList.contains('selected') ){\n\t\t\t\tcheckbox.checked = true;\n\t\t\t}else{\n\t\t\t\tcheckbox.checked = false;\n\t\t\t}\n\t\t},1);\n\t};\n\n\t// add checkbox to option template\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_option = self.settings.render.option;\n\n\t\tself.settings.render.option = (data, escape_html) => {\n\t\t\tvar rendered = getDom(orig_render_option.call(self, data, escape_html));\n\t\t\tvar checkbox = document.createElement('input');\n\t\t\tcheckbox.addEventListener('click',function(evt){\n\t\t\t\tpreventDefault(evt);\n\t\t\t});\n\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tconst hashed = hash_key(data[self.settings.valueField]);\n\n\n\t\t\tif( hashed && self.items.indexOf(hashed) > -1 ){\n\t\t\t\tcheckbox.checked = true;\n\t\t\t}\n\n\t\t\trendered.prepend(checkbox);\n\t\t\treturn rendered;\n\t\t};\n\t});\n\n\t// uncheck when item removed\n\tself.on('item_remove',(value:string) => {\n\t\tvar option = self.getOption(value);\n\n\t\tif( option ){ // if dropdown hasn't been opened yet, the option won't exist\n\t\t\toption.classList.remove('selected'); // selected class won't be removed yet\n\t\t\tUpdateCheckbox(option);\n\t\t}\n\t});\n\n\n\t// remove items when selected option is clicked\n\tself.hook('instead','onOptionSelect',( evt:KeyboardEvent, option:HTMLElement )=>{\n\n\t\tif( option.classList.contains('selected') ){\n\t\t\toption.classList.remove('selected')\n\t\t\tself.removeItem(option.dataset.value);\n\t\t\tself.refreshOptions();\n\t\t\tpreventDefault(evt,true);\n\t\t\treturn;\n        }\n\n\t\torig_onOptionSelect.call(self, evt, option);\n\n\t\tUpdateCheckbox(option);\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { CBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:CBOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\tclassName: 'clear-button',\n\t\ttitle: 'Clear All',\n\t\thtml: (data:CBOptions) => {\n\t\t\treturn `<div class=\"${data.className}\" title=\"${data.title}\">&times;</div>`;\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar button = getDom(options.html(options));\n\t\tbutton.addEventListener('click',(evt)=>{\n\t\t\tself.clear();\n\n\t\t\tif( self.settings.mode === 'single' && self.settings.allowEmptyOption ){\n\t\t\t\tself.addItem('');\n\t\t\t}\n\n\t\t\tevt.preventDefault();\n\t\t\tevt.stopPropagation();\n\t\t});\n\t\tself.control.appendChild(button);\n\t});\n\n};\n", "/**\n * Plugin: \"drag_drop\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tif (!$.fn.sortable) throw new Error('The \"drag_drop\" plugin requires jQuery UI \"sortable\".');\n\tif (self.settings.mode !== 'multi') return;\n\n\tvar orig_lock\t\t= self.lock;\n\tvar orig_unlock\t\t= self.unlock;\n\n\tself.hook('instead','lock',()=>{\n\t\tvar sortable = $(self.control).data('sortable');\n\t\tif (sortable) sortable.disable();\n\t\treturn orig_lock.call(self);\n\t});\n\n\tself.hook('instead','unlock',()=>{\n\t\tvar sortable = $(self.control).data('sortable');\n\t\tif (sortable) sortable.enable();\n\t\treturn orig_unlock.call(self);\n\t});\n\n\tself.on('initialize',()=>{\n\t\tvar $control = $(self.control).sortable({\n\t\t\titems: '[data-value]',\n\t\t\tforcePlaceholderSize: true,\n\t\t\tdisabled: self.isLocked,\n\t\t\tstart: (e, ui) => {\n\t\t\t\tui.placeholder.css('width', ui.helper.css('width'));\n\t\t\t\t$control.css({overflow: 'visible'});\n\t\t\t},\n\t\t\tstop: ()=>{\n\t\t\t\t$control.css({overflow: 'hidden'});\n\n\t\t\t\tvar values:string[] = [];\n\t\t\t\t$control.children('[data-value]').each(function(this:HTMLElement){\n\t\t\t\t\tif( this.dataset.value ) values.push(this.dataset.value);\n\t\t\t\t});\n\n\t\t\t\tself.setValue(values);\n\t\t\t}\n\t\t});\n\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_header\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { preventDefault } from '../../utils';\nimport { DHOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:DHOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttitle         : 'Untitled',\n\t\theaderClass   : 'dropdown-header',\n\t\ttitleRowClass : 'dropdown-header-title',\n\t\tlabelClass    : 'dropdown-header-label',\n\t\tcloseClass    : 'dropdown-header-close',\n\n\t\thtml: (data:DHOptions) => {\n\t\t\treturn (\n\t\t\t\t'<div class=\"' + data.headerClass + '\">' +\n\t\t\t\t\t'<div class=\"' + data.titleRowClass + '\">' +\n\t\t\t\t\t\t'<span class=\"' + data.labelClass + '\">' + data.title + '</span>' +\n\t\t\t\t\t\t'<a class=\"' + data.closeClass + '\">&times;</a>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t\t);\n\t\t}\n\t}, userOptions);\n\n\tself.on('initialize',()=>{\n\t\tvar header = getDom(options.html(options));\n\n\t\tvar close_link = header.querySelector('.'+options.closeClass);\n\t\tif( close_link ){\n\t\t\tclose_link.addEventListener('click',(evt)=>{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\tself.close();\n\t\t\t});\n\t\t}\n\n\t\tself.dropdown.insertBefore(header, self.dropdown.firstChild);\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { nodeIndex } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { getDom, addClasses } from '../../vanilla';\nimport { addEvent, preventDefault } from '../../utils';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus();\n\t\t});\n\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { addEvent } from '../../utils';\n\nexport default function(this:TomSelect) {\n\tvar self\t\t\t\t\t= this;\n\n\tself.on('initialize',()=>{\n\n\n\t\tvar test_input\t\t\t\t= document.createElement('span');\n\t\tvar control\t\t\t\t\t= self.control_input;\n\t\ttest_input.style.cssText\t= 'position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ';\n\n\t\tself.wrapper.appendChild(test_input);\n\n\n\t\tvar transfer_styles\t\t\t= [ 'letterSpacing', 'fontSize', 'fontFamily', 'fontWeight', 'textTransform' ];\n\n\t\tfor( const style_name of transfer_styles ){\n\t\t\t// @ts-ignore TS7015 https://stackoverflow.com/a/50506154/697576\n\t\t\ttest_input.style[style_name] = control.style[style_name];\n\t\t}\n\n\n\t\t/**\n\t\t * Set the control width\n\t\t *\n\t\t */\n\t\tvar resize = ()=>{\n\t\t\tif( self.items.length > 0 ){\n\t\t\t\ttest_input.textContent\t= control.value;\n\t\t\t\tcontrol.style.width\t\t= test_input.clientWidth+'px';\n\t\t\t}else{\n\t\t\t\tcontrol.style.width\t\t= '';\n\t\t\t}\n\n\t\t};\n\n\t\tresize();\n\t\tself.on('update item_add item_remove',resize);\n\t\taddEvent(control,'input', resize );\n\t\taddEvent(control,'keyup', resize );\n\t\taddEvent(control,'blur', resize );\n\t\taddEvent(control,'update', resize );\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tthis.hook('instead','setActiveItem',() => {});\n\tthis.hook('instead','selectAll',() => {});\n};\n", "/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { parentMatch, nodeIndex } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\n", "/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { TomOption } from '../../types/index';\nimport { RBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel     : '&times;',\n\t\t\ttitle     : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend    : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar rendered = getDom(orig_render_item.call(self, data, escape));\n\n\t\t\tvar close_button = getDom(html);\n\t\t\trendered.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif (self.isLocked) return;\n\n\t\t\t\tvar value = rendered.dataset.value;\n\t\t\t\tself.removeItem(value);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t});\n\n\t\t\treturn rendered;\n\t\t};\n\n\t});\n\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\nimport { addClasses } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tconst self\t\t\t\t\t\t\t= this;\n\tconst orig_canLoad\t\t\t\t\t= self.canLoad;\n\tconst orig_clearActiveOption\t\t= self.clearActiveOption;\n\tconst orig_loadCallback\t\t\t\t= self.loadCallback;\n\n\tvar pagination:{[key:string]:any}\t= {};\n\tvar dropdown_content:HTMLElement;\n\tvar loading_more\t\t\t\t\t= false;\n\n\n\tif( !self.settings.firstUrl ){\n\t\tthrow 'virtual_scroll plugin requires a firstUrl() method';\n\t\treturn;\n\t}\n\n\n\t// in order for virtual scrolling to work,\n\t// options need to be ordered the same way they're returned from the remote data source\n\tself.settings.sortField\t\t\t= [{field:'$order'},{field:'$score'}];\n\n\n\t// can we load more results for given query?\n\tfunction canLoadMore(query:string):boolean{\n\n\t\tif( typeof self.settings.maxOptions === 'number' && dropdown_content.children.length >= self.settings.maxOptions ){\n\t\t\treturn false;\n\t\t}\n\n\t\tif( (query in pagination) && pagination[query] ){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\n\t// set the next url that will be\n\tself.setNextUrl = function(value:string,next_url:any):void{\n\t\tpagination[value] = next_url;\n\t};\n\n\t// getUrl() to be used in settings.load()\n\tself.getUrl = function(query:string):any{\n\n\t\tif( query in pagination ){\n\t\t\tconst next_url = pagination[query];\n\t\t\tpagination[query] = false;\n\t\t\treturn next_url;\n\t\t}\n\n\t\t// if the user goes back to a previous query\n\t\t// we need to load the first page again\n\t\tpagination = {};\n\n\t\treturn self.settings.firstUrl(query);\n\t};\n\n\t// don't clear the active option (and cause unwanted dropdown scroll)\n\t// while loading more results\n\tself.hook('instead','clearActiveOption',()=>{\n\n\t\tif( loading_more ){\n\t\t\treturn;\n\t\t}\n\n\t\treturn orig_clearActiveOption.call(self);\n\t});\n\n\t// override the canLoad method\n\tself.hook('instead','canLoad',(query:string)=>{\n\n\t\t// first time the query has been seen\n\t\tif( !(query in pagination) ){\n\t\t\treturn orig_canLoad.call(self,query);\n\t\t}\n\n\t\treturn canLoadMore(query);\n\t});\n\n\n\t// wrap the load\n\tself.hook('instead','loadCallback',( options:TomOption[], optgroups:TomOption[])=>{\n\n\t\tif( !loading_more ){\n\t\t\tself.clearOptions();\n\t\t}\n\n\t\torig_loadCallback.call( self, options, optgroups);\n\n\t\tloading_more = false;\n\t});\n\n\n\t// add templates to dropdown\n\t//\tloading_more if we have another url in the queue\n\t//\tno_more_results if we don't have another url in the queue\n\tself.hook('after','refreshOptions',()=>{\n\n\t\tconst query\t\t= self.lastValue;\n\t\tvar option;\n\n\t\tif( canLoadMore(query) ){\n\t\t\toption = self.render('loading_more',{query:query});\n\t\t\tif( option ) option.setAttribute('data-selectable',''); // so that navigating dropdown with [down] keypresses can navigate to this node\n\n\t\t}else if( (query in pagination) && !dropdown_content.querySelector('.no-results') ){\n\t\t\toption = self.render('no_more_results',{query:query});\n\t\t}\n\n\t\tif( option ){\n\t\t\taddClasses(option,self.settings.optionClass);\n\t\t\tdropdown_content.append( option );\n\t\t}\n\n\t});\n\n\n\t// add scroll listener and default templates\n\tself.on('initialize',()=>{\n\t\tdropdown_content = self.dropdown_content;\n\n\t\t// default templates\n\t\tself.settings.render = Object.assign({}, {\n\t\t\tloading_more:function(){\n\t\t\t\treturn `<div class=\"loading-more-results\">Loading more results ... </div>`;\n\t\t\t},\n\t\t\tno_more_results:function(){\n\t\t\t\treturn `<div class=\"no-more-results\">No more results</div>`;\n\t\t\t}\n\t\t},self.settings.render);\n\n\n\t\t// watch dropdown content scroll position\n\t\tdropdown_content.addEventListener('scroll',function(){\n\n\t\t\tconst scroll_percent = dropdown_content.clientHeight / (dropdown_content.scrollHeight - dropdown_content.scrollTop);\n\t\t\tif( scroll_percent < 0.95 ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// !important: this will get checked again in load() but we still need to check here otherwise loading_more will be set to true\n\t\t\tif( !canLoadMore(self.lastValue) ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// don't call load() too much\n\t\t\tif( loading_more ) return;\n\n\n\t\t\tloading_more = true;\n\t\t\tself.load.call(self,self.lastValue);\n\t\t});\n\t});\n\n};\n", "import TomSelect from './tom-select';\n\nimport change_listener from './plugins/change_listener/plugin';\nimport checkbox_options from './plugins/checkbox_options/plugin';\nimport clear_button from './plugins/clear_button/plugin';\nimport drag_drop from './plugins/drag_drop/plugin';\nimport dropdown_header from './plugins/dropdown_header/plugin';\nimport caret_position from './plugins/caret_position/plugin';\nimport dropdown_input from './plugins/dropdown_input/plugin';\nimport input_autogrow from './plugins/input_autogrow/plugin';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin';\nimport no_active_items from './plugins/no_active_items/plugin';\nimport optgroup_columns from './plugins/optgroup_columns/plugin';\nimport remove_button from './plugins/remove_button/plugin';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin';\nimport virtual_scroll from './plugins/virtual_scroll/plugin';\n\nTomSelect.define('change_listener', change_listener);\nTomSelect.define('checkbox_options', checkbox_options);\nTomSelect.define('clear_button', clear_button);\nTomSelect.define('drag_drop', drag_drop);\nTomSelect.define('dropdown_header', dropdown_header);\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('input_autogrow', input_autogrow);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('no_active_items', no_active_items);\nTomSelect.define('optgroup_columns', optgroup_columns);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\nTomSelect.define('virtual_scroll', virtual_scroll);\n\nexport default TomSelect;\n", "(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.monthSelectPlugin = factory());\n}(this, (function () { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\n\n    var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n\n    function getEventTarget(event) {\n        try {\n            if (typeof event.composedPath === \"function\") {\n                var path = event.composedPath();\n                return path[0];\n            }\n            return event.target;\n        }\n        catch (error) {\n            return event.target;\n        }\n    }\n\n    var defaultConfig = {\n        shorthand: false,\n        dateFormat: \"F Y\",\n        altFormat: \"F Y\",\n        theme: \"light\",\n    };\n    function monthSelectPlugin(pluginConfig) {\n        var config = __assign(__assign({}, defaultConfig), pluginConfig);\n        return function (fp) {\n            fp.config.dateFormat = config.dateFormat;\n            fp.config.altFormat = config.altFormat;\n            var self = { monthsContainer: null };\n            function clearUnnecessaryDOMElements() {\n                if (!fp.rContainer || !fp.daysContainer || !fp.weekdayContainer)\n                    return;\n                fp.rContainer.removeChild(fp.daysContainer);\n                fp.rContainer.removeChild(fp.weekdayContainer);\n                for (var index = 0; index < fp.monthElements.length; index++) {\n                    var element = fp.monthElements[index];\n                    if (!element.parentNode)\n                        continue;\n                    element.parentNode.removeChild(element);\n                }\n            }\n            function addListeners() {\n                fp._bind(fp.prevMonthNav, \"click\", function (e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    fp.changeYear(fp.currentYear - 1);\n                    selectYear();\n                });\n                fp._bind(fp.nextMonthNav, \"click\", function (e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    fp.changeYear(fp.currentYear + 1);\n                    selectYear();\n                });\n            }\n            function addMonths() {\n                if (!fp.rContainer)\n                    return;\n                self.monthsContainer = fp._createElement(\"div\", \"flatpickr-monthSelect-months\");\n                self.monthsContainer.tabIndex = -1;\n                fp.calendarContainer.classList.add(\"flatpickr-monthSelect-theme-\" + config.theme);\n                for (var i = 0; i < 12; i++) {\n                    var month = fp._createElement(\"span\", \"flatpickr-monthSelect-month\");\n                    month.dateObj = new Date(fp.currentYear, i);\n                    month.$i = i;\n                    month.textContent = monthToStr(i, config.shorthand, fp.l10n);\n                    month.tabIndex = -1;\n                    month.addEventListener(\"click\", selectMonth);\n                    self.monthsContainer.appendChild(month);\n                    if ((fp.config.minDate && month.dateObj < fp.config.minDate) ||\n                        (fp.config.maxDate && month.dateObj > fp.config.maxDate)) {\n                        month.classList.add(\"disabled\");\n                    }\n                }\n                fp.rContainer.appendChild(self.monthsContainer);\n            }\n            function setCurrentlySelected() {\n                if (!fp.rContainer)\n                    return;\n                var currentlySelected = fp.rContainer.querySelectorAll(\".flatpickr-monthSelect-month.selected\");\n                for (var index = 0; index < currentlySelected.length; index++) {\n                    currentlySelected[index].classList.remove(\"selected\");\n                }\n                var targetMonth = (fp.selectedDates[0] || new Date()).getMonth();\n                var month = fp.rContainer.querySelector(\".flatpickr-monthSelect-month:nth-child(\" + (targetMonth + 1) + \")\");\n                if (month) {\n                    month.classList.add(\"selected\");\n                }\n            }\n            function selectYear() {\n                var selectedDate = fp.selectedDates[0];\n                if (selectedDate) {\n                    selectedDate = new Date(selectedDate);\n                    selectedDate.setFullYear(fp.currentYear);\n                    if (fp.config.minDate && selectedDate < fp.config.minDate) {\n                        selectedDate = fp.config.minDate;\n                    }\n                    if (fp.config.maxDate && selectedDate > fp.config.maxDate) {\n                        selectedDate = fp.config.maxDate;\n                    }\n                    fp.currentYear = selectedDate.getFullYear();\n                }\n                fp.currentYearElement.value = String(fp.currentYear);\n                if (fp.rContainer) {\n                    var months = fp.rContainer.querySelectorAll(\".flatpickr-monthSelect-month\");\n                    months.forEach(function (month) {\n                        month.dateObj.setFullYear(fp.currentYear);\n                        if ((fp.config.minDate && month.dateObj < fp.config.minDate) ||\n                            (fp.config.maxDate && month.dateObj > fp.config.maxDate)) {\n                            month.classList.add(\"disabled\");\n                        }\n                        else {\n                            month.classList.remove(\"disabled\");\n                        }\n                    });\n                }\n                setCurrentlySelected();\n            }\n            function selectMonth(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                var eventTarget = getEventTarget(e);\n                if (eventTarget instanceof Element &&\n                    !eventTarget.classList.contains(\"disabled\")) {\n                    setMonth(eventTarget.dateObj);\n                    fp.close();\n                }\n            }\n            function setMonth(date) {\n                var selectedDate = new Date(date);\n                selectedDate.setFullYear(fp.currentYear);\n                fp.setDate(selectedDate, true);\n                setCurrentlySelected();\n            }\n            var shifts = {\n                37: -1,\n                39: 1,\n                40: 3,\n                38: -3,\n            };\n            function onKeyDown(_, __, ___, e) {\n                var shouldMove = shifts[e.keyCode] !== undefined;\n                if (!shouldMove && e.keyCode !== 13) {\n                    return;\n                }\n                if (!fp.rContainer || !self.monthsContainer)\n                    return;\n                var currentlySelected = fp.rContainer.querySelector(\".flatpickr-monthSelect-month.selected\");\n                var index = Array.prototype.indexOf.call(self.monthsContainer.children, document.activeElement);\n                if (index === -1) {\n                    var target = currentlySelected || self.monthsContainer.firstElementChild;\n                    target.focus();\n                    index = target.$i;\n                }\n                if (shouldMove) {\n                    self.monthsContainer.children[(12 + index + shifts[e.keyCode]) % 12].focus();\n                }\n                else if (e.keyCode === 13 &&\n                    self.monthsContainer.contains(document.activeElement)) {\n                    setMonth(document.activeElement.dateObj);\n                }\n            }\n            function destroyPluginInstance() {\n                if (self.monthsContainer !== null) {\n                    var months = self.monthsContainer.querySelectorAll(\".flatpickr-monthSelect-month\");\n                    for (var index = 0; index < months.length; index++) {\n                        months[index].removeEventListener(\"click\", selectMonth);\n                    }\n                }\n            }\n            return {\n                onParseConfig: function () {\n                    fp.config.mode = \"single\";\n                    fp.config.enableTime = false;\n                },\n                onValueUpdate: setCurrentlySelected,\n                onKeyDown: onKeyDown,\n                onReady: [\n                    function () {\n                        fp.currentMonth = 0;\n                    },\n                    clearUnnecessaryDOMElements,\n                    addListeners,\n                    addMonths,\n                    setCurrentlySelected,\n                    function () {\n                        fp.loadedPlugins.push(\"monthSelect\");\n                    },\n                ],\n                onDestroy: destroyPluginInstance,\n            };\n        };\n    }\n\n    return monthSelectPlugin;\n\n})));\n", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.FroalaEditor=t()}(this,function(){\"use strict\";function M(e){return(M=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(e){var t=this;if(!document.documentElement.contains(t))return null;do{if(t.matches(e))return t;t=t.parentElement||t.parentNode}while(null!==t&&1===t.nodeType);return null}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length;0<=--n&&t.item(n)!==this;);return-1<n}),Array.isArray||(Array.isArray=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}),\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),r=1;r<arguments.length;r++){var o=arguments[r];if(null!=o)for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])}return n},writable:!0,configurable:!0}),function(){var a=/^\\s*:scope/gi,s=/,\\s*:scope/gi,l=document.createElement(\"div\");function e(e,t){var i=e[t];e[t]=function(e){var t,n=!1,r=!1;if(!e||Array.isArray(e)||!e.match(a)&&!e.match(s))return i.call(this,e);this.parentNode||(l.appendChild(this),r=!0);var o=this.parentNode;return this.id||(this.id=\"rootedQuerySelector_id_\".concat((new Date).getTime()),n=!0),t=i.call(o,e.replace(a,\"#\".concat(this.id)).replace(s,\",#\".concat(this.id))),n&&(this.id=\"\"),r&&l.removeChild(this),t}}try{var t=l.querySelectorAll(\":scope *\");if(!t||Array.isArray(t))throw\"error\"}catch(n){e(Element.prototype,\"querySelector\"),e(Element.prototype,\"querySelectorAll\"),e(HTMLElement.prototype,\"querySelector\"),e(HTMLElement.prototype,\"querySelectorAll\")}}(),\"document\"in self&&(\"classList\"in document.createElement(\"_\")&&(!document.createElementNS||\"classList\"in document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\"))||function(e){if(\"Element\"in e){var t=\"classList\",n=\"prototype\",r=e.Element[n],o=Object,i=String[n].trim||function(){return this.replace(/^\\s+|\\s+$/g,\"\")},a=Array[n].indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(t in this&&this[t]===e)return t;return-1},s=function s(e,t){this.name=e,this.code=DOMException[e],this.message=t},l=function l(e,t){if(\"\"===t)throw new s(\"SYNTAX_ERR\",\"The token must not be empty.\");if(/\\s/.test(t))throw new s(\"INVALID_CHARACTER_ERR\",\"The token must not contain space characters.\");return a.call(e,t)},c=function c(e){for(var t=i.call(e.getAttribute(\"class\")||\"\"),n=t?t.split(/\\s+/):[],r=0,o=n.length;r<o;r++)this.push(n[r]);this._updateClassName=function(){e.setAttribute(\"class\",this.toString())}},d=c[n]=[],f=function f(){return new c(this)};if(s[n]=Error[n],d.item=function(e){return this[e]||null},d.contains=function(e){return~l(this,e+\"\")},d.add=function(){for(var e,t=arguments,n=0,r=t.length,o=!1;e=t[n]+\"\",~l(this,e)||(this.push(e),o=!0),++n<r;);o&&this._updateClassName()},d.remove=function(){var e,t,n=arguments,r=0,o=n.length,i=!1;do{for(e=n[r]+\"\",t=l(this,e);~t;)this.splice(t,1),i=!0,t=l(this,e)}while(++r<o);i&&this._updateClassName()},d.toggle=function(e,t){var n=this.contains(e),r=n?!0!==t&&\"remove\":!1!==t&&\"add\";return r&&this[r](e),!0===t||!1===t?t:!n},d.replace=function(e,t){var n=l(e+\"\");~n&&(this.splice(n,1,t),this._updateClassName())},d.toString=function(){return this.join(\" \")},o.defineProperty){var p={get:f,enumerable:!0,configurable:!0};try{o.defineProperty(r,t,p)}catch(h){void 0!==h.number&&-2146823252!==h.number||(p.enumerable=!1,o.defineProperty(r,t,p))}}else o[n].__defineGetter__&&r.__defineGetter__(t,f)}}(self),function(){var e=document.createElement(\"_\");if(e.classList.add(\"c1\",\"c2\"),!e.classList.contains(\"c2\")){var t=function zc(e){var zc=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var t,n=arguments.length;for(t=0;t<n;t++)e=arguments[t],zc.call(this,e)}};t(\"add\"),t(\"remove\")}if(e.classList.toggle(\"c3\",!1),e.classList.contains(\"c3\")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}\"replace\"in document.createElement(\"_\").classList||(DOMTokenList.prototype.replace=function(e,t){var n=this.toString().split(\" \"),r=n.indexOf(e+\"\");~r&&(n=n.slice(r),this.remove.apply(this,n),this.add(t),this.add.apply(this,n.slice(1)))}),e=null}()),function(){var e,t=-1;if(\"Microsoft Internet Explorer\"===navigator.appName?(e=navigator.userAgent,null!==new RegExp(\"MSIE ([0-9]{1,}[\\\\.0-9]{0,})\").exec(e)&&(t=parseFloat(RegExp.$1))):\"Netscape\"===navigator.appName&&(e=navigator.userAgent,null!==new RegExp(\"Trident/.*rv:([0-9]{1,}[\\\\.0-9]{0,})\").exec(e)&&(t=parseFloat(RegExp.$1))),!(\"undefined\"==typeof window||\"undefined\"==typeof document||\"undefined\"==typeof HTMLElement||t<0)){var n=!1;try{var r=document.createElement(\"div\");r.addEventListener(\"focus\",function(e){e.preventDefault(),e.stopPropagation()},!0),r.focus(Object.defineProperty({},\"preventScroll\",{get:function(){if(navigator&&\"undefined\"!=typeof navigator.userAgent&&navigator.userAgent&&navigator.userAgent.match(/Edge\\/1[7-8]/))return n=!1;n=!0}}))}catch(s){}if(HTMLElement.prototype.nativeFocus===undefined&&!n){HTMLElement.prototype.nativeFocus=HTMLElement.prototype.focus;var o=function o(e){for(var t=e.parentNode,n=[],r=document.scrollingElement||document.documentElement;t&&t!==r;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&n.push([t,t.scrollTop,t.scrollLeft]),t=t.parentNode;return t=r,n.push([t,t.scrollTop,t.scrollLeft]),n},i=function i(e){for(var t=0;t<e.length;t++)e[t][0].scrollTop=e[t][1],e[t][0].scrollLeft=e[t][2];e=[]},a=function a(e){if(e&&e.preventScroll){var t=o(this);if(\"function\"==typeof setTimeout){var n=this;setTimeout(function(){n.nativeFocus(),i(t)},0)}else this.nativeFocus(),i(t)}else this.nativeFocus()};HTMLElement.prototype.focus=a}}}();function V(e,t,n){if(\"string\"!=typeof e)return new V.Bootstrap(e,t,n);var r=document.querySelectorAll(e);t&&t.iframe_document&&(r=t.iframe_document.querySelectorAll(e));for(var o=[],i=0;i<r.length;i++){var a=r[i][\"data-froala.editor\"];a?o.push(a):o.push(new V.Bootstrap(r[i],t,n))}return 1==o.length?o[0]:o}V.RegisterPlugins=function(e){for(var t=0;t<e.length;t++)e[t].call(V)},Object.assign(V,{DEFAULTS:{initOnClick:!1,pluginsEnabled:null},MODULES:{},PLUGINS:{},VERSION:\"4.0.19\",INSTANCES:[],OPTS_MAPPING:{},SHARED:{},ID:0}),V.MODULES.node=function(a){var n=a.$;function s(e){return e&&\"IFRAME\"!==e.tagName?Array.prototype.slice.call(e.childNodes||[]):[]}function l(e){return!!e&&(e.nodeType===Node.ELEMENT_NODE&&0<=V.BLOCK_TAGS.indexOf(e.tagName.toLowerCase()))}function c(e){var t={},n=e.attributes;if(n)for(var r=0;r<n.length;r++){var o=n[r];t[o.nodeName]=o.value}return t}function t(e){for(var t=\"\",n=c(e),r=Object.keys(n),o=0;o<r.length;o++){var i=r[o],a=n[i];a.indexOf(\"'\")<0&&0<=a.indexOf('\"')?t+=\" \".concat(i,\"='\").concat(a,\"'\"):(0<=a.indexOf('\"')&&0<=a.indexOf(\"'\")&&(a=a.replace(/\"/g,\"&quot;\")),t+=\" \".concat(i,'=\"').concat(a,'\"'))}return t}function r(e){return e===a.el}return{isBlock:l,isEmpty:function d(e,t){if(!e)return!0;if(e.querySelector(\"table\"))return!1;var n=s(e);1===n.length&&l(n[0])&&(n=s(n[0]));for(var r=!1,o=0;o<n.length;o++){var i=n[o];if(!(t&&a.node.hasClass(i,\"fr-marker\")||i.nodeType===Node.TEXT_NODE&&0===i.textContent.length)){if(\"BR\"!==i.tagName&&0<(i.textContent||\"\").replace(/\\u200B/gi,\"\").replace(/\\n/g,\"\").length)return!1;if(r)return!1;\"BR\"===i.tagName&&(r=!0)}}return!(e.querySelectorAll(V.VOID_ELEMENTS.join(\",\")).length-e.querySelectorAll(\"br\").length||e.querySelector(\"\".concat(a.opts.htmlAllowedEmptyTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\"))||1<e.querySelectorAll(V.BLOCK_TAGS.join(\",\")).length||e.querySelector(\"\".concat(a.opts.htmlDoNotWrapTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\")))},blockParent:function o(e){for(;e&&e.parentNode!==a.el&&(!e.parentNode||!a.node.hasClass(e.parentNode,\"fr-inner\"));)if(l(e=e.parentNode))return e;return null},deepestParent:function i(e,t,n){if(void 0===t&&(t=[]),void 0===n&&(n=!0),t.push(a.el),0<=t.indexOf(e.parentNode)||e.parentNode&&a.node.hasClass(e.parentNode,\"fr-inner\")||e.parentNode&&0<=V.SIMPLE_ENTER_TAGS.indexOf(e.parentNode.tagName)&&n)return null;for(;t.indexOf(e.parentNode)<0&&e.parentNode&&!a.node.hasClass(e.parentNode,\"fr-inner\")&&(V.SIMPLE_ENTER_TAGS.indexOf(e.parentNode.tagName)<0||!n)&&(!l(e)||l(e.parentNode))&&(!l(e)||!l(e.parentNode)||!n);)e=e.parentNode;return e},rawAttributes:c,attributes:t,clearAttributes:function f(e){for(var t=e.attributes,n=t.length-1;0<=n;n--){var r=t[n];e.removeAttribute(r.nodeName)}},openTagString:function p(e){return\"<\".concat(e.tagName.toLowerCase()).concat(t(e),\">\")},closeTagString:function h(e){return\"</\".concat(e.tagName.toLowerCase(),\">\")},isFirstSibling:function u(e,t){void 0===t&&(t=!0);for(var n=e.previousSibling;n&&t&&a.node.hasClass(n,\"fr-marker\");)n=n.previousSibling;return!n||n.nodeType===Node.TEXT_NODE&&\"\"===n.textContent&&u(n)},isLastSibling:function g(e,t){void 0===t&&(t=!0);for(var n=e.nextSibling;n&&t&&a.node.hasClass(n,\"fr-marker\");)n=n.nextSibling;return!n||n.nodeType===Node.TEXT_NODE&&\"\"===n.textContent&&g(n)},isList:function C(e){return!!e&&0<=[\"UL\",\"OL\"].indexOf(e.tagName)},isLink:function m(e){return!!e&&e.nodeType===Node.ELEMENT_NODE&&\"a\"===e.tagName.toLowerCase()},isElement:r,contents:s,isVoid:function v(e){return e&&e.nodeType===Node.ELEMENT_NODE&&0<=V.VOID_ELEMENTS.indexOf((e.tagName||\"\").toLowerCase())},hasFocus:function b(e){return e===a.doc.activeElement&&(!a.doc.hasFocus||a.doc.hasFocus())&&Boolean(r(e)||e.type||e.href||~e.tabIndex)},isEditable:function L(e){return(!e.getAttribute||\"false\"!==e.getAttribute(\"contenteditable\"))&&[\"STYLE\",\"SCRIPT\"].indexOf(e.tagName)<0},isDeletable:function E(e){return e&&e.nodeType===Node.ELEMENT_NODE&&e.getAttribute(\"class\")&&0<=(e.getAttribute(\"class\")||\"\").indexOf(\"fr-deletable\")},hasClass:function y(e,t){return e instanceof n&&(e=e.get(0)),e&&e.classList&&e.classList.contains(t)},filter:function S(e){return a.browser.msie?e:{acceptNode:e}}}},Object.assign(V.DEFAULTS,{DOMPurify:window.DOMPurify,htmlAllowedTags:[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"blockquote\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"menu\",\"menuitem\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\",\"progress\",\"queue\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"style\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strike\",\"strong\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"],htmlRemoveTags:[\"script\",\"style\"],htmlAllowedAttrs:[\"accept\",\"accept-charset\",\"accesskey\",\"action\",\"align\",\"allowfullscreen\",\"allowtransparency\",\"alt\",\"async\",\"autocomplete\",\"autofocus\",\"autoplay\",\"autosave\",\"background\",\"bgcolor\",\"border\",\"charset\",\"cellpadding\",\"cellspacing\",\"checked\",\"cite\",\"class\",\"color\",\"cols\",\"colspan\",\"content\",\"contenteditable\",\"contextmenu\",\"controls\",\"coords\",\"data\",\"data-.*\",\"datetime\",\"default\",\"defer\",\"dir\",\"dirname\",\"disabled\",\"download\",\"draggable\",\"dropzone\",\"enctype\",\"for\",\"form\",\"formaction\",\"frameborder\",\"headers\",\"height\",\"hidden\",\"high\",\"href\",\"hreflang\",\"http-equiv\",\"icon\",\"id\",\"ismap\",\"itemprop\",\"keytype\",\"kind\",\"label\",\"lang\",\"language\",\"list\",\"loop\",\"low\",\"max\",\"maxlength\",\"media\",\"method\",\"min\",\"mozallowfullscreen\",\"multiple\",\"muted\",\"name\",\"novalidate\",\"open\",\"optimum\",\"pattern\",\"ping\",\"placeholder\",\"playsinline\",\"poster\",\"preload\",\"pubdate\",\"radiogroup\",\"readonly\",\"rel\",\"required\",\"reversed\",\"rows\",\"rowspan\",\"sandbox\",\"scope\",\"scoped\",\"scrolling\",\"seamless\",\"selected\",\"shape\",\"size\",\"sizes\",\"span\",\"src\",\"srcdoc\",\"srclang\",\"srcset\",\"start\",\"step\",\"summary\",\"spellcheck\",\"style\",\"tabindex\",\"target\",\"title\",\"type\",\"translate\",\"usemap\",\"value\",\"valign\",\"webkitallowfullscreen\",\"width\",\"wrap\"],htmlAllowedStyleProps:[\".*\"],htmlAllowComments:!0,htmlUntouched:!1,fullPage:!1}),V.HTML5Map={B:\"STRONG\",I:\"EM\",STRIKE:\"S\"},V.MODULES.clean=function(f){var d,p,h,u,g=f.$;function o(e){if(e.nodeType===Node.ELEMENT_NODE&&e.getAttribute(\"class\")&&0<=e.getAttribute(\"class\").indexOf(\"fr-marker\"))return!1;var t,n=f.node.contents(e),r=[];for(t=0;t<n.length;t++)n[t].nodeType!==Node.ELEMENT_NODE||f.node.isVoid(n[t])?n[t].nodeType===Node.TEXT_NODE&&(n[t].textContent=n[t].textContent.replace(/\\u200b/g,\"\")):n[t].textContent.replace(/\\u200b/g,\"\").length!==n[t].textContent.length&&o(n[t]);if(e.nodeType===Node.ELEMENT_NODE&&!f.node.isVoid(e)&&(e.normalize(),n=f.node.contents(e),r=e.querySelectorAll(\".fr-marker\"),n.length-r.length==0)){for(t=0;t<n.length;t++)if(n[t].nodeType===Node.ELEMENT_NODE&&(n[t].getAttribute(\"class\")||\"\").indexOf(\"fr-marker\")<0)return!1;for(t=0;t<r.length;t++)e.parentNode.insertBefore(r[t].cloneNode(!0),e);return e.parentNode.removeChild(e),!1}}function s(e,t){if(e.nodeType===Node.COMMENT_NODE)return\"\\x3c!--\".concat(e.nodeValue,\"--\\x3e\");if(e.nodeType===Node.TEXT_NODE)return t?e.textContent.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\"):e.textContent.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\\u00A0/g,\"&nbsp;\").replace(/\\u0009/g,\"\");if(e.nodeType!==Node.ELEMENT_NODE)return e.outerHTML;if(e.nodeType===Node.ELEMENT_NODE&&0<=[\"STYLE\",\"SCRIPT\",\"NOSCRIPT\"].indexOf(e.tagName))return e.outerHTML;if(e.nodeType===Node.ELEMENT_NODE&&\"svg\"===e.tagName){var n=document.createElement(\"div\"),r=e.cloneNode(!0);return n.appendChild(r),n.innerHTML}if(\"IFRAME\"===e.tagName)return e.outerHTML.replace(/&lt;/g,\"<\").replace(/&gt;/g,\">\");var o=e.childNodes;if(0===o.length)return e.outerHTML;for(var i=\"\",a=0;a<o.length;a++)\"PRE\"===e.tagName&&(t=!0),i+=s(o[a],t);return f.node.openTagString(e)+i+f.node.closeTagString(e)}var l=[];function C(e){var t=e.replace(/;;/gi,\";\");return\";\"!==(t=t.replace(/^;/gi,\"\")).charAt(t.length)&&(t+=\";\"),t}function c(e){var t;for(t in e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=t.match(h),r=null;\"style\"===t&&f.opts.htmlAllowedStyleProps.length&&(r=e[t].match(u)),n&&r?e[t]=C(r.join(\";\")):n&&(\"style\"!==t||r)||delete e[t]}for(var o=\"\",i=Object.keys(e).sort(),a=0;a<i.length;a++)e[t=i[a]].indexOf('\"')<0?o+=\" \".concat(t,'=\"').concat(e[t],'\"'):o+=\" \".concat(t,\"='\").concat(e[t],\"'\");return o}function m(e,t){var n,r=document.implementation.createHTMLDocument(\"Froala DOC\").createElement(\"DIV\");g(r).append(e);var o=\"\";if(r){var i=f.node.contents(r);for(n=0;n<i.length;n++)t(i[n]);for(i=f.node.contents(r),n=0;n<i.length;n++)o+=s(i[n])}return o}function v(e,t,n){var r=e=function i(e){return l=[],e=(e=(e=(e=e.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,function(e){return l.push(e),\"[FROALA.EDITOR.SCRIPT \".concat(l.length-1,\"]\")})).replace(/<noscript\\b[^<]*(?:(?!<\\/noscript>)<[^<]*)*<\\/noscript>/gi,function(e){return l.push(e),\"[FROALA.EDITOR.NOSCRIPT \".concat(l.length-1,\"]\")})).replace(/<meta((?:[\\w\\W]*?)) http-equiv=\"/g,'<meta$1 data-fr-http-equiv=\"')).replace(/<img((?:[\\w\\W]*?)) src=\"/g,'<img$1 data-fr-src=\"')}(e),o=null;return f.opts.fullPage&&(r=f.html.extractNode(e,\"body\")||(0<=e.indexOf(\"<body\")?\"\":e),n&&(o=f.html.extractNode(e,\"head\")||\"\")),r=m(r,t),o&&(o=m(o,t)),function a(e){return e=(e=(e=e.replace(/\\[FROALA\\.EDITOR\\.SCRIPT ([\\d]*)\\]/gi,function(e,t){return 0<=f.opts.htmlRemoveTags.indexOf(\"script\")?\"\":l[parseInt(t,10)]})).replace(/\\[FROALA\\.EDITOR\\.NOSCRIPT ([\\d]*)\\]/gi,function(e,t){if(0<=f.opts.htmlRemoveTags.indexOf(\"noscript\"))return\"\";var n=l[parseInt(t,10)].replace(/&lt;/g,\"<\").replace(/&gt;/g,\">\"),r=g(n);if(r&&r.length){var o=m(r.html(),L);r.html(o),n=r.get(0).outerHTML}return n})).replace(/<img((?:[\\w\\W]*?)) data-fr-src=\"/g,'<img$1 src=\"')}(function s(e,t,n){if(f.opts.fullPage){var r=f.html.extractDoctype(n),o=c(f.html.extractNodeAttrs(n,\"html\"));t=null===t?f.html.extractNode(n,\"head\")||\"<title></title>\":t;var i=c(f.html.extractNodeAttrs(n,\"head\")),a=c(f.html.extractNodeAttrs(n,\"body\"));return\"\".concat(r,\"<html\").concat(o,\"><head\").concat(i,\">\").concat(t,\"</head><body\").concat(a,\">\").concat(e,\"</body></html>\")}return e}(r,o,e))}function b(e){var t=f.doc.createElement(\"DIV\");return t.innerText=e,t.textContent}function L(e){for(var t=f.node.contents(e),n=0;n<t.length;n++)t[n].nodeType!==Node.TEXT_NODE&&L(t[n]);!function c(a){if(\"SPAN\"===a.tagName&&0<=(a.getAttribute(\"class\")||\"\").indexOf(\"fr-marker\"))return!1;if(\"PRE\"===a.tagName&&function l(e){var t=e.innerHTML;0<=t.indexOf(\"\\n\")&&(e.innerHTML=t.replace(/\\n/g,\"<br>\"))}(a),a.nodeType===Node.ELEMENT_NODE&&(a.getAttribute(\"data-fr-src\")&&0!==a.getAttribute(\"data-fr-src\").indexOf(\"blob:\")&&a.setAttribute(\"data-fr-src\",f.helpers.sanitizeURL(b(a.getAttribute(\"data-fr-src\")))),a.getAttribute(\"href\")&&a.setAttribute(\"href\",f.helpers.sanitizeURL(b(a.getAttribute(\"href\")))),a.getAttribute(\"src\")&&a.setAttribute(\"src\",f.helpers.sanitizeURL(b(a.getAttribute(\"src\")))),a.getAttribute(\"srcdoc\")&&a.setAttribute(\"srcdoc\",f.clean.html(a.getAttribute(\"srcdoc\"))),0<=[\"TABLE\",\"TBODY\",\"TFOOT\",\"TR\"].indexOf(a.tagName)&&(a.innerHTML=a.innerHTML.trim())),!f.opts.pasteAllowLocalImages&&a.nodeType===Node.ELEMENT_NODE&&\"IMG\"===a.tagName&&a.getAttribute(\"data-fr-src\")&&0===a.getAttribute(\"data-fr-src\").indexOf(\"file://\"))return a.parentNode.removeChild(a),!1;if(a.nodeType===Node.ELEMENT_NODE&&V.HTML5Map[a.tagName]&&\"\"===f.node.attributes(a)){var e=V.HTML5Map[a.tagName],t=\"<\".concat(e,\">\").concat(a.innerHTML,\"</\").concat(e,\">\");a.insertAdjacentHTML(\"beforebegin\",t),(a=a.previousSibling).parentNode.removeChild(a.nextSibling)}if(f.opts.htmlAllowComments||a.nodeType!==Node.COMMENT_NODE)if(a.tagName&&a.tagName.match(p))\"STYLE\"==a.tagName&&f.helpers.isMac()&&function(){var e,n=a.innerHTML.trim(),r=[],t=/{([^}]+)}/g;for(n=n.replace(/\\/\\*[\\s\\S]*?\\*\\/|([^\\\\:]|^)\\/\\/.*|<!--[\\s\\S]*?-->$/,\"\");e=t.exec(n);)r.push(e[1]);for(var o=function o(t){var e=n.substring(0,n.indexOf(\"{\")).trim();0==!/^[a-z_-][a-z\\d_-]*$/i.test(e)&&a.parentNode.querySelectorAll(e).forEach(function(e){e.removeAttribute(\"class\"),e.setAttribute(\"style\",r[t])}),n=n.substring(n.indexOf(\"}\")+1)},i=0;-1!=n.indexOf(\"{\");i++)o(i)}(),a.parentNode.removeChild(a);else if(a.tagName&&!a.tagName.match(d))\"svg\"===a.tagName?a.parentNode.removeChild(a):f.browser.safari&&\"path\"===a.tagName&&a.parentNode&&\"svg\"===a.parentNode.tagName||(a.outerHTML=a.innerHTML);else{var n=a.attributes;if(n)for(var r=n.length-1;0<=r;r--){var o=n[r],i=o.nodeName.match(h),s=null;\"style\"===o.nodeName&&f.opts.htmlAllowedStyleProps.length&&(s=o.value.match(u)),i&&s?o.value=C(s.join(\";\")):i&&(\"style\"!==o.nodeName||s)||a.removeAttribute(o.nodeName)}}else 0!==a.data.indexOf(\"[FROALA.EDITOR\")&&a.parentNode.removeChild(a)}(e)}return{_init:function e(){f.opts.fullPage&&g.merge(f.opts.htmlAllowedTags,[\"head\",\"title\",\"style\",\"link\",\"base\",\"body\",\"html\",\"meta\"])},html:function E(e,t,n,r){void 0===t&&(t=[]),void 0===n&&(n=[]),void 0===r&&(r=!1);var o,i=g.merge([],f.opts.htmlAllowedTags);for(o=0;o<t.length;o++)0<=i.indexOf(t[o])&&i.splice(i.indexOf(t[o]),1);var a=g.merge([],f.opts.htmlAllowedAttrs);for(o=0;o<n.length;o++)0<=a.indexOf(n[o])&&a.splice(a.indexOf(n[o]),1);return a.push(\"data-fr-.*\"),a.push(\"fr-.*\"),d=new RegExp(\"^\".concat(i.join(\"$|^\"),\"$\"),\"gi\"),h=new RegExp(\"^\".concat(a.join(\"$|^\"),\"$\"),\"gi\"),p=new RegExp(\"^\".concat(f.opts.htmlRemoveTags.join(\"$|^\"),\"$\"),\"gi\"),u=f.opts.htmlAllowedStyleProps.length?new RegExp(\"((^|;|\\\\s)\".concat(f.opts.htmlAllowedStyleProps.join(\":.+?(?=;|$))|((^|;|\\\\s)\"),\":.+?(?=(;)|$))\"),\"gi\"):null,e=v(e,L,!0),\"undefined\"!=typeof f.opts.DOMPurify&&(e=f.opts.DOMPurify.sanitize(e,{ADD_TAGS:f.opts.htmlAllowedTags,ALLOW_UNKNOWN_PROTOCOLS:!0})),e},toHTML5:function r(){var e=f.el.querySelectorAll(Object.keys(V.HTML5Map).join(\",\"));if(e.length){var t=!1;f.el.querySelector(\".fr-marker\")||(f.selection.save(),t=!0);for(var n=0;n<e.length;n++)\"\"===f.node.attributes(e[n])&&g(e[n]).replaceWith(\"<\".concat(V.HTML5Map[e[n].tagName],\">\").concat(e[n].innerHTML,\"</\").concat(V.HTML5Map[e[n].tagName],\">\"));t&&f.selection.restore()}},tables:function t(){!function c(){for(var e=f.el.querySelectorAll(\"tr\"),t=0,n=0;n<e.length;n++){var r=e[n].outerHTML.match(/rowspan=\"([0-9]+)\"/);r&&(t+=Number(r[1])-1);for(var o=e[n].children,i=!0,a=0;a<o.length;a++)if(\"TH\"!==o[a].tagName){i=!1;break}if(!1!==i&&0!==o.length){var s=e[n];if(1===o.length&&\"TH\"===o[0].tagName&&t)t--;else{for(;s&&\"TABLE\"!==s.tagName&&\"THEAD\"!==s.tagName;)s=s.parentNode;var l=s;l.firstChild.nodeType===Node.ELEMENT_NODE&&\"THEAD\"===l.firstChild.tagName?l=l.firstChild:\"THEAD\"!==l.tagName&&(l=f.doc.createElement(\"THEAD\"),s.insertBefore(l,s.firstChild)),l.appendChild(e[n])}}}}()},lists:function y(){!function s(){var e,t=[];do{if(t.length){var n=t[0],r=f.doc.createElement(\"ul\");n.parentNode.insertBefore(r,n);do{var o=n;n=n.nextSibling,r.appendChild(o)}while(n&&\"LI\"===n.tagName)}t=[];for(var i=f.el.querySelectorAll(\"li\"),a=0;a<i.length;a++)e=i[a],f.node.isList(e.parentNode)||t.push(i[a])}while(0<t.length)}(),function i(){for(var e=f.el.querySelectorAll(\"ol + ol, ul + ul\"),t=0;t<e.length;t++){var n=e[t];if(f.node.isList(n.previousSibling)&&f.node.openTagString(n)===f.node.openTagString(n.previousSibling)){for(var r=f.node.contents(n),o=0;o<r.length;o++)n.previousSibling.appendChild(r[o]);n.parentNode.removeChild(n)}}}(),function a(){for(var e=f.el.querySelectorAll(\"ul, ol\"),t=0;t<e.length;t++)for(var n=f.node.contents(e[t]),r=null,o=n.length-1;0<=o;o--)!n[o].tagName&&f.opts.htmlUntouched||\"LI\"===n[o].tagName||\"UL\"==n[o].tagName||\"OL\"==n[o].tagName?r=null:\"BR\"==n[o].tagName?g(n[o]).remove():(r||(r=g(f.doc.createElement(\"LI\"))).insertBefore(n[o]),r.prepend(n[o]))}(),function l(){var e,t,n;do{t=!1;var r=f.el.querySelectorAll(\"li:empty\");for(e=0;e<r.length;e++)r[e].parentNode.removeChild(r[e]);var o=f.el.querySelectorAll(\"ul, ol\");for(e=0;e<o.length;e++)(n=o[e]).querySelector(\"LI\")||(t=!0,n.parentNode.removeChild(n))}while(!0===t)}(),function o(){for(var e=f.el.querySelectorAll(\"ul > ul, ol > ol, ul > ol, ol > ul\"),t=0;t<e.length;t++){var n=e[t],r=n.previousSibling;r&&(\"LI\"===r.tagName?r.appendChild(n):g(n).wrap(\"<li></li>\"))}}(),function c(){for(var e=f.el.querySelectorAll(\"li > ul, li > ol\"),t=0;t<e.length;t++){var n=e[t];if(n.nextSibling)for(var r=n.nextSibling;0<r.childNodes.length;)n.append(r.childNodes[0])}}(),function d(){for(var e=f.el.querySelectorAll(\"li > ul, li > ol\"),t=0;t<e.length;t++){var n=e[t];if(f.node.isFirstSibling(n)&&\"none\"!=n.parentNode.style.listStyleType)g(n).before(\"<br/>\");else if(n.previousSibling&&\"BR\"===n.previousSibling.tagName){for(var r=n.previousSibling.previousSibling;r&&f.node.hasClass(r,\"fr-marker\");)r=r.previousSibling;r&&\"BR\"!==r.tagName&&g(n.previousSibling).remove()}}}(),function n(){for(var e=f.el.querySelectorAll(\"li:empty\"),t=0;t<e.length;t++)g(e[t]).remove()}()},invisibleSpaces:function n(e){return e.replace(/\\u200b/g,\"\").length===e.length?e:f.clean.exec(e,o)},exec:v}},V.XS=0,V.SM=1,V.MD=2,V.LG=3;V.LinkRegExCommon=\"[\".concat(\"a-z\\\\u0080-\\\\u009f\\\\u00a1-\\\\uffff0-9-_\\\\.\",\"]{1,}\"),V.LinkRegExEnd=\"((:[0-9]{1,5})|)(((\\\\/|\\\\?|#)[a-z\\\\u00a1-\\\\uffff0-9@?\\\\|!^=%&amp;\\\\/~+#-\\\\'*-_{}]*)|())\",V.LinkRegExTLD=\"((\".concat(V.LinkRegExCommon,\")(\\\\.(com|net|org|edu|mil|gov|co|biz|info|me|dev)))\"),V.LinkRegExHTTP=\"((ftp|http|https):\\\\/\\\\/\".concat(V.LinkRegExCommon,\")\"),V.LinkRegExAuth=\"((ftp|http|https):\\\\/\\\\/[\\\\u0021-\\\\uffff]{1,}@\".concat(V.LinkRegExCommon,\")\"),V.LinkRegExWWW=\"(www\\\\.\".concat(V.LinkRegExCommon,\"\\\\.[a-z0-9-]{2,24})\"),V.LinkRegEx=\"(\".concat(V.LinkRegExTLD,\"|\").concat(V.LinkRegExHTTP,\"|\").concat(V.LinkRegExWWW,\"|\").concat(V.LinkRegExAuth,\")\").concat(V.LinkRegExEnd),V.LinkProtocols=[\"mailto\",\"tel\",\"sms\",\"notes\",\"data\"],V.MAIL_REGEX=/.+@.+\\..+/i,V.MODULES.helpers=function(i){var a,s=i.$;function e(){var e={},t=function i(){var e,t=-1;return\"Microsoft Internet Explorer\"===navigator.appName?(e=navigator.userAgent,null!==new RegExp(\"MSIE ([0-9]{1,}[\\\\.0-9]{0,})\").exec(e)&&(t=parseFloat(RegExp.$1))):\"Netscape\"===navigator.appName&&(e=navigator.userAgent,null!==new RegExp(\"Trident/.*rv:([0-9]{1,}[\\\\.0-9]{0,})\").exec(e)&&(t=parseFloat(RegExp.$1))),t}();if(0<t)e.msie=!0;else{var n=navigator.userAgent.toLowerCase(),r=/(edge)[ /]([\\w.]+)/.exec(n)||/(chrome)[ /]([\\w.]+)/.exec(n)||/(webkit)[ /]([\\w.]+)/.exec(n)||/(opera)(?:.*version|)[ /]([\\w.]+)/.exec(n)||/(msie) ([\\w.]+)/.exec(n)||n.indexOf(\"compatible\")<0&&/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(n)||[],o=r[1]||\"\";r[2];r[1]&&(e[o]=!0),e.chrome?e.webkit=!0:e.webkit&&(e.safari=!0)}return e.msie&&(e.version=t),e}function t(){return/(iPad|iPhone|iPod)/g.test(navigator.userAgent)&&!o()}function n(){return/(Android)/g.test(navigator.userAgent)&&!o()}function r(){return/(Blackberry)/g.test(navigator.userAgent)}function o(){return/(Windows Phone)/gi.test(navigator.userAgent)}var l=null;return{_init:function c(){i.browser=e()},isIOS:t,isMac:function d(){return null===l&&(l=0<=navigator.platform.toUpperCase().indexOf(\"MAC\")),l},isAndroid:n,isBlackberry:r,isWindowsPhone:o,isMobile:function f(){return n()||t()||r()},isEmail:function p(e){return!/^(https?:|ftps?:|)\\/\\//i.test(e)&&V.MAIL_REGEX.test(e)},requestAnimationFrame:function h(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}},getPX:function u(e){return parseInt(e,10)||0},screenSize:function g(e){try{var t=0;if((t=e?i.$box.width():i.$sc.width())<768)return V.XS;if(768<=t&&t<992)return V.SM;if(992<=t&&t<1200)return V.MD;if(1200<=t)return V.LG}catch(n){return V.LG}},isTouch:function C(){return\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch},sanitizeURL:function m(e){return i.opts.DOMPurify&&(e=i.opts.DOMPurify.sanitize(e,{ADD_TAGS:i.opts.htmlAllowedTags,ALLOW_UNKNOWN_PROTOCOLS:!0,ALLOWED_URI_REGEXP:/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|xxx):|[^a-z]|[a-z+.]+(?:[^a-z+.\\-:]|$))/i})),/^(https?:|ftps?:|)\\/\\//i.test(e)?e:/^([A-Za-z]:(\\\\){1,2}|[A-Za-z]:((\\\\){1,2}[^\\\\]+)+)(\\\\)?$/i.test(e)?e:new RegExp(\"^(\".concat(V.LinkProtocols.join(\"|\"),\"):\"),\"i\").test(e)?e:e=encodeURIComponent(e).replace(/%23/g,\"#\").replace(/%2F/g,\"/\").replace(/%25/g,\"%\").replace(/mailto%3A/gi,\"mailto:\").replace(/file%3A/gi,\"file:\").replace(/sms%3A/gi,\"sms:\").replace(/tel%3A/gi,\"tel:\").replace(/notes%3A/gi,\"notes:\").replace(/data%3Aimage/gi,\"data:image\").replace(/blob%3A/gi,\"blob:\").replace(/%3A(\\d)/gi,\":$1\").replace(/webkit-fake-url%3A/gi,\"webkit-fake-url:\").replace(/%3F/g,\"?\").replace(/%3D/g,\"=\").replace(/%26/g,\"&\").replace(/&amp;/g,\"&\").replace(/%2C/g,\",\").replace(/%3B/g,\";\").replace(/%2B/g,\"+\").replace(/%40/g,\"@\").replace(/%5B/g,\"[\").replace(/%5D/g,\"]\").replace(/%7B/g,\"{\").replace(/%7D/g,\"}\").replace(/%[0-1]+[0-9]+|%[0-1]+[A-F]+/g,\"\")},isArray:function v(e){return e&&!Object.prototype.propertyIsEnumerable.call(e,\"length\")&&\"object\"===M(e)&&\"number\"==typeof e.length},RGBToHex:function b(e){function t(e){return\"0\".concat(parseInt(e,10).toString(16)).slice(-2)}try{return e&&\"transparent\"!==e?/^#[0-9A-F]{6}$/i.test(e)?e:(e=e.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/),\"#\".concat(t(e[1])).concat(t(e[2])).concat(t(e[3])).toUpperCase()):\"\"}catch(n){return null}},HEXtoRGB:function L(e){e=e.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,function(e,t,n,r){return t+t+n+n+r+r});var t=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(e);return t?\"rgb(\".concat(parseInt(t[1],16),\", \").concat(parseInt(t[2],16),\", \").concat(parseInt(t[3],16),\")\"):\"\"},isURL:function E(e){return!!/^(https?:|ftps?:|)\\/\\//i.test(e)&&(e=String(e).replace(/</g,\"%3C\").replace(/>/g,\"%3E\").replace(/\"/g,\"%22\").replace(/ /g,\"%20\"),new RegExp(\"^\".concat(V.LinkRegExHTTP).concat(V.LinkRegExEnd,\"$\"),\"gi\").test(e))},getAlignment:function y(e){e.css||(e=s(e));var t=(e.css(\"text-align\")||\"\").replace(/-(.*)-/g,\"\");if([\"left\",\"right\",\"justify\",\"center\"].indexOf(t)<0){if(!a){var n=s('<div dir=\"'.concat(\"rtl\"===i.opts.direction?\"rtl\":\"auto\",'\" style=\"text-align: ').concat(i.$el.css(\"text-align\"),'; position: fixed; left: -3000px;\"><span id=\"s1\">.</span><span id=\"s2\">.</span></div>'));s(\"body\").first().append(n);var r=n.find(\"#s1\").get(0).getBoundingClientRect().left,o=n.find(\"#s2\").get(0).getBoundingClientRect().left;n.remove(),a=r<o?\"left\":\"right\"}t=a}return t},scrollTop:function S(){return i.o_win.pageYOffset?i.o_win.pageYOffset:i.o_doc.documentElement&&i.o_doc.documentElement.scrollTop?i.o_doc.documentElement.scrollTop:i.o_doc.body.scrollTop?i.o_doc.body.scrollTop:0},scrollLeft:function N(){return i.o_win.pageXOffset?i.o_win.pageXOffset:i.o_doc.documentElement&&i.o_doc.documentElement.scrollLeft?i.o_doc.documentElement.scrollLeft:i.o_doc.body.scrollLeft?i.o_doc.body.scrollLeft:0},isInViewPort:function T(e){var t=e.getBoundingClientRect();return 0<=(t={top:Math.round(t.top),bottom:Math.round(t.bottom)}).top&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)||t.top<=0&&t.bottom>=(window.innerHeight||document.documentElement.clientHeight)}}},V.MODULES.events=function(l){var e,i=l.$,a={};function s(e,t,n){C(e,t,n)}function c(e){if(void 0===e&&(e=!0),!l.$wp)return!1;if(l.helpers.isIOS()&&l.$win.get(0).focus(),l.core.hasFocus())return!1;if(!l.core.hasFocus()&&e){var t=l.$win.scrollTop();if(l.browser.msie&&l.$box&&l.$box.css(\"position\",\"fixed\"),l.browser.msie&&l.$wp&&l.$wp.css(\"overflow\",\"visible\"),l.browser.msie&&l.$sc&&l.$sc.css(\"position\",\"fixed\"),l.browser.msie||(p(),l.el.focus(),l.events.trigger(\"focus\"),f()),l.browser.msie&&l.$sc&&l.$sc.css(\"position\",\"\"),l.browser.msie&&l.$box&&l.$box.css(\"position\",\"\"),l.browser.msie&&l.$wp&&l.$wp.css(\"overflow\",\"auto\"),t!==l.$win.scrollTop()&&l.$win.scrollTop(t),!l.selection.info(l.el).atStart)return!1}if(!l.core.hasFocus()||0<l.$el.find(\".fr-marker\").length)return!1;if(l.selection.info(l.el).atStart&&l.selection.isCollapsed()&&null!==l.html.defaultTag()){var n=l.markers.insert();if(n&&!l.node.blockParent(n)){i(n).remove();var r=l.$el.find(l.html.blockTagsQuery()).get(0);r&&(i(r).prepend(V.MARKERS),l.selection.restore())}else n&&i(n).remove()}}var d=!1;function f(){e=!0}function p(){e=!1}function h(){return e}function u(e,t,n){var r,o=e.split(\" \");if(1<o.length){for(var i=0;i<o.length;i++)u(o[i],t,n);return!0}void 0===n&&(n=!1),r=0!==e.indexOf(\"shared.\")?(a[e]=a[e]||[],a[e]):(l.shared._events[e]=l.shared._events[e]||[],l.shared._events[e]),n?r.unshift(t):r.push(t)}var g=[];function C(e,t,n,r,o){\"function\"==typeof n&&(o=r,r=n,n=!1);var i=o?l.shared.$_events:g,a=o?l.sid:l.id,s=\"\".concat(t.trim().split(\" \").join(\".ed\".concat(a,\" \")),\".ed\").concat(a);n?e.on(s,n,r):e.on(s,r),i.push([e,s])}function t(e){for(var t=0;t<e.length;t++)e[t][0].off(e[t][1])}function m(e,t,n){if(!l.edit.isDisabled()||n){var r,o;if(0!==e.indexOf(\"shared.\"))r=a[e];else{if(0<l.shared.count)return!1;r=l.shared._events[e]}if(r)for(var i=0;i<r.length;i++)if(!1===(o=r[i].apply(l,t)))return!1;return(!l.opts.events||!l.opts.events[e]||!1!==(o=l.opts.events[e].apply(l,t)))&&o}}function v(){for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&delete a[e]}function b(){for(var e in l.shared._events)Object.prototype.hasOwnProperty.call(l.shared._events,e)&&delete l.shared._events[e]}return{_init:function L(){l.shared.$_events=l.shared.$_events||[],l.shared._events={},function e(){l.helpers.isMobile()?(l._mousedown=\"touchstart\",l._mouseup=\"touchend\",l._move=\"touchmove\",l._mousemove=\"touchmove\"):(l._mousedown=\"mousedown\",l._mouseup=\"mouseup\",l._move=\"\",l._mousemove=\"mousemove\")}(),function t(){s(l.$el,\"click mouseup mousemove mousedown touchstart touchend dragenter dragover dragleave dragend drop dragstart\",function(e){m(e.type,[e])}),u(\"mousedown\",function(){for(var e=0;e<V.INSTANCES.length;e++)V.INSTANCES[e]!==l&&V.INSTANCES[e].popups&&V.INSTANCES[e].popups.areVisible()&&V.INSTANCES[e].$el.find(\".fr-marker\").remove()})}(),function n(){s(l.$win,l._mousedown,function(e){m(\"window.mousedown\",[e]),f()}),s(l.$win,l._mouseup,function(e){m(\"window.mouseup\",[e])}),s(l.$win,\"beforeinput cut copy keydown keyup touchmove touchend\",function(e){m(\"window.\".concat(e.type),[e])})}(),function r(){s(l.$doc,\"dragend drop\",function(e){m(\"document.\".concat(e.type),[e])})}(),function o(){s(l.$el,\"beforeinput keydown keypress keyup input\",function(e){m(e.type,[e])})}(),function i(){s(l.$el,\"focus\",function(e){h()&&(c(!1),!1===d&&(m(e.type,[e]),l.helpers.isMobile()&&p()))}),s(l.$el,\"blur\",function(e){h()&&!0===d&&(m(e.type,[e]),l.helpers.isMobile()&&l.opts.toolbarContainer&&(l.shared.selected_editor=l.id),f())}),C(l.$el,\"mousedown\",'[contenteditable=\"true\"]',function(){p(),l.$el.blur()}),u(\"focus\",function(){d=!0}),u(\"blur\",function(){d=!1})}(),f(),function a(){s(l.$el,\"cut copy paste beforepaste\",function(e){m(e.type,[e])})}(),u(\"destroy\",v),u(\"shared.destroy\",b)},on:u,trigger:m,bindClick:function r(e,t,n){C(e,l._mousedown,t,function(e){l.edit.isDisabled()||function n(e){var t=i(e.currentTarget);return l.edit.isDisabled()||l.node.hasClass(t.get(0),\"fr-disabled\")?(e.preventDefault(),!1):\"mousedown\"===e.type&&1!==e.which||(l.helpers.isMobile()||e.preventDefault(),(l.helpers.isAndroid()||l.helpers.isWindowsPhone())&&0===t.parents(\".fr-dropdown-menu\").length&&(e.preventDefault(),e.stopPropagation()),t.addClass(\"fr-selected\"),void l.events.trigger(\"commands.mousedown\",[t]))}(e)},!0),C(e,\"\".concat(l._mouseup,\" \").concat(l._move),t,function(e){l.edit.isDisabled()||function o(e,t){var n=i(e.currentTarget);if(l.edit.isDisabled()||l.node.hasClass(n.get(0),\"fr-disabled\"))return e.preventDefault(),!1;if(\"mouseup\"===e.type&&1!==e.which)return!0;if(l.button.getButtons(\".fr-selected\",!0).get(0)==n.get(0)&&!l.node.hasClass(n.get(0),\"fr-selected\"))return!0;if(\"touchmove\"!==e.type){if(e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault(),!l.node.hasClass(n.get(0),\"fr-selected\"))return l.button.getButtons(\".fr-selected\",!0).removeClass(\"fr-selected\"),!1;if(l.button.getButtons(\".fr-selected\",!0).removeClass(\"fr-selected\"),n.data(\"dragging\")||n.attr(\"disabled\"))return n.removeData(\"dragging\"),!1;var r=n.data(\"timeout\");r&&(clearTimeout(r),n.removeData(\"timeout\")),t.apply(l,[e])}else n.data(\"timeout\")||n.data(\"timeout\",setTimeout(function(){n.data(\"dragging\",!0)},100))}(e,n)},!0),C(e,\"mousedown click mouseup\",t,function(e){l.edit.isDisabled()||e.stopPropagation()},!0),u(\"window.mouseup\",function(){l.edit.isDisabled()||(e.find(t).removeClass(\"fr-selected\"),f())}),C(e,\"mouseover\",t,function(){i(this).hasClass(\"fr-options\")&&i(this).prev(\".fr-btn\").addClass(\"fr-btn-hover\"),i(this).next(\".fr-btn\").hasClass(\"fr-options\")&&i(this).next(\".fr-btn\").addClass(\"fr-btn-hover\")}),C(e,\"mouseout\",t,function(){i(this).hasClass(\"fr-options\")&&i(this).prev(\".fr-btn\").removeClass(\"fr-btn-hover\"),i(this).next(\".fr-btn\").hasClass(\"fr-options\")&&i(this).next(\".fr-btn\").removeClass(\"fr-btn-hover\")})},disableBlur:p,enableBlur:f,blurActive:h,focus:c,chainTrigger:function E(e,t,n){if(!l.edit.isDisabled()||n){var r,o;if(0!==e.indexOf(\"shared.\"))r=a[e];else{if(0<l.shared.count)return!1;r=l.shared._events[e]}if(r)for(var i=0;i<r.length;i++)void 0!==(o=r[i].apply(l,[t]))&&(t=o);return l.opts.events&&l.opts.events[e]&&void 0!==(o=l.opts.events[e].apply(l,[t]))&&(t=o),t}},$on:C,$off:function n(){t(g),g=[],0===l.shared.count&&(t(l.shared.$_events),l.shared.$_events=[])}}},Object.assign(V.DEFAULTS,{indentMargin:20}),V.COMMANDS={bold:{title:\"Bold\",toggle:!0,refresh:function(e){var t=this.format.is(\"strong\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},italic:{title:\"Italic\",toggle:!0,refresh:function(e){var t=this.format.is(\"em\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},underline:{title:\"Underline\",toggle:!0,refresh:function(e){var t=this.format.is(\"u\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},strikeThrough:{title:\"Strikethrough\",toggle:!0,refresh:function(e){var t=this.format.is(\"s\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},subscript:{title:\"Subscript\",toggle:!0,refresh:function(e){var t=this.format.is(\"sub\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},superscript:{title:\"Superscript\",toggle:!0,refresh:function(e){var t=this.format.is(\"sup\");e.toggleClass(\"fr-active\",t).attr(\"aria-pressed\",t)}},outdent:{title:\"Decrease Indent\"},indent:{title:\"Increase Indent\"},undo:{title:\"Undo\",undo:!1,forcedRefresh:!0,disabled:!0},redo:{title:\"Redo\",undo:!1,forcedRefresh:!0,disabled:!0},insertHR:{title:\"Insert Horizontal Line\"},clearFormatting:{title:\"Clear Formatting\"},selectAll:{title:\"Select All\",undo:!1},moreText:{title:\"More Text\",undo:!1},moreParagraph:{title:\"More Paragraph\",undo:!1},moreRich:{title:\"More Rich\",undo:!1},moreMisc:{title:\"More Misc\",undo:!1}},V.RegisterCommand=function(e,t){V.COMMANDS[e]=t},V.MODULES.commands=function(a){var s=a.$;function l(e){return a.html.defaultTag()&&(e=\"<\".concat(a.html.defaultTag(),\">\").concat(e,\"</\").concat(a.html.defaultTag(),\">\")),e}var i={bold:function(){e(\"bold\",\"strong\")},subscript:function(){a.format.is(\"sup\")&&a.format.remove(\"sup\"),e(\"subscript\",\"sub\")},superscript:function(){a.format.is(\"sub\")&&a.format.remove(\"sub\"),e(\"superscript\",\"sup\")},italic:function(){e(\"italic\",\"em\")},strikeThrough:function(){e(\"strikeThrough\",\"s\")},underline:function(){e(\"underline\",\"u\")},undo:function(){a.undo.run()},redo:function(){a.undo.redo()},indent:function(){r(1)},outdent:function(){r(-1)},show:function(){a.opts.toolbarInline&&a.toolbar.showInline(null,!0)},insertHR:function(){a.selection.remove();var e=\"\";a.core.isEmpty()&&(e=l(e=\"<br>\"));var t='<hr id=\"fr-just\" class=\"fr-just\">'.concat(e);a.opts.trackChangesEnabled&&(t=a.track_changes.wrapInTracking(s(t),\"hrWrapper\").get(0).outerHTML);a.html.insert(t);var n,r=a.$el.find(\"hr#fr-just\").length?a.$el.find(\"hr#fr-just\"):a.$el.find(\".fr-just\");r.removeAttr(\"id\"),r.removeAttr(\"class\");var o=a.opts.trackChangesEnabled&&\"SPAN\"===r[0].parentNode.tagName&&\"P\"===r[0].parentNode.parentNode.tagName;if(0===r.next().length){var i=a.html.defaultTag();i&&!o?r.after(s(a.doc.createElement(i)).append(\"<br>\").get(0)):o?r[0].parentNode.after(s(a.doc.createElement(i)).append(\"<br>\").get(0)):r.after(\"<br>\")}r.prev().is(\"hr\")?n=a.selection.setAfter(r.get(0),!1):r.next().is(\"hr\")?n=a.selection.setBefore(r.get(0),!1):o||a.selection.setAfter(r.get(0),!1)?a.selection.setAfter(r[0].parentNode,!1):a.selection.setBefore(r.get(0),!1),n||void 0===n||(e=l(e=\"\".concat(V.MARKERS,\"<br>\")),r.after(e)),a.selection.restore()},clearFormatting:function(){a.format.remove()},selectAll:function(){a.doc.execCommand(\"selectAll\",!1,!1)},moreText:function(e){t(e)},moreParagraph:function(e){t(e)},moreRich:function(e){t(e)},moreMisc:function(e){t(e)},moreTrackChanges:function(){t(\"trackChanges\")}};function t(e){var t=a.$tb.find(\"[data-cmd=\".concat(e,\"]\")),n=a.$tb.find(\"[data-cmd=html]\");a.opts.trackChangesEnabled?n&&n.addClass(\"fr-disabled\"):n&&n.removeClass(\"fr-disabled\"),function r(n){a.helpers.isMobile()&&a.opts.toolbarInline&&a.events.disableBlur();var e=a.$tb.find('.fr-more-toolbar[data-name=\"'.concat(n.attr(\"data-group-name\"),'\"]'));\"trackChanges\"===n.data(\"cmd\")&&(e=a.$tb.find('.fr-more-toolbar[data-name=\"'.concat(n.attr(\"id\"),'\"]')));if(a.$tb.find(\".fr-open\").not(n).not('[data-cmd=\"trackChanges\"]').removeClass(\"fr-open\"),n.toggleClass(\"fr-open\"),a.$tb.find(\".fr-more-toolbar\").removeClass(\"fr-overflow-visible\"),a.$tb.find(\".fr-expanded\").not(e).length){var t=a.$tb.find(\".fr-expanded\").not(e);t.each(function(e,t){0!=s(t).data(\"name\").indexOf(\"trackChanges-\")&&0!=s(t).data(\"name\").indexOf(\"moreRich-\")?s(t).toggleClass(\"fr-expanded\"):n.parents('[data-name^=\"moreRich-\"]').length||0==s(t).data(\"name\").indexOf(\"trackChanges-\")||s(t).find('[id^=\"trackChanges-\"]').length&&a.opts.trackChangesEnabled||s(t).toggleClass(\"fr-expanded\")}),e.toggleClass(\"fr-expanded\")}else e.toggleClass(\"fr-expanded\"),a.$box.toggleClass(\"fr-toolbar-open\"),a.$tb.toggleClass(\"fr-toolbar-open\")}(t),a.toolbar.setMoreToolbarsHeight()}function n(e,t){if(!(a.markdown&&a.markdown.isEnabled()&&(\"bold\"===e||\"italic\"===e||\"underline\"===e)||a.opts.trackChangesEnabled&&\"markdown\"===e)&&!1!==a.events.trigger(\"commands.before\",s.merge([e],t||[]))){var n=V.COMMANDS[e]&&V.COMMANDS[e].callback||i[e],r=!0,o=!1;V.COMMANDS[e]&&(\"undefined\"!=typeof V.COMMANDS[e].focus&&(r=V.COMMANDS[e].focus),\"undefined\"!=typeof V.COMMANDS[e].accessibilityFocus&&(o=V.COMMANDS[e].accessibilityFocus)),(!a.core.hasFocus()&&r||!a.core.hasFocus()&&o&&a.accessibility.hasFocus())&&(a.el.focus({preventScroll:!0}),a.events.trigger(\"focus\")),V.COMMANDS[e]&&!1!==V.COMMANDS[e].undo&&(a.$el.find(\".fr-marker\").length&&(a.events.disableBlur(),a.selection.restore()),a.undo.saveStep()),n&&n.apply(a,s.merge([e],t||[])),a.events.trigger(\"commands.after\",s.merge([e],t||[])),V.COMMANDS[e]&&!1!==V.COMMANDS[e].undo&&a.undo.saveStep()}}function e(e,t){a.format.toggle(t)}function r(e){a.selection.save(),a.html.wrap(!0,!0,!0,!0),a.selection.restore();for(var t=a.selection.blocks(),n=0;n<t.length;n++)if(\"LI\"!==t[n].tagName&&\"LI\"!=t[n].parentNode.tagName&&(\"LI\"!==t[n].tagName||\"LI\"!==t[n].parentNode.tagName)){var r=s(t[n]);\"LI\"!=t[n].tagName&&\"LI\"==t[n].parentNode.tagName&&(r=s(t[n].parentNode));var o=\"rtl\"===a.opts.direction||\"rtl\"===r.css(\"direction\")?\"margin-right\":\"margin-left\",i=a.helpers.getPX(r.css(o));if(r.width()<2*a.opts.indentMargin&&0<e)continue;\"UL\"!=t[n].parentNode.tagName&&\"OL\"!=t[n].parentNode.tagName&&\"LI\"!=t[n].parentNode.tagName&&r.css(o,Math.max(i+e*a.opts.indentMargin,0)||\"\"),r.removeClass(\"fr-temp-div\")}a.selection.save(),a.html.unwrap(),a.selection.restore()}function o(e){return function(){n(e)}}var c={};for(var d in i)Object.prototype.hasOwnProperty.call(i,d)&&(c[d]=o(d));return Object.assign(c,{exec:n,_init:function f(){a.events.on(\"keydown\",function(e){var t=a.selection.element();if(t&&\"HR\"===t.tagName&&!a.keys.isArrow(e.which))return e.preventDefault(),!1}),a.events.on(\"keyup\",function(e){var t=a.selection.element();if(t&&\"HR\"===t.tagName)if(e.which===V.KEYCODE.ARROW_LEFT||e.which===V.KEYCODE.ARROW_UP){if(t.previousSibling)return a.node.isBlock(t.previousSibling)?a.selection.setAtEnd(t.previousSibling):s(t).before(V.MARKERS),a.selection.restore(),!1}else if((e.which===V.KEYCODE.ARROW_RIGHT||e.which===V.KEYCODE.ARROW_DOWN)&&t.nextSibling)return a.node.isBlock(t.nextSibling)?a.selection.setAtStart(t.nextSibling):s(t).after(V.MARKERS),a.selection.restore(),!1}),a.events.on(\"mousedown\",function(e){if(e.target&&\"HR\"===e.target.tagName)return e.preventDefault(),e.stopPropagation(),!1}),a.events.on(\"mouseup\",function(){var e=a.selection.element();e===a.selection.endElement()&&e&&\"HR\"===e.tagName&&(e.nextSibling&&(a.node.isBlock(e.nextSibling)?a.selection.setAtStart(e.nextSibling):s(e).after(V.MARKERS)),a.selection.restore())})}})},V.MODULES.cursorLists=function(v){var b=v.$;function L(e){for(var t=e;\"LI\"!==t.tagName;)t=t.parentNode;return t}function E(e){for(var t=e;!v.node.isList(t);)t=t.parentNode;return t}function y(e){for(var t=\"\",n=0;n<e.length;n++){var r=e[n];t+=\"\".concat(r.name,\"='\").concat(r.value,\"' \")}return t}return{_startEnter:function S(e){var t,n=L(e),r=n.nextSibling,o=n.previousSibling,i=v.html.defaultTag();if(v.node.isEmpty(n,!0)&&r){for(var a=\"\",s=\"\",l=e.parentNode;!v.node.isList(l)&&l.parentNode&&(\"LI\"!==l.parentNode.tagName||l.parentNode===n);)-1<[\"OL\",\"LI\",\"UL\"].indexOf(l.tagName)&&(a=v.node.openTagString(l)+a,s+=v.node.closeTagString(l)),l=l.parentNode;a=v.node.openTagString(l)+a,s+=v.node.closeTagString(l);var c=\"\";if(l.parentNode&&\"LI\"===l.parentNode.tagName)if(l.parentNode.attributes.length){var d=y(l.parentNode.attributes);c=\"\".concat(s,\"<li \").concat(d,\">\").concat(V.MARKERS,\"<br>\").concat(a)}else c=\"\".concat(s,\"<li>\").concat(V.MARKERS,\"<br>\").concat(a);else c=i?\"\".concat(s,\"<\").concat(i,\">\").concat(V.MARKERS,\"<br></\").concat(i,\">\").concat(a):\"\".concat(s+V.MARKERS,\"<br>\").concat(a);for(;[\"UL\",\"OL\"].indexOf(l.tagName)<0||l.parentNode&&\"LI\"===l.parentNode.tagName;)l=l.parentNode;b(n).replaceWith('<span id=\"fr-break\"></span>');var f=v.node.openTagString(l)+b(l).html()+v.node.closeTagString(l);f=f.replace(/<span id=\"fr-break\"><\\/span>/g,c),b(l).replaceWith(f),v.$el.find(\"li:empty\").remove(),v.$el.find(\"li > p > span:empty\").length&&v.$el.find(\"li > p > span:empty\")[0].parentNode.parentNode.remove()}else if(o&&r||!v.node.isEmpty(n,!0)){var p=\"<br>\",h=e.parentNode;for(h&&\"A\"===h.tagName&&(h=null);h&&\"LI\"!==h.tagName;)p=v.node.openTagString(h)+p+v.node.closeTagString(h),h=h.parentNode;if(h&&h.attributes.length){var u=y(h.attributes);b(n).before(\"<li \".concat(u,\">\").concat(p,\"</li>\"))}else b(n).before(\"<li>\".concat(p,\"</li>\"));b(e).remove()}else if(o){t=E(n);for(var g=\"\".concat(V.MARKERS,\"<br>\"),C=e.parentNode;C&&\"LI\"!==C.tagName;)g=v.node.openTagString(C)+g+v.node.closeTagString(C),C=C.parentNode;if(t.parentNode&&\"LI\"===t.parentNode.tagName)if(t.parentNode.attributes.length){var m=y(t.parentNode.attributes);b(t.parentNode).after(\"<li \".concat(m,\">\").concat(g,\"</li>\"))}else b(t.parentNode).after(\"<li>\".concat(g,\"</li>\"));else i?b(t).after(\"<\".concat(i,\">\").concat(g,\"</\").concat(i,\">\")):b(t).after(g);b(n).remove()}else(t=E(n)).parentNode&&\"LI\"===t.parentNode.tagName?r?b(t.parentNode).before(\"\".concat(v.node.openTagString(n)+V.MARKERS,\"<br></li>\")):b(t.parentNode).after(\"\".concat(v.node.openTagString(n)+V.MARKERS,\"<br></li>\")):i?b(t).before(\"<\".concat(i,\">\").concat(V.MARKERS,\"<br></\").concat(i,\">\")):b(t).before(\"\".concat(V.MARKERS,\"<br>\")),b(n).remove()},_middleEnter:function c(e){for(var t=L(e),n=\"\",r=e,o=\"\",i=\"\",a=!1;r!==t;){var s=\"A\"===(r=r.parentNode).tagName&&v.cursor.isAtEnd(e,r)?\"fr-to-remove\":\"\";a||r==t||v.node.isBlock(r)||(a=!0,o+=V.INVISIBLE_SPACE),o=v.node.openTagString(b(r).clone().addClass(s).get(0))+o,i+=v.node.closeTagString(r)}n=i+n+o+V.MARKERS+(v.opts.keepFormatOnDelete?V.INVISIBLE_SPACE:\"\"),b(e).replaceWith('<span id=\"fr-break\"></span>');var l=v.node.openTagString(t)+b(t).html()+v.node.closeTagString(t);l=l.replace(/<span id=\"fr-break\"><\\/span>/g,n),b(t).replaceWith(l)},_endEnter:function l(e){for(var t=L(e),n=V.MARKERS,r=\"\",o=e,i=!1;o!==t;)if(!(o=o.parentNode).classList.contains(\"fr-img-space-wrap\")&&!o.classList.contains(\"fr-img-space-wrap2\")){var a=\"A\"===o.tagName&&v.cursor.isAtEnd(e,o)?\"fr-to-remove\":\"\";i||o===t||v.node.isBlock(o)||(i=!0,r+=V.INVISIBLE_SPACE),r=v.node.openTagString(b(o).clone().addClass(a).get(0))+r,n+=v.node.closeTagString(o)}var s=r+n;b(e).remove(),b(t).after(s)},_backspace:function d(e){var t=L(e),n=t.previousSibling;if(n){n=b(n).find(v.html.blockTagsQuery()).get(-1)||n,b(e).replaceWith(V.MARKERS);var r=v.node.contents(n);r.length&&\"BR\"===r[r.length-1].tagName&&b(r[r.length-1]).remove(),b(t).find(v.html.blockTagsQuery()).not(\"ol, ul, table\").each(function(){this.parentNode===t&&b(this).replaceWith(b(this).html()+(v.node.isEmpty(this)?\"\":\"<br>\"))});for(var o,i=v.node.contents(t)[0];i&&!v.node.isList(i);)o=i.nextSibling,b(n).append(i),i=o;for(n=t.previousSibling;i;)o=i.nextSibling,b(n).append(i),i=o;1<(r=v.node.contents(n)).length&&\"BR\"===r[r.length-1].tagName&&b(r[r.length-1]).remove(),b(t).remove()}else{var a=E(t);if(b(e).replaceWith(V.MARKERS),a.parentNode&&\"LI\"===a.parentNode.tagName){var s=a.previousSibling;v.node.isBlock(s)?(b(t).find(v.html.blockTagsQuery()).not(\"ol, ul, table\").each(function(){this.parentNode===t&&b(this).replaceWith(b(this).html()+(v.node.isEmpty(this)?\"\":\"<br>\"))}),b(s).append(b(t).html())):b(a).before(b(t).html())}else{var l=v.html.defaultTag();l&&0===b(t).find(v.html.blockTagsQuery()).length?b(a).before(\"<\".concat(l,\">\").concat(b(t).html(),\"</\").concat(l,\">\")):b(a).before(b(t).html())}b(t).remove(),v.html.wrap(),0===b(a).find(\"li\").length&&b(a).remove()}},_del:function f(e){var t,n=L(e),r=n.nextSibling;if(r){(t=v.node.contents(r)).length&&\"BR\"===t[0].tagName&&b(t[0]).remove(),b(r).find(v.html.blockTagsQuery()).not(\"ol, ul, table\").each(function(){this.parentNode===r&&b(this).replaceWith(b(this).html()+(v.node.isEmpty(this)?\"\":\"<br>\"))});for(var o,i=e,a=v.node.contents(r)[0];a&&!v.node.isList(a);)o=a.nextSibling,b(i).after(a),i=a,a=o;for(;a;)o=a.nextSibling,b(n).append(a),a=o;b(e).replaceWith(V.MARKERS),b(r).remove()}else{for(var s=n;!s.nextSibling&&s!==v.el;)s=s.parentNode;if(s===v.el)return!1;if(s=s.nextSibling,v.node.isBlock(s)){if(V.NO_DELETE_TAGS.indexOf(s.tagName)<0){if(b(e).replaceWith(V.MARKERS),(t=v.node.contents(n)).length&&\"BR\"===t[t.length-1].tagName&&b(t[t.length-1]).remove(),s.isContentEditable&&\"DIV\"===s.tagName&&(!v.node.isBlock(s.previousSibling)||\"DIV\"===s.previousSibling.tagName))return;b(n).append(b(s).html()),b(s).remove()}}else{for((t=v.node.contents(n)).length&&\"BR\"===t[t.length-1].tagName&&b(t[t.length-1]).remove(),b(e).replaceWith(V.MARKERS);s&&!v.node.isBlock(s)&&\"BR\"!==s.tagName;)b(n).append(b(s)),s=s.nextSibling;b(s).remove()}}}}},V.NO_DELETE_TAGS=[\"TH\",\"TD\",\"TR\",\"TABLE\",\"FORM\"],V.SIMPLE_ENTER_TAGS=[\"TH\",\"TD\",\"LI\",\"DL\",\"DT\",\"FORM\"],V.MODULES.cursor=function(g){var C=g.$;function h(e){return!!e&&(g.node.isBlock(e)?\"P\"!==e.tagName||!e.nextElementSibling||!e.parentElement||\"OL\"!==e.nextElementSibling.tagName||\"LI\"!==e.parentElement.tagName:e.nextSibling&&e.nextSibling.nodeType===Node.TEXT_NODE&&0===e.nextSibling.textContent.replace(/\\u200b/g,\"\").length?h(e.nextSibling):!(e.nextSibling&&(!e.previousSibling||\"BR\"!==e.nextSibling.tagName||e.nextSibling.nextSibling))&&h(e.parentNode))}function u(e){return!!e&&(!!g.node.isBlock(e)||(e.previousSibling&&e.previousSibling.nodeType===Node.TEXT_NODE&&0===e.previousSibling.textContent.replace(/\\u200b/g,\"\").length?u(e.previousSibling):!e.previousSibling&&(!(e.previousSibling||!g.node.hasClass(e.parentNode,\"fr-inner\"))||u(e.parentNode))))}function m(e,t){return!!e&&(e!==g.$wp.get(0)&&(e.previousSibling&&e.previousSibling.nodeType===Node.TEXT_NODE&&0===e.previousSibling.textContent.replace(/\\u200b/g,\"\").length?m(e.previousSibling,t):!e.previousSibling&&(e.parentNode===t||m(e.parentNode,t))))}function v(e,t){return!!e&&(e!==g.$wp.get(0)&&(e.nextSibling&&e.nextSibling.nodeType===Node.TEXT_NODE&&0===e.nextSibling.textContent.replace(/\\u200b/g,\"\").length?v(e.nextSibling,t):!(e.nextSibling&&(!e.previousSibling||\"BR\"!==e.nextSibling.tagName||e.nextSibling.nextSibling))&&(e.parentNode===t||v(e.parentNode,t))))}function b(e){return 0<C(e).parentsUntil(g.$el,\"LI\").length&&0===C(e).parentsUntil(\"LI\",\"TABLE\").length}function L(e,t){var n=new RegExp(\"\".concat(t?\"^\":\"\",\"(([\\\\uD83C-\\\\uDBFF\\\\uDC00-\\\\uDFFF]+\\\\u200D)*[\\\\uD83C-\\\\uDBFF\\\\uDC00-\\\\uDFFF]{2})\").concat(t?\"\":\"$\"),\"i\"),r=e.match(n);return r?r[0].length:1}function E(e){for(var t,n=e;!n.previousSibling;)if(n=n.parentNode,g.node.isElement(n))return!1;n=n.previousSibling;var r=g.opts.htmlAllowedEmptyTags,o=n.tagName&&n.tagName.toLowerCase();if((!g.node.isBlock(n)||n.lastChild&&o&&0<=r.indexOf(o))&&g.node.isEditable(n)){for(t=g.node.contents(n);n.nodeType!==Node.TEXT_NODE&&!g.node.isDeletable(n)&&t.length&&g.node.isEditable(n);)n=t[t.length-1],t=g.node.contents(n);if(n.nodeType===Node.TEXT_NODE){var i=n.textContent,a=i.length;if(i.length&&\"\\n\"===i[i.length-1])return n.textContent=i.substring(0,a-2),0===n.textContent.length&&n.parentNode.removeChild(n),E(e);if(g.opts.tabSpaces&&i.length>=g.opts.tabSpaces)0===i.substr(i.length-g.opts.tabSpaces,i.length-1).replace(/ /g,\"\").replace(new RegExp(V.UNICODE_NBSP,\"g\"),\"\").length&&(a=i.length-g.opts.tabSpaces+1);n.textContent=i.substring(0,a-L(i));var s=n.textContent;(g.opts.enter===V.ENTER_BR&&0<s.length&&\" \"===s.charAt(s.length-1)||0===s.length&&e.previousSibling&&3===e.previousSibling.nodeType&&\"TD\"!==e.parentNode.tagName&&\"LI\"!==e.parentNode.tagName&&i!==String.fromCharCode(8203))&&(e.insertAdjacentHTML(\"beforebegin\",V.INVISIBLE_SPACE),n=n.nextSibling),g.opts.trackChangesEnabled&&0===n.textContent.length&&C(n.parentElement).data(\"tracking\")&&0===C(n.parentElement).find(\"[data-tracking-deleted=true]\").length&&(C(e).insertBefore(n.parentElement),C(n.parentElement).remove(),n=C(e)[0].previousSibling),g.opts.htmlUntouched&&!e.nextSibling&&n.textContent.length&&\" \"===n.textContent[n.textContent.length-1]&&(n.textContent=n.textContent.substring(0,n.textContent.length-1)+V.UNICODE_NBSP);var l=i.length!==n.textContent.length;if(g.opts.enter!==V.ENTER_BR&&n&&n.previousSibling&&n.previousSibling.previousSibling&&\"BR\"===n.previousSibling.previousSibling.tagName&&0===n.textContent.length&&n.previousSibling.previousSibling.remove(),0===n.textContent.length&&\"LI\"===n.parentNode.tagName&&n.previousSibling&&\"BR\"===n.previousSibling.tagName&&n.previousSibling.remove(),0===n.textContent.length)if(l&&g.opts.keepFormatOnDelete)C(n).after(V.INVISIBLE_SPACE+V.MARKERS);else if(0!==i.length&&g.node.isBlock(n.parentNode))C(n).after(V.MARKERS);else if((2!=n.parentNode.childNodes.length||n.parentNode!=e.parentNode)&&1!=n.parentNode.childNodes.length||g.node.isBlock(n.parentNode)||g.node.isElement(n.parentNode)||!g.node.isDeletable(n.parentNode)){for(var c,d=n;!g.node.isElement(n.parentNode)&&g.node.isEmpty(n.parentNode)&&V.NO_DELETE_TAGS.indexOf(n.parentNode.tagName)<0;)if(\"A\"===(n=n.parentNode).tagName){var f=n.childNodes[0];for(C(n).before(f),c=!0;0<f.childNodes.length;)f=f.childNodes[0];n.parentNode.removeChild(n),n=f;break}c||(n=d),C(n).after(V.MARKERS),g.node.isElement(n.parentNode)&&!e.nextSibling&&n.previousSibling&&\"BR\"===n.previousSibling.tagName&&C(e).after(\"<br>\");var p=n.parentNode;n.parentNode.removeChild(n),g.node.isEmpty(p)&&C(p).html(V.INVISIBLE_SPACE+V.MARKERS)}else C(n.parentNode).after(V.MARKERS),C(n.parentNode).remove();else C(n).after(V.MARKERS)}else g.node.isDeletable(n)?(C(n).after(V.MARKERS),C(n).remove()):e.nextSibling&&\"BR\"===e.nextSibling.tagName&&g.node.isVoid(n)&&\"BR\"!==n.tagName?(C(e.nextSibling).remove(),C(e).replaceWith(V.MARKERS)):!1!==g.events.trigger(\"node.remove\",[C(n)])&&(C(n).after(V.MARKERS),C(n).remove())}else if(V.NO_DELETE_TAGS.indexOf(n.tagName)<0&&(g.node.isEditable(n)||g.node.isDeletable(n)))if(g.node.isDeletable(n))C(e).replaceWith(V.MARKERS),C(n).remove();else if(g.node.isEmpty(n)&&!g.node.isList(n))C(n).remove(),C(e).replaceWith(V.MARKERS);else{for(g.node.isList(n)&&(n=C(n).find(\"li\").last().get(0)),(t=g.node.contents(n))&&0<t.length&&\"BR\"===t[t.length-1].tagName&&C(t[t.length-1]).remove(),t=g.node.contents(n);t&&0<t.length&&g.node.isBlock(t[t.length-1]);)n=t[t.length-1],t=g.node.contents(n);C(n).append(V.MARKERS);for(var h=e;!h.previousSibling;)h=h.parentNode;for(;h&&\"BR\"!==h.tagName&&!g.node.isBlock(h);){var u=h;h=h.nextSibling,C(n).append(u)}h&&\"BR\"===h.tagName&&C(h).remove(),C(e).remove()}else e.nextSibling&&\"BR\"===e.nextSibling.tagName&&C(e.nextSibling).remove();return!0}function i(e){var t=0<C(e).parentsUntil(g.$el,\"BLOCKQUOTE\").length,n=g.node.deepestParent(e,[],!t);if(n&&\"BLOCKQUOTE\"===n.tagName){var r=g.node.deepestParent(e,[C(e).parentsUntil(g.$el,\"BLOCKQUOTE\").get(0)]);r&&r.nextSibling&&(n=r)}if(null!==n){var o,i=n.nextSibling;if(g.node.isBlock(n)&&(g.node.isEditable(n)||g.node.isDeletable(n))&&i&&V.NO_DELETE_TAGS.indexOf(i.tagName)<0)if(g.node.isDeletable(i))C(i).remove(),C(e).replaceWith(V.MARKERS);else if(g.node.isBlock(i)&&g.node.isEditable(i))if(g.node.isList(i))if(g.node.isEmpty(n,!0))C(n).remove(),C(i).find(\"li\").first().prepend(V.MARKERS);else{var a=C(i).find(\"li\").first();\"BLOCKQUOTE\"===n.tagName&&(o=g.node.contents(n)).length&&g.node.isBlock(o[o.length-1])&&(n=o[o.length-1]),0===a.find(\"ul, ol\").length&&(C(e).replaceWith(V.MARKERS),a.find(g.html.blockTagsQuery()).not(\"ol, ul, table\").each(function(){this.parentNode===a.get(0)&&C(this).replaceWith(C(this).html()+(g.node.isEmpty(this)?\"\":\"<br>\"))}),C(n).append(g.node.contents(a.get(0))),a.remove(),0===C(i).find(\"li\").length&&C(i).remove())}else{if((o=g.node.contents(i)).length&&\"BR\"===o[0].tagName&&C(o[0]).remove(),\"BLOCKQUOTE\"!==i.tagName&&\"BLOCKQUOTE\"===n.tagName)for(o=g.node.contents(n);o.length&&g.node.isBlock(o[o.length-1]);)n=o[o.length-1],o=g.node.contents(n);else if(\"BLOCKQUOTE\"===i.tagName&&\"BLOCKQUOTE\"!==n.tagName)for(o=g.node.contents(i);o.length&&g.node.isBlock(o[0]);)i=o[0],o=g.node.contents(i);C(e).replaceWith(V.MARKERS),C(n).append(i.innerHTML),C(i).remove()}else{for(C(e).replaceWith(V.MARKERS);i&&\"BR\"!==i.tagName&&!g.node.isBlock(i)&&g.node.isEditable(i);){var s=i;i=i.nextSibling,C(n).append(s)}i&&\"BR\"===i.tagName&&g.node.isEditable(i)&&C(i).remove()}}}function n(e){for(var t,n=e;!n.nextSibling;)if(n=n.parentNode,g.node.isElement(n))return!1;if(\"BR\"===(n=n.nextSibling).tagName&&g.node.isEditable(n))if(n.nextSibling){if(g.node.isBlock(n.nextSibling)&&g.node.isEditable(n.nextSibling)){if(!(V.NO_DELETE_TAGS.indexOf(n.nextSibling.tagName)<0))return void C(n).remove();n=n.nextSibling,C(n.previousSibling).remove()}}else if(h(n)){if(b(e))g.cursorLists._del(e);else g.node.deepestParent(n)&&((!g.node.isEmpty(g.node.blockParent(n))||(g.node.blockParent(n).nextSibling&&V.NO_DELETE_TAGS.indexOf(g.node.blockParent(n).nextSibling.tagName))<0)&&C(n).remove(),n&&n.parentNode&&8203===n.parentNode.textContent.charCodeAt()&&n.parentNode.childNodes[1]&&\"BR\"===n.parentNode.childNodes[1].tagName&&n.parentNode.tagName.toLowerCase()===g.html.defaultTag()&&n.parentNode.nextSibling&&\"TABLE\"===n.parentNode.nextSibling.tagName&&C(n.parentNode).remove(),i(e));return}if(!g.node.isBlock(n)&&g.node.isEditable(n)){for(t=g.node.contents(n);n.nodeType!==Node.TEXT_NODE&&t.length&&!g.node.isDeletable(n)&&g.node.isEditable(n);)n=t[0],t=g.node.contents(n);n.nodeType===Node.TEXT_NODE?(C(n).before(V.MARKERS),n.textContent.length&&(n.textContent=n.textContent.substring(L(n.textContent,!0),n.textContent.length))):g.node.isDeletable(n)?(C(n).before(V.MARKERS),C(n).remove()):!1!==g.events.trigger(\"node.remove\",[C(n)])&&(C(n).before(V.MARKERS),C(n).remove()),C(e).remove()}else if(V.NO_DELETE_TAGS.indexOf(n.tagName)<0&&(g.node.isEditable(n)||g.node.isDeletable(n)))if(g.node.isDeletable(n))C(e).replaceWith(V.MARKERS),C(n).remove();else if(g.node.isList(n))e.previousSibling?(C(n).find(\"li\").first().prepend(e),g.cursorLists._backspace(e)):(C(n).find(\"li\").first().prepend(V.MARKERS),C(e).remove());else if((t=g.node.contents(n))&&0<t.length&&\"BR\"===t[0].tagName&&C(t[0]).remove(),t&&0<t.length&&\"BLOCKQUOTE\"===n.tagName){var r=t[0];for(C(e).before(V.MARKERS);r&&\"BR\"!==r.tagName;){var o=r;r=r.nextSibling,C(e).before(o)}r&&\"BR\"===r.tagName&&C(r).remove()}else C(e).after(C(n).html()).after(V.MARKERS),C(n).remove()}function a(){for(var e=g.el.querySelectorAll(\"blockquote:empty\"),t=0;t<e.length;t++)e[t].parentNode.removeChild(e[t])}function y(e,t,n){var r,o=g.node.deepestParent(e,[],!n);if(o&&\"BLOCKQUOTE\"===o.tagName)return v(e,o)?(r=g.html.defaultTag(),t?C(e).replaceWith(\"<br>\"+V.MARKERS):r?C(o).after(\"<\".concat(r,\">\").concat(V.MARKERS,\"<br></\").concat(r,\">\")):C(o).after(\"\".concat(V.MARKERS,\"<br>\")),C(e).remove()):S(e,t,n),!1;if(null===o)(r=g.html.defaultTag())&&g.node.isElement(e.parentNode)?C(e).replaceWith(\"<\".concat(r,\">\").concat(V.MARKERS,\"<br></\").concat(r,\">\")):!e.previousSibling||C(e.previousSibling).is(\"br\")||e.nextSibling?C(e).replaceWith(\"<br>\".concat(V.MARKERS)):C(e).replaceWith(\"<br>\".concat(V.MARKERS,\"<br>\"));else{var i=e,a=\"\";\"PRE\"!=o.tagName||e.nextSibling||(t=!0),g.node.isBlock(o)&&!t||(a=\"<br/>\");var s,l=\"\",c=\"\",d=\"\",f=\"\";(r=g.html.defaultTag())&&g.node.isBlock(o)&&(d=\"<\".concat(r,\">\"),f=\"</\".concat(r,\">\"),o.tagName===r.toUpperCase()&&(d=g.node.openTagString(C(o).clone().removeAttr(\"id\").get(0))));do{if(i=i.parentNode,!t||i!==o||t&&!g.node.isBlock(o))if(l+=g.node.closeTagString(i),i===o&&g.node.isBlock(o))c=d+c;else{var p=(\"A\"===i.tagName||g.node.hasClass(i,\"fa\"))&&v(e,i)?\"fr-to-remove\":\"\";c=\"isPasted\"===i.getAttribute(\"id\")?g.node.openTagString(C(i).clone().attr(\"style\",\"\").addClass(p).get(0))+c:g.node.openTagString(C(i).clone().addClass(p).get(0))+c}}while(i!==o);a=l+a+c+(e.parentNode===o&&g.node.isBlock(o)?\"\":V.INVISIBLE_SPACE)+V.MARKERS,g.node.isBlock(o)&&!C(o).find(\"*\").last().is(\"br\")&&C(o).append(\"<br/>\"),C(e).after('<span id=\"fr-break\"></span>'),C(e).remove(),o.nextSibling&&!g.node.isBlock(o.nextSibling)||g.node.isBlock(o)||C(o).after(\"<br>\"),s=(s=!t&&g.node.isBlock(o)?g.node.openTagString(o)+C(o).html()+f:g.node.openTagString(o)+C(o).html()+g.node.closeTagString(o)).replace(/<span id=\"fr-break\"><\\/span>/g,a),C(o).replaceWith(s)}}function S(e,t,n){var r=g.node.deepestParent(e,[],!n);if(null===r)g.html.defaultTag()&&e.parentNode===g.el?C(e).replaceWith(\"<\".concat(g.html.defaultTag(),\">\").concat(V.MARKERS,\"<br></\").concat(g.html.defaultTag(),\">\")):(e.nextSibling&&!g.node.isBlock(e.nextSibling)||C(e).after(\"<br>\"),C(e).replaceWith(\"<br>\".concat(V.MARKERS)));else if(e.previousSibling&&\"IMG\"==e.previousSibling.tagName||e.nextSibling&&\"IMG\"==e.nextSibling.tagName)C(e).replaceWith(\"<\"+g.html.defaultTag()+\">\"+V.MARKERS+\"<br></\"+g.html.defaultTag()+\">\");else{var o=e,i=\"\";\"PRE\"===r.tagName&&(t=!0),g.node.isBlock(r)&&!t||(i=\"<br>\");var a=\"\",s=\"\";do{var l=o;if(o=o.parentNode,\"BLOCKQUOTE\"===r.tagName&&g.node.isEmpty(l)&&!g.node.hasClass(l,\"fr-marker\")&&C(l).contains(e)&&C(l).after(e),\"BLOCKQUOTE\"!==r.tagName||!v(e,o)&&!m(e,o))if(!t||o!==r||t&&!g.node.isBlock(r)){a+=g.node.closeTagString(o);var c=\"A\"==o.tagName&&v(e,o)||g.node.hasClass(o,\"fa\")?\"fr-to-remove\":\"\";s=g.node.openTagString(C(o).clone().addClass(c).removeAttr(\"id\").get(0))+s,g.opts.enter!==V.ENTER_DIV&&o===r&&\"DIV\"===r.tagName&&(a=\"<br>\",s=\"\")}else\"BLOCKQUOTE\"==r.tagName&&t&&(s=a=\"\")}while(o!==r);var d=r===e.parentNode&&g.node.isBlock(r)||e.nextSibling;if(\"BLOCKQUOTE\"===r.tagName)if(e.previousSibling&&g.node.isBlock(e.previousSibling)&&e.nextSibling&&\"BR\"===e.nextSibling.tagName&&(C(e.nextSibling).after(e),e.nextSibling&&\"BR\"===e.nextSibling.tagName&&C(e.nextSibling).remove()),t)i=a+i+V.MARKERS+s;else{var f=g.html.defaultTag();i=\"\".concat(a+i+(f?\"<\".concat(f,\">\"):\"\")+V.MARKERS,\"<br>\").concat(f?\"</\".concat(f,\">\"):\"\").concat(s)}else i=a+i+s+(d?\"\":V.INVISIBLE_SPACE)+V.MARKERS;C(e).replaceWith('<span id=\"fr-break\"></span>');var p=g.node.openTagString(r)+C(r).html()+g.node.closeTagString(r);p=p.replace(/<span id=\"fr-break\"><\\/span>/g,i),C(r).replaceWith(p)}}function N(e){var t=e.getBoundingClientRect(),n=window.pageXOffset||document.documentElement.scrollLeft,r=window.pageYOffset||document.documentElement.scrollTop;return{top:t.top+r,left:t.left+n}}function T(){var e=g.selection.get(),t=null;if(g.selection.inEditor()&&e.rangeCount)for(var n=g.selection.ranges(),r=0;r<n.length;r++){var o=n[r];t=g.selection.rangeElement(o.startContainer,o.startOffset);break}return t}return{enter:function M(e){var t=g.markers.insert();if(!t)return!0;for(var n=t.parentNode;n&&!g.node.isElement(n);){if(\"false\"===n.getAttribute(\"contenteditable\"))return C(t).replaceWith(V.MARKERS),g.selection.restore(),!1;if(\"true\"===n.getAttribute(\"contenteditable\"))break;n=n.parentNode}g.el.normalize();var r=!1;0<C(t).parentsUntil(g.$el,\"BLOCKQUOTE\").length&&(r=!0),C(t).parentsUntil(g.$el,\"TD, TH\").length&&(r=!1),h(t)?!b(t)||e||r?y(t,e,r):g.cursorLists._endEnter(t):u(t)?!b(t)||e||r?function f(e,t,n){var r,o=g.node.deepestParent(e,[],!n);if(o&&\"TABLE\"===o.tagName)return C(o).find(\"td, th\").first().prepend(e),f(e,t,n);if(o&&\"BLOCKQUOTE\"===o.tagName)if(m(e,o)){if(!t)return(r=g.html.defaultTag())?C(o).before(\"<\".concat(r,\">\").concat(V.MARKERS,\"<br></\").concat(r,\">\")):C(o).before(\"\".concat(V.MARKERS,\"<br>\")),C(e).remove(),!1}else v(e,o)?y(e,t,!0):S(e,t,!0);if(null===o)(r=g.html.defaultTag())&&g.node.isElement(e.parentNode)?C(e).replaceWith(\"<\".concat(r,\">\").concat(V.MARKERS,\"<br></\").concat(r,\">\")):C(e).replaceWith(\"<br>\".concat(V.MARKERS));else{if(r=g.html.defaultTag(),g.node.isBlock(o))if(\"PRE\"===o.tagName&&(t=!0),t)C(e).remove(),C(o).prepend(\"<br>\".concat(V.MARKERS));else if(e.nextSibling&&\"IMG\"==e.nextSibling.tagName||e.nextSibling&&e.nextSibling.nextElementSibling&&\"IMG\"==e.nextSibling.nextElementSibling)C(e).replaceWith(\"<\"+g.html.defaultTag()+\">\"+V.MARKERS+\"<br></\"+g.html.defaultTag()+\">\");else{if(g.node.isEmpty(o,!0))return y(e,t,n);if(g.opts.keepFormatOnDelete||\"DIV\"===o.tagName||\"div\"===g.html.defaultTag())if(!g.opts.keepFormatOnDelete&&\"DIV\"===o.tagName||\"div\"===g.html.defaultTag())C(o).before(\"<\"+g.html.defaultTag()+\"><br></\"+g.html.defaultTag()+\">\");else if(g.opts.keepFormatOnDelete&&!g.opts.htmlUntouched&&\"DIV\"!==o.tagName&&\"div\"!==g.html.defaultTag()&&u(g.selection.get().focusNode))C(o).before(\"\".concat(g.node.openTagString(C(o).clone().removeAttr(\"id\").get(0)),\"<br>\").concat(g.node.closeTagString(o)));else{for(var i=e,a=V.INVISIBLE_SPACE;i!==o&&!g.node.isElement(i);)i=i.parentNode,a=g.node.openTagString(i)+a+g.node.closeTagString(i);C(o).before(a)}else C(o).before(\"\".concat(g.node.openTagString(C(o).clone().removeAttr(\"id\").get(0)),\"<br>\").concat(g.node.closeTagString(o)))}else C(o).before(\"<br>\");C(e).remove()}}(t,e,r):g.cursorLists._startEnter(t):!b(t)||e||r?S(t,e,r):g.cursorLists._middleEnter(t),function p(){g.$el.find(\".fr-to-remove\").each(function(){for(var e=g.node.contents(this),t=0;t<e.length;t++)e[t].nodeType===Node.TEXT_NODE&&(e[t].textContent=e[t].textContent.replace(/\\u200B/g,\"\"));C(this).replaceWith(this.innerHTML)})}(),g.html.fillEmptyBlocks(!0),g.opts.htmlUntouched||(g.html.cleanEmptyTags(),g.clean.lists(),g.spaces.normalizeAroundCursor()),g.selection.restore();var o=g.o_win.innerHeight;if(g.$oel[0].offsetHeight>o){var i=T();if(i){var a=N(i);a=a.top;var s=i.getBoundingClientRect().top;g.opts.scrollableContainer&&g.opts.enter!==V.ENTER_BR&&\"BR\"===i.tagName&&s+20===o&&(s=a=i.parentNode.offsetTop),i.parentNode&&\"TD\"===i.parentNode.tagName&&o<s?g.o_win.scroll(0,s-50):s<0?g.o_win.scroll(0,a-80):g.opts.scrollableContainer&&o<s+20?g.o_win.scroll(0,a-o+50):g.opts.scrollableContainer&&s+2*g.$tb.height()>g.$sc[0].scrollTop+C(g.$sc).height()&&g.$sc[0].scroll(0,a-C(g.$sc).height()+2*g.$tb.height())}}else if(g.opts.scrollableContainer&&g.opts.toolbarSticky){var l=T();if(l){var c=N(l);c=c.top;var d=l.getBoundingClientRect().top;g.opts.enter!==V.ENTER_BR&&\"BR\"===l.tagName&&(d=c=l.parentNode.offsetTop),(g.opts.iframe&&d+2*g.$tb.height()>g.$sc[0].scrollTop+C(g.$sc).height()||d+2*g.$tb.height()>C(g.$sc).height())&&g.$sc[0].scroll(0,c-C(g.$sc).height()+2*g.$tb.height())}}},backspace:function s(){var e=!1,t=g.markers.insert();if(!t)return!0;for(var n=t.parentNode;n&&!g.node.isElement(n);){if(\"false\"===n.getAttribute(\"contenteditable\"))return C(t).replaceWith(V.MARKERS),g.selection.restore(),!1;if(n.innerText.length&&\"true\"===n.getAttribute(\"contenteditable\"))break;n=n.parentNode}g.el.normalize();var r=t.previousSibling;if(r){var o=r.textContent;o&&o.length&&8203===o.charCodeAt(o.length-1)&&(1===o.length?C(r).remove():r.textContent=r.textContent.substr(0,o.length-L(o)))}return h(t)?b(t)&&m(t,C(t).parents(\"li\").first().get(0))?g.cursorLists._backspace(t):e=E(t):u(t)?b(t)&&m(t,C(t).parents(\"li\").first().get(0))?g.cursorLists._backspace(t):function c(e){for(var t=0<C(e).parentsUntil(g.$el,\"BLOCKQUOTE\").length,n=g.node.deepestParent(e,[],!t),r=n;n&&!n.previousSibling&&\"BLOCKQUOTE\"!==n.tagName&&n.parentElement!==g.el&&!g.node.hasClass(n.parentElement,\"fr-inner\")&&V.SIMPLE_ENTER_TAGS.indexOf(n.parentElement.tagName)<0;)n=n.parentElement;if(n&&\"BLOCKQUOTE\"===n.tagName){var o=g.node.deepestParent(e,[C(e).parentsUntil(g.$el,\"BLOCKQUOTE\").get(0)]);o&&o.previousSibling&&(r=n=o)}if(null!==n){var i,a=n.previousSibling;if(g.node.isBlock(n)&&g.node.isEditable(n))if(a&&V.NO_DELETE_TAGS.indexOf(a.tagName)<0){if(g.node.isDeletable(a))C(a).remove(),C(e).replaceWith(V.MARKERS);else if(g.node.isEditable(a))if(g.node.isBlock(a))if(g.node.isEmpty(a)&&!g.node.isList(a))C(a).remove(),C(e).after(g.opts.keepFormatOnDelete?V.INVISIBLE_SPACE:\"\");else{if(g.node.isList(a)&&(a=C(a).find(\"li\").last().get(0)),(i=g.node.contents(a)).length&&\"BR\"===i[i.length-1].tagName&&C(i[i.length-1]).remove(),\"BLOCKQUOTE\"===a.tagName&&\"BLOCKQUOTE\"!==n.tagName)for(i=g.node.contents(a);i.length&&g.node.isBlock(i[i.length-1]);)a=i[i.length-1],i=g.node.contents(a);else if(\"BLOCKQUOTE\"!==a.tagName&&\"BLOCKQUOTE\"===r.tagName)for(i=g.node.contents(r);i.length&&g.node.isBlock(i[0]);)r=i[0],i=g.node.contents(r);if(g.node.isEmpty(n))C(e).remove(),g.selection.setAtEnd(a,!0);else{C(e).replaceWith(V.MARKERS);var s=a.childNodes;g.node.isBlock(s[s.length-1])?C(s[s.length-1]).append(r.innerHTML):C(a).append(r.innerHTML)}C(r).remove(),g.node.isEmpty(n)&&C(n).remove()}else C(e).replaceWith(V.MARKERS),\"BLOCKQUOTE\"===n.tagName&&a.nodeType===Node.ELEMENT_NODE?C(a).remove():(C(a).after(g.node.isEmpty(n)?\"\":C(n).html()),C(n).remove(),\"BR\"===a.tagName&&C(a).remove())}else if(a)8203===n.textContent.charCodeAt()&&n.childNodes[1]&&\"BR\"===n.childNodes[1].tagName&&n.tagName.toLowerCase()===g.html.defaultTag()&&n.previousSibling&&\"TABLE\"===n.previousSibling.tagName&&C(n).remove();else if(n&&\"BLOCKQUOTE\"===n.tagName&&0===C(n).text().replace(/\\u200B/g,\"\").length)C(n).remove();else{var l=n.nextSibling;g.node.isEmpty(n)&&n.parentNode&&g.node.isEditable(n.parentNode)&&!l&&(n.parentNode!=g.el&&\"TD\"!==n.parentNode.tagName?C(n.parentNode).remove():n.parentNode!=g.el&&\"TD\"===n.parentNode.tagName&&C(n).remove())}}}(t):e=E(t),C(t).remove(),a(),g.html.fillEmptyBlocks(!0),g.opts.htmlUntouched||(g.html.cleanEmptyTags(),g.clean.lists(),g.spaces.normalizeAroundCursor()),g.selection.restore(),e},del:function r(){var e=g.markers.insert();if(!e)return!1;if(g.el.normalize(),h(e))if(b(e))if(0===C(e).parents(\"li\").first().find(\"ul, ol\").length)g.cursorLists._del(e);else{var t=C(e).parents(\"li\").first().find(\"ul, ol\").first().find(\"li\").first();(t=t.find(g.html.blockTagsQuery()).get(-1)||t).prepend(e),g.cursorLists._backspace(e)}else i(e);else u(e),n(e);C(e).remove(),a(),g.html.fillEmptyBlocks(!0),g.opts.htmlUntouched||(g.html.cleanEmptyTags(),g.clean.lists()),g.spaces.normalizeAroundCursor(),g.selection.restore()},isAtEnd:v,isAtStart:m}},V.MODULES.data=function(f){function p(e){return e}function c(e){for(var t=e.toString(),n=0,r=0;r<t.length;r++)n+=parseInt(t.charAt(r),10);return 10<n?n%9+1:n}function d(e,t,n){for(var r=Math.abs(n);0<r--;)e-=t;return n<0&&(e+=123),e}function h(e){return e&&\"block\"!==e.css(\"display\")?(e.remove(),!0):e&&0===f.helpers.getPX(e.css(\"height\"))?(e.remove(),!0):!(!e||\"absolute\"!==e.css(\"position\")&&\"fixed\"!==e.css(\"position\")||(e.remove(),0))}function u(e){return e&&0===f.$box.find(e).length}function g(){if(10<e&&(f[p(M(\"0ppecjvc==\"))](),setTimeout(function(){L.FE=null},10)),!f.$box)return!1;f.$wp.prepend(M(p(M(N)))),v=f.$wp.find(\"> div\").first(),b=v.find(\"> a\"),\"rtl\"===f.opts.direction&&v.css(\"left\",\"auto\").css(\"right\",0).attr(\"direction\",\"rtl\"),e++}function C(e){for(var t=[M(\"9qqG-7amjlwq==\"),M(\"KA3B3C2A6D1D5H5H1A3==\"),M(\"3B9B3B5F3C4G3E3==\"),M(\"QzbzvxyB2yA-9m==\"),M(\"ji1kacwmgG5bc==\"),M(\"nmA-13aogi1A3c1jd==\"),M(\"BA9ggq==\"),M(\"emznbjbH3fij==\"),M(\"tkC-22d1qC-13sD1wzF-7==\"),M(\"tA3jjf==\"),M(\"1D1brkm==\")],n=0;n<t.length;n++)if(String.prototype.endsWith||(String.prototype.endsWith=function(e,t){return(void 0===t||t>this.length)&&(t=this.length),this.substring(t-e.length,t)===e}),e.endsWith(t[n]))return!0;return!1}function m(){var e=M(p(n)),t=M(p(\"tzgatD-13eD1dtdrvmF3c1nrC-7saQcdav==\")).split(\".\");try{return window.parent.document.querySelector(e)&&window[t[1]][t[2]]}catch(e){return!1}}var v,b,L=f.$,E=\"sC-7OB2fwhVC4vsG-7ohPA4ZD4D-8f1J3stzB-11bFE2FC1A3NB2IF1HE1TH4WB8eB-11zVG2F3I3yYB5ZG4CB2DA15CC5AD3F1A1KG1oLA10B1A6wQF1H3vgale2C4F4XA2qc2A5D5B3pepmriKB3OE1HD1fUC10pjD-11E-11TB4YJ3bC-16zE-11yc1B2CE2BC3jhjKC1pdA-21OA6C1D5B-8vF4QA11pD6sqf1C3lldA-16BD4A2H3qoEA7bB-16rmNH5H1F1vSB7RE2A3TH4YC5A5b1A4d1B3whepyAC3AA2zknC3mbgf1SC4WH4PD8TC5ZB2C3H3jb2A5ZA2EF2aoFC5qqHC4B1H1zeGA7UA5RF4TA29TA6ZC4d1C3hyWA10A3rBB2E3decorationRD3QC10UD3E6E6ZD2F3F3fme2E5uxxrEC9C3E4fB-11azhHB1LD7D6VF4VVTPC6b1C4TYG3qzDD6B3B3AH4I2H2kxbHE1JD1yihfd1QD6WB1D4mhrc1B5rvFG3A14A7cDA2OC1AA1JB5zC-16KA6WB4C-8wvlTB5A5lkZB2C2C7zynBD2D2bI-7C-21d1HE2cubyvPC8A6VB3aroxxZE4C4F4e1I2BE1WjdifH1H4A14NA1GB1YG-10tWA3A14A9sVA2C5XH2A29b2A6gsleGG2jaED2D-13fhE1OA8NjwytyTD4e1sc1D-16ZC3B5C-9e1C2FB6EFF5B2C2JH4E1C2tdLE5A3UG4G-7b2D3B4fA-9oh1G3kqvB4AG3ibnjcAC6D2B1cDA9KC2QA6bRC4VA30RB8hYB2A4A-8h1A21A2B2==\",y=\"7D4YH4fkhHB3pqDC3H2E1fkMD1IB1NF1D3QD9wB5rxqlh1A8c2B4ZA3FD2AA6FB5EB3jJG4D2J-7aC-21GB6PC5RE4TC11QD6XC4XE3XH3mlvnqjbaOA2OC2BE6A1fmI-7ujwbc1G5f1F3e1C11mXF4owBG3E1yD1E4F1D2D-8B-8C-7yC-22HD1MF5UE4cWA3D8D6a1B2C3H3a3I3sZA4B3A2akfwEB3xHD5D1F1wIC11pA-16xdxtVI2C9A6YC4a1A2F3B2GA6B4C3lsjyJB1eMA1D-11MF5PE4ja1D3D7byrf1C3e1C7D-16lwqAF3H2A1B-21wNE1MA1OG1HB2A-16tSE5UD4RB3icRA4F-10wtwzBB3E1C3CC2DA8LA2LA1EB1kdH-8uVB7decorg1J2B7B6qjrqGI2J1C6ijehIB1hkemC-13hqkrH4H-7QD6XF5XF3HLNAC3CB2aD2CD2KB10B4ycg1A-8KA4H4B11jVB5TC4yqpB-21pd1E4pedzGB6MD5B3ncB-7MA4LD2JB6PD5uH-8TB9C7YD5XD2E3I3jmiDB3zeimhLD8E2F2JC1H-9ivkPC5lG-10SB1D3H3A-21rc1A3d1E3fsdqwfGA2KA1OrC-22LA6D1B4afUB16SC7AitC-8qYA11fsxcajGA15avjNE2A-9h1hDB16B9tPC1C5F5UC1G3B8d2A5d1D4RnHJ3C3JB5D3ucMG1yzD-17hafjC-8VD3yWC6e1YD2H3ZE2C8C5oBA3H3D2vFA4WzJC4C2i1A-65fNB8afWA1H4A26mvkC-13ZB3E3h1A21BC4eFB2GD2AA5ghqND2A2B2==\",n=\"MekC-11nB-8tIzpD7pewxvzC6mD-16xerg1==\",S=\"lC4B3A3B2B5A1C2E4G1A2==\",N=\"sC-7OB2fwhVC4vsG-7ohPA4ZD4D-8f1J3stzB-11bFE2EE1MA2ND1KD1IE4cA-21pSD2D5ve1G3h1A8b1E5ZC3CD2FA16mC5OC5E1hpnG1NA10B1D7hkUD4I-7b2C3C5nXD2E3F3whidEC2EH3GI2mJE2E2bxci1WA10VC7pllSG2F3A7xd1A4ZC3DB2aaeGA2DE4H2E1j1ywD-13FD1A3VE4WA3D8C6wuc1A2hf1B5B7vnrrjA1B9ic1mpbD1oMB1iSB7rWC4RI4G-7upB6jd1A2F3H2EA4FD3kDF4A2moc1anJD1TD4VI4b2C7oeQF4c1E3XC7ZA3C3G3uDB2wGB6D1JC4D1JD4C1hTE6QC5pH4pD3C-22D7c1A3textAA4gdlB2mpozkmhNC1mrxA3yWA5edhg1I2H3B7ozgmvAI3I2B5GD1LD2RSNH1KA1XA5SB4PA3sA9tlmC-9tnf1G3nd1coBH4I2I2JC3C-16LE6A1tnUA3vbwQB1G3f1A20a3A8a1C6pxAB2eniuE1F3kH2lnjB2hB-16XA5PF1G4zwtYA5B-11mzTG2B9pHB3BE2hGH3B3B2cMD5C1F1wzPA8E7VG5H5vD3H-7C8tyvsVF2I1G2A5fE3bg1mgajoyxMA4fhuzSD8aQB2B4g1A20ukb1A4B3F3GG2CujjanIC1ObiB11SD1C5pWC1D4YB8YE5FE-11jXE2F-7jB4CC2G-10uLH4E1C2tA-13yjUH5d1H1A7sWD5E4hmjF-7pykafoGA16hDD4joyD-8OA33B3C2tC7cRE4SA31a1B8d1e2A4F4g1A2A22CC5zwlAC2C1A12==\",T=function(){for(var e=0,t=document.domain,n=t.split(\".\"),r=\"_gd\".concat((new Date).getTime());e<n.length-1&&-1===document.cookie.indexOf(\"\".concat(r,\"=\").concat(r));)t=n.slice(-1-++e).join(\".\"),document.cookie=\"\".concat(r,\"=\").concat(r,\";domain=\").concat(t,\";\");return document.cookie=\"\".concat(r,\"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=\").concat(t,\";\"),(t||\"\").replace(/(^\\.*)|(\\.*$)/g,\"\")}(),M=p(function A(e){if(!e)return e;for(var t=\"\",n=p(\"charCodeAt\"),r=p(\"fromCharCode\"),o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".indexOf(e[0]),i=1;i<e.length-2;i++){for(var a=c(++o),s=e[n](i),l=\"\";/[0-9-]/.test(e[i+1]);)l+=e[++i];s=d(s,a,l=parseInt(l,10)||0),s^=o-1&31,t+=String[r](s)}return t}),e=0;return{_init:function x(){var e=f.opts.key||[\"\"],t=M(p(\"ziRA1E3B9pA5B-11D-11xg1A3ZB5D1D4B-11ED2EG2pdeoC1clIH4wB-22yQD5uF4YE3E3A9==\"));\"string\"==typeof e&&(e=[e]);for(var n,r,o,i=!(f.ul=!0),a=0,s=0;s<e.length;s++){var l=(r=e[s],4===(o=(M(r)||\"\").split(\"|\")).length&&\"V3\"===o[0]?[o[1],o[3],o[2]]:[null,null,\"\"]),c=l[2];if(c===M(p(M(\"LGnD1KNZf1CPBYCAZB-8F3UDSLLSG1VFf1A3C2==\")))||0<=c.indexOf(T,c.length-T.length)||C(T)||m()){if(null!==(n=l[1])&&!(0==n.indexOf(\"TRIAL\")?(n=new Date(n.replace(/TRIAL/,\"\")),new Date(n)<new Date&&(E=y,1)):new Date(n)<new Date(M(S)))||!(0<(T||\"\").length)||C(T)||m()){f.ul=!1;break}i=!0,N=E,a=l[0]||-1}}var d=new Image;!0===f.ul&&(g(),d.src=i?\"\".concat(p(M(t)),\"e=\").concat(a):\"\".concat(p(M(t)),\"u\")),!0===f.ul&&(f.events.on(\"contentChanged\",function(){(function e(){return h(v)||h(b)||u(v)||u(b)})()&&g()}),f.events.on(\"html.get\",function(e){return e+M(\"qD2H-9G3ioD-17qA1tE1B-8qI3A4hA-13C-11E2C1njfldD1E6pg1C-8sC3hfbkcD2G3stC-22gqgB3G2B-7vtoA4nweeD1A31A15B9uC-16A1F5dkykdc1B8dE-11bA3F2D3A9gd1E7F2tlI-8H-7vtxB2A5B2C3B2F2B5A6ldbyC4iqC-22D-17E-13mA3D2dywiB3oxlvfC1H4C2TjqbzlnI3ntB4E3qA2zaqsC6D3pmnkoE3C6D5wvuE3bwifdhB6hch1E4xibD-17dmrC1rG-7pntnF6nB-8F1D2A11C8plrkmF2F3MC-16bocqA2WwA-21ayeA1C4d1isC-22rD-13D6DfjpjtC2E6hB2G2G4A-7D2==\")})),f.events.on(\"html.set\",function(){var e=f.el.querySelector('[data-f-id=\"pbf\"]');e&&L(e).remove()}),f.events.on(\"destroy\",function(){v&&v.length&&v.remove()},!0)}}},V.MODULES.edit=function(t){function e(){if(t.browser.mozilla)try{t.doc.execCommand(\"enableObjectResizing\",!1,\"false\"),t.doc.execCommand(\"enableInlineTableEditing\",!1,\"false\")}catch(e){}if(t.browser.msie)try{t.doc.body.addEventListener(\"mscontrolselect\",function(e){return e.srcElement.focus(),!1})}catch(e){}}var n=!1;function r(){return n}return{_init:function o(){t.events.on(\"focus\",function(){r()?t.edit.off():t.edit.on()})},on:function i(){t.$wp?(t.$el.attr(\"contenteditable\",!0),t.$el.removeClass(\"fr-disabled\").attr(\"aria-disabled\",!1),e()):t.$el.is(\"a\")&&t.$el.attr(\"contenteditable\",!0),t.events.trigger(\"edit.on\",[],!0),n=!1},off:function a(){t.events.disableBlur(),t.$wp?(t.$el.attr(\"contenteditable\",!1),t.$el.addClass(\"fr-disabled\").attr(\"aria-disabled\",!0)):t.$el.is(\"a\")&&t.$el.attr(\"contenteditable\",!1),t.events.trigger(\"edit.off\"),t.events.enableBlur(),n=!0},disableDesign:e,isDisabled:r}},V.MODULES.format=function(x){var O=x.$;function w(e,t){var n=e;for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n+=\"id\"===r?\"#\".concat(t[r]):\"class\"===r?\".\".concat(t[r]):\"[\".concat(r,'=\"').concat(t[r],'\"]'));return n}function k(e,t){return!(!e||e.nodeType!==Node.ELEMENT_NODE)&&(e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector).call(e,t)}function v(e,t,n){var r,o,i,a={strong:{prop:\"font-weight\",val:\"bold\"},em:{prop:\"font-style\",val:\"italic\"}};if(e){var s=\"LI\"===e.tagName?e:O(e).parentsUntil(x.$el,\"li\").get(0),l=O(s).find(\".fr-marker[data-type=false]\").get(0);if(\"LI\"!==e.parentNode.parentNode.tagName||!l||null!=l.previousSibling){if(x.node.isBlock(e)&&e.hasAttribute(\"contenteditable\")&&\"false\"===e.getAttribute(\"contenteditable\")||e.parentNode&&e.parentNode.hasAttribute(\"contenteditable\")&&\"false\"===e.parentNode.getAttribute(\"contenteditable\")){if(e.nextSibling&&O(e.nextSibling).hasClass(\"fr-marker\"))return;if(e.nextSibling)return void v(e.nextSibling,t,n);if(e.parentNode&&x.node.isEditable(e.parentNode))return void v(e.parentNode,t,n)}for(;e&&e.nodeType===Node.COMMENT_NODE;)e=e.nextSibling;if(e){if(x.node.isBlock(e)&&\"HR\"!==e.tagName&&\"LI\"!==e.tagName)return x.node.hasClass(e.firstChild,\"fr-marker\")?v(e.firstChild.nextSibling,t,n):v(e.firstChild,t,n),!1;var c=O(x.doc.createElement(t));c.attr(n),c.insertBefore(e),(r=b(e))&&(0<=[\"strong\",\"em\"].indexOf(t)||\"span\"===t&&n.hasOwnProperty(\"style\"))&&(i=\"span\"===t?(o=(a=n.style.replace(/;$/,\"\").split(\":\"))[0].trim(),a[1].trim()):(o=a[t].prop,a[t].val),\"background-color\"!==o&&(O(r).css(o,i),function u(e,t){var n,r=e.childNodes;for(n=0;n<r.length;n++)0<=[\"UL\",\"OL\",\"LI\"].indexOf(r[n].tagName)&&\"\"===r[n].style[t]&&O(r[n]).css(t,\"initial\")}(r,o)));for(var d=e;d&&!O(d).hasClass(\"fr-marker\")&&0===O(d).find(\".fr-marker\").length&&\"UL\"!==d.tagName&&\"OL\"!==d.tagName;){var f=d;if(\"SPAN\"===d.tagName&&O(d).hasClass(\"fr-tracking-deleted\"))d=d.nextSibling;else{if(x.node.isBlock(d)&&\"HR\"!==e.tagName)return v(d.firstChild,t,n),!1;if(\"SPAN\"===d.tagName&&x.node.isEditable(d))return c.is(\":empty\")&&c.remove(),v(d.firstChild,t,n),!1;if(d.tagName&&d.hasAttribute(\"contenteditable\")&&\"false\"===d.getAttribute(\"contenteditable\"))return void v(d.nextSibling,t,n);if(!x.node.isEditable(d.parentNode))return x.selection.restore(),void x.toolbar.disable();d=d.nextSibling,c.append(f)}}if(d)(O(d).find(\".fr-marker\").length||\"UL\"===d.tagName||\"OL\"===d.tagName)&&v(d.firstChild,t,n);else{for(var p=c.get(0).parentNode;p&&!p.nextSibling&&!x.node.isElement(p);)p=p.parentNode;if(p){var h=p.nextSibling;h&&(x.node.isBlock(h)?\"HR\"===h.tagName?v(h.nextSibling,t,n):v(h.firstChild,t,n):v(h,t,n))}}c.is(\":empty\")&&c.remove()}}}}function l(e,t){var n;if(void 0===t&&(t={}),t.style&&delete t.style,x.selection.isCollapsed()){x.markers.insert();var r=x.$el.find(\".fr-marker\");r.get(0).nextSibling&&x.node.isBlock(r.get(0).nextSibling)&&!r.get(0).previousSibling&&\"LI\"===r.get(0).parentNode.tagName&&r.get(0).nextSibling.prepend(r.get(0)),r.replaceWith(function l(e,t){var n=\"<\".concat(e);for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n+=\" \".concat(r,'=\"').concat(t[r],'\"'));return n+=\">\"}(e,t)+V.INVISIBLE_SPACE+V.MARKERS+function c(e){return\"</\".concat(e,\">\")}(e)),x.selection.restore()}else{x.selection.save();var o,i=x.$el.find('.fr-marker[data-type=\"true\"]').length&&x.$el.find('.fr-marker[data-type=\"true\"]').get(0).nextSibling;v(i,e,t),O(i).parent().find(\"a:empty\").remove();do{for(o=x.$el.find(\"\".concat(w(e,t),\" > \").concat(w(e,t))),n=0;n<o.length;n++)o[n].outerHTML=o[n].innerHTML}while(o.length);x.el.normalize();var a=x.el.querySelectorAll(\".fr-marker\");for(n=0;n<a.length;n++){var s=O(a[n]);!0===s.data(\"type\")?k(s.get(0).nextSibling,w(e,t))&&s.next().prepend(s):k(s.get(0).previousSibling,w(e,t))&&s.prev().append(s)}x.selection.restore()}}function $(e,t,n,r){if(!r){var o=!1;if(!0===e.data(\"type\"))for(;x.node.isFirstSibling(e.get(0))&&!e.parent().is(x.$el)&&!e.parent().is(\"ol\")&&!e.parent().is(\"ul\");)e.parent().before(e),o=!0;else if(!1===e.data(\"type\"))for(;x.node.isLastSibling(e.get(0))&&!e.parent().is(x.$el)&&!e.parent().is(\"ol\")&&!e.parent().is(\"ul\");)e.parent().after(e),o=!0;if(o)return!0}if(e.parents(t).length||void 0===t){var i,a=\"\",s=\"\",l=e.parent();if(\"A\"===l[0].tagName&&(l=l.parent()),l.is(x.$el)||x.node.isBlock(l.get(0)))return!1;for(;!(x.node.isBlock(l.parent().get(0))||void 0!==t&&k(l.get(0),w(t,n)));)a+=x.node.closeTagString(l.get(0)),s=x.node.openTagString(l.get(0))+s,l=l.parent();var c=e.get(0).outerHTML;return e.replaceWith('<span id=\"mark\"></span>'),i=l.html().replace(/<span id=\"mark\"><\\/span>/,a+x.node.closeTagString(l.get(0))+s+c+a+x.node.openTagString(l.get(0))+s),l.replaceWith(x.node.openTagString(l.get(0))+i+x.node.closeTagString(l.get(0))),!0}return!1}function c(e,t){void 0===t&&(t={}),t.style&&delete t.style;var n=x.selection.isCollapsed();x.selection.save();var r=x.$el.find(\".fr-marker\");if(e&&(r[0].parentNode.tagName===e.toUpperCase()||r[1].parentNode.tagName===e.toUpperCase())){var o=r[0];r[0].parentNode.tagName!==e.toUpperCase()&&(o=r[1]);for(var i=o.parentNode.previousSibling;null!=i;)i.nodeType===Node.TEXT_NODE&&(i.textContent=i.textContent.replace(/\\u200B/g,\"\")),i=i.previousSibling;for(var a=o.parentNode.nextSibling;null!=a;)a.nodeType===Node.TEXT_NODE&&(a.textContent=a.textContent.replace(/\\u200B/g,\"\")),a=a.nextSibling}for(var s=!0;s;){s=!1;for(var l=x.$el.find(\".fr-marker\"),c=0;c<l.length;c++){var d=O(l[c]),f=null;if(d.attr(\"data-cloned\")||n||(f=d.clone().removeClass(\"fr-marker\").addClass(\"fr-clone\"),d.data(\"type\")&&\"true\"===d.data(\"type\").toString()?d.attr(\"data-cloned\",!0).after(f):d.attr(\"data-cloned\",!0).before(f)),$(d,e,t,n)){s=!0;break}}}!function M(e,t,n,r){for(var o,i={strong:{prop:\"font-weight\",val:\"bold\"},em:{prop:\"font-style\",val:\"italic\"}},a=x.node.contents(e.get(0)),s=0;s<a.length;s++){var l=a[s];if(l.innerHTML&&8203==l.innerHTML.charCodeAt()&&l.tagName.toLocaleLowerCase()==n&&l.childNodes.length<2&&!x.helpers.isMobile()&&(l.outerHTML=l.innerHTML),x.node.hasClass(l,\"fr-marker\"))t=(t+1)%2;else if(t)if(0<O(l).find(\".fr-marker\").length)t=M(O(l),t,n,r);else{(o=\"LI\"===l.tagName?l:O(l).parentsUntil(x.$el,\"li\").get(0))&&(void 0===n||0<=[\"strong\",\"em\"].indexOf(n))&&(n?O(o).css(i[n].prop,\"\"):o.style=\"\"),(o=l.parentNode!==x.el?l.parentNode:null)&&1===o.nodeType&&[\"p\",\"strong\",\"u\",\"em\",\"s\",\"sub\",\"sup\",\"a\"].indexOf(n)<0&&o.hasAttribute(\"style\")&&\"SPAN\"!==o.tagName&&\"LI\"!==o.tagName?o.style=\"\":l&&1===l.nodeType&&l.hasAttribute(\"style\")&&[\"p\",\"strong\",\"u\",\"em\",\"s\",\"sub\",\"sup\",\"a\"].indexOf(n)<0&&(x.browser.msie?O(l).attr(\"style\",\"\"):l.style=\"\");for(var c=O(l).find(n||\"*:not(br)\"),d=c.length-1;0<=d;d--){var f=c[d];(o=\"LI\"===f.tagName?f:O(f).parentsUntil(x.$el,\"li\").get(0))&&(!n||0<=[\"strong\",\"em\"].indexOf(n))&&(n?O(o).css(i[n].prop,\"\"):o.style=\"\"),\"A\"===f.tagName||x.node.isBlock(f)||x.node.isVoid(f)||void 0!==n&&!k(f,w(n,r))?x.node.isBlock(f)&&void 0===n&&\"TABLE\"!==l.tagName&&x.node.clearAttributes(f):x.node.hasClass(f,\"fr-clone\")||x.node.hasClass(f,\"fr-tracking-deleted\")||O(f).data(\"tracking\")||(f.outerHTML=f.innerHTML)}\"A\"!==l.tagName&&void 0===n&&l.nodeType===Node.ELEMENT_NODE&&!x.node.isVoid(l)||k(l,w(n,r))?x.node.isBlock(l)||(x.node.hasClass(l,\"fr-clone\")||x.opts.trackChangesEnabled?!x.node.hasClass(l,\"fr-clone\")&&x.opts.trackChangesEnabled&&l.parentNode&&(l.outerHTML=l.innerHTML):l.outerHTML=l.innerHTML):void 0===n&&l.nodeType===Node.ELEMENT_NODE&&x.node.isBlock(l)&&\"TABLE\"!==l.tagName&&x.node.clearAttributes(l)}else 0<O(l).find(\".fr-marker\").length&&(t=M(O(l),t,n,r))}return t}(x.$el,0,e,t),n||(x.$el.find(\".fr-marker\").remove(),x.$el.find(\".fr-clone\").removeClass(\"fr-clone\").addClass(\"fr-marker\")),n&&x.$el.find(\".fr-marker\").before(V.INVISIBLE_SPACE).after(V.INVISIBLE_SPACE),x.html.cleanEmptyTags(),x.el.normalize(),x.selection.restore();var p=x.win.getSelection()&&x.win.getSelection().anchorNode;if(p){var h=x.node.blockParent(p),u=!!p.textContent.replace(/\\u200B/g,\"\").length,g=x.win.getSelection().getRangeAt(0),C=g.startOffset,m=g.endOffset;x.selection.text().replace(/\\u200B/g,\"\").length||function A(e,t){if(e&&t){if(e.isSameNode(t)?e.textContent=e.textContent.replace(/\\u200B(?=.*\\u200B)/g,\"\"):e.nodeType===Node.TEXT_NODE&&(e.textContent=e.textContent.replace(/\\u200B/g,\"\")),!e.childNodes.length)return!1;Array.isArray(e.childNodes)&&e.childNodes.forEach(function(e){A(e,t)})}}(h,p);var v=x.win.getSelection().getRangeAt(0);if(p.nodeType===Node.TEXT_NODE){if(!u||!x.selection.text().length&&C===m){var b=p.textContent.search(/\\u200B/g)+1;if(x.browser.msie){var L=x.doc.createRange();x.selection.get().removeAllRanges(),L.setStart(p,b),L.setEnd(p,b),x.selection.get().addRange(L)}else\"a\"!==e&&(v.setStart(p,b),v.setEnd(p,b))}}else{var E,y,S=0,N=O(p).contents();if(x.browser.msie){for(;y=N[S];)y.nodeType===Node.TEXT_NODE&&0<=y.textContent.search(/\\u200B/g)&&(E=y),S++;E=O(E)}else E=N.filter(function(e){return e.nodeType===Node.TEXT_NODE&&0<=e.textContent.search(/\\u200B/g)});if(E.length&&!x.opts.trackChangesEnabled){var T=E.text().search(/\\u200B/g)+1;v.setStart(E.get(0),T),v.setEnd(E.get(0),T)}}}}function t(e,t){var n,r,o,i,a,s,l,c=null;if(x.selection.isCollapsed()){x.markers.insert();var d=(r=x.$el.find(\".fr-marker\")).parent();if(x.node.openTagString(d.get(0))==='<span style=\"'.concat(e,\": \").concat(d.css(e),';\">')){if(x.node.isEmpty(d.get(0)))c=O(x.doc.createElement(\"span\")).attr(\"style\",\"\".concat(e,\": \").concat(t,\";\")).html(\"\".concat(V.INVISIBLE_SPACE).concat(V.MARKERS)),d.replaceWith(c);else{var f={};f[\"style*\"]=\"\".concat(e,\":\"),$(r,\"span\",f,!0),r=x.$el.find(\".fr-marker\"),t?(c=O(x.doc.createElement(\"span\")).attr(\"style\",\"\".concat(e,\": \").concat(t,\";\")).html(\"\".concat(V.INVISIBLE_SPACE).concat(V.MARKERS)),r.replaceWith(c)):r.replaceWith(V.INVISIBLE_SPACE+V.MARKERS)}x.html.cleanEmptyTags()}else x.node.isEmpty(d.get(0))&&d.is(\"span\")?(r.replaceWith(V.MARKERS),d.css(e,t)):(r.get(0).nextSibling&&x.node.isBlock(r.get(0).nextSibling)&&!r.get(0).previousSibling&&\"LI\"===r.get(0).parentNode.tagName&&r.get(0).nextSibling.prepend(r.get(0)),c=O('<span style=\"'.concat(e,\": \").concat(t,';\">').concat(V.INVISIBLE_SPACE).concat(V.MARKERS,\"</span>\")),r.replaceWith(c));c&&L(c,e,t)}else{if(x.selection.save(),null===t||\"color\"===e&&0<x.$el.find(\".fr-marker\").parents(\"u, a\").length){var p=x.$el.find(\".fr-marker\");for(n=0;n<p.length;n++)if(!0===(r=O(p[n])).data(\"type\")||\"true\"===r.data(\"type\"))for(;x.node.isFirstSibling(r.get(0))&&!r.parent().is(x.$el)&&!x.node.isElement(r.parent().get(0))&&!x.node.isBlock(r.parent().get(0));)r.parent().before(r);else for(;x.node.isLastSibling(r.get(0))&&!r.parent().is(x.$el)&&!x.node.isElement(r.parent().get(0))&&!x.node.isBlock(r.parent().get(0));)r.parent().after(r)}for(var h=x.$el.find('.fr-marker[data-type=\"true\"]').get(0).nextSibling;h.firstChild;)h=h.firstChild;var u={\"class\":\"fr-unprocessed\"};for(t&&(u.style=\"\".concat(e,\": \").concat(t,\";\")),v(h,\"span\",u),x.$el.find(\".fr-marker + .fr-unprocessed\").each(function(){O(this).prepend(O(this).prev())}),x.$el.find(\".fr-unprocessed + .fr-marker\").each(function(){O(this).prev().append(O(this))}),(t||\"\").match(/\\dem$/)&&x.$el.find(\"span.fr-unprocessed\").removeClass(\"fr-unprocessed\");0<x.$el.find(\"span.fr-unprocessed\").length;){if(o=b(c=x.$el.find(\"span.fr-unprocessed\").first().removeClass(\"fr-unprocessed\")),c.parent().get(0).normalize(),c.parent().is(\"span\")&&1===c.parent().get(0).childNodes.length){var g=t;x.browser.msie&&!t&&(g=\"\"),c.parent().css(e,g);var C=c;c=c.parent(),C.replaceWith(C.html())}for(i=c.find(\"span\"),o&&\"background-color\"!==e&&(o.normalize(),i=O(o).find(\"span:not(.fr-unprocessed)\")),n=i.length-1;0<=n;n--)a=i[n],s=e,l=void 0,(l=O(a)).css(s,\"\"),\"\"===l.attr(\"style\")&&l.replaceWith(l.html());L(c,e,t)}}!function m(){var e;for(;0<x.$el.find(\".fr-split:empty\").length;)x.$el.find(\".fr-split:empty\").remove();x.$el.find(\".fr-split\").removeClass(\"fr-split\"),x.$el.find('[style=\"\"]').removeAttr(\"style\"),x.$el.find('[class=\"\"]').removeAttr(\"class\"),x.html.cleanEmptyTags();for(var t=x.$el.find(\"span\"),n=t.length-1;0<=n;n--){var r=t[n];r.attributes&&0!==r.attributes.length||O(r).replaceWith(r.innerHTML)}x.el.normalize();var o=x.$el.find(\"span[style] + span[style]\");for(e=0;e<o.length;e++){var i=O(o[e]),a=O(o[e]).prev();i.get(0).previousSibling===a.get(0)&&x.node.openTagString(i.get(0))===x.node.openTagString(a.get(0))&&(i.prepend(a.html()),a.remove())}x.$el.find(\"span[style] span[style]\").each(function(){if(0<=O(this).attr(\"style\").indexOf(\"font-size\")){var e=O(this).parents(\"span[style]\");e.attr(\"style\")&&0<=e.attr(\"style\").indexOf(\"background-color\")&&(O(this).attr(\"style\",\"\".concat(O(this).attr(\"style\"),\";\").concat(e.attr(\"style\"))),$(O(this),\"span[style]\",{},!1))}}),x.el.normalize(),x.selection.restore()}()}function b(e){var t,n,r,o,i,a;if(t=\"LI\"===e.tagName?e:O(e).parentsUntil(x.$el,\"li\").get(0)){if((a=x.selection.info(t)).atStart&&a.atEnd)return t;if(a.atStart&&!a.atEnd&&(n=O(t).find(\".fr-marker[data-type=false]\").get(0),r=O(n).parentsUntil(x.$el,\"li\").get(0),o=O(n).parent().get(0),(i=n.nextSibling)&&0<=[\"UL\",\"OL\"].indexOf(i.tagName)||!r.isSameNode(t)||!i&&(\"LI\"===o.tagName||!o.nextSibling||0<=[\"UL\",\"OL\"].indexOf(o.nextSibling.tagName)||x.node.isVoid(o.nextSibling))))return t}}function L(e,t,n){var r,o,i,a=e.parentsUntil(x.$el,\"span[style]\"),s=[];for(r=a.length-1;0<=r;r--)o=a[r],i=t,0===O(o).attr(\"style\").indexOf(\"\".concat(i,\":\"))||0<=O(o).attr(\"style\").indexOf(\";\".concat(i,\":\"))||0<=O(o).attr(\"style\").indexOf(\"; \".concat(i,\":\"))||s.push(a[r]);if((a=a.not(s)).length){for(var l=\"\",c=\"\",d=\"\",f=\"\",p=e.get(0);p=p.parentNode,O(p).addClass(\"fr-split\"),l+=x.node.closeTagString(p),c=x.node.openTagString(O(p).clone().addClass(\"fr-split\").get(0))+c,a.get(0)!==p&&(d+=x.node.closeTagString(p),f=x.node.openTagString(O(p).clone().addClass(\"fr-split\").get(0))+f),a.get(0)!==p;);var h=\"\".concat(l+x.node.openTagString(O(a.get(0)).clone().css(t,n||\"\").get(0))+f+e.css(t,\"\").get(0).outerHTML+d,\"</span>\").concat(c);e.replaceWith('<span id=\"fr-break\"></span>');var u=a.get(0).outerHTML;O(a.get(0)).replaceWith(u.replace(/<span id=\"fr-break\"><\\/span>/g,function(){return h}))}}function d(e,t){void 0===t&&(t={}),t.style&&delete t.style;var n=x.selection.ranges(0),r=n.startContainer;if(r.nodeType===Node.ELEMENT_NODE&&0<r.childNodes.length&&r.childNodes[n.startOffset]&&(r=r.childNodes[n.startOffset]),!n.collapsed&&r.nodeType===Node.TEXT_NODE&&n.startOffset===(r.textContent||\"\").length){for(;!x.node.isBlock(r.parentNode)&&!r.nextSibling;)r=r.parentNode;r.nextSibling&&(r=r.nextSibling)}for(var o=r;o&&o.nodeType===Node.ELEMENT_NODE&&!k(o,w(e,t));)o=o.firstChild;if(o&&o.nodeType===Node.ELEMENT_NODE&&k(o,w(e,t)))return!0;var i=r;for(i&&i.nodeType!==Node.ELEMENT_NODE&&(i=i.parentNode);i&&i.nodeType===Node.ELEMENT_NODE&&i!==x.el&&!k(i,w(e,t));)i=i.parentNode;return!(!i||i.nodeType!==Node.ELEMENT_NODE||i===x.el||!k(i,w(e,t)))}return{is:d,toggle:function f(e,t){if(x.browser.safari&&x.shared.safariSelection){var n=x.shared.safariSelection,r=n.startContainer,o=n.endContainer,i=n.startOffset,a=n.endOffset,s=x.doc.createRange();s.setStart(r,i),s.setEnd(o,a),x.selection.get().removeAllRanges(),x.selection.get().addRange(s),x.shared.safariSelection=null}d(e,t)?c(e,t):l(e,t)},apply:l,remove:c,applyStyle:t,removeStyle:function n(e){t(e,null)}}},V.MODULES.spaces=function(c){function r(e,t){var n=e.previousSibling,r=e.nextSibling,o=e.textContent,i=e.parentNode,a=[V.ENTER_P,V.ENTER_DIV,V.ENTER_BR];if(!c.html.isPreformatted(i)){t&&(o=o.replace(/[\\f\\n\\r\\t\\v ]{2,}/g,\" \"),r&&\"BR\"!==r.tagName&&!c.node.isBlock(r)||!(c.node.isBlock(i)||c.node.isLink(i)&&!i.nextSibling||c.node.isElement(i))||(o=o.replace(/[\\f\\n\\r\\t\\v ]{1,}$/g,\"\")),n&&\"BR\"!==n.tagName&&!c.node.isBlock(n)||!(c.node.isBlock(i)||c.node.isLink(i)&&!i.previousSibling||c.node.isElement(i))||(o=o.replace(/^[\\f\\n\\r\\t\\v ]{1,}/g,\"\")),(c.node.isBlock(r)||c.node.isBlock(n))&&(!n||n&&\"A\"!==n.tagName)&&(o=o.replace(/^[\\f\\n\\r\\t\\v ]{1,}/g,\"\")),\" \"===o&&(n&&c.node.isVoid(n)||r&&c.node.isVoid(r))&&!(n&&r&&c.node.isVoid(n)||r&&n&&c.node.isVoid(r))&&(o=\"\")),(!n&&c.node.isBlock(r)||!r&&c.node.isBlock(n))&&c.node.isBlock(i)&&i!==c.el&&(o=o.replace(/^[\\f\\n\\r\\t\\v ]{1,}/g,\"\")),t||(o=o.replace(new RegExp(V.UNICODE_NBSP,\"g\"),\" \"));for(var s=\"\",l=0;l<o.length;l++)32!=o.charCodeAt(l)||0!==l&&32!=s.charCodeAt(l-1)||!((c.opts.enter===V.ENTER_BR||c.opts.enter===V.ENTER_DIV)&&(n&&\"BR\"===n.tagName||r&&\"BR\"===r.tagName)||n&&r&&n.tagName===r.tagName||!(n&&r&&c.node.isVoid(n)||n&&r&&c.node.isVoid(r))||n&&r&&0<=[\"STRONG\",\"U\",\"EM\"].indexOf(n.tagName)&&\"BR\"===r.tagName)?s+=o[l]:s+=V.UNICODE_NBSP;c.browser.chrome&&1<s.length&&32===s.charCodeAt(s.length-1)&&(r&&r.nextSibling&&r.nextSibling.nextSibling&&\"BR\"===r.nextSibling.nextSibling.tagName||r&&\"BR\"===r.tagName)&&(s=s.substring(0,s.length-1)+V.UNICODE_NBSP),(!r||r&&c.node.isBlock(r)||r&&r.nodeType===Node.ELEMENT_NODE&&c.win.getComputedStyle(r)&&\"block\"===c.win.getComputedStyle(r).display)&&(!c.node.isVoid(n)||n&&-1!==[\"P\",\"DIV\",\"BR\"].indexOf(n.tagName)&&-1!==a.indexOf(c.opts.enter))&&(s=s.replace(/ $/,V.UNICODE_NBSP)),!n||c.node.isVoid(n)||c.node.isBlock(n)||1!==(s=s.replace(/^\\u00A0([^ $])/,\" $1\")).length||160!==s.charCodeAt(0)||!r||c.node.isVoid(r)||c.node.isBlock(r)||c.node.hasClass(n,\"fr-marker\")&&c.node.hasClass(r,\"fr-marker\")||(s=\" \"),t||(s=s.replace(/([^ \\u00A0])\\u00A0([^ \\u00A0])/g,\"$1 $2\")),e.textContent!==s&&(e.textContent=s)}}function l(e,t){if(void 0!==e&&e||(e=c.el),void 0===t&&(t=!1),!e.getAttribute||\"false\"!==e.getAttribute(\"contenteditable\"))if(e.nodeType===Node.TEXT_NODE)r(e,t);else if(e.nodeType===Node.ELEMENT_NODE)for(var n=c.doc.createTreeWalker(e,NodeFilter.SHOW_TEXT,c.node.filter(function(e){for(var t=e.parentNode;t&&t!==c.el;){if(\"STYLE\"===t.tagName||\"IFRAME\"===t.tagName)return!1;if(\"PRE\"===t.tagName)return!1;t=t.parentNode}return null!==e.textContent.match(/([ \\u00A0\\f\\n\\r\\t\\v]{2,})|(^[ \\u00A0\\f\\n\\r\\t\\v]{1,})|([ \\u00A0\\f\\n\\r\\t\\v]{1,}$)/g)&&!c.node.hasClass(e.parentNode,\"fr-marker\")}),!1);n.nextNode();)r(n.currentNode,t)}return{normalize:l,normalizeAroundCursor:function d(){for(var e=[],t=c.el.querySelectorAll(\".fr-marker\"),n=0;n<t.length;n++){for(var r=null,o=c.node.blockParent(t[n]),i=(r=o||t[n]).nextSibling,a=r.previousSibling;i&&\"BR\"===i.tagName;)i=i.nextSibling;for(;a&&\"BR\"===a.tagName;)a=a.previousSibling;r&&e.indexOf(r)<0&&e.push(r),a&&e.indexOf(a)<0&&e.push(a),i&&e.indexOf(i)<0&&e.push(i)}for(var s=0;s<e.length;s++)l(e[s])}}},V.INVISIBLE_SPACE=\"&#8203;\",V.HAIR_SPACE=\"&#8202;\",V.START_MARKER='<span class=\"fr-marker\" data-id=\"0\" data-type=\"true\" style=\"display: none; line-height: 0;\">'.concat(V.INVISIBLE_SPACE,\"</span>\"),V.END_MARKER='<span class=\"fr-marker\" data-id=\"0\" data-type=\"false\" style=\"display: none; line-height: 0;\">'.concat(V.INVISIBLE_SPACE,\"</span>\"),V.MARKERS=V.START_MARKER+V.END_MARKER,V.MODULES.markers=function(d){var f=d.$;function l(){if(!d.$wp)return null;try{var e=d.selection.ranges(0),t=e.commonAncestorContainer;if(t!==d.el&&!d.$el.contains(t))return null;var n=e.cloneRange(),r=e.cloneRange();n.collapse(!0);var o=f(d.doc.createElement(\"SPAN\")).addClass(\"fr-marker\").attr(\"style\",\"display: none; line-height: 0;\").html(V.INVISIBLE_SPACE).get(0);if(n.insertNode(o),o=d.$el.find(\"span.fr-marker\").get(0)){for(var i=o.nextSibling;i&&i.nodeType===Node.TEXT_NODE&&0===i.textContent.length;)f(i).remove(),i=d.$el.find(\"span.fr-marker\").get(0).nextSibling;return d.selection.clear(),d.selection.get().addRange(r),o}return null}catch(a){}}function c(){d.$el.find(\".fr-marker\").remove()}return{place:function p(e,t,n){var r,o,i;try{var a=e.cloneRange();if(a.collapse(t),a.insertNode(function l(e,t){var n=f(d.doc.createElement(\"SPAN\"));return n.addClass(\"fr-marker\").attr(\"data-id\",t).attr(\"data-type\",e).attr(\"style\",\"display: \".concat(d.browser.safari?\"none\":\"inline-block\",\"; line-height: 0;\")).html(V.INVISIBLE_SPACE),n.get(0)}(t,n)),!0===t)for(i=(r=d.$el.find('span.fr-marker[data-type=\"true\"][data-id=\"'.concat(n,'\"]')).get(0)).nextSibling;i&&i.nodeType===Node.TEXT_NODE&&0===i.textContent.length;)f(i).remove(),i=r.nextSibling;if(!0===t&&!e.collapsed){for(;!d.node.isElement(r.parentNode)&&!i;)-1</\\bfa\\b/g.test(r.parentNode.className)&&\"I\"===r.parentNode.tagName?f(r.parentNode).before(r):f(r.parentNode).after(r),i=r.nextSibling;if(i&&i.nodeType===Node.ELEMENT_NODE&&d.node.isBlock(i)&&\"HR\"!==i.tagName){for(o=[i];i=o[0],(o=d.node.contents(i))[0]&&d.node.isBlock(o[0]););f(i).prepend(f(r))}}if(!1===t&&!e.collapsed){if((i=(r=d.$el.find('span.fr-marker[data-type=\"false\"][data-id=\"'.concat(n,'\"]')).get(0)).previousSibling)&&i.nodeType===Node.ELEMENT_NODE&&d.node.isBlock(i)&&\"HR\"!==i.tagName){for(o=[i];i=o[o.length-1],(o=d.node.contents(i))[o.length-1]&&d.node.isBlock(o[o.length-1]););f(i).append(f(r))}(r.parentNode&&0<=[\"TD\",\"TH\"].indexOf(r.parentNode.tagName)||!r.previousSibling&&d.node.isBlock(r.parentElement))&&(r.parentNode.previousSibling&&!r.previousSibling?f(r.parentNode.previousSibling).append(r):0<=[\"TD\",\"TH\"].indexOf(r.parentNode.tagName)&&r.parentNode.firstChild===r&&(r.parentNode.previousSibling?f(r.parentNode.previousSibling).append(r):r.parentNode.parentNode&&r.parentNode.parentNode.previousSibling&&f(r.parentNode.parentNode.previousSibling).append(r)))}var s=d.$el.find('span.fr-marker[data-type=\"'.concat(t,'\"][data-id=\"').concat(n,'\"]')).get(0);return s&&(s.style.display=\"none\"),s}catch(c){return null}},insert:l,split:function a(){d.selection.isCollapsed()||d.selection.remove();var e=d.$el.find(\".fr-marker\").get(0);if(e||(e=l()),!e)return null;var t=d.node.deepestParent(e);if(t||(t=d.node.blockParent(e))&&\"LI\"!==t.tagName&&(t=null),t)if(d.node.isBlock(t)&&d.node.isEmpty(t))\"LI\"!==t.tagName||t.parentNode.firstElementChild!==t||d.node.isEmpty(t.parentNode)?f(t).replaceWith('<span class=\"fr-marker\"></span>'):f(t).append('<span class=\"fr-marker\"></span>');else if(d.cursor.isAtStart(e,t))f(t).before('<span class=\"fr-marker\"></span>'),f(e).remove();else if(d.cursor.isAtEnd(e,t))f(t).after('<span class=\"fr-marker\"></span>'),f(e).remove();else{for(var n=e,r=\"\",o=\"\";n=n.parentNode,r+=d.node.closeTagString(n),o=d.node.openTagString(n)+o,n!==t;);f(e).replaceWith('<span id=\"fr-break\"></span>');var i=d.node.openTagString(t)+f(t).html()+d.node.closeTagString(t);i=i.replace(/<span id=\"fr-break\"><\\/span>/g,\"\".concat(r,'<span class=\"fr-marker\"></span>').concat(o)),f(t).replaceWith(i)}return d.$el.find(\".fr-marker\").get(0)},insertAtPoint:function h(e){var t,n=e.clientX,r=e.clientY;c();var o=null;if(\"undefined\"!=typeof d.doc.caretPositionFromPoint?(t=d.doc.caretPositionFromPoint(n,r),(o=d.doc.createRange()).setStart(t.offsetNode,t.offset),o.setEnd(t.offsetNode,t.offset)):\"undefined\"!=typeof d.doc.caretRangeFromPoint&&(t=d.doc.caretRangeFromPoint(n,r),(o=d.doc.createRange()).setStart(t.startContainer,t.startOffset),o.setEnd(t.startContainer,t.startOffset)),null!==o&&\"undefined\"!=typeof d.win.getSelection){var i=d.win.getSelection();i.removeAllRanges(),i.addRange(o)}else if(\"undefined\"!=typeof d.doc.body.createTextRange)try{(o=d.doc.body.createTextRange()).moveToPoint(n,r);var a=o.duplicate();a.moveToPoint(n,r),o.setEndPoint(\"EndToEnd\",a),o.select()}catch(s){return!1}l()},remove:c}},V.MODULES.selection=function(E){var y=E.$;function s(){var e=\"\";return E.win.getSelection?e=E.win.getSelection():E.doc.getSelection?e=E.doc.getSelection():E.doc.selection&&(e=E.doc.selection.createRange().text),e.toString()}function L(){return E.win.getSelection?E.win.getSelection():E.doc.getSelection?E.doc.getSelection():E.doc.selection.createRange()}function f(e){var t=L(),n=[];if(t&&t.getRangeAt&&t.rangeCount){n=[];for(var r=0;r<t.rangeCount;r++)n.push(t.getRangeAt(r))}else n=E.doc.createRange?[E.doc.createRange()]:[];return void 0!==e?n[e]:n}function S(){var e=L();try{e.removeAllRanges?e.removeAllRanges():e.empty?e.empty():e.clear&&e.clear()}catch(t){}}function p(e,t){var n=e;return n.nodeType===Node.ELEMENT_NODE&&0<n.childNodes.length&&n.childNodes[t]&&(n=n.childNodes[t]),n.nodeType===Node.TEXT_NODE&&(n=n.parentNode),n}function N(){if(E.$wp){E.markers.remove();var e,t,n=f(),r=[];for(t=0;t<n.length;t++)if(n[t].startContainer!==E.doc||E.browser.msie){var o=(e=n[t]).collapsed,i=E.markers.place(e,!0,t),a=E.markers.place(e,!1,t);if(void 0!==i&&i||!o||(y(\".fr-marker\").remove(),E.selection.setAtEnd(E.el)),E.el.normalize(),E.browser.safari&&!o)try{(e=E.doc.createRange()).setStartAfter(i),e.setEndBefore(a),r.push(e)}catch(s){}}if(E.browser.safari&&r.length)for(E.selection.clear(),t=0;t<r.length;t++)E.selection.get().addRange(r[t])}}function T(){var e,t=E.el.querySelectorAll('.fr-marker[data-type=\"true\"]');if(!E.$wp)return E.markers.remove(),!1;if(0===t.length)return!1;if(E.browser.msie||E.browser.edge)for(e=0;e<t.length;e++)t[e].style.display=\"inline-block\";E.core.hasFocus()||E.browser.msie||E.browser.webkit||E.$el.focus(),S();var n=L();for(e=0;e<t.length;e++){var r=y(t[e]).data(\"id\"),o=t[e],i=E.doc.createRange(),a=E.$el.find('.fr-marker[data-type=\"false\"][data-id=\"'.concat(r,'\"]'));(E.browser.msie||E.browser.edge)&&a.css(\"display\",\"inline-block\");var s=null;if(0<a.length){a=a[0];try{for(var l=!1,c=o.nextSibling,d=null;c&&c.nodeType===Node.TEXT_NODE&&0===c.textContent.length;)c=(d=c).nextSibling,y(d).remove();for(var f=a.nextSibling;f&&f.nodeType===Node.TEXT_NODE&&0===f.textContent.length;)f=(d=f).nextSibling,y(d).remove();if(o.nextSibling===a||a.nextSibling===o){for(var p=o.nextSibling===a?o:a,h=p===o?a:o,u=p.previousSibling;u&&u.nodeType===Node.TEXT_NODE&&0===u.length;)u=(d=u).previousSibling,y(d).remove();if(u&&u.nodeType===Node.TEXT_NODE)for(;u&&u.previousSibling&&u.previousSibling.nodeType===Node.TEXT_NODE;)u.previousSibling.textContent+=u.textContent,u=u.previousSibling,y(u.nextSibling).remove();for(var g=h.nextSibling;g&&g.nodeType===Node.TEXT_NODE&&0===g.length;)g=(d=g).nextSibling,y(d).remove();if(g&&g.nodeType===Node.TEXT_NODE)for(;g&&g.nextSibling&&g.nextSibling.nodeType===Node.TEXT_NODE;)g.nextSibling.textContent=g.textContent+g.nextSibling.textContent,g=g.nextSibling,y(g.previousSibling).remove();if(u&&(E.node.isVoid(u)||E.node.isBlock(u))&&(u=null),g&&(E.node.isVoid(g)||E.node.isBlock(g))&&(g=null),u&&g&&u.nodeType===Node.TEXT_NODE&&g.nodeType===Node.TEXT_NODE){y(o).remove(),y(a).remove();var C=u.textContent.length;u.textContent+=g.textContent,y(g).remove(),E.spaces.normalize(u),i.setStart(u,C),i.setEnd(u,C),l=!0}else!u&&g&&g.nodeType===Node.TEXT_NODE?(y(o).remove(),y(a).remove(),E.opts.htmlUntouched||E.spaces.normalize(g),s=y(E.doc.createTextNode(\"\\u200b\")).get(0),y(g).before(s),i.setStart(g,0),i.setEnd(g,0),l=!0):!g&&u&&u.nodeType===Node.TEXT_NODE&&(y(o).remove(),y(a).remove(),E.opts.htmlUntouched||E.spaces.normalize(u),s=y(E.doc.createTextNode(\"\\u200b\")).get(0),y(u).after(s),i.setStart(u,u.textContent.length),i.setEnd(u,u.textContent.length),l=!0)}if(!l){var m=void 0,v=void 0;v=(E.browser.chrome||E.browser.edge)&&o.nextSibling===a?(m=M(a,i,!0)||i.setStartAfter(a),M(o,i,!1)||i.setEndBefore(o)):(o.previousSibling===a&&(a=(o=a).nextSibling),a.nextSibling&&\"BR\"===a.nextSibling.tagName||!a.nextSibling&&E.node.isBlock(o.previousSibling)||o.previousSibling&&\"BR\"===o.previousSibling.tagName||(o.style.display=\"inline\",a.style.display=\"inline\",s=y(E.doc.createTextNode(\"\\u200b\")).get(0)),m=M(o,i,!0)||y(o).before(s)&&i.setStartBefore(o),M(a,i,!1)||y(a).after(s)&&i.setEndAfter(a)),\"function\"==typeof m&&m(),\"function\"==typeof v&&v()}}catch(b){}}s&&y(s).remove();try{n.addRange(i)}catch(b){}}E.markers.remove()}function M(e,t,n){var r,o=e.previousSibling,i=e.nextSibling;return o&&i&&o.nodeType===Node.TEXT_NODE&&i.nodeType===Node.TEXT_NODE?(r=o.textContent.length,n?(i.textContent=o.textContent+i.textContent,y(o).remove(),y(e).remove(),E.opts.htmlUntouched||E.spaces.normalize(i),function(){t.setStart(i,r)}):(o.textContent+=i.textContent,y(i).remove(),y(e).remove(),E.opts.htmlUntouched||E.spaces.normalize(o),function(){t.setEnd(o,r)})):o&&!i&&o.nodeType===Node.TEXT_NODE?(r=o.textContent.length,n?(E.opts.htmlUntouched||E.spaces.normalize(o),function(){t.setStart(o,r)}):(E.opts.htmlUntouched||E.spaces.normalize(o),function(){t.setEnd(o,r)})):!(!i||o||i.nodeType!==Node.TEXT_NODE)&&(n?(E.opts.htmlUntouched||E.spaces.normalize(i),function(){t.setStart(i,0)}):(E.opts.htmlUntouched||E.spaces.normalize(i),function(){t.setEnd(i,0)}))}function A(){for(var e=f(),t=0;t<e.length;t++)if(!e[t].collapsed)return!1;return!0}function o(e){var t,n,r=!1,o=!1;if(E.win.getSelection){var i=E.win.getSelection();i.rangeCount&&((n=(t=i.getRangeAt(0)).cloneRange()).selectNodeContents(e),n.setEnd(t.startContainer,t.startOffset),r=a(n),n.selectNodeContents(e),n.setStart(t.endContainer,t.endOffset),o=a(n))}else E.doc.selection&&\"Control\"!==E.doc.selection.type&&((n=(t=E.doc.selection.createRange()).duplicate()).moveToElementText(e),n.setEndPoint(\"EndToStart\",t),r=a(n),n.moveToElementText(e),n.setEndPoint(\"StartToEnd\",t),o=a(n));return{atStart:r,atEnd:o}}function a(e){return\"\"===e.toString().replace(/[\\u200B-\\u200D\\uFEFF]/g,\"\")}function x(e,t){void 0===t&&(t=!0);var n=y(e).html();n&&n.replace(/\\u200b/g,\"\").length!==n.length&&y(e).html(n.replace(/\\u200b/g,\"\"));for(var r=E.node.contents(e),o=0;o<r.length;o++)r[o].nodeType!==Node.ELEMENT_NODE?y(r[o]).remove():(x(r[o],0===o),0===o&&(t=!1));if(e.nodeType===Node.TEXT_NODE){var i=y(document.createElement(\"span\")).attr(\"data-first\",\"true\").attr(\"data-text\",\"true\");y(e)[0].replaceWith(i[0])}else t&&y(e).attr(\"data-first\",!0)}function O(){return 0===y(this).find(\"fr-inner\").length}function h(){try{if(!E.$wp)return!1;for(var e=f(0).commonAncestorContainer;e&&!E.node.isElement(e);)e=e.parentNode;return!!E.node.isElement(e)}catch(t){return!1}}function r(e,t){if(!e||0<e.getElementsByClassName(\"fr-marker\").length)return!1;for(var n=e.firstChild;n&&(E.node.isBlock(n)||t&&!E.node.isVoid(n)&&n.nodeType===Node.ELEMENT_NODE);)n=(e=n).firstChild;e.innerHTML=V.MARKERS+e.innerHTML}function i(e,t){if(!e||0<e.getElementsByClassName(\"fr-marker\").length)return!1;for(var n=e.lastChild;n&&(E.node.isBlock(n)||t&&!E.node.isVoid(n)&&n.nodeType===Node.ELEMENT_NODE);)n=(e=n).lastChild;var r=E.doc.createElement(\"SPAN\");for(r.setAttribute(\"id\",\"fr-sel-markers\"),r.innerHTML=V.MARKERS;e.parentNode&&E.opts.htmlAllowedEmptyTags&&0<=E.opts.htmlAllowedEmptyTags.indexOf(e.tagName.toLowerCase());)e=e.parentNode;e.appendChild(r);var o=e.querySelector(\"#fr-sel-markers\");o.outerHTML=o.innerHTML}return{text:s,get:L,ranges:f,clear:S,element:function l(){var e=L();try{if(e.rangeCount){var t,n=f(0),r=n.startContainer;if(E.node.isElement(r)&&0===n.startOffset&&r.childNodes.length)for(;r.childNodes.length&&r.childNodes[0].nodeType===Node.ELEMENT_NODE;)r=r.childNodes[0];if(r.nodeType===Node.TEXT_NODE&&n.startOffset===(r.textContent||\"\").length&&r.nextSibling&&(r=r.nextSibling),r.nodeType===Node.ELEMENT_NODE){var o=!1;if(E.node.isElement(r)&&\"\"==r.textContent&&\"IMG\"==r.childNodes[0].tagName&&r.childNodes.length)for(;r.childNodes.length&&r.childNodes[0].nodeType===Node.ELEMENT_NODE;)r=r.childNodes[0];if(0<r.childNodes.length&&r.childNodes[n.startOffset]){for(t=r.childNodes[n.startOffset];t&&t.nodeType===Node.TEXT_NODE&&0===t.textContent.length;)t=t.nextSibling;if(t&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0),!o&&1<r.childNodes.length&&0<n.startOffset&&r.childNodes[n.startOffset-1]){for(t=r.childNodes[n.startOffset-1];t&&t.nodeType===Node.TEXT_NODE&&0===t.textContent.length;)t=t.nextSibling;t&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0)}}else!n.collapsed&&r.nextSibling&&r.nextSibling.nodeType===Node.ELEMENT_NODE&&(t=r.nextSibling)&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0);!o&&0<r.childNodes.length&&y(r.childNodes[0]).text().replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&[\"BR\",\"IMG\",\"HR\"].indexOf(r.childNodes[0].tagName)<0&&(r=r.childNodes[0])}for(;r.nodeType!==Node.ELEMENT_NODE&&r.parentNode;)r=r.parentNode;for(var i=r;i&&\"HTML\"!==i.tagName;){if(i===E.el)return r;i=y(i).parent()[0]}}}catch(a){}return E.el},endElement:function c(){var e=L();try{if(e.rangeCount){var t,n=f(0),r=n.endContainer;if(r.nodeType===Node.ELEMENT_NODE){var o=!1;0<r.childNodes.length&&r.childNodes[n.endOffset]&&y(r.childNodes[n.endOffset]).text()===s()?(r=r.childNodes[n.endOffset],o=!0):!n.collapsed&&r.previousSibling&&r.previousSibling.nodeType===Node.ELEMENT_NODE?(t=r.previousSibling)&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0):!n.collapsed&&0<r.childNodes.length&&r.childNodes[n.endOffset]&&(t=r.childNodes[n.endOffset].previousSibling).nodeType===Node.ELEMENT_NODE&&t&&t.textContent.replace(/\\u200B/g,\"\")===s().replace(/\\u200B/g,\"\")&&(r=t,o=!0),!o&&0<r.childNodes.length&&y(r.childNodes[r.childNodes.length-1]).text()===s()&&[\"BR\",\"IMG\",\"HR\"].indexOf(r.childNodes[r.childNodes.length-1].tagName)<0&&(r=r.childNodes[r.childNodes.length-1])}for(r.nodeType===Node.TEXT_NODE&&0===n.endOffset&&r.previousSibling&&r.previousSibling.nodeType===Node.ELEMENT_NODE&&(r=r.previousSibling);r.nodeType!==Node.ELEMENT_NODE&&r.parentNode;)r=r.parentNode;for(var i=r;i&&\"HTML\"!==i.tagName;){if(i===E.el)return r;i=y(i).parent()[0]}}}catch(a){}return E.el},save:N,restore:T,isCollapsed:A,isFull:function d(){if(A())return!1;E.selection.save();var e,t=E.el.querySelectorAll(\"td, th, img, br, iframe\");for(e=0;e<t.length;e++)(t[e].nextSibling||\"IMG\"===t[e].tagName||\"IFRAME\"===t[e].tagName)&&(t[e].innerHTML='<span class=\"fr-mk\" style=\"display: none;\">&nbsp;</span>'.concat(t[e].innerHTML));var n=!1,r=o(E.el);for(r.atStart&&r.atEnd&&(n=!0),t=E.el.querySelectorAll(\".fr-mk\"),e=0;e<t.length;e++)t[e].parentNode.removeChild(t[e]);return E.selection.restore(),n},inEditor:h,remove:function w(){if(A())return!0;var e;function t(e){for(var t=e.previousSibling;t&&t.nodeType===Node.TEXT_NODE&&0===t.textContent.length;){var n=t;t=t.previousSibling,y(n).remove()}return t}function n(e){for(var t=e.nextSibling;t&&t.nodeType===Node.TEXT_NODE&&0===t.textContent.length;){var n=t;t=t.nextSibling,y(n).remove()}return t}N();var r=E.$el.find('.fr-marker[data-type=\"true\"]');for(e=0;e<r.length;e++)for(var o=r[e];!(t(o)||E.node.isBlock(o.parentNode)||E.$el.is(o.parentNode)||E.node.hasClass(o.parentNode,\"fr-inner\"));)y(o.parentNode).before(o);var i=E.$el.find('.fr-marker[data-type=\"false\"]');for(e=0;e<i.length;e++){for(var a=i[e];!(n(a)||E.node.isBlock(a.parentNode)||E.$el.is(a.parentNode)||E.node.hasClass(a.parentNode,\"fr-inner\"));)y(a.parentNode).after(a);a.parentNode&&E.node.isBlock(a.parentNode)&&E.node.isEmpty(a.parentNode)&&!E.$el.is(a.parentNode)&&!E.node.hasClass(a.parentNode,\"fr-inner\")&&E.opts.keepFormatOnDelete&&y(a.parentNode).after(a)}if(function b(){for(var e=E.$el.find(\".fr-marker\"),t=0;t<e.length;t++)if(y(e[t]).parentsUntil('.fr-element, [contenteditable=\"true\"]','[contenteditable=\"false\"]').length)return!1;return!0}()){!function L(e,t){var n=E.node.contents(e.get(0));0<=[\"TD\",\"TH\"].indexOf(e.get(0).tagName)&&1===e.find(\".fr-marker\").length&&(E.node.hasClass(n[0],\"fr-marker\")||\"BR\"==n[0].tagName&&E.node.hasClass(n[0].nextElementSibling,\"fr-marker\"))&&e.attr(\"data-del-cell\",!0);for(var r=0;r<n.length;r++){var o=n[r];E.node.hasClass(o,\"fr-marker\")?t=(t+1)%2:t?0<y(o).find(\".fr-marker\").length?t=L(y(o),t):[\"TD\",\"TH\"].indexOf(o.tagName)<0&&!E.node.hasClass(o,\"fr-inner\")?!E.opts.keepFormatOnDelete||0<E.$el.find(\"[data-first]\").length||E.node.isVoid(o)?y(o).remove():x(o):E.node.hasClass(o,\"fr-inner\")?0===y(o).find(\".fr-inner\").length?y(o).html(\"<br>\"):y(o).find(\".fr-inner\").filter(O).html(\"<br>\"):(y(o).empty(),y(o).attr(\"data-del-cell\",!0)):0<y(o).find(\".fr-marker\").length&&(t=L(y(o),t))}return t}(E.$el,0);var s=E.$el.find('[data-first=\"true\"]');if(s.length)E.$el.find(\".fr-marker\").remove(),s.append(V.INVISIBLE_SPACE+V.MARKERS).removeAttr(\"data-first\"),s.attr(\"data-text\")&&s.replaceWith(s.html());else for(E.$el.find(\"table\").filter(function(){return 0<y(this).find(\"[data-del-cell]\").length&&y(this).find(\"[data-del-cell]\").length===y(this).find(\"td, th\").length}).remove(),E.$el.find(\"[data-del-cell]\").removeAttr(\"data-del-cell\"),r=E.$el.find('.fr-marker[data-type=\"true\"]'),e=0;e<r.length;e++){var l=r[e],c=l.nextSibling,d=E.$el.find('.fr-marker[data-type=\"false\"][data-id=\"'.concat(y(l).data(\"id\"),'\"]')).get(0);if(d){if(l&&(!c||c!==d)){var f=E.node.blockParent(l),p=E.node.blockParent(d),h=!1,u=!1;if(f&&0<=[\"UL\",\"OL\"].indexOf(f.tagName)&&(h=!(f=null)),p&&0<=[\"UL\",\"OL\"].indexOf(p.tagName)&&(u=!(p=null)),y(l).after(d),f!==p)if(null!==f||h)if(null!==p||u||0!==y(f).parentsUntil(E.$el,\"table\").length)f&&p&&0===y(f).parentsUntil(E.$el,\"table\").length&&0===y(p).parentsUntil(E.$el,\"table\").length&&!y(f).contains(p)&&!y(p).contains(f)&&(y(f).append(y(p).html()),y(p).remove());else{for(c=f;!c.nextSibling&&c.parentNode!==E.el;)c=c.parentNode;for(c=c.nextSibling;c&&\"BR\"!==c.tagName;){var g=c.nextSibling;y(f).append(c),c=g}c&&\"BR\"===c.tagName&&y(c).remove()}else{var C=E.node.deepestParent(l);C?(y(C).after(y(p).html()),y(p).remove()):0===y(p).parentsUntil(E.$el,\"table\").length&&(y(l).next().after(y(p).html()),y(p).remove())}}}else d=y(l).clone().attr(\"data-type\",!1),y(l).after(d)}}E.$el.find(\"li:empty\").remove(),E.opts.keepFormatOnDelete||E.html.fillEmptyBlocks(),E.html.cleanEmptyTags(!0),E.opts.htmlUntouched||(E.clean.lists(),E.$el.find(\"li:empty\").append(\"<br>\"),E.spaces.normalize());var m=E.$el.find(\".fr-marker\").last().get(0),v=E.$el.find(\".fr-marker\").first().get(0);void 0!==m&&void 0!==v&&!m.nextSibling&&v.previousSibling&&\"BR\"===v.previousSibling.tagName&&E.node.isElement(m.parentNode)&&E.node.isElement(v.parentNode)&&E.$el.append(\"<br>\"),T()},blocks:function u(e){var t,n,r=[],o=L();if(h()&&o.rangeCount){var i=f();for(t=0;t<i.length;t++){var a=i[t],s=p(a.startContainer,a.startOffset),l=p(a.endContainer,a.endOffset);(n=E.node.blockParent(s))&&r.indexOf(n)<0&&r.push(n),(E.node.isBlock(s)||E.node.hasClass(s,\"fr-inner\"))&&r.indexOf(s)<0&&r.push(s);for(var c=[],d=s;d!==l&&d!==E.el;)c.indexOf(d)<0&&d.children&&d.children.length?(c.push(d),d=d.children[0]):d.nextSibling?d=d.nextSibling:d.parentNode&&(d=d.parentNode,c.push(d)),E.node.isBlock(d)&&c.indexOf(d)<0&&r.indexOf(d)<0&&(d!==l||0<a.endOffset)&&r.push(d);E.node.isBlock(l)&&r.indexOf(l)<0&&0<a.endOffset&&r.push(l),(n=E.node.blockParent(l))&&r.indexOf(n)<0&&r.push(n)}}for(t=r.length-1;0<t;t--)if(y(r[t-1]).contains(r[t])){if(e&&y(r[t]).find(\"ul, ol\").length)continue;r.splice(t-1,1)}else if(y(r[t]).contains(r[t-1])){if(e&&y(r[t]).find(\"ul, ol\").length)continue;r.splice(t,1)}return r},info:o,setAtEnd:i,setAtStart:r,setBefore:function g(e,t){void 0===t&&(t=!0);for(var n=e.previousSibling;n&&n.nodeType===Node.TEXT_NODE&&0===n.textContent.length;)n=n.previousSibling;return n?(E.node.isBlock(n)?i(n):\"BR\"===n.tagName?y(n).before(V.MARKERS):y(n).after(V.MARKERS),!0):!!t&&(E.node.isBlock(e)?r(e):y(e).before(V.MARKERS),!0)},setAfter:function C(e,t){void 0===t&&(t=!0);for(var n=e.nextSibling;n&&n.nodeType===Node.TEXT_NODE&&0===n.textContent.length;)n=n.nextSibling;return n?(E.node.isBlock(n)?r(n):y(n).before(V.MARKERS),!0):!!t&&(E.node.isBlock(e)?i(e):y(e).after(V.MARKERS),!0)},rangeElement:p}},Object.assign(V.DEFAULTS,{language:null}),V.LANGUAGE={},V.MODULES.language=function(e){var t;return{_init:function n(){V.LANGUAGE&&(t=V.LANGUAGE[e.opts.language]),t&&t.direction&&(e.opts.direction=t.direction)},translate:function r(e){return t&&t.translation[e]&&t.translation[e].length?t.translation[e]:e}}},Object.assign(V.DEFAULTS,{placeholderText:\"Type something\"}),V.MODULES.placeholder=function(f){var p=f.$;function e(){f.$placeholder||function d(){f.$placeholder=p(f.doc.createElement(\"SPAN\")).addClass(\"fr-placeholder\"),f.$wp.append(f.$placeholder)}();var e=f.opts.iframe?f.$iframe.prev().outerHeight(!0):f.$el.prev().outerHeight(!0),t=0,n=0,r=0,o=0,i=0,a=0,s=f.node.contents(f.el),l=p(f.selection.element()).css(\"text-align\");if(s.length&&s[0].nodeType===Node.ELEMENT_NODE){var c=p(s[0]);(0<f.$wp.prev().length||0<f.$el.prev().length)&&f.ready&&(t=f.helpers.getPX(c.css(\"margin-top\")),o=f.helpers.getPX(c.css(\"padding-top\")),n=f.helpers.getPX(c.css(\"margin-left\")),r=f.helpers.getPX(c.css(\"margin-right\")),i=f.helpers.getPX(c.css(\"padding-left\")),a=f.helpers.getPX(c.css(\"padding-right\"))),f.$placeholder.css(\"font-size\",c.css(\"font-size\")),f.$placeholder.css(\"line-height\",c.css(\"line-height\"))}else f.$placeholder.css(\"font-size\",f.$el.css(\"font-size\")),f.$placeholder.css(\"line-height\",f.$el.css(\"line-height\"));f.$wp.addClass(\"show-placeholder\"),f.$placeholder.css({marginTop:Math.max(f.helpers.getPX(f.$el.css(\"margin-top\")),t)+(e||0),paddingTop:Math.max(f.helpers.getPX(f.$el.css(\"padding-top\")),o),paddingLeft:Math.max(f.helpers.getPX(f.$el.css(\"padding-left\")),i),marginLeft:Math.max(f.helpers.getPX(f.$el.css(\"margin-left\")),n),paddingRight:Math.max(f.helpers.getPX(f.$el.css(\"padding-right\")),a),marginRight:Math.max(f.helpers.getPX(f.$el.css(\"margin-right\")),r),textAlign:l}).text(f.language.translate(f.opts.placeholderText||f.$oel.attr(\"placeholder\")||\"\")),f.$placeholder.html(f.$placeholder.text().replace(/\\n/g,\"<br>\"))}function t(){f.$wp.removeClass(\"show-placeholder\")}function n(){if(!f.$wp)return!1;f.core.isEmpty()?e():t()}return{_init:function r(){if(!f.$wp)return!1;f.events.on(\"init input keydown keyup contentChanged initialized\",n)},show:e,hide:t,refresh:n,isVisible:function o(){return!f.$wp||f.node.hasClass(f.$wp.get(0),\"show-placeholder\")}}},V.UNICODE_NBSP=String.fromCharCode(160),V.VOID_ELEMENTS=[\"area\",\"base\",\"br\",\"col\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"menuitem\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"],V.BLOCK_TAGS=[\"address\",\"article\",\"aside\",\"audio\",\"blockquote\",\"canvas\",\"details\",\"dd\",\"div\",\"dl\",\"dt\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"li\",\"main\",\"nav\",\"noscript\",\"ol\",\"output\",\"p\",\"pre\",\"section\",\"table\",\"tbody\",\"td\",\"tfoot\",\"th\",\"thead\",\"tr\",\"ul\",\"video\"],Object.assign(V.DEFAULTS,{htmlAllowedEmptyTags:[\"textarea\",\"a\",\"iframe\",\"object\",\"video\",\"style\",\"script\",\".fa\",\".fr-emoticon\",\".fr-inner\",\"path\",\"line\",\"hr\"],htmlDoNotWrapTags:[\"script\",\"style\"],htmlSimpleAmpersand:!1,htmlIgnoreCSSProperties:[],htmlExecuteScripts:!0}),V.MODULES.html=function(w){var u=w.$;function d(){return w.opts.enter===V.ENTER_P?\"p\":w.opts.enter===V.ENTER_DIV?\"div\":w.opts.enter===V.ENTER_BR?null:void 0}function s(e,t){return!(!e||e===w.el)&&(t?-1!=[\"PRE\",\"SCRIPT\",\"STYLE\"].indexOf(e.tagName)||s(e.parentNode,t):-1!==[\"PRE\",\"SCRIPT\",\"STYLE\"].indexOf(e.tagName))}function i(e){var t,n=[],r=[];if(e){var o=w.el.querySelectorAll(\".fr-marker\");for(t=0;t<o.length;t++){var i=w.node.blockParent(o[t])||o[t];if(i){var a=i.nextSibling,s=i.previousSibling;i&&r.indexOf(i)<0&&w.node.isBlock(i)&&r.push(i),s&&w.node.isBlock(s)&&r.indexOf(s)<0&&r.push(s),a&&w.node.isBlock(a)&&r.indexOf(a)<0&&r.push(a)}}}else r=w.el.querySelectorAll(p());var l=p();for(l+=\",\".concat(V.VOID_ELEMENTS.join(\",\")),l+=\", .fr-inner\",l+=\",\".concat(w.opts.htmlAllowedEmptyTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\"),t=r.length-1;0<=t;t--)if(!(r[t].textContent&&0<r[t].textContent.replace(/\\u200B|\\n/g,\"\").length||0<r[t].querySelectorAll(l).length)){for(var c=w.node.contents(r[t]),d=!1,f=0;f<c.length;f++)if(c[f].nodeType!==Node.COMMENT_NODE&&c[f].textContent&&0<c[f].textContent.replace(/\\u200B|\\n/g,\"\").length){d=!0;break}d||n.push(r[t])}return n}function p(){return V.BLOCK_TAGS.join(\", \")}function e(e){var t,n,r=u.merge([],V.VOID_ELEMENTS);r=u.merge(r,w.opts.htmlAllowedEmptyTags),r=void 0===e?u.merge(r,V.BLOCK_TAGS):u.merge(r,V.NO_DELETE_TAGS),t=w.el.querySelectorAll(\"*:empty:not(\".concat(r.join(\"):not(\"),\"):not(.fr-marker):not(template)\"));do{n=!1;for(var o=0;o<t.length;o++)0!==t[o].attributes.length&&void 0===t[o].getAttribute(\"href\")||(t[o].parentNode.removeChild(t[o]),n=!0);(t=w.el.querySelectorAll(\"*:empty:not(\".concat(r.join(\"):not(\"),\"):not(.fr-marker):not(template)\"))).length||(t=w.el.querySelectorAll(\"a[href]:not([name]):empty\"))}while(t.length&&n)}function a(e,t){var n=d();if(t&&(n=\"div\"),n){for(var r=w.doc.createDocumentFragment(),o=null,i=!1,a=e.firstChild,s=!1;a;){var l=a.nextSibling;if(a.nodeType===Node.ELEMENT_NODE&&(w.node.isBlock(a)||0<=w.opts.htmlDoNotWrapTags.indexOf(a.tagName.toLowerCase())&&!w.node.hasClass(a,\"fr-marker\")))o=null,r.appendChild(a.cloneNode(!0));else if(a.nodeType!==Node.ELEMENT_NODE&&a.nodeType!==Node.TEXT_NODE)o=null,r.appendChild(a.cloneNode(!0));else if(\"BR\"===a.tagName)null===o?(o=w.doc.createElement(n),s=!0,t&&(o.setAttribute(\"class\",\"fr-temp-div\"),o.setAttribute(\"data-empty\",!0)),o.appendChild(a.cloneNode(!0)),r.appendChild(o)):!1===i&&(o.appendChild(w.doc.createElement(\"br\")),t&&(o.setAttribute(\"class\",\"fr-temp-div\"),o.setAttribute(\"data-empty\",!0))),o=null;else{var c=a.textContent;if(a.nodeType!==Node.TEXT_NODE||0<c.replace(/\\n/g,\"\").replace(/(^ *)|( *$)/g,\"\").length||c.replace(/(^ *)|( *$)/g,\"\").length&&c.indexOf(\"\\n\")<0){if(\"SPAN\"===a.tagName&&u(a).hasClass(\"fr-marker\")&&!a.previousSibling&&(a.nextSibling&&\"TABLE\"==a.nextSibling.tagName||a.nextSibling&&a.nextSibling.nextSibling&&\"TABLE\"==a.nextSibling.nextSibling.tagName)){r.appendChild(a),a=l;continue}if(\"SPAN\"===a.tagName&&u(a).hasClass(\"fr-marker\")&&a.previousSibling&&a.previousSibling.nodeType===Node.ELEMENT_NODE&&(a.nextSibling&&\"TABLE\"==a.nextSibling.tagName||a.nextSibling&&a.nextSibling.nextSibling&&\"TABLE\"==a.nextSibling.nextSibling.tagName)){r.appendChild(a),s=!0,a=l;continue}null===o&&(o=w.doc.createElement(n),s=!0,t&&o.setAttribute(\"class\",\"fr-temp-div\"),r.appendChild(o),i=!1),o.appendChild(a.cloneNode(!0)),i||w.node.hasClass(a,\"fr-marker\")||a.nodeType===Node.TEXT_NODE&&0===c.replace(/ /g,\"\").length||(i=!0)}else s=!0}a=l}s&&(e.innerHTML=\"\",e.appendChild(r))}}function l(e,t){for(var n=e.length-1;0<=n;n--)a(e[n],t)}function t(e,t,n,r,o){if(!w.$wp)return!1;void 0===e&&(e=!1),void 0===t&&(t=!1),void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o=!1);var i=w.$wp.scrollTop();a(w.el,e),r&&l(w.el.querySelectorAll(\".fr-inner\"),e),t&&l(w.el.querySelectorAll(\"td, th\"),e),n&&l(w.el.querySelectorAll(\"blockquote\"),e),o&&l(w.el.querySelectorAll(\"li\"),e),i!==w.$wp.scrollTop()&&w.$wp.scrollTop(i)}function n(e){if(void 0===e&&(e=w.el),e&&0<=[\"SCRIPT\",\"STYLE\",\"PRE\"].indexOf(e.tagName))return!1;for(var t=w.doc.createTreeWalker(e,NodeFilter.SHOW_TEXT,w.node.filter(function(e){return null!==e.textContent.match(/([ \\n]{2,})|(^[ \\n]{1,})|([ \\n]{1,}$)/g)}),!1);t.nextNode();){var n=t.currentNode;if(!s(n.parentNode,!0)){var r=w.node.isBlock(n.parentNode)||w.node.isElement(n.parentNode),o=n.textContent.replace(/(?!^)( ){2,}(?!$)/g,\" \").replace(/\\n/g,\" \").replace(/^[ ]{2,}/g,\" \").replace(/[ ]{2,}$/g,\" \");if(r){var i=n.previousSibling,a=n.nextSibling;i&&a&&\" \"===o?o=w.node.isBlock(i)&&w.node.isBlock(a)?\"\":\" \":(i||(o=o.replace(/^ */,\"\")),a||(o=o.replace(/ *$/,\"\")))}n.textContent=o}}}function r(e,t,n){var r=new RegExp(t,\"gi\").exec(e);return r?r[n]:null}function k(e){var t=e.doctype,n=\"<!DOCTYPE html>\";return t&&(n=\"<!DOCTYPE \".concat(t.name).concat(t.publicId?' PUBLIC \"'.concat(t.publicId,'\"'):\"\").concat(!t.publicId&&t.systemId?\" SYSTEM\":\"\").concat(t.systemId?' \"'.concat(t.systemId,'\"'):\"\",\">\")),n}function c(e){var t=e.parentNode;if(t&&(w.node.isBlock(t)||w.node.isElement(t))&&[\"TD\",\"TH\"].indexOf(t.tagName)<0){for(var n=e.previousSibling,r=e.nextSibling;n&&(n.nodeType===Node.TEXT_NODE&&0===n.textContent.replace(/\\n|\\r/g,\"\").length||w.node.hasClass(n,\"fr-tmp\"));)n=n.previousSibling;if(r)return!1;n&&t&&\"BR\"!==n.tagName&&!w.node.isBlock(n)&&!r&&0<t.textContent.replace(/\\u200B/g,\"\").length&&0<n.textContent.length&&!w.node.hasClass(n,\"fr-marker\")&&(w.el===t&&!r&&w.opts.enter===V.ENTER_BR&&w.browser.msie||e.parentNode.removeChild(e))}else!t||w.node.isBlock(t)||w.node.isElement(t)||e.previousSibling||e.nextSibling||!w.node.isDeletable(e.parentNode)||c(e.parentNode)}function g(){w.opts.htmlUntouched||(e(),t(),n(),w.spaces.normalize(null,!0),w.html.fillEmptyBlocks(),w.clean.lists(),w.clean.tables(),w.clean.toHTML5(),w.html.cleanBRs()),w.selection.restore(),o(),w.placeholder.refresh()}function o(){w.node.isEmpty(w.el)&&(null!==d()?w.el.querySelector(p())||w.el.querySelector(\"\".concat(w.opts.htmlDoNotWrapTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\"))||(w.core.hasFocus()?(w.$el.html(\"<\".concat(d(),\">\").concat(V.MARKERS,\"<br/></\").concat(d(),\">\")),w.selection.restore()):w.$el.html(\"<\".concat(d(),\"><br/></\").concat(d(),\">\"))):w.el.querySelector(\"*:not(.fr-marker):not(br)\")||(w.core.hasFocus()?(w.$el.html(\"\".concat(V.MARKERS,\"<br/>\")),w.selection.restore()):w.$el.html(\"<br/>\")))}function C(e,t){return r(e,\"<\".concat(t,\"[^>]*?>([\\\\w\\\\W]*)</\").concat(t,\">\"),1)}function m(e,t){var n=u(\"<div \".concat(r(e,\"<\".concat(t,\"([^>]*?)>\"),1)||\"\",\">\"));return w.node.rawAttributes(n.get(0))}function v(e){return(r(e,\"<!DOCTYPE([^>]*?)>\",0)||\"<!DOCTYPE html>\").replace(/\\n/g,\" \").replace(/ {2,}/g,\" \")}function b(e,t){w.opts.htmlExecuteScripts?e.html(t):e.get(0).innerHTML=t}function $(e){var t;(t=/:not\\(([^)]*)\\)/g).test(e)&&(e=e.replace(t,\"     $1 \"));var n=100*(e.match(/(#[^\\s+>~.[:]+)/g)||[]).length+10*(e.match(/(\\[[^]]+\\])/g)||[]).length+10*(e.match(/(\\.[^\\s+>~.[:]+)/g)||[]).length+10*(e.match(/(:[\\w-]+\\([^)]*\\))/gi)||[]).length+10*(e.match(/(:[^\\s+>~.[:]+)/g)||[]).length+(e.match(/(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi)||[]).length;return n+=((e=(e=e.replace(/[*\\s+>~]/g,\" \")).replace(/[#.]/g,\" \")).match(/([^\\s+>~.[:]+)/g)||[]).length}function H(e){if(w.events.trigger(\"html.processGet\",[e]),e&&e.getAttribute&&\"\"===e.getAttribute(\"class\")&&e.removeAttribute(\"class\"),e&&e.getAttribute&&\"\"===e.getAttribute(\"style\")&&e.removeAttribute(\"style\"),e&&e.nodeType===Node.ELEMENT_NODE){var t,n=e.querySelectorAll('[class=\"\"],[style=\"\"]');for(t=0;t<n.length;t++){var r=n[t];\"\"===r.getAttribute(\"class\")&&r.removeAttribute(\"class\"),\"\"===r.getAttribute(\"style\")&&r.removeAttribute(\"style\")}if(\"BR\"===e.tagName)c(e);else{var o=e.querySelectorAll(\"br\");for(t=0;t<o.length;t++)c(o[t])}}}function D(e,t){return e[3]-t[3]}function _(){for(var e=w.el.querySelectorAll(\"input, textarea\"),t=0;t<e.length;t++)\"checkbox\"!==e[t].type&&\"radio\"!==e[t].type||(e[t].checked?e[t].setAttribute(\"checked\",e[t].checked):w.$(e[t]).removeAttr(\"checked\")),e[t].getAttribute(\"value\")&&e[t].setAttribute(\"value\",e[t].value)}function f(e){var t=w.doc.createElement(\"div\");return t.innerHTML=e,null!==t.querySelector(p())}function h(e){var t=null;if(void 0===e&&(t=w.selection.element()),w.opts.keepFormatOnDelete)return!1;var n,r,o=t?(t.textContent.match(/\\u200B/g)||[]).length-t.querySelectorAll(\".fr-marker\").length:0;if((w.el.textContent.match(/\\u200B/g)||[]).length-w.el.querySelectorAll(\".fr-marker\").length===o)return!1;do{r=!1,n=w.el.querySelectorAll(\"*:not(.fr-marker)\");for(var i=0;i<n.length;i++){var a=n[i];if(t!==a){var s=a.textContent;0===a.children.length&&1===s.length&&8203===s.charCodeAt(0)&&[\"TD\",\"STRONG\",\"SPAN\",\"EM\",\"U\",\"S\",\"SUB\",\"SUP\"].indexOf(a.tagName)<0&&(u(a).remove(),r=!0)}}}while(r)}function L(){h(),w.placeholder&&setTimeout(w.placeholder.refresh,0)}return{defaultTag:d,isPreformatted:s,emptyBlocks:i,emptyBlockTagsQuery:function E(){return\"\".concat(V.BLOCK_TAGS.join(\":empty, \"),\":empty\")},blockTagsQuery:p,fillEmptyBlocks:function y(e){var t=i(e);w.node.isEmpty(w.el)&&w.opts.enter===V.ENTER_BR&&t.push(w.el);for(var n=0;n<t.length;n++){var r=t[n];\"false\"===r.getAttribute(\"contenteditable\")||r.querySelector(\"\".concat(w.opts.htmlAllowedEmptyTags.join(\":not(.fr-marker),\"),\":not(.fr-marker)\"))||w.node.isVoid(r)||\"TABLE\"===r.tagName||\"TBODY\"===r.tagName||\"TR\"===r.tagName||\"UL\"===r.tagName||\"OL\"===r.tagName||r.querySelector(\"br\")||r.appendChild(w.doc.createElement(\"br\"))}if(w.browser.msie&&w.opts.enter===V.ENTER_BR){var o=w.node.contents(w.el);o.length&&o[o.length-1].nodeType===Node.TEXT_NODE&&w.$el.append(\"<br>\")}},cleanEmptyTags:e,cleanWhiteTags:h,cleanBlankSpaces:n,blocks:function S(){return w.$el.get(0).querySelectorAll(p())},getDoctype:k,set:function N(e){var t=w.clean.html((e||\"\").trim(),[],[],w.opts.fullPage),n=new RegExp(\"%3A//\",\"g\"),r=t.replace(n,\"://\");if(w.opts.fullPage){var o=C(r,\"body\")||(0<=r.indexOf(\"<body\")?\"\":r),i=m(r,\"body\"),a=C(r,\"head\")||\"<title></title>\",s=m(r,\"head\"),l=u(\"<div>\");l.append(a).contents().each(function(){(this.nodeType===Node.COMMENT_NODE||0<=[\"BASE\",\"LINK\",\"META\",\"NOSCRIPT\",\"SCRIPT\",\"STYLE\",\"TEMPLATE\",\"TITLE\"].indexOf(this.tagName))&&this.parentNode.removeChild(this)});var c=l.html().trim();a=u(\"<div>\").append(a).contents().map(function(){return this.nodeType===Node.COMMENT_NODE?\"\\x3c!--\".concat(this.nodeValue,\"--\\x3e\"):0<=[\"BASE\",\"LINK\",\"META\",\"NOSCRIPT\",\"SCRIPT\",\"STYLE\",\"TEMPLATE\",\"TITLE\"].indexOf(this.tagName)?this.outerHTML:\"\"}).toArray().join(\"\");var d=v(r),f=m(r,\"html\");b(w.$el,\"\".concat(c,\"\\n\").concat(o)),w.node.clearAttributes(w.el),w.$el.attr(i),w.$el.addClass(\"fr-view\"),w.$el.attr(\"spellcheck\",w.opts.spellcheck),w.$el.attr(\"dir\",w.opts.direction),b(w.$head,a),w.node.clearAttributes(w.$head.get(0)),w.$head.attr(s),w.node.clearAttributes(w.$html.get(0)),w.$html.attr(f),w.iframe_document.doctype.parentNode.replaceChild(function h(e,t){var n=e.match(/<!DOCTYPE ?([^ ]*) ?([^ ]*) ?\"?([^\"]*)\"? ?\"?([^\"]*)\"?>/i);return n?t.implementation.createDocumentType(n[1],n[3],n[4]):t.implementation.createDocumentType(\"html\")}(d,w.iframe_document),w.iframe_document.doctype)}else b(w.$el,r);var p=w.edit.isDisabled();w.edit.on(),w.core.injectStyle(w.opts.iframeDefaultStyle+w.opts.iframeStyle),g(),w.opts.useClasses||(w.$el.find(\"[fr-original-class]\").each(function(){this.setAttribute(\"class\",this.getAttribute(\"fr-original-class\")),this.removeAttribute(\"fr-original-class\")}),w.$el.find(\"[fr-original-style]\").each(function(){this.setAttribute(\"style\",this.getAttribute(\"fr-original-style\")),this.removeAttribute(\"fr-original-style\")})),p&&w.edit.off(),w.events.trigger(\"html.set\"),w.events.trigger(\"charCounter.update\")},syncInputs:_,get:function B(e,t){if(!w.$wp)return w.$oel.clone().removeClass(\"fr-view\").removeAttr(\"contenteditable\").get(0).outerHTML;var n=\"\";w.events.trigger(\"html.beforeGet\");var r,o,i=[],a={},s=[];if(_(),!w.opts.useClasses&&!t){var l=new RegExp(\"^\".concat(w.opts.htmlIgnoreCSSProperties.join(\"$|^\"),\"$\"),\"gi\");for(r=0;r<w.doc.styleSheets.length;r++){var c=void 0,d=0;try{c=w.doc.styleSheets[r].cssRules,w.doc.styleSheets[r].ownerNode&&\"STYLE\"===w.doc.styleSheets[r].ownerNode.nodeType&&(d=1)}catch(O){}if(c)for(var f=0,p=c.length;f<p;f++)if(c[f].selectorText&&0<c[f].style.cssText.length){var h=c[f].selectorText.replace(/body \\s tbody \\.fr-view /g,\"\").replace(/::/g,\":\"),u=void 0;try{u=w.el.querySelectorAll(h)}catch(O){u=[]}for(o=0;o<u.length;o++){!u[o].getAttribute(\"fr-original-style\")&&u[o].getAttribute(\"style\")?(u[o].setAttribute(\"fr-original-style\",u[o].getAttribute(\"style\")),i.push(u[o])):u[o].getAttribute(\"fr-original-style\")||(u[o].setAttribute(\"fr-original-style\",\"\"),i.push(u[o])),a[u[o]]||(a[u[o]]={});for(var g=1e3*d+$(c[f].selectorText),C=c[f].style.cssText.split(\";\"),m=0;m<C.length;m++){var v=C[m].trim().split(\":\")[0];if(v&&!v.match(l)&&(a[u[o]][v]||(a[u[o]][v]=0)<=(u[o].getAttribute(\"fr-original-style\")||\"\").indexOf(\"\".concat(v,\":\"))&&(a[u[o]][v]=1e4),g>=a[u[o]][v]&&(a[u[o]][v]=g,C[m].trim().length))){var b=C[m].trim().split(\":\");b.splice(0,1);var L=b.join(\":\").trim();-1<L.indexOf(\"!important\")&&(g+=1),s.push([u[o],v.trim(),L,g])}}}}}for(s.sort(D),r=0;r<s.length;r++){var E=s[r];E[0].style[E[1]]=E[2].replace(/!important/,\"\")}for(r=0;r<i.length;r++)if(i[r].getAttribute(\"class\")&&(i[r].setAttribute(\"fr-original-class\",i[r].getAttribute(\"class\")),i[r].removeAttribute(\"class\")),0<(i[r].getAttribute(\"fr-original-style\")||\"\").trim().length){var y=i[r].getAttribute(\"fr-original-style\").split(\";\");for(o=0;o<y.length;o++)if(0<y[o].indexOf(\":\")){var S=y[o].split(\":\"),N=S[0];S.splice(0,1),i[r].style[N.trim()]=S.join(\":\").trim()}}}if(w.node.isEmpty(w.el))w.opts.fullPage&&(n=k(w.iframe_document),n+=\"<html\".concat(w.node.attributes(w.$html.get(0)),\">\").concat(w.$html.find(\"head\").get(0).outerHTML,\"<body></body></html>\"));else if(void 0===e&&(e=!1),w.opts.fullPage){n=k(w.iframe_document),w.$el.removeClass(\"fr-view\");var T=w.opts.heightMin,M=w.opts.height,A=w.opts.heightMax;w.opts.heightMin=null,w.opts.height=null,w.opts.heightMax=null,w.size.refresh(),n+=\"<html\".concat(w.node.attributes(w.$html.get(0)),\">\").concat(w.$html.html(),\"</html>\"),w.opts.heightMin=T,w.opts.height=M,w.opts.heightMax=A,w.size.refresh(),w.$el.addClass(\"fr-view\")}else n=w.$el.html();if(!w.opts.useClasses&&!t)for(r=0;r<i.length;r++)i[r].getAttribute(\"fr-original-class\")&&(i[r].setAttribute(\"class\",i[r].getAttribute(\"fr-original-class\")),i[r].removeAttribute(\"fr-original-class\")),null!==i[r].getAttribute(\"fr-original-style\")&&void 0!==i[r].getAttribute(\"fr-original-style\")?(0!==i[r].getAttribute(\"fr-original-style\").length?i[r].setAttribute(\"style\",i[r].getAttribute(\"fr-original-style\")):i[r].removeAttribute(\"style\"),i[r].removeAttribute(\"fr-original-style\")):i[r].removeAttribute(\"style\");w.opts.fullPage&&(n=(n=(n=(n=(n=(n=(n=(n=n.replace(/<style data-fr-style=\"true\">(?:[\\w\\W]*?)<\\/style>/g,\"\")).replace(/<link([^>]*)data-fr-style=\"true\"([^>]*)>/g,\"\")).replace(/<style(?:[\\w\\W]*?)class=\"firebugResetStyles\"(?:[\\w\\W]*?)>(?:[\\w\\W]*?)<\\/style>/g,\"\")).replace(/<body((?:[\\w\\W]*?)) spellcheck=\"true\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,\"<body$1$2>$3</body>\")).replace(/<body((?:[\\w\\W]*?)) contenteditable=\"(true|false)\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,\"<body$1$3>$4</body>\")).replace(/<body((?:[\\w\\W]*?)) dir=\"([\\w]*)\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,\"<body$1$3>$4</body>\")).replace(/<body((?:[\\w\\W]*?))class=\"([\\w\\W]*?)(fr-rtl|fr-ltr)([\\w\\W]*?)\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,'<body$1class=\"$2$4\"$5>$6</body>')).replace(/<body((?:[\\w\\W]*?)) class=\"\"((?:[\\w\\W]*?))>((?:[\\w\\W]*?))<\\/body>/g,\"<body$1$2>$3</body>\")),w.opts.htmlSimpleAmpersand&&(n=n.replace(/&amp;/gi,\"&\")),w.events.trigger(\"html.afterGet\"),e||(n=n.replace(/<span[^>]*? class\\s*=\\s*[\"']?fr-marker[\"']?[^>]+>\\u200b<\\/span>/gi,\"\")),n=w.clean.invisibleSpaces(n),n=w.clean.exec(n,H);var x=w.events.chainTrigger(\"html.get\",n);return\"string\"==typeof x&&(n=x),n=(n=n.replace(/<pre(?:[\\w\\W]*?)>(?:[\\w\\W]*?)<\\/pre>/g,function(e){return e.replace(/<br>/g,\"\\n\")})).replace(/<meta((?:[\\w\\W]*?)) data-fr-http-equiv=\"/g,'<meta$1 http-equiv=\"')},getSelected:function T(){function e(e,t){for(;t&&(t.nodeType===Node.TEXT_NODE||!w.node.isBlock(t))&&!w.node.isElement(t)&&!w.node.hasClass(t,\"fr-inner\")&&(w.opts.enter!==V.ENTER_BR||t!==w.$el[0]);)t&&t.nodeType!==Node.TEXT_NODE&&u(e).wrapContent(t),t=t.parentNode;t&&e.innerHTML===t.innerHTML?e.innerHTML=t.outerHTML:t&&\"DIV\"!==t.tagName&&t.innerText&&-1!=t.innerText.indexOf(e.innerHTML)&&t!==w.$el.get(0)&&(e.innerHTML=w.node.openTagString(t)+e.innerHTML+w.node.closeTagString(t))}var t,n,r=\"\";if(\"undefined\"!=typeof w.win.getSelection){w.browser.mozilla&&(w.selection.save(),1<w.$el.find('.fr-marker[data-type=\"false\"]').length&&(w.$el.find('.fr-marker[data-type=\"false\"][data-id=\"0\"]').remove(),w.$el.find('.fr-marker[data-type=\"false\"]:last').attr(\"data-id\",\"0\"),w.$el.find(\".fr-marker\").not('[data-id=\"0\"]').remove()),w.selection.restore());for(var o=w.selection.ranges(),i=0;i<o.length;i++){var a=document.createElement(\"div\");a.appendChild(o[i].cloneContents()),e(a,(n=t=void 0,n=null,w.win.getSelection?(t=w.win.getSelection())&&t.rangeCount&&((n=t.getRangeAt(0).commonAncestorContainer).nodeType===Node.ELEMENT_NODE||w.opts.enter===V.ENTER_BR&&n.parentNode===w.$el[0]||(n=n.parentNode)):(t=w.doc.selection)&&\"Control\"!==t.type&&(n=t.createRange().parentElement()),null!==n&&(0<=u(n).parents().toArray().indexOf(w.el)||n===w.el)?n:null)),0<u(a).find(\".fr-element\").length&&(a=w.el),r+=a.innerHTML}}else\"undefined\"!=typeof w.doc.selection&&\"Text\"===w.doc.selection.type&&(r=w.doc.selection.createRange().htmlText);return r},insert:function M(e,t,n){var r;if(w.selection.isCollapsed()||w.selection.remove(),r=t?e:w.clean.html(e),0===e.indexOf('<i class=\"fa ')&&(r=\"<span>&nbsp;\".concat(r,\"</span>\")),e.indexOf('class=\"fr-marker\"')<0&&(r=function a(e){var t=w.doc.createElement(\"div\");return t.innerHTML=e,w.selection.setAtEnd(t,!0),t.innerHTML}(r)),w.node.isEmpty(w.el)&&!w.opts.keepFormatOnDelete&&f(r))w.opts.trackChangesEnabled?w.track_changes.pasteInEmptyEdior(r):w.el.innerHTML=r;else{(function s(){var e=w.selection.ranges(0).commonAncestorContainer;return e!==w.el&&!w.$el.contains(e)})()&&w.selection.restore();var o=w.markers.insert();if(o)if(w.opts.trackChangesEnabled)w.track_changes.pasteInEdior(r);else{w.node.isLastSibling(o)&&u(o).parent().hasClass(\"fr-deletable\")&&u(o).insertAfter(u(o).parent());var i=w.node.blockParent(o);if((f(r)||n)&&(w.node.deepestParent(o)||i&&\"LI\"===i.tagName)){if(i&&\"LI\"===i.tagName&&(r=function l(e){if(!w.html.defaultTag())return e;var t=w.doc.createElement(\"div\");t.innerHTML=e;for(var n=t.querySelectorAll(\":scope > \".concat(w.html.defaultTag())),r=n.length-1;0<=r;r--){var o=n[r];w.node.isBlock(o.previousSibling)||(o.previousSibling&&!w.node.isEmpty(o)&&u(\"<br>\").insertAfter(o.previousSibling),o.outerHTML=o.innerHTML)}return t.innerHTML}(r)),!(o=w.markers.split()))return!1;o.outerHTML=r}else o.outerHTML=r}else w.el.innerHTML+=r}g(),w.keys.positionCaret(),w.events.trigger(\"html.inserted\")},wrap:t,unwrap:function A(){w.$el.find(\"div.fr-temp-div\").each(function(){this.previousSibling&&this.previousSibling.nodeType===Node.TEXT_NODE&&u(this).before(\"<br>\"),u(this).attr(\"data-empty\")||!this.nextSibling||w.node.isBlock(this.nextSibling)&&!u(this.nextSibling).hasClass(\"fr-temp-div\")?u(this).replaceWith(u(this).html()):u(this).replaceWith(\"\".concat(u(this).html(),\"<br>\"))}),w.$el.find(\".fr-temp-div\").removeClass(\"fr-temp-div\").filter(function(){return\"\"===u(this).attr(\"class\")}).removeAttr(\"class\")},escapeEntities:function x(e){return e.replace(/</gi,\"&lt;\").replace(/>/gi,\"&gt;\").replace(/\"/gi,\"&quot;\").replace(/'/gi,\"&#39;\")},checkIfEmpty:o,extractNode:C,extractNodeAttrs:m,extractDoctype:v,cleanBRs:function O(){for(var e=w.el.getElementsByTagName(\"br\"),t=0;t<e.length;t++)c(e[t])},_init:function R(){w.events.$on(w.$el,\"mousemove\",\"span.fr-word-select\",function(e){var t=window.getSelection();t=window.getSelection();var n=document.createRange();n.selectNodeContents(e.target),t.removeAllRanges(),t.addRange(n)}),w.$wp&&(w.events.on(\"mouseup\",L),w.events.on(\"keydown\",L),w.events.on(\"contentChanged\",o))},_setHtml:b}},V.ENTER_P=0,V.ENTER_DIV=1,V.ENTER_BR=2,V.KEYCODE={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,ARROW_LEFT:37,ARROW_UP:38,ARROW_RIGHT:39,ARROW_DOWN:40,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,FF_SEMICOLON:59,FF_EQUALS:61,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,FF_HYPHEN:173,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,HYPHEN:189,PERIOD:190,SLASH:191,APOSTROPHE:192,TILDE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,IME:229},Object.assign(V.DEFAULTS,{enter:V.ENTER_P,multiLine:!0,tabSpaces:0}),V.MODULES.keys=function(p){var h,n,r,i=p.$,u=!1;function g(e){if(p.selection.isCollapsed())if([\"INPUT\",\"BUTTON\",\"TEXTAREA\"].indexOf(e.target&&e.target.tagName)<0&&p.cursor.backspace(),p.helpers.isIOS()){var t=p.selection.ranges(0);t.deleteContents(),t.insertNode(document.createTextNode(\"\\u200b\")),p.selection.get().modify(\"move\",\"forward\",\"character\")}else[\"INPUT\",\"BUTTON\",\"TEXTAREA\"].indexOf(e.target&&e.target.tagName)<0&&e.preventDefault(),e.stopPropagation();else e.preventDefault(),e.stopPropagation(),p.selection.remove();p.placeholder.refresh()}function C(e){[\"INPUT\",\"BUTTON\",\"TEXTAREA\"].indexOf(e.target&&e.target.tagName)<0&&e.preventDefault(),e.stopPropagation(),\"\"!==p.selection.text()||p.selection.element().hasAttribute(\"contenteditable\")&&\"false\"===p.selection.element().getAttribute(\"contenteditable\")||!p.selection.isCollapsed()&&\"IMG\"==p.selection.element().tagName?p.selection.remove():p.cursor.del(),p.placeholder.refresh()}function e(){if(p.browser.mozilla&&p.selection.isCollapsed()&&!u){var e=p.selection.ranges(0),t=e.startContainer,n=e.startOffset;t&&t.nodeType===Node.TEXT_NODE&&n<=t.textContent.length&&0<n&&32===t.textContent.charCodeAt(n-1)&&(p.selection.save(),p.spaces.normalize(),p.selection.restore())}}function t(){p.selection.isFull()&&setTimeout(function(){var e=p.html.defaultTag();e?p.$el.html(\"<\".concat(e,\">\").concat(V.MARKERS,\"<br/></\").concat(e,\">\")):p.$el.html(\"\".concat(V.MARKERS,\"<br/>\")),p.selection.restore(),p.placeholder.refresh(),p.button.bulkRefresh(),p.undo.saveStep()},0)}function o(){u=!1}function a(){u=!1}function m(){var e=p.html.defaultTag();e?p.$el.html(\"<\".concat(e,\">\").concat(V.MARKERS,\"<br/></\").concat(e,\">\")):p.$el.html(\"\".concat(V.MARKERS,\"<br/>\")),p.selection.restore()}function v(e,t){var n=(e&&e.parentElement).parentElement;if(e.parentElement&&(-1<e.innerHTML.indexOf(\"<span\")||-1<e.parentElement.innerHTML.indexOf(\"<span\")||n&&-1<e.parentElement.parentElement.innerHTML.indexOf(\"<span\"))&&(e.classList.contains(\"fr-img-space-wrap\")||e.parentElement.classList.contains(\"fr-img-space-wrap\")||n&&e.parentElement.parentElement.classList.contains(\"fr-img-space-wrap\"))){if(i(e.parentElement).is(\"p\")){var r=e.parentElement.innerHTML;return(r=r.replace(/<br>/g,\"\")).length<1?e.parentElement.insertAdjacentHTML(\"afterbegin\",\"&nbsp;\"):\"&nbsp;\"!=r&&\" \"!=r&&\"Backspace\"==t.key?g(t):\"&nbsp;\"!=r&&\" \"!=r&&\"Delete\"==t.key&&C(t),!0}if(i(e).is(\"p\")){var o=e.innerHTML.replace(/<br>/g,\"\");return o.length<1?e.insertAdjacentHTML(\"afterbegin\",\"&nbsp;\"):\"&nbsp;\"!=o&&\" \"!=o&&\"Backspace\"==t.key?g(t):\"&nbsp;\"!=o&&\" \"!=o&&\"Delete\"==t.key&&C(t),!0}}return!1}function s(e){var t=p.selection.element();if(t&&0<=[\"INPUT\",\"TEXTAREA\"].indexOf(t.tagName))return!0;if(e&&E(e.which)){var n=p.selection.element();p.selection.save();var r=p.$el.find(\".fr-marker\")[0];return r.previousSibling&&r.previousSibling.nodeType===Node.TEXT_NODE&&1<r.previousSibling.textContent.length&&8203===r.previousSibling.textContent.charCodeAt(r.previousSibling.textContent.length-1)&&b(n),p.selection.restore(),!0}p.events.disableBlur();var o=e.which;if(16===o)return!0;if((h=o)===V.KEYCODE.IME)return u=!0;if(u=!1,L(e))return!0;var i=y(o)&&!L(e)&&!e.altKey,a=o===V.KEYCODE.BACKSPACE||o===V.KEYCODE.DELETE;if((p.selection.isFull()&&!p.opts.keepFormatOnDelete&&!p.placeholder.isVisible()||a&&p.placeholder.isVisible()&&p.opts.keepFormatOnDelete)&&(i||a)&&(m(),!y(o)))return e.preventDefault(),!0;if(o===V.KEYCODE.ENTER)!p.helpers.isIOS()&&e.shiftKey||t.classList.contains(\"fr-inner\")||t.parentElement.classList.contains(\"fr-inner\")?function s(e){e.preventDefault(),e.stopPropagation(),p.opts.multiLine&&(p.selection.isCollapsed()||p.selection.remove(),p.cursor.enter(!0))}(e):function l(e){p.opts.multiLine?(p.helpers.isIOS()||(e.preventDefault(),e.stopPropagation()),p.selection.isCollapsed()||p.selection.remove(),p.cursor.enter()):(e.preventDefault(),e.stopPropagation())}(e);else if(o===V.KEYCODE.BACKSPACE&&(e.metaKey||e.ctrlKey))!function c(){setTimeout(function(){p.events.disableBlur(),p.events.focus()},0)}();else if(o!==V.KEYCODE.BACKSPACE||L(e)||e.altKey)if(o!==V.KEYCODE.DELETE||L(e)||e.altKey||e.shiftKey)o===V.KEYCODE.SPACE?function d(e){var t=p.selection.element();if(!p.helpers.isMobile()&&t&&\"A\"===t.tagName){e.preventDefault(),e.stopPropagation(),p.selection.isCollapsed()||p.selection.remove();var n=p.markers.insert();if(n){var r=n.previousSibling;!n.nextSibling&&n.parentNode&&\"A\"===n.parentNode.tagName?(n.parentNode.insertAdjacentHTML(\"afterend\",\"&nbsp;\".concat(V.MARKERS)),n.parentNode.removeChild(n)):(r&&r.nodeType===Node.TEXT_NODE&&1===r.textContent.length&&160===r.textContent.charCodeAt(0)?r.textContent+=\" \":n.insertAdjacentHTML(\"beforebegin\",\"&nbsp;\"),n.outerHTML=V.MARKERS),p.selection.restore()}}}(e):o===V.KEYCODE.TAB?function f(e){if(0<p.opts.tabSpaces)if(p.selection.isCollapsed()){p.undo.saveStep(),e.preventDefault(),e.stopPropagation();for(var t=\"\",n=0;n<p.opts.tabSpaces;n++)t+=\"&nbsp;\";p.html.insert(t),p.placeholder.refresh(),p.undo.saveStep()}else e.preventDefault(),e.stopPropagation(),e.shiftKey?p.commands.outdent():p.commands.indent()}(e):L(e)||!y(e.which)||p.selection.isCollapsed()||e.ctrlKey||e.altKey||p.browser.mozilla||p.selection.remove();else{if(v(t,e))return e.preventDefault(),void e.stopPropagation();p.placeholder.isVisible()?(p.opts.keepFormatOnDelete||m(),e.preventDefault(),e.stopPropagation()):C(e)}else{if(v(t,e))return e.preventDefault(),void e.stopPropagation();p.placeholder.isVisible()?(p.opts.keepFormatOnDelete||m(),e.preventDefault(),e.stopPropagation()):g(e)}p.events.enableBlur()}function b(e){var t=e;-1<[\"STRONG\",\"U\",\"EM\"].indexOf(e.nodeName)&&e.parentNode&&(t=e.parentNode);for(var n=p.doc.createTreeWalker(t,NodeFilter.SHOW_TEXT,p.node.filter(function(e){return/\\u200B/gi.test(e.textContent)}),!1);n.nextNode();){var r=n.currentNode;r.textContent=r.textContent.replace(/\\u200B/gi,\"\")}}function l(){if(!p.$wp)return!0;var e;if(p.opts.height||p.opts.heightMax){e=p.position.getBoundingRect().top,(p.helpers.isIOS()||p.helpers.isAndroid())&&(e-=p.helpers.scrollTop()),p.opts.iframe&&(e+=p.$iframe.offset().top);var t=p.selection.blocks(),n=null;t&&0<t.length&&t[0].offsetTop&&(n=t[0].getBoundingClientRect().top),!p.opts.iframe&&e>p.$wp.offset().top-p.helpers.scrollTop()+p.$wp.height()-20?p.$wp.scrollTop(e+p.$wp.scrollTop()-(p.$wp.height()+p.$wp.offset().top)+p.helpers.scrollTop()+20):p.opts.iframe&&e>p.$wp.height()&&e&&p.$wp.scrollTop(n-p.$wp.height()+80)}else e=p.position.getBoundingRect().top,p.opts.toolbarBottom&&(e+=p.opts.toolbarStickyOffset),(p.helpers.isIOS()||p.helpers.isAndroid())&&(e-=p.helpers.scrollTop()),p.opts.iframe&&(e+=p.$iframe.offset().top,e-=p.helpers.scrollTop()),(e+=p.opts.toolbarStickyOffset)>p.o_win.innerHeight-20&&i(p.o_win).scrollTop(e+p.helpers.scrollTop()-p.o_win.innerHeight+20),e=p.position.getBoundingRect().top,p.opts.toolbarBottom||(e-=p.opts.toolbarStickyOffset),(p.helpers.isIOS()||p.helpers.isAndroid())&&(e-=p.helpers.scrollTop()),p.opts.iframe&&(e+=p.$iframe.offset().top,e-=p.helpers.scrollTop()),e<100&&i(p.o_win).scrollTop(e+p.helpers.scrollTop()-100)}function c(e){var t=p.selection.element();if(t&&0<=[\"INPUT\",\"TEXTAREA\"].indexOf(t.tagName))return!0;if(e&&0===e.which&&h&&(e.which=h),p.helpers.isAndroid()&&p.browser.mozilla)return!0;if(u)return!1;if(e&&p.helpers.isIOS()&&e.which===V.KEYCODE.ENTER&&p.doc.execCommand(\"undo\"),!p.selection.isCollapsed())return!0;if(e&&(e.which===V.KEYCODE.META||e.which===V.KEYCODE.CTRL))return!0;if(e&&E(e.which))return!0;if(e&&!p.helpers.isIOS()&&(e.which===V.KEYCODE.ENTER||e.which===V.KEYCODE.BACKSPACE||37<=e.which&&e.which<=40&&!p.browser.msie))try{l()}catch(o){}var n=p.selection.element();if(function i(e){if(!e)return!1;var t=e.innerHTML;return!!((t=t.replace(/<span[^>]*? class\\s*=\\s*[\"']?fr-marker[\"']?[^>]+>\\u200b<\\/span>/gi,\"\"))&&/\\u200B/.test(t)&&0<t.replace(/\\u200B/gi,\"\").length)}(n)&&!p.node.hasClass(n,\"fr-marker\")&&\"IFRAME\"!==n.tagName&&function a(e){return!p.helpers.isIOS()||0===((e.textContent||\"\").match(/[\\u3041-\\u3096\\u30A0-\\u30FF\\u4E00-\\u9FFF\\u3130-\\u318F\\uAC00-\\uD7AF]/gi)||[]).length}(n)){p.selection.save();var r=p.$el.find(\".fr-marker\")[1];p.opts.enter===V.ENTER_BR&&n===p.$el.get(0)&&8===e.which&&null==r.nextSibling||b(n),p.selection.restore()}}function L(e){if(-1!==navigator.userAgent.indexOf(\"Mac OS X\")){if(e.metaKey&&!e.altKey)return!0}else if(e.ctrlKey&&!e.altKey)return!0;return!1}function E(e){if(e>=V.KEYCODE.ARROW_LEFT&&e<=V.KEYCODE.ARROW_DOWN)return!0}function y(e){if(e>=V.KEYCODE.ZERO&&e<=V.KEYCODE.NINE)return!0;if(e>=V.KEYCODE.NUM_ZERO&&e<=V.KEYCODE.NUM_MULTIPLY)return!0;if(e>=V.KEYCODE.A&&e<=V.KEYCODE.Z)return!0;if(p.browser.webkit&&0===e)return!0;switch(e){case V.KEYCODE.SPACE:case V.KEYCODE.QUESTION_MARK:case V.KEYCODE.NUM_PLUS:case V.KEYCODE.NUM_MINUS:case V.KEYCODE.NUM_PERIOD:case V.KEYCODE.NUM_DIVISION:case V.KEYCODE.SEMICOLON:case V.KEYCODE.FF_SEMICOLON:case V.KEYCODE.DASH:case V.KEYCODE.EQUALS:case V.KEYCODE.FF_EQUALS:case V.KEYCODE.COMMA:case V.KEYCODE.PERIOD:case V.KEYCODE.SLASH:case V.KEYCODE.APOSTROPHE:case V.KEYCODE.SINGLE_QUOTE:case V.KEYCODE.OPEN_SQUARE_BRACKET:case V.KEYCODE.BACKSLASH:case V.KEYCODE.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}function d(e){var t=e.which;if(L(e)||37<=t&&t<=40||!y(t)&&t!==V.KEYCODE.DELETE&&t!==V.KEYCODE.BACKSPACE&&t!==V.KEYCODE.ENTER&&t!==V.KEYCODE.IME)return!0;n||(r=p.snapshot.get(),p.undo.canDo()||p.undo.saveStep()),clearTimeout(n),n=setTimeout(function(){n=null,p.undo.saveStep()},Math.max(250,p.opts.typingTimer))}function f(e){var t=e.which;if(L(e)||37<=t&&t<=40)return!0;r&&n?(p.undo.saveStep(r),r=null):void 0!==t&&0!==t||r||n||p.undo.saveStep()}function S(e){if(e&&\"BR\"===e.tagName)return!1;try{return 0===(e.textContent||\"\").length&&e.querySelector&&!e.querySelector(\":scope > br\")||e.childNodes&&1===e.childNodes.length&&e.childNodes[0].getAttribute&&(\"false\"===e.childNodes[0].getAttribute(\"contenteditable\")||p.node.hasClass(e.childNodes[0],\"fr-img-caption\"))}catch(t){return!1}}function N(e){var t=p.el.childNodes,n=p.html.defaultTag(),r=p.node.blockParent(p.selection.blocks()[0]);return r&&\"TR\"==r.tagName&&r.getAttribute(\"contenteditable\")==undefined&&(r=r.closest(\"table\")),!p.node.isEditable(e.target)||r&&\"false\"===r.getAttribute(\"contenteditable\")?p.toolbar.disable():p.toolbar.enable(),!(!e.target||e.target===p.el)||(0===t.length||void(t[0].offsetHeight+t[0].offsetTop<=e.offsetY?S(t[t.length-1])&&(n?p.$el.append(\"<\".concat(n,\">\").concat(V.MARKERS,\"<br></\").concat(n,\">\")):p.$el.append(\"\".concat(V.MARKERS,\"<br>\")),p.selection.restore(),l()):e.offsetY<=10&&S(t[0])&&(n?p.$el.prepend(\"<\".concat(n,\">\").concat(V.MARKERS,\"<br></\").concat(n,\">\")):p.$el.prepend(\"\".concat(V.MARKERS,\"<br>\")),p.selection.restore(),l())))}function T(){n&&clearTimeout(n)}return{_init:function M(){p.events.on(\"keydown\",d),p.events.on(\"input\",e),p.events.on(\"mousedown\",a),p.events.on(\"keyup input\",f),p.events.on(\"keypress\",o),p.events.on(\"keydown\",s),p.events.on(\"keyup\",c),p.events.on(\"destroy\",T),p.events.on(\"html.inserted\",c),p.events.on(\"cut\",t),p.opts.multiLine&&p.events.on(\"click\",N),p.events.on(\"initialized\",function(){p.el.addEventListener(\"compositionstart\",function(){if(p.selection.isCollapsed()){var e=p.selection.ranges(0),t=e.startContainer,n=e.startOffset;if(t&&t.nodeType===Node.TEXT_NODE&&n<=t.textContent.length&&0<n&&8203===t.textContent.charCodeAt(n-1)){p.selection.save();var r=p.$el.find(\".fr-marker\");i(r.get(0).previousSibling).before(V.HAIR_SPACE),r.get(0).previousSibling.textContent=r.get(0).previousSibling.textContent.replace(/\\u200B/gi,\"\"),p.selection.restore()}}}),p.el.addEventListener(\"compositionend\",function(){if(p.selection.isCollapsed()){var e=p.selection.ranges(0),t=e.startContainer,n=e.startOffset;if(t&&t.nodeType===Node.TEXT_NODE&&n<=t.textContent.length&&0<n&&8202===t.textContent.charCodeAt(0)){p.selection.save();var r=p.$el.find(\".fr-marker\");r.get(0).previousSibling.textContent=r.get(0).previousSibling.textContent.replace(/\\u200A/gi,\"\"),p.selection.restore()}}})})},ctrlKey:L,isCharacter:y,isArrow:E,forceUndo:function A(){n&&(clearTimeout(n),p.undo.saveStep(),r=null)},isIME:function x(){return u},isBrowserAction:function O(e){var t=e.which;return L(e)||t===V.KEYCODE.F5},positionCaret:l}},Object.assign(V.DEFAULTS,{pastePlain:!1,pasteDeniedTags:[\"colgroup\",\"col\",\"meta\"],pasteDeniedAttrs:[\"class\",\"id\"],pasteAllowedStyleProps:[\".*\"],pasteAllowLocalImages:!1}),V.MODULES.paste=function(A){var a,s,x,O,l,w,k=A.$;function n(e,t){try{A.win.localStorage.setItem(\"fr-copied-html\",e),A.win.localStorage.setItem(\"fr-copied-text\",t)}catch(n){}}function e(e){var t=A.html.getSelected();n(t,k(A.doc.createElement(\"div\")).html(t).text()),\"cut\"===e.type&&(A.undo.saveStep(),setTimeout(function(){A.selection.save(),A.html.wrap(),A.selection.restore(),A.events.focus(),A.undo.saveStep()},0))}var r=!1;function t(e){if(\"INPUT\"===e.target.nodeName&&\"text\"===e.target.type)return!0;if(A.edit.isDisabled())return!1;if(c(e.target))return!1;if(r)return!1;if((e.originalEvent&&(e=e.originalEvent),e&&e.clipboardData&&e.clipboardData.getData)&&((e.clipboardData||window.clipboardData).getData(\"text/html\")||\"\").match('content=\"Microsoft OneNote'))return!1;if(!1===A.events.trigger(\"paste.before\",[e]))return e.preventDefault(),!1;if(e&&e.clipboardData&&e.clipboardData.getData){var t=\"\";if(O=e.clipboardData.types,A.helpers.isArray(O))for(var n=0;n<O.length;n++)t+=\"\".concat(O[n],\";\");else t=O;if(a=\"\",/text\\/rtf/.test(t)&&(s=e.clipboardData.getData(\"text/rtf\")),/text\\/html/.test(t)?(a=e.clipboardData.getData(\"text/html\"),A.browser.mozilla&&(\"<p></p>\"===a||\"\"===a||/<!--StartFragment-->([ ])<!--EndFragment-->/.test(a)||/<!--StartFragment-->([<p></p>]*)<!--EndFragment-->/.test(a))&&(a=A.win.localStorage.getItem(\"fr-copied-html\"))):/text\\/rtf/.test(t)&&A.browser.safari?a=s:/public.rtf/.test(t)&&A.browser.safari&&(a=e.clipboardData.getData(\"text/rtf\")),x=e.clipboardData.getData(\"text\"),\"\"!==a)return f(),e.preventDefault&&(e.stopPropagation(),e.preventDefault()),!1;a=null}return function i(){if(A.selection.save(),A.events.disableBlur(),a=null,l){l.html(\"\");var e=d(A.selection.get().anchorNode)+A.$wp.offset().top;l.css(\"top\",e),A.browser.edge&&A.opts.iframe&&A.$el.append(l)}else{var t=document.getElementsByTagName(\"BODY\")[0],n=window.getComputedStyle(t).transform;if(\"none\"!==n){var r=d(A.selection.get().anchorNode)+A.$wp.offset().top;l=k('<div contenteditable=\"true\" style=\"position: fixed; top: '+r+'px; left: -9999px; height: 100%; width: 0; word-break: break-all; overflow:hidden; z-index: 2147483647; line-height: 140%; -moz-user-select: text; -webkit-user-select: text; -ms-user-select: text; user-select: text;\" tabIndex=\"-1\"></div>')}else l=k('<div contenteditable=\"true\" style=\"position: fixed; top: 0; left: -9999px; height: 100%; width: 0; word-break: break-all; overflow:hidden; z-index: 2147483647; line-height: 140%; -moz-user-select: text; -webkit-user-select: text; -ms-user-select: text; user-select: text;\" tabIndex=\"-1\"></div>');A.browser.webkit||A.browser.mozilla?(\"none\"===n&&l.css(\"top\",A.$sc.scrollTop()),A.$el.after(l)):A.browser.edge&&A.opts.iframe?A.$el.append(l):A.$box.after(l),A.events.on(\"destroy\",function(){l.remove()})}var o;A.helpers.isIOS()&&A.$sc&&(o=A.$sc.scrollTop());A.opts.iframe&&A.$el.attr(\"contenteditable\",\"false\");l.focus(),A.helpers.isIOS()&&A.$sc&&A.$sc.scrollTop(o);A.win.setTimeout(f,1)}(),!1}function c(e){return e&&\"false\"===e.contentEditable}function o(e){if(e.originalEvent&&(e=e.originalEvent),c(e.target))return!1;if(e&&e.dataTransfer&&e.dataTransfer.getData){var t=\"\";if(O=e.dataTransfer.types,A.helpers.isArray(O))for(var n=0;n<O.length;n++)t+=\"\".concat(O[n],\";\");else t=O;if(a=\"\",/text\\/rtf/.test(t)&&(s=e.dataTransfer.getData(\"text/rtf\")),/text\\/html/.test(t)?a=e.dataTransfer.getData(\"text/html\"):/text\\/rtf/.test(t)&&A.browser.safari?a=s:/text\\/plain/.test(t)&&!this.browser.mozilla&&(a=A.html.escapeEntities(e.dataTransfer.getData(\"text/plain\")).replace(/\\n/g,\"<br>\")),\"\"!==a){A.keys.forceUndo(),w=A.snapshot.get(),A.selection.save(),A.$el.find(\".fr-marker\").removeClass(\"fr-marker\").addClass(\"fr-marker-helper\");var r=A.markers.insertAtPoint(e);if(A.$el.find(\".fr-marker\").removeClass(\"fr-marker\").addClass(\"fr-marker-placeholder\"),A.$el.find(\".fr-marker-helper\").addClass(\"fr-marker\").removeClass(\"fr-marker-helper\"),A.selection.restore(),A.selection.remove(),A.$el.find(\".fr-marker-placeholder\").addClass(\"fr-marker\").removeClass(\"fr-marker-placeholder\"),!1!==r){var o=A.el.querySelector(\".fr-marker\");return k(o).replaceWith(V.MARKERS),A.selection.restore(),f(),e.preventDefault&&(e.stopPropagation(),e.preventDefault()),!1}}else a=null}}function d(e){return e.nodeType===Node.TEXT_NODE?e.parentNode.offsetTop:e.offsetTop}function f(){A.opts.iframe&&A.$el.attr(\"contenteditable\",\"true\"),A.browser.edge&&A.opts.iframe&&A.$box.after(l),w||(A.keys.forceUndo(),w=A.snapshot.get()),a||(a=l.get(0).innerHTML,x=l.text(),A.$el[0].setAttribute(\"plainpaste\",!0),A.selection.restore(),A.events.enableBlur());var e=a.match(/(class=\"?Mso|class='?Mso|class=\"?Xl|class='?Xl|class=Xl|style=\"[^\"]*\\bmso-|style='[^']*\\bmso-|w:WordDocument|LibreOffice)/gi),t=A.events.chainTrigger(\"paste.beforeCleanup\",a);if(t&&\"string\"==typeof t){a=t;var n=(new DOMParser).parseFromString(t,\"text/html\");x=n.body.innerText}(!e||e&&!1!==A.events.trigger(\"paste.wordPaste\",[a]))&&i(a,e)}function $(e){for(var t=\"\",n=0;n++<e;)t+=\"&nbsp;\";return t}function i(e,t,n){var r,o=null,i=null;if(0<=e.toLowerCase().indexOf(\"<body\")){var a=\"\";0<=e.indexOf(\"<style\")&&(a=e.replace(/[.\\s\\S\\w\\W<>]*(<style[^>]*>[\\s]*[.\\s\\S\\w\\W<>]*[\\s]*<\\/style>)[.\\s\\S\\w\\W<>]*/gi,\"$1\")),e=(e=(e=a+e.replace(/[.\\s\\S\\w\\W<>]*<body[^>]*>[\\s]*([.\\s\\S\\w\\W<>]*)[\\s]*<\\/body>[.\\s\\S\\w\\W<>]*/gi,\"$1\")).replace(/<pre(?:[\\w\\W]*?)>(?:[\\w\\W]*?)<\\/pre>/g,function(e){return e.replace(/\\n/g,\"<br />\")})).replace(/ \\n/g,\" \").replace(/\\n /g,\" \").replace(/([^>])\\n([^<])/g,\"$1 $2\")}var s=!1;0<=e.indexOf('id=\"docs-internal-guid')&&(e=e.replace(/^[\\w\\W\\s\\S]* id=\"docs-internal-guid[^>]*>([\\w\\W\\s\\S]*)<\\/b>[\\w\\W\\s\\S]*$/g,\"$1\"),s=!0),(0<=e.indexOf('content=\"Sheets\"')||0<=e.indexOf(\"google-sheets-html-origin\"))&&(e=e.replace(/width:0px;/g,\"\"));var l=!1;if(!t)if((l=function y(){var e=null;try{e=A.win.localStorage.getItem(\"fr-copied-text\")}catch(t){}return!(!e||!x||O&&-1===O.indexOf(\"text/html\")||x.replace(/\\u00A0/gi,\" \").replace(/\\r|\\n/gi,\"\")!==e.replace(/\\u00A0/gi,\" \").replace(/\\r|\\n/gi,\"\")&&x.replace(/\\s/g,\"\")!==e.replace(/\\s/g,\"\"))}())&&(e=A.win.localStorage.getItem(\"fr-copied-html\")),l)e=A.clean.html(e,A.opts.pasteDeniedTags,A.opts.pasteDeniedAttrs);else{var c=A.opts.htmlAllowedStyleProps;A.opts.htmlAllowedStyleProps=A.opts.pasteAllowedStyleProps,A.opts.htmlAllowComments=!1,e=(e=(e=e.replace(/<span class=\"Apple-tab-span\">\\s*<\\/span>/g,$(A.opts.tabSpaces||4))).replace(/<span class=\"Apple-tab-span\" style=\"white-space:pre\">(\\t*)<\\/span>/g,function(e,t){return $(t.length*(A.opts.tabSpaces||4))})).replace(/\\t/g,$(A.opts.tabSpaces||4)),e=A.clean.html(e,A.opts.pasteDeniedTags,A.opts.pasteDeniedAttrs),A.opts.htmlAllowedStyleProps=c,A.opts.htmlAllowComments=!0,A.html.defaultTag()&&\"div\"===A.html.defaultTag()||(e=H(e)),e=(e=e.replace(/\\r/g,\"\")).replace(/^ */g,\"\").replace(/ *$/g,\"\")}!t||A.wordPaste&&n||(0===(e=e.replace(/^\\n*/g,\"\").replace(/^ /g,\"\")).indexOf(\"<colgroup>\")&&(e=\"<table>\".concat(e,\"</table>\")),e=H(e=function S(e){var t;e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/<p(.*?)class=\"?'?MsoListParagraph\"?'? ([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<ul><li>$3</li></ul>\")).replace(/<p(.*?)class=\"?'?NumberedText\"?'? ([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<ol><li>$3</li></ol>\")).replace(/<p(.*?)class=\"?'?MsoListParagraphCxSpFirst\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<ul><li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?NumberedTextCxSpFirst\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<ol><li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?MsoListParagraphCxSpMiddle\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?NumberedTextCxSpMiddle\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?MsoListBullet\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li>\")).replace(/<p(.*?)class=\"?'?MsoListParagraphCxSpLast\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li></ul>\")).replace(/<p(.*?)class=\"?'?NumberedTextCxSpLast\"?'?([\\s\\S]*?)(level\\d)?([\\s\\S]*?)>([\\s\\S]*?)<\\/p>/gi,\"<li$3>$5</li></ol>\")).replace(/<span([^<]*?)style=\"?'?mso-list:Ignore\"?'?([\\s\\S]*?)>([\\s\\S]*?)<span/gi,\"<span><span\")).replace(/<!--\\[if !supportLists\\]-->([\\s\\S]*?)<!--\\[endif\\]-->/gi,\"\")).replace(/<!\\[if !supportLists\\]>([\\s\\S]*?)<!\\[endif\\]>/gi,\"\")).replace(/(\\n|\\r| class=(\")?Mso[a-zA-Z0-9]+(\")?)/gi,\" \")).replace(/<!--[\\s\\S]*?-->/gi,\"\")).replace(/<(\\/)*(meta|link|span|\\\\?xml:|st1:|o:|font)(.*?)>/gi,\"\");var n,r=[\"style\",\"script\",\"applet\",\"embed\",\"noframes\",\"noscript\"];for(t=0;t<r.length;t++){var o=new RegExp(\"<\".concat(r[t],\".*?\").concat(r[t],\"(.*?)>\"),\"gi\");e=e.replace(o,\"\")}for(e=(e=(e=e.replace(/&nbsp;/gi,\" \")).replace(/<td([^>]*)><\\/td>/g,\"<td$1><br></td>\")).replace(/<th([^>]*)><\\/th>/g,\"<th$1><br></th>\");(e=(n=e).replace(/<[^/>][^>]*><\\/[^>]+>/gi,\"\"))!==n;);e=(e=e.replace(/<lilevel([^1])([^>]*)>/gi,'<li data-indent=\"true\"$2>')).replace(/<lilevel1([^>]*)>/gi,\"<li$1>\"),e=(e=(e=A.clean.html(e,A.opts.pasteDeniedTags,A.opts.pasteDeniedAttrs)).replace(/<a>(.[^<]+)<\\/a>/gi,\"$1\")).replace(/<br> */g,\"<br>\");var i=A.o_doc.createElement(\"div\");i.innerHTML=e;var a=i.querySelectorAll(\"li[data-indent]\");for(t=0;t<a.length;t++){var s=a[t],l=s.previousElementSibling;if(l&&\"LI\"===l.tagName){var c=l.querySelector(\":scope > ul, :scope > ol\");c||(c=document.createElement(\"ul\"),l.appendChild(c)),c.appendChild(s)}else s.removeAttribute(\"data-indent\")}return A.html.cleanBlankSpaces(i),e=i.innerHTML}(e))),A.opts.pastePlain&&(e=function N(e){var t,n=null,r=A.doc.createElement(\"div\");r.innerHTML=e;var o=r.querySelectorAll(\"p, div, h1, h2, h3, h4, h5, h6, pre, blockquote\");for(t=0;t<o.length;t++)(n=o[t]).innerText&&(n.outerHTML=\"<\".concat(A.html.defaultTag()||\"DIV\",\">\").concat(n.innerText,\"</\").concat(A.html.defaultTag()||\"DIV\",\">\"));for(t=(o=r.querySelectorAll(\"*:not(\".concat(\"p, div, h1, h2, h3, h4, h5, h6, pre, blockquote, ul, ol, li, table, tbody, thead, tr, td, br, img\".split(\",\").join(\"):not(\"),\")\"))).length-1;0<=t;t--)(n=o[t]).outerHTML=n.innerHTML;return function i(e){for(var t=A.node.contents(e),n=0;n<t.length;n++)t[n].nodeType!==Node.TEXT_NODE&&t[n].nodeType!==Node.ELEMENT_NODE?t[n].parentNode.removeChild(t[n]):i(t[n])}(r),r.innerHTML}(e));var d=A.events.chainTrigger(\"paste.afterCleanup\",e);if(A.$el[0].removeAttribute(\"plainpaste\",!0),\"string\"==typeof d&&(e=d),\"\"!==e){var f=A.o_doc.createElement(\"div\");0<=(f.innerHTML=e).indexOf(\"<body>\")?(A.html.cleanBlankSpaces(f),A.spaces.normalize(f,!0)):A.spaces.normalize(f);var p=f.getElementsByTagName(\"span\");for(r=p.length-1;0<=r;r--){var h=p[r];0===h.attributes.length&&(h.outerHTML=h.innerHTML)}if(!0===A.opts.linkAlwaysBlank){var u=f.getElementsByTagName(\"a\");for(r=u.length-1;0<=r;r--){var g=u[r];g.getAttribute(\"target\")||g.setAttribute(\"target\",\"_blank\")}}var C=A.selection.element(),m=!1;if(C&&k(C).parentsUntil(A.el,\"ul, ol\").length&&(m=!0),m){var v=f.children;1===v.length&&0<=[\"OL\",\"UL\"].indexOf(v[0].tagName)&&(v[0].outerHTML=v[0].innerHTML)}if(!s){var b=f.getElementsByTagName(\"br\");for(r=b.length-1;0<=r;r--){var L=b[r];A.node.isBlock(L.previousSibling)&&L.parentNode.removeChild(L)}}if(A.opts.enter===V.ENTER_BR)for(r=(o=f.querySelectorAll(\"p, div\")).length-1;0<=r;r--)0===(i=o[r]).attributes.length&&(i.outerHTML=i.innerHTML+(i.nextSibling&&!A.node.isEmpty(i)?\"<br>\":\"\"));else if(A.opts.enter===V.ENTER_DIV)for(r=(o=f.getElementsByTagName(\"p\")).length-1;0<=r;r--)0===(i=o[r]).attributes.length&&(i.outerHTML=\"<div>\".concat(i.innerHTML,\"</div>\"));else A.opts.enter===V.ENTER_P&&1===f.childNodes.length&&\"P\"===f.childNodes[0].tagName&&0===f.childNodes[0].attributes.length&&(f.childNodes[0].outerHTML=f.childNodes[0].innerHTML);if(f.children&&0<f.children.length)if(A.opts.trackChangesEnabled)for(var E=0;E<f.children.length;E++)f.children[E].setAttribute(\"id\",\"isPasted\");else f.children[0].setAttribute(\"id\",\"isPasted\");e=(e=f.innerHTML).replace(/\\n/g,\"\"),l&&(e=function T(e){var t,n=A.o_doc.createElement(\"div\");n.innerHTML=e;var r=n.querySelectorAll(\"*:empty:not(td):not(th):not(tr):not(iframe):not(svg):not(\".concat(V.VOID_ELEMENTS.join(\"):not(\"),\"):not(\").concat(A.opts.htmlAllowedEmptyTags.join(\"):not(\"),\")\"));for(;r.length;){for(t=0;t<r.length;t++)r[t].parentNode.removeChild(r[t]);r=n.querySelectorAll(\"*:empty:not(td):not(th):not(tr):not(iframe):not(svg):not(\".concat(V.VOID_ELEMENTS.join(\"):not(\"),\"):not(\").concat(A.opts.htmlAllowedEmptyTags.join(\"):not(\"),\")\"))}return n.innerHTML}(e)),A.html.insert(e,!0)}!function M(){A.events.trigger(\"paste.after\")}(),A.undo.saveStep(w),w=null,A.undo.saveStep()}function p(e){for(var t=e.length-1;0<=t;t--)e[t].attributes&&e[t].attributes.length&&e.splice(t,1);return e}function H(e){var t,n=A.o_doc.createElement(\"div\");n.innerHTML=e;for(var r=p(Array.prototype.slice.call(n.querySelectorAll(\":scope > div:not([style]), td > div:not([style]), th > div:not([style]), li > div:not([style])\")));r.length;){var o=r[r.length-1];if(A.html.defaultTag()&&\"div\"!==A.html.defaultTag())o.querySelector(A.html.blockTagsQuery())?o.outerHTML=o.innerHTML:o.outerHTML=\"<\".concat(A.html.defaultTag(),\">\").concat(o.innerHTML,\"</\").concat(A.html.defaultTag(),\">\");else{var i=o.querySelectorAll(\"*\");!i.length||\"BR\"!==i[i.length-1].tagName&&0===o.innerText.length?o.outerHTML=o.innerHTML+(o.nextSibling?\"<br>\":\"\"):!i.length||\"BR\"!==i[i.length-1].tagName||i[i.length-1].nextSibling?o.outerHTML=o.innerHTML+(o.nextSibling?\"<br>\":\"\"):o.outerHTML=o.innerHTML}r=p(Array.prototype.slice.call(n.querySelectorAll(\":scope > div:not([style]), td > div:not([style]), th > div:not([style]), li > div:not([style])\")))}for(r=p(Array.prototype.slice.call(n.querySelectorAll(\"div:not([style])\")));r.length;){for(t=0;t<r.length;t++){var a=r[t],s=a.innerHTML.replace(/\\u0009/gi,\"\").trim();a.outerHTML=s}r=p(Array.prototype.slice.call(n.querySelectorAll(\"div:not([style])\")))}return n.innerHTML}function h(){A.el.removeEventListener(\"copy\",e),A.el.removeEventListener(\"cut\",e),A.el.removeEventListener(\"paste\",t)}return{_init:function u(){A.el.addEventListener(\"copy\",e),A.el.addEventListener(\"cut\",e),A.el.addEventListener(\"paste\",t,{capture:!0}),A.events.on(\"drop\",o),A.browser.msie&&A.browser.version<11&&(A.events.on(\"mouseup\",function(e){2===e.button&&(setTimeout(function(){r=!1},50),r=!0)},!0),A.events.on(\"beforepaste\",t)),A.events.on(\"destroy\",h)},cleanEmptyTagsAndDivs:H,getRtfClipboard:function g(){return s},saveCopiedText:n,clean:i}},Object.assign(V.DEFAULTS,{shortcutsEnabled:[],shortcutsHint:!0}),V.SHORTCUTS_MAP={},V.RegisterShortcut=function(e,t,n,r,o,i){V.SHORTCUTS_MAP[(o?\"^\":\"\")+(i?\"@\":\"\")+e]={cmd:t,val:n,letter:r,shift:o,option:i},V.DEFAULTS.shortcutsEnabled.push(t)},V.RegisterShortcut(V.KEYCODE.E,\"show\",null,\"E\",!1,!1),V.RegisterShortcut(V.KEYCODE.B,\"bold\",null,\"B\",!1,!1),V.RegisterShortcut(V.KEYCODE.I,\"italic\",null,\"I\",!1,!1),V.RegisterShortcut(V.KEYCODE.U,\"underline\",null,\"U\",!1,!1),V.RegisterShortcut(V.KEYCODE.S,\"strikeThrough\",null,\"S\",!1,!1),V.RegisterShortcut(V.KEYCODE.CLOSE_SQUARE_BRACKET,\"indent\",null,\"]\",!1,!1),V.RegisterShortcut(V.KEYCODE.OPEN_SQUARE_BRACKET,\"outdent\",null,\"[\",!1,!1),V.RegisterShortcut(V.KEYCODE.Z,\"undo\",null,\"Z\",!1,!1),V.RegisterShortcut(V.KEYCODE.Z,\"redo\",null,\"Z\",!0,!1),V.RegisterShortcut(V.KEYCODE.Y,\"redo\",null,\"Y\",!1,!1),V.MODULES.shortcuts=function(s){var r=null;var l=!1;function e(e){if(!s.core.hasFocus())return!0;var t=e.which,n=-1!==navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey;if(\"keyup\"===e.type&&l&&t!==V.KEYCODE.META)return l=!1;\"keydown\"===e.type&&(l=!1);var r=(e.shiftKey?\"^\":\"\")+(e.altKey?\"@\":\"\")+t,o=s.node.blockParent(s.selection.blocks()[0]);if(o&&\"TR\"==o.tagName&&o.getAttribute(\"contenteditable\")==undefined&&(o=o.closest(\"table\")),n&&V.SHORTCUTS_MAP[r]&&(!o||\"false\"!==o.getAttribute(\"contenteditable\"))){var i=V.SHORTCUTS_MAP[r].cmd;if(i&&0<=s.opts.shortcutsEnabled.indexOf(i)){var a=V.SHORTCUTS_MAP[r].val;if(!1===s.events.trigger(\"shortcut\",[e,i,a]))return!(l=!0);if(i&&(s.commands[i]||V.COMMANDS[i]&&V.COMMANDS[i].callback))return e.preventDefault(),e.stopPropagation(),\"keydown\"===e.type&&((s.commands[i]||V.COMMANDS[i].callback)(),l=!0),!1}}}return{_init:function t(){s.events.on(\"keydown\",e,!0),s.events.on(\"keyup\",e,!0)},get:function o(e){if(!s.opts.shortcutsHint)return null;if(!r)for(var t in r={},V.SHORTCUTS_MAP)Object.prototype.hasOwnProperty.call(V.SHORTCUTS_MAP,t)&&0<=s.opts.shortcutsEnabled.indexOf(V.SHORTCUTS_MAP[t].cmd)&&(r[\"\".concat(V.SHORTCUTS_MAP[t].cmd,\".\").concat(V.SHORTCUTS_MAP[t].val||\"\")]={shift:V.SHORTCUTS_MAP[t].shift,option:V.SHORTCUTS_MAP[t].option,letter:V.SHORTCUTS_MAP[t].letter});var n=r[e];return n?(s.helpers.isMac()?String.fromCharCode(8984):\"\".concat(s.language.translate(\"Ctrl\"),\"+\"))+(n.shift?s.helpers.isMac()?String.fromCharCode(8679):\"\".concat(s.language.translate(\"Shift\"),\"+\"):\"\")+(n.option?s.helpers.isMac()?String.fromCharCode(8997):\"\".concat(s.language.translate(\"Alt\"),\"+\"):\"\")+n.letter:null}}},V.MODULES.snapshot=function(l){function n(e){for(var t=e.parentNode.childNodes,n=0,r=null,o=0;o<t.length;o++){if(r){var i=t[o].nodeType===Node.TEXT_NODE&&\"\"===t[o].textContent,a=r.nodeType===Node.TEXT_NODE&&t[o].nodeType===Node.TEXT_NODE,s=r.nodeType===Node.TEXT_NODE&&\"\"===r.textContent;i||a||s||n++}if(t[o]===e)return n;r=t[o]}}function o(e){var t=[];if(!e.parentNode)return[];for(;!l.node.isElement(e);)t.push(n(e)),e=e.parentNode;return t.reverse()}function i(e,t){for(;e&&e.nodeType===Node.TEXT_NODE;){var n=e.previousSibling;n&&n.nodeType===Node.TEXT_NODE&&(t+=n.textContent.length),e=n}return t}function c(e){for(var t=l.el,n=0;n<e.length;n++)t=t.childNodes[e[n]];return t}function r(e,t){try{var n=c(t.scLoc),r=t.scOffset,o=c(t.ecLoc),i=t.ecOffset,a=l.doc.createRange();a.setStart(n,r),a.setEnd(o,i),e.addRange(a)}catch(s){}}return{get:function a(){var e,t={};if(l.events.trigger(\"snapshot.before\"),t.html=(l.$wp?l.$el.html():l.$oel.get(0).outerHTML).replace(/ style=\"\"/g,\"\"),t.ranges=[],l.$wp&&l.selection.inEditor()&&l.core.hasFocus())for(var n=l.selection.ranges(),r=0;r<n.length;r++)t.ranges.push({scLoc:o((e=n[r]).startContainer),scOffset:i(e.startContainer,e.startOffset),ecLoc:o(e.endContainer),ecOffset:i(e.endContainer,e.endOffset)});return l.events.trigger(\"snapshot.after\",[t]),t},restore:function s(e){l.$el.html()!==e.html&&(l.opts.htmlExecuteScripts?l.$el.html(e.html):l.el.innerHTML=e.html);var t=l.selection.get();l.selection.clear(),l.events.focus(!0);for(var n=0;n<e.ranges.length;n++)r(t,e.ranges[n])},equal:function d(e,t){return e.html===t.html&&(!l.core.hasFocus()||JSON.stringify(e.ranges)===JSON.stringify(t.ranges))}}},V.MODULES.undo=function(n){function e(e){var t=e.which;n.keys.ctrlKey(e)&&(t===V.KEYCODE.Z&&e.shiftKey&&e.preventDefault(),t===V.KEYCODE.Z&&e.preventDefault())}var t=null;function r(){if(n.undo_stack&&!n.undoing)for(;n.undo_stack.length>n.undo_index;)n.undo_stack.pop()}function o(){n.undo_index=0,n.undo_stack=[]}function i(){n.undo_stack=[]}return{_init:function a(){o(),n.events.on(\"initialized\",function(){t=(n.$wp?n.$el.html():n.$oel.get(0).outerHTML).replace(/ style=\"\"/g,\"\")}),n.events.on(\"blur\",function(){n.el.querySelector(\".fr-dragging\")||n.undo.saveStep()}),n.events.on(\"keydown\",e),n.events.on(\"destroy\",i)},run:function s(){if(1<n.undo_index){n.undoing=!0;var e=n.undo_stack[--n.undo_index-1];clearTimeout(n._content_changed_timer),n.snapshot.restore(e),t=e.html,n.popups.hideAll(),n.toolbar.enable(),n.events.trigger(\"contentChanged\"),n.events.trigger(\"commands.undo\"),n.undoing=!1,n.selection.restore()}},redo:function l(){if(n.undo_index<n.undo_stack.length){n.undoing=!0;var e=n.undo_stack[n.undo_index++];clearTimeout(n._content_changed_timer),n.snapshot.restore(e),t=e.html,n.popups.hideAll(),n.toolbar.enable(),n.events.trigger(\"contentChanged\"),n.events.trigger(\"commands.redo\"),n.undoing=!1}},canDo:function c(){return!(0===n.undo_stack.length||n.undo_index<=1)},canRedo:function d(){return n.undo_index!==n.undo_stack.length},dropRedo:r,reset:o,saveStep:function f(e){if(n.undo_stack&&!n.undoing&&!n.el.querySelector(\".fr-marker\"))if(void 0===e){if((e=n.snapshot.get())&&e.html&&n.undo_stack[n.undo_stack.length-1]&&e.html===n.undo_stack[n.undo_stack.length-1].html)return;n.undo_stack[n.undo_index-1]&&n.snapshot.equal(n.undo_stack[n.undo_index-1],e)||(r(),n.undo_stack.push(e),n.undo_index++,function o(e,t){var n=t.split(\"fr-selected-cell\").join(\"\");n=n.split(' class=\"\"').join(\"\");var r=e.split(\"fr-selected-cell\").join(\"\");return n===(r=r.split(' class=\"\"').join(\"\"))}(t,e.html)||(n.events.trigger(\"contentChanged\"),t=e.html))}else r(),0<n.undo_index?n.undo_stack[n.undo_index-1]=e:(n.undo_stack.push(e),n.undo_index++)}}},Object.assign(V.DEFAULTS,{height:null,heightMax:null,heightMin:null,width:null}),V.MODULES.size=function(r){function e(){o(),r.opts.height&&r.$el.css(\"minHeight\",r.opts.height-r.helpers.getPX(r.$el.css(\"padding-top\"))-r.helpers.getPX(r.$el.css(\"padding-bottom\")));var e=!1;if(r.opts.fullPage)for(var t=r.$el.find(\"span,p,div\"),n=0;n<t.length;n++)if(t[n].style.height&&t[n].style.height.includes(\"vh\")){e=!0;break}r.opts.fullPage&&e&&(r.opts.heightMin&&r.$iframe.css(\"minHeight\",r.opts.heightMin),r.opts.heightMax&&r.$iframe.css(\"maxHeight\",r.opts.heightMax),r.$el.css(\"overflow-y\",\"auto\")),r.$iframe.height(r.$el.outerHeight(!0))}function o(){r.opts.heightMin?r.$el.css(\"minHeight\",r.opts.heightMin):r.$el.css(\"minHeight\",\"\"),r.opts.heightMax?(r.$wp.css(\"maxHeight\",r.opts.heightMax),r.$wp.css(\"overflow\",\"auto\")):(r.$wp.css(\"maxHeight\",\"\"),r.$wp.css(\"overflow\",\"\")),r.opts.height?(r.$wp.css(\"height\",r.opts.height),r.$wp.css(\"overflow\",\"auto\"),r.$el.css(\"minHeight\",r.opts.height-r.helpers.getPX(r.$el.css(\"padding-top\"))-r.helpers.getPX(r.$el.css(\"padding-bottom\")))):(r.$wp.css(\"height\",\"\"),r.opts.heightMin||r.$el.css(\"minHeight\",\"\"),r.opts.heightMax||r.$wp.css(\"overflow\",\"\")),r.opts.width&&r.$box.width(r.opts.width)}return{_init:function t(){if(!r.$wp)return!1;o(),r.$iframe&&(r.events.on(\"keyup keydown\",function(){setTimeout(e,0)},!0),r.events.on(\"commands.after html.set init initialized paste.after\",e))},syncIframe:e,refresh:o}},Object.assign(V.DEFAULTS,{documentReady:!1,editorClass:null,typingTimer:500,iframe:!1,requestWithCORS:!0,requestWithCredentials:!1,requestHeaders:{},useClasses:!0,spellcheck:!0,iframeDefaultStyle:'html{margin:0px;height:auto;}body{height:auto;padding:20px;background:transparent;color:#000000;position:relative;z-index: 2;-webkit-user-select:auto;margin:0px;overflow:hidden;min-height:20px;}body:after{content:\"\";display:block;clear:both;}body::-moz-selection{background:#b5d6fd;color:#000;}body::selection{background:#b5d6fd;color:#000;}',iframeStyle:\"\",iframeStyleFiles:[],direction:\"auto\",zIndex:1,tabIndex:null,disableRightClick:!1,scrollableContainer:\"body\",keepFormatOnDelete:!1,theme:null}),V.MODULES.core=function(a){var r=a.$;function n(){if(a.$box.addClass(\"fr-box\".concat(a.opts.editorClass?\" \".concat(a.opts.editorClass):\"\")),a.$box.attr(\"role\",\"application\"),a.$wp.addClass(\"fr-wrapper\"),a.opts.documentReady&&a.$box.addClass(\"fr-document\"),function o(){a.opts.iframe||a.$el.addClass(\"fr-element fr-view\"),(a.opts.height&&a.opts.height<window.innerHeight||a.opts.heightMax&&a.opts.heightMax<window.innerHeight)&&a.$el.addClass(\"fr-element-scroll-visible\")}(),a.opts.iframe){a.$iframe.addClass(\"fr-iframe\"),a.$el.addClass(\"fr-view\");for(var e=0;e<a.o_doc.styleSheets.length;e++){var t=void 0;try{t=a.o_doc.styleSheets[e].cssRules}catch(i){}if(t)for(var n=0,r=t.length;n<r;n++)!t[n].selectorText||0!==t[n].selectorText.indexOf(\".fr-view\")&&0!==t[n].selectorText.indexOf(\".fr-element\")||0<t[n].style.cssText.length&&(0===t[n].selectorText.indexOf(\".fr-view\")?a.opts.iframeStyle+=\"\".concat(t[n].selectorText.replace(/\\.fr-view/g,\"body\"),\"{\").concat(t[n].style.cssText,\"}\"):a.opts.iframeStyle+=\"\".concat(t[n].selectorText.replace(/\\.fr-element/g,\"body\"),\"{\").concat(t[n].style.cssText,\"}\"))}}\"auto\"!==a.opts.direction&&a.$box.removeClass(\"fr-ltr fr-rtl\").addClass(\"fr-\".concat(a.opts.direction)),a.$el.attr(\"dir\",a.opts.direction),a.$wp.attr(\"dir\",a.opts.direction),1<a.opts.zIndex&&a.$box.css(\"z-index\",a.opts.zIndex),a.opts.theme&&a.$box.addClass(\"\".concat(a.opts.theme,\"-theme\")),a.opts.tabIndex=a.opts.tabIndex||a.$oel.attr(\"tabIndex\"),a.opts.tabIndex&&a.$el.attr(\"tabIndex\",a.opts.tabIndex)}return{_init:function o(){if(V.INSTANCES.push(a),function e(){a.drag_support={filereader:\"undefined\"!=typeof FileReader,formdata:Boolean(a.win.FormData),progress:\"upload\"in new XMLHttpRequest}}(),a.$wp){n(),a.html.set(a._original_html),a.$el.attr(\"spellcheck\",a.opts.spellcheck),a.helpers.isMobile()&&(a.$el.attr(\"autocomplete\",a.opts.spellcheck?\"on\":\"off\"),a.$el.attr(\"autocorrect\",a.opts.spellcheck?\"on\":\"off\"),a.$el.attr(\"autocapitalize\",a.opts.spellcheck?\"on\":\"off\")),a.opts.disableRightClick&&a.events.$on(a.$el,\"contextmenu\",function(e){if(2===e.button)return e.preventDefault(),e.stopPropagation(),!1});try{a.doc.execCommand(\"styleWithCSS\",!1,!1)}catch(t){}}\"TEXTAREA\"===a.$oel.get(0).tagName&&(a.events.on(\"contentChanged\",function(){a.$oel.val(a.html.get())}),a.events.on(\"form.submit\",function(){a.$oel.val(a.html.get())}),a.events.on(\"form.reset\",function(){a.html.set(a._original_html)}),a.$oel.val(a.html.get())),a.helpers.isIOS()&&a.events.$on(a.$doc,\"selectionchange\",function(){a.$doc.get(0).hasFocus()||a.$win.get(0).focus()}),a.events.trigger(\"init\"),a.opts.autofocus&&!a.opts.initOnClick&&a.$wp&&a.events.on(\"initialized\",function(){a.events.focus(!0)})},destroy:function t(e){\"TEXTAREA\"===a.$oel.get(0).tagName&&a.$oel.val(e),a.$box&&a.$box.removeAttr(\"role\"),a.$wp&&(\"TEXTAREA\"===a.$oel.get(0).tagName?(a.$el.html(\"\"),a.$wp.html(\"\"),a.$box.replaceWith(a.$oel),a.$oel.show()):(a.$wp.replaceWith(e),a.$el.html(\"\"),a.$box.removeClass(\"fr-view fr-ltr fr-box \".concat(a.opts.editorClass||\"\")),a.opts.theme&&a.$box.addClass(\"\".concat(a.opts.theme,\"-theme\")))),this.$wp=null,this.$el=null,this.el=null,this.$box=null},isEmpty:function e(){return a.node.isEmpty(a.el)},getXHR:function i(e,t){var n=new XMLHttpRequest;for(var r in n.open(t,e,!0),a.opts.requestWithCredentials&&(n.withCredentials=!0),a.opts.requestHeaders)Object.prototype.hasOwnProperty.call(a.opts.requestHeaders,r)&&n.setRequestHeader(r,a.opts.requestHeaders[r]);return n},injectStyle:function s(e){if(a.opts.iframe){a.$head.find(\"style[data-fr-style], link[data-fr-style]\").remove(),a.$head.append('<style data-fr-style=\"true\">'.concat(e,\"</style>\"));for(var t=0;t<a.opts.iframeStyleFiles.length;t++){var n=r('<link data-fr-style=\"true\" rel=\"stylesheet\" href=\"'.concat(a.opts.iframeStyleFiles[t],'\">'));n.get(0).addEventListener(\"load\",a.size.syncIframe),a.$head.append(n)}}},hasFocus:function l(){return a.browser.mozilla&&a.helpers.isMobile()?a.selection.inEditor():a.node.hasFocus(a.el)||0<a.$el.find(\"*:focus\").length},sameInstance:function c(e){if(!e)return!1;var t=e.data(\"instance\");return!!t&&t.id===a.id}}},V.POPUP_TEMPLATES={\"text.edit\":\"[_EDIT_]\"},V.RegisterTemplate=function(e,t){V.POPUP_TEMPLATES[e]=t},V.MODULES.popups=function(h){var r,d=h.$;h.shared.popups||(h.shared.popups={});var u,g=h.shared.popups;function C(e,t){t.isVisible()||(t=h.$sc),t.is(g[e].data(\"container\"))||(g[e].data(\"container\",t),t.append(g[e]))}function o(e){var t;e.find(\".fr-upload-progress\").addClass(\"fr-height-set\"),e.find(\".fr-upload-progress\").removeClass(\"fr-height-auto\"),h.popups.get(\"filesManager.insert\").removeClass(\"fr-height-auto\"),e.find(\".fr-files-upload-layer\").hasClass(\"fr-active\")&&(t=1),e.find(\".fr-files-by-url-layer\").hasClass(\"fr-active\")&&(t=2),e.find(\".fr-files-embed-layer\").hasClass(\"fr-active\")&&(t=3),e.find(\".fr-upload-progress-layer\").get(0).clientHeight+10<e.find(\".fr-upload-progress\").get(0).clientHeight&&e.find(\".fr-upload-progress\").addClass(\"fr-height-auto\"),400<e[0].clientHeight&&(e[0].childNodes[4].style.height=\"\".concat(e[0].clientHeight-(e[0].childNodes[0].clientHeight+e[0].childNodes[t].clientHeight)-80,\"px\"))}var i=2e3;function a(){d(this).toggleClass(\"fr-not-empty\",!0)}function s(){var e=d(this);e.toggleClass(\"fr-not-empty\",\"\"!==e.val())}function m(e){return g[e]&&h.node.hasClass(g[e],\"fr-active\")&&h.core.sameInstance(g[e])||!1}function v(e){for(var t in g)if(Object.prototype.hasOwnProperty.call(g,t)&&m(t)&&(void 0===e||g[t].data(\"instance\")===e))return g[t];return!1}function n(e){var t=null;if(t=\"string\"!=typeof e?e:g[e],\"filesManager.insert\"===e&&h.filesManager!==undefined&&h.filesManager.isChildWindowOpen())return!1;if(t&&h.node.hasClass(t,\"fr-active\")&&(t.removeClass(\"fr-active fr-above\"),h.events.trigger(\"popups.hide.\".concat(e)),h.$tb&&(1<h.opts.zIndex?h.$tb.css(\"zIndex\",h.opts.zIndex+1):h.$tb.css(\"zIndex\",\"\")),h.events.disableBlur(),t.find(\"input, textarea, button\").each(function(){this===this.ownerDocument.activeElement&&this.blur()}),t.find(\"input, textarea\").attr(\"disabled\",\"disabled\"),u))for(var n=0;n<u.length;n++)d(u[n]).removeClass(\"fr-btn-active-popup\")}function b(e){for(var t in void 0===e&&(e=[]),g)Object.prototype.hasOwnProperty.call(g,t)&&e.indexOf(t)<0&&n(t)}function t(){h.shared.exit_flag=!0}function L(){h.shared.exit_flag=!1}function l(){return h.shared.exit_flag}function c(e,t){var n,r=function c(e,t){var n=V.POPUP_TEMPLATES[e];if(!n)return null;for(var r in\"function\"==typeof n&&(n=n.apply(h)),t)Object.prototype.hasOwnProperty.call(t,r)&&(n=n.replace(\"[_\".concat(r.toUpperCase(),\"_]\"),t[r]));return n}(e,t),o=d(h.doc.createElement(\"DIV\"));if(!r)return\"filesManager.insert\"===e?o.addClass(\"fr-popup fr-files-manager fr-empty\"):o.addClass(\"fr-popup fr-empty\"),(n=d(\"body\").first()).append(o),o.data(\"container\",n),g[e]=o;\"filesManager.insert\"===e?o.addClass(\"fr-popup fr-files-manager\".concat(h.helpers.isMobile()?\" fr-mobile\":\" fr-desktop\").concat(h.opts.toolbarInline?\" fr-inline\":\"\")):o.addClass(\"fr-popup\".concat(h.helpers.isMobile()?\" fr-mobile\":\" fr-desktop\").concat(h.opts.toolbarInline?\" fr-inline\":\"\")),o.html(r),h.opts.theme&&o.addClass(\"\".concat(h.opts.theme,\"-theme\")),1<h.opts.zIndex&&(!h.opts.editInPopup&&h.$tb?h.$tb.css(\"z-index\",h.opts.zIndex+2):o.css(\"z-index\",h.opts.zIndex+2)),\"auto\"!==h.opts.direction&&o.removeClass(\"fr-ltr fr-rtl\").addClass(\"fr-\".concat(h.opts.direction)),o.find(\"input, textarea\").attr(\"dir\",h.opts.direction).attr(\"disabled\",\"disabled\"),(n=d(\"body\").first()).append(o),o.data(\"container\",n);var i=(g[e]=o).find(\".fr-color-hex-layer\");if(0<i.length){var a=h.helpers.getPX(o.find(\".fr-color-set > span\").css(\"width\")),s=h.helpers.getPX(i.css(\"paddingLeft\")),l=h.helpers.getPX(i.css(\"paddingRight\"));i.css(\"width\",a*h.opts.colorsStep+s+l)}return h.button.bindCommands(o,!1),o}function E(a){var s=g[a];return{_windowResize:function(){var e=s.data(\"instance\")||h;if(!e.helpers.isMobile()&&s.isVisible()){var t=s.find(\".fr-file-progress-bar-layer\");if(\"file.insert\"===a&&0<t.length&&t.hasClass(\"fr-active\")){var n=h.$tb.find('.fr-command[data-cmd=\"insertFile\"]');e.events.disableBlur();var r=h.button.getPosition(n),o=r.left,i=r.top;h.position.at(o,i,g[a],0),e.events.enableBlur()}else e.events.disableBlur(),e.popups.hide(a),e.events.enableBlur()}},_inputFocus:function(e){var t=s.data(\"instance\")||h,n=d(e.currentTarget);if(n.is(\"input:file\")&&n.closest(\".fr-layer\").addClass(\"fr-input-focus\"),e.preventDefault(),e.stopPropagation(),setTimeout(function(){t.events.enableBlur()},100),t.helpers.isMobile()){var r=d(t.o_win).scrollTop();setTimeout(function(){d(t.o_win).scrollTop(r)},0)}},_inputBlur:function(e){var t=s.data(\"instance\")||h,n=d(e.currentTarget);n.is(\"input:file\")&&n.closest(\".fr-layer\").removeClass(\"fr-input-focus\"),document.activeElement!==this&&d(this).isVisible()&&(t.events.blurActive()&&t.events.trigger(\"blur\"),t.events.enableBlur())},_editorKeydown:function(e){var t=s.data(\"instance\")||h;t.keys.ctrlKey(e)||e.which===V.KEYCODE.ALT||e.which===V.KEYCODE.ESC||(m(a)&&s.findVisible(\".fr-back\").length?t.button.exec(s.findVisible(\".fr-back\").first()):e.which!==V.KEYCODE.ALT&&t.popups.hide(a))},_preventFocus:function(e){var t=s.data(\"instance\")||h,n=e.originalEvent?e.originalEvent.target||e.originalEvent.originalTarget:null;\"mouseup\"===e.type||d(n).is(\":focus\")||t.events.disableBlur(),\"mouseup\"!==e.type||d(n).hasClass(\"fr-command\")||0<d(n).parents(\".fr-command\").length||d(n).hasClass(\"fr-dropdown-content\")||d(n).hasClass(\"fr-dropdown-menu\")||h.button.hideActiveDropdowns(s),(h.browser.safari||h.browser.mozilla)&&\"mousedown\"===e.type&&d(n).is(\"input[type=file]\")&&t.events.disableBlur();var r=\"input, textarea, button, select, label, .fr-command\";if(n&&!d(n).is(r)&&0===d(n).parents(r).length)return e.stopPropagation(),!1;n&&d(n).is(r)&&e.stopPropagation(),L()},_editorMouseup:function(){s.isVisible()&&l()&&0<s.findVisible(\"input:focus, textarea:focus, button:focus, select:focus\").length&&h.events.disableBlur()},_windowMouseup:function(e){if(!h.core.sameInstance(s))return!0;var t=s.data(\"instance\")||h;s.isVisible()&&l()&&(e.stopPropagation(),t.markers.remove(),t.popups.hide(a),L())},_windowKeydown:function(e){if(!h.core.sameInstance(s))return!0;var t=s.data(\"instance\")||h,n=e.which;if(V.KEYCODE.ESC===n){if(t.popups.isVisible(a)&&t.opts.toolbarInline)return e.stopPropagation(),t.popups.isVisible(a)&&(s.findVisible(\".fr-back\").length?(t.button.exec(s.findVisible(\".fr-back\").first()),t.accessibility.focusPopupButton(s)):s.findVisible(\".fr-dismiss\").length?t.button.exec(s.findVisible(\".fr-dismiss\").first()):(t.popups.hide(a),t.toolbar.showInline(null,!0),t.accessibility.focusPopupButton(s))),!1;if(t.popups.isVisible(a))return s.findVisible(\".fr-back\").length?(t.button.exec(s.findVisible(\".fr-back\").first),t.accessibility.focusPopupButton(s)):s.findVisible(\".fr-dismiss\").length?t.button.exec(s.findVisible(\".fr-dismiss\").first()):(t.popups.hide(a),t.accessibility.focusPopupButton(s)),!1}},_repositionPopup:function(){if(!h.opts.height&&!h.opts.heightMax||h.opts.toolbarInline)return!0;if(h.$wp&&m(a)&&s.parent().get(0)===h.$sc.get(0)){var e=s.offset().top-h.$wp.offset().top,t=h.$wp.outerHeight();h.node.hasClass(s.get(0),\"fr-above\")&&(e+=s.outerHeight()),t<e||e<0?s.addClass(\"fr-hidden\"):s.removeClass(\"fr-hidden\")}},handleWindowClick:function(e){if(!h.core.sameInstance(s))return!0;var t=s.data(\"instance\")||h;s.isVisible()&&e.target&&(0<d(e.target).find(\"body\").length||\"BODY\"===d(e.target)[0].tagName)&&(e.stopPropagation(),t.popups.hide(a))}}}function f(e,t){h.events.on(\"mouseup\",e._editorMouseup,!0),h.$wp&&h.events.on(\"keydown\",e._editorKeydown),h.events.on(\"focus\",function(){g[t].removeClass(\"focused\")}),h.events.on(\"blur\",function(){v()&&h.markers.remove(),h.helpers.isMobile()?g[t].hasClass(\"focused\")?(b(),g[t].removeClass(\"focused\")):g[t].addClass(\"focused\"):g[t].find(\"iframe\").length||b()}),h.$wp&&!h.helpers.isMobile()&&h.events.$on(h.$wp,\"scroll.popup\".concat(t),e._repositionPopup),h.events.on(\"window.mouseup\",e._windowMouseup,!0),h.events.on(\"window.keydown\",e._windowKeydown,!0),h.opts.iframe&&window.addEventListener(\"click\",e.handleWindowClick),g[t].data(\"inst\".concat(h.id),!0),h.events.on(\"destroy\",function(){h.core.sameInstance(g[t])&&(d(\"body\").first().append(g[t]),g[t].removeClass(\"fr-active\"))},!0)}function p(){var e=d(this).prev().children().first();e.attr(\"checked\",!e.attr(\"checked\"))}function e(){for(var e in g)if(Object.prototype.hasOwnProperty.call(g,e)){var t=g[e];t&&(t.html(\"\").removeData().remove(),g[e]=null)}g=[]}return h.shared.exit_flag=!1,{_init:function y(){r=window.innerHeight,h.events.on(\"shared.destroy\",e,!0),h.events.on(\"window.mousedown\",t),h.events.on(\"window.touchmove\",L),h.events.$on(d(h.o_win),\"scroll\",L),h.events.on(\"mousedown\",function(e){v()&&(e.stopPropagation(),h.$el.find(\".fr-marker\").remove(),t(),h.events.disableBlur())})},create:function S(e,t){var n=c(e,t),r=E(e);f(r,e),h.events.$on(n,\"mousedown mouseup touchstart touchend touch\",\"*\",r._preventFocus,!0),h.events.$on(n,\"focus\",\"input, textarea, button, select\",r._inputFocus,!0),h.events.$on(n,\"blur\",\"input, textarea, button, select\",r._inputBlur,!0);var o=n.find(\"input, textarea\");return function i(e){for(var t=0;t<e.length;t++){var n=e[t],r=d(n);0===r.next().length&&r.attr(\"placeholder\")&&(r.after('<label for=\"'.concat(r.attr(\"id\"),'\">').concat(r.attr(\"placeholder\"),\"</label>\")),r.attr(\"placeholder\",\"\"))}}(o),h.events.$on(o,\"focus\",a),h.events.$on(o,\"blur change\",s),h.events.$on(n,\"click\",\".fr-checkbox + label\",p),h.accessibility.registerPopup(e),h.helpers.isIOS()&&h.events.$on(n,\"touchend\",\"label\",function(){d(\"#\".concat(d(this).attr(\"for\"))).prop(\"checked\",function(e,t){return!t})},!0),h.events.$on(d(h.o_win),\"resize\",r._windowResize,!0),\"filesManager.insert\"===e&&g[\"filesManager.insert\"].css(\"zIndex\",2147483641),n},get:function N(e){var t=g[e];return t&&!t.data(\"inst\".concat(h.id))&&f(E(e),e),t},show:function T(e,t,n,r,o){if(m(e)||(v()&&0<h.$el.find(\".fr-marker\").length?(h.events.disableBlur(),h.selection.restore()):v()||(h.events.disableBlur(),h.events.focus(),h.events.enableBlur())),b([e]),!g[e])return!1;var i=h.button.getButtons(\".fr-dropdown.fr-active\");i.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).parents(\".fr-toolbar\").css(\"zIndex\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),i.next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),g[e].data(\"instance\",h),h.$tb&&h.$tb.data(\"instance\",h);var a=m(e);g[e].addClass(\"fr-active\").removeClass(\"fr-hidden\").find(\"input, textarea\").removeAttr(\"disabled\");var s=g[e].data(\"container\");if(function p(e,t){t.isVisible()||(t=h.$sc),t.contains([g[e].get(0)])||t.append(g[e])}(e,s),h.opts.toolbarInline&&s&&h.$tb&&s.get(0)===h.$tb.get(0)&&(C(e,h.$sc),n=h.$tb.offset().top-h.helpers.getPX(h.$tb.css(\"margin-top\")),t=h.$tb.offset().left+h.$tb.outerWidth()/2,h.node.hasClass(h.$tb.get(0),\"fr-above\")&&n&&(n+=h.$tb.outerHeight()),r=0),s=g[e].data(\"container\"),h.opts.iframe&&!r&&!a){var l=h.helpers.getPX(h.$wp.find(\".fr-iframe\").css(\"padding-top\")),c=h.helpers.getPX(h.$wp.find(\".fr-iframe\").css(\"padding-left\"));t&&(t-=h.$iframe.offset().left+c),n&&(n-=h.$iframe.offset().top+l)}s.is(h.$tb)?h.$tb.css(\"zIndex\",(h.opts.zIndex||1)+4):g[e].css(\"zIndex\",(h.opts.zIndex||1)+3),h.opts.toolbarBottom&&s&&h.$tb&&s.get(0)===h.$tb.get(0)&&(g[e].addClass(\"fr-above\"),n&&(n-=g[e].outerHeight())),o&&(t-=g[e].width()/2),t+g[e].outerWidth()>h.$sc.offset().left+h.$sc.width()&&(t-=t+g[e].outerWidth()-h.$sc.offset().left-h.$sc.width()),t<h.$sc.offset().left&&\"rtl\"===h.opts.direction&&(t=h.$sc.offset().left),g[e].removeClass(\"fr-active\"),h.position.at(t,n,g[e],r||0);var d=h.node.blockParent(h.selection.blocks()[0]);if(d&&\"false\"===d.getAttribute(\"contenteditable\"))g[e].removeClass(\"fr-active\");else{var f=h.selection.element().parentElement.getAttribute(\"contenteditable\");f&&\"false\"===f?g[e].removeClass(\"fr-active\"):g[e].addClass(\"fr-active\")}a||h.accessibility.focusPopup(g[e]),h.opts.toolbarInline&&h.toolbar.hide(),h.$tb&&(u=h.$tb.find(\".fr-btn-active-popup\")),h.events.trigger(\"popups.show.\".concat(e)),E(e)._repositionPopup(),L()},hide:n,onHide:function M(e,t){h.events.on(\"popups.hide.\".concat(e),t)},hideAll:b,setContainer:C,refresh:function A(e){g[e].data(\"instance\",h),h.events.trigger(\"popups.refresh.\".concat(e));for(var t=g[e].find(\".fr-command\"),n=0;n<t.length;n++){var r=d(t[n]);0===r.parents(\".fr-dropdown-menu\").length&&h.button.refresh(r)}},onRefresh:function x(e,t){h.events.on(\"popups.refresh.\".concat(e),t)},onShow:function O(e,t){h.events.on(\"popups.show.\".concat(e),t)},isVisible:m,setFileListHeight:o,areVisible:v,setPopupDimensions:function w(e,t){t&&e.find(\".fr-upload-progress-layer\").get(0).clientHeight<i&&(e.find(\".fr-upload-progress\").addClass(\"fr-height-auto\"),h.popups.get(\"filesManager.insert\").addClass(\"fr-height-auto\"),e.find(\".fr-upload-progress\").removeClass(\"fr-height-set\"),i=2e3),e.get(0).clientHeight>window.innerHeight/2&&(window.innerWidth<500?e.get(0).clientHeight>.6*r&&o(e):400<e.get(0).clientHeight&&o(e),i=e.find(\".fr-upload-progress-layer\").get(0).clientHeight);var n=window.innerWidth;switch(!0){case n<=320:e.width(200);break;case n<=420:e.width(250);break;case n<=520:e.width(300);break;case n<=720:e.width(400);break;case 720<n:e.width(530)}}}},V.MODULES.accessibility=function(f){var l,p=f.$,i=!0;function c(t){for(var e=f.$el.find('[contenteditable=\"true\"]'),n=!1,r=0;e.get(r);)p(e.get(r)).is(\":focus\")&&(n=!0),r++;if(t&&t.length&&!n){t.data(\"blur-event-set\")||t.parents(\".fr-popup\").length||(f.events.$on(t,\"blur\",function(){var e=t.parents(\".fr-toolbar, .fr-popup\").data(\"instance\")||f;e.events.blurActive()&&!f.core.hasFocus()&&e.events.trigger(\"blur\"),setTimeout(function(){e.events.enableBlur()},100)},!0),t.data(\"blur-event-set\",!0));var o=t.parents(\".fr-toolbar, .fr-popup\").data(\"instance\")||f;!f.browser.safari||l&&null!=f.shared.safariSelection||(f.shared.safariSelection=f.selection.get().getRangeAt(0).cloneRange()),o.events.disableBlur(),t.get(0).focus(),f.shared.$f_el=t}}function h(e,t){var n=t?\"last\":\"first\",r=s(C(e))[n]();if(r.length)return c(r),!0}function a(e){return e.is(\"input, textarea, select\")&&t(),f.events.disableBlur(),e.get(0).focus(),!0}function u(e,t){var n=e.find(\"input, textarea, button, select\").filter(function(){return p(this).isVisible()}).not(\":disabled\");if((n=t?n.last():n.first()).length)return a(n);if(f.shared.with_kb){var r=e.findVisible(\".fr-active-item\").first();if(r.length)return a(r);var o=e.findVisible(\"[tabIndex]\").first();if(o.length)return a(o)}}function t(){0===f.$el.find(\".fr-marker\").length&&f.core.hasFocus()&&f.selection.save()}function d(){var e=f.popups.areVisible();if(e){var t=e.find(\".fr-buttons\");return t.find(\"button:focus, .fr-group span:focus\").length?!h(e.data(\"instance\").$tb):!h(t)}return!h(f.$tb)}function g(){var e=null;return f.shared.$f_el.is(\".fr-dropdown.fr-active\")?e=f.shared.$f_el:f.shared.$f_el.closest(\".fr-dropdown-menu\").prev().is(\".fr-dropdown.fr-active\")&&(e=f.shared.$f_el.closest(\".fr-dropdown-menu\").prev()),e}function s(e){for(var t=-1,n=0;n<e.length;n++)p(e[n]).hasClass(\"fr-open\")&&(t=n);var r=e.index(f.$tb.find(\".fr-more-toolbar.fr-expanded > button.fr-command\").first());if(0<r&&-1!==t){var o=e.slice(r,e.length),i=(e=e.slice(0,r)).slice(0,t+1),a=e.slice(t+1,e.length);e=i;for(var s=0;s<o.length;s++)e.push(o[s]);for(var l=0;l<a.length;l++)e.push(a[l])}return e}function C(e){return e.findVisible(\"button:not(.fr-disabled), .fr-group span.fr-command\").filter(function(e){var t=p(e).parents(\".fr-more-toolbar\");return 0===t.length||0<t.length&&t.hasClass(\"fr-expanded\")})}function n(e,t,n){if(f.shared.$f_el){var r=g();r&&(f.button.click(r),f.shared.$f_el=r);var o=s(C(e)),i=o.index(f.shared.$f_el);if(0===i&&!n||i===o.length-1&&n){var a;if(t){if(e.parent().is(\".fr-popup\"))a=!u(e.parent().children().not(\".fr-buttons\"),!n);!1===a&&(f.shared.$f_el=null)}t&&!1===a||h(e,!n)}else c(p(o.get(i+(n?1:-1))));return!1}}function m(e,t){return n(e,t,!0)}function v(e,t){return n(e,t)}function b(e){if(f.shared.$f_el){var t;if(f.shared.$f_el.is(\".fr-dropdown.fr-active\"))return c(t=e?f.shared.$f_el.next().find(\".fr-command:not(.fr-disabled)\").first():f.shared.$f_el.next().find(\".fr-command:not(.fr-disabled)\").last()),!1;if(f.shared.$f_el.is(\"a.fr-command\"))return(t=e?f.shared.$f_el.closest(\"li\").nextAllVisible().first().find(\".fr-command:not(.fr-disabled)\").first():f.shared.$f_el.closest(\"li\").prevAllVisible().first().find(\".fr-command:not(.fr-disabled)\").first()).length||(t=e?f.shared.$f_el.closest(\".fr-dropdown-menu\").find(\".fr-command:not(.fr-disabled)\").first():f.shared.$f_el.closest(\".fr-dropdown-menu\").find(\".fr-command:not(.fr-disabled)\").last()),c(t),!1}}function L(){if(f.shared.$f_el){if(f.shared.$f_el.hasClass(\"fr-dropdown\"))f.button.click(f.shared.$f_el);else if(f.shared.$f_el.is(\"button.fr-back\")){f.opts.toolbarInline&&(f.events.disableBlur(),f.events.focus());var e=f.popups.areVisible(f);e&&(f.shared.with_kb=!1),f.button.click(f.shared.$f_el),y(e)}else{if(f.events.disableBlur(),f.button.click(f.shared.$f_el),f.shared.$f_el.attr(\"data-group-name\")){var t=f.$tb.find('.fr-more-toolbar[data-name=\"'.concat(f.shared.$f_el.attr(\"data-group-name\"),'\"]')),n=f.shared.$f_el;t.hasClass(\"fr-expanded\")&&(n=t.findVisible(\"button:not(.fr-disabled)\").first()),n&&c(n)}else if(f.shared.$f_el.attr(\"data-popup\")){var r=f.popups.areVisible(f);r&&r.data(\"popup-button\",f.shared.$f_el)}else if(f.shared.$f_el.attr(\"data-modal\")){var o=f.modals.areVisible(f);o&&o.data(\"modal-button\",f.shared.$f_el)}f.shared.$f_el=null}return!1}}function E(){if(f.shared.$f_el&&(f.events.disableBlur(),f.shared.$f_el.blur(),f.shared.$f_el=null),!1!==f.events.trigger(\"toolbar.focusEditor\")&&(f.events.disableBlur(),f.$el.get(0).focus(),f.events.focus(),f.browser.safari&&f.shared.safariSelection)){var e=f.shared.safariSelection,t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset,i=f.doc.createRange();i.setStart(t,r),i.setEnd(n,o),f.selection.get().removeAllRanges(),f.selection.get().addRange(i),f.shared.safariSelection=null}}function o(r){r&&r.length&&(f.events.$on(r,\"keydown\",function(e){if(!p(e.target).is(\"a.fr-command, button.fr-command, .fr-group span.fr-command\"))return!0;var t=r.parents(\".fr-popup\").data(\"instance\")||r.data(\"instance\")||f;f.shared.with_kb=!0;var n=t.accessibility.exec(e,r);return f.shared.with_kb=!1,n},!0),f.events.$on(r,\"mouseenter\",\"[tabIndex]\",function(e){var t=r.parents(\".fr-popup\").data(\"instance\")||r.data(\"instance\")||f;if(!i)return e.stopPropagation(),void e.preventDefault();var n=p(e.currentTarget);t.shared.$f_el&&t.shared.$f_el.not(n)&&t.accessibility.focusEditor()},!0),f.$tb&&f.events.$on(f.$tb,\"transitionend\",\".fr-more-toolbar\",function(){f.shared.$f_el=p(document.activeElement)}))}function y(e){var t=e.data(\"popup-button\");t&&setTimeout(function(){c(t),e.data(\"popup-button\",null)},0)}function S(e){var t=f.popups.areVisible(e);t&&t.data(\"popup-button\",null)}function e(e){var t=-1!==navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey;if(e.which!==V.KEYCODE.F10||t||e.shiftKey||!e.altKey)return!0;f.shared.with_kb=!0;var n=f.popups.areVisible(f),r=!1;return n&&(r=u(n.children().not(\".fr-buttons\"))),r||d(),f.shared.with_kb=!1,e.preventDefault(),e.stopPropagation(),!1}return{_init:function r(){f.$wp?f.events.on(\"keydown\",e,!0):f.events.$on(f.$win,\"keydown\",e,!0),f.events.on(\"mousedown\",function(e){S(f),f.shared.$f_el&&f.el.isSameNode(f.shared.$f_el[0])&&(f.accessibility.restoreSelection(),e.stopPropagation(),f.events.disableBlur(),f.shared.$f_el=null)},!0),f.events.on(\"blur\",function(){f.shared.$f_el=null,S(f)},!0)},registerPopup:function N(e){var t=f.popups.get(e),n=function r(c){var d=f.popups.get(c);return{_tiKeydown:function(e){var t=d.data(\"instance\")||f;if(!1===t.events.trigger(\"popup.tab\",[e]))return!1;var n=e.which,r=d.find(\":focus\").first();if(V.KEYCODE.TAB===n){e.preventDefault();var o=d.children().not(\".fr-buttons\"),i=o.findVisible(\"input, textarea, button, select\").not(\".fr-no-touch input, .fr-no-touch textarea, .fr-no-touch button, .fr-no-touch select, :disabled\").toArray(),a=i.indexOf(this)+(e.shiftKey?-1:1);if(0<=a&&a<i.length)return t.events.disableBlur(),p(i[a]).focus(),e.stopPropagation(),!1;var s=d.find(\".fr-buttons\");if(s.length&&h(s,Boolean(e.shiftKey)))return e.stopPropagation(),!1;if(u(o))return e.stopPropagation(),!1}else{if(V.KEYCODE.ENTER!==n||!e.target||\"TEXTAREA\"===e.target.tagName)return V.KEYCODE.ESC===n?(e.preventDefault(),e.stopPropagation(),t.accessibility.restoreSelection(),t.popups.isVisible(c)&&d.findVisible(\".fr-back\").length?(t.opts.toolbarInline&&(t.events.disableBlur(),t.events.focus()),t.button.exec(d.findVisible(\".fr-back\").first()),y(d)):t.popups.isVisible(c)&&d.findVisible(\".fr-dismiss\").length?t.button.exec(d.findVisible(\".fr-dismiss\").first()):(t.popups.hide(c),t.opts.toolbarInline&&t.toolbar.showInline(null,!0),y(d)),!1):V.KEYCODE.SPACE===n&&(r.is(\".fr-submit\")||r.is(\".fr-dismiss\"))?(e.preventDefault(),e.stopPropagation(),t.events.disableBlur(),t.button.exec(r),!0):t.keys.isBrowserAction(e)?void e.stopPropagation():r.is(\"input[type=text], textarea\")?void e.stopPropagation():V.KEYCODE.SPACE===n&&(r.is(\".fr-link-attr\")||r.is(\"input[type=file]\"))?void e.stopPropagation():(e.stopPropagation(),e.preventDefault(),!1);var l=null;0<d.findVisible(\".fr-submit\").length?l=d.findVisible(\".fr-submit\").first():d.findVisible(\".fr-dismiss\").length&&(l=d.findVisible(\".fr-dismiss\").first()),l&&(e.preventDefault(),e.stopPropagation(),t.events.disableBlur(),t.button.exec(l))}},_tiMouseenter:function(){var e=d.data(\"instance\")||f;S(e)}}}(e);o(t.find(\".fr-buttons\")),f.events.$on(t,\"mouseenter\",\"tabIndex\",n._tiMouseenter,!0),f.events.$on(t.children().not(\".fr-buttons\"),\"keydown\",\"[tabIndex]\",n._tiKeydown,!0),f.popups.onHide(e,function(){(t.data(\"instance\")||f).accessibility.restoreSelection()}),f.popups.onShow(e,function(){i=!1,setTimeout(function(){i=!0},0)})},registerToolbar:o,focusToolbarElement:c,focusToolbar:h,focusContent:u,focusPopup:function T(r){var o=r.children().not(\".fr-buttons\");o.data(\"mouseenter-event-set\")||(f.events.$on(o,\"mouseenter\",\"[tabIndex]\",function(e){var t=r.data(\"instance\")||f;if(!i)return e.stopPropagation(),void e.preventDefault();var n=o.find(\":focus\").first();n.length&&!n.is(\"input, button, textarea, select\")&&(t.events.disableBlur(),n.blur(),t.events.disableBlur(),t.events.focus())}),o.data(\"mouseenter-event-set\",!0)),!u(o)&&f.shared.with_kb&&h(r.find(\".fr-buttons\"))},focusModal:function M(e){f.core.hasFocus()||(f.events.disableBlur(),f.events.focus()),f.accessibility.saveSelection(),f.events.disableBlur(),f.el.blur(),f.selection.clear(),f.events.disableBlur(),f.shared.with_kb?e.find(\".fr-command[tabIndex], [tabIndex]\").first().focus():e.find(\"[tabIndex]\").first().focus()},focusEditor:E,focusPopupButton:y,focusModalButton:function A(e){var t=e.data(\"modal-button\");t&&setTimeout(function(){c(t),e.data(\"modal-button\",null)},0)},hasFocus:function x(){return null!==f.shared.$f_el},exec:function O(e,t){var n=-1!==navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey,r=e.which,o=!1;return r!==V.KEYCODE.TAB||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ARROW_RIGHT||n||e.shiftKey||e.altKey?r!==V.KEYCODE.TAB||n||!e.shiftKey||e.altKey?r!==V.KEYCODE.ARROW_LEFT||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ARROW_UP||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ARROW_DOWN||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ENTER&&r!==V.KEYCODE.SPACE||n||e.shiftKey||e.altKey?r!==V.KEYCODE.ESC||n||e.shiftKey||e.altKey?r!==V.KEYCODE.F10||n||e.shiftKey||!e.altKey||(o=d()):o=function i(e){if(f.shared.$f_el){var t=g();return t?(f.button.click(t),c(t)):e.parent().findVisible(\".fr-back\").length?(f.shared.with_kb=!1,f.opts.toolbarInline&&(f.events.disableBlur(),f.events.focus()),f.button.exec(e.parent().findVisible(\".fr-back\")).first(),y(e.parent())):f.shared.$f_el.is(\"button, .fr-group span\")&&(e.parent().is(\".fr-popup\")?(f.accessibility.restoreSelection(),f.shared.$f_el=null,!1!==f.events.trigger(\"toolbar.esc\")&&(f.popups.hide(e.parent()),f.opts.toolbarInline&&f.toolbar.showInline(null,!0),y(e.parent()))):E()),!1}}(t):o=L():o=function a(){return f.shared.$f_el&&f.shared.$f_el.is(\".fr-dropdown:not(.fr-active)\")?L():b(!0)}():o=function s(){return b()}():o=v(t):o=v(t,!0):o=m(t):(l=r,o=m(t,!0)),f.shared.$f_el||void 0!==o||(o=!0),!o&&f.keys.isBrowserAction(e)&&(o=!0),!!o||(e.preventDefault(),e.stopPropagation(),!1)},saveSelection:t,restoreSelection:function w(){f.$el.find(\".fr-marker\").length&&(f.events.disableBlur(),f.selection.restore(),f.events.enableBlur())}}},Object.assign(V.DEFAULTS,{tooltips:!0}),V.MODULES.tooltip=function(p){var h=p.$;function r(){p.helpers.isMobile()||p.$tooltip&&p.$tooltip.removeClass(\"fr-visible\").css(\"left\",\"-3000px\").css(\"position\",\"fixed\")}function o(e,t){if(!p.helpers.isMobile()){var n=e.attr(\"id\")&&e.attr(\"id\").split(\"-\")[0],r=e.attr(\"title\"),o=p.opts.trackChangesEnabled,i=p.opts.showChangesEnabled;if(p.opts.toolbarContainer){for(var a=!1,s=0;s<V.INSTANCES.length;s++)if(V.INSTANCES[s].core.hasFocus()){o=V.INSTANCES[s].opts.trackChangesEnabled,i=V.INSTANCES[s].opts.showChangesEnabled,a=!0;break}a||(i=o=e.hasClass(\"fr-active\"))}if(\"trackChanges\"===n)r=o?\"Disable Track Changes\":\"Enable Track Changes\";else if(\"showChanges\"===n)r=i?\"Hide Changes\":\"Show Changes\";else if((\"applyAll\"===n||\"removeAll\"===n||\"applyLast\"===n||\"removeLast\"===n)&&0===p.track_changes.getPendingChanges().length)return;if(e.data(\"title\",r),e.data(\"title\")){p.$tooltip||function f(){if(p.opts.tooltips&&!p.helpers.isMobile()){if(p.shared.$tooltip)p.$tooltip=p.shared.$tooltip;else{p.shared.$tooltip=h(p.doc.createElement(\"DIV\")).addClass(\"fr-tooltip\"),p.$tooltip=p.shared.$tooltip,p.opts.theme&&p.$tooltip.addClass(\"\".concat(p.opts.theme,\"-theme\"));var e=p.$wp.closest(\"dialog\");0<e.length?e.first().append(p.$tooltip):h(p.o_doc).find(\"body\").first().append(p.$tooltip)}p.events.on(\"shared.destroy\",function(){p.$tooltip.html(\"\").removeData().remove(),p.$tooltip=null},!0)}}(),e.removeAttr(\"title\"),p.$tooltip.text(p.language.translate(e.data(\"title\"))),p.$tooltip.addClass(\"fr-visible\");var l=e.offset().left+(e.outerWidth()-p.$tooltip.outerWidth())/2;l<0&&(l=0),l+p.$tooltip.outerWidth()>h(p.o_win).width()&&(l=h(p.o_win).width()-p.$tooltip.outerWidth()),void 0===t&&(t=p.opts.toolbarBottom),e.offset().top-h(window).scrollTop()+e.outerHeight()+10>=h(window).height()&&(t=!0);var c=t?e.offset().top-p.$tooltip.height():e.offset().top+e.outerHeight();p.$tooltip.css(\"position\",\"\"),p.$tooltip.css(\"left\",l),p.$tooltip.css(\"top\",Math.ceil(c));var d=p.$wp.closest(\"dialog\");0<d.length?(p.$tooltip.css(\"margin-left\",-d.first().offset().left),p.$tooltip.css(\"margin-top\",-d.first().offset().top)):\"static\"!==h(p.o_doc).find(\"body\").first().css(\"position\")?(p.$tooltip.css(\"margin-left\",-h(p.o_doc).find(\"body\").first().offset().left),p.$tooltip.css(\"margin-top\",-h(p.o_doc).find(\"body\").first().offset().top)):(p.$tooltip.css(\"margin-left\",\"\"),p.$tooltip.css(\"margin-top\",\"\"))}}}return{hide:r,to:o,bind:function i(e,t,n){p.opts.tooltips&&!p.helpers.isMobile()&&(p.events.$on(e,\"mouseover\",t,function(e){p.node.hasClass(e.currentTarget,\"fr-disabled\")||p.edit.isDisabled()||o(h(e.currentTarget),n)},!0),p.events.$on(e,\"mouseout \".concat(p._mousedown,\" \").concat(p._mouseup),t,function(){r()},!0))}}},V.TOOLBAR_VISIBLE_BUTTONS=3,V.MODULES.button=function(g){var u=g.$,a=[];(g.opts.toolbarInline||g.opts.toolbarContainer)&&(g.shared.buttons||(g.shared.buttons=[]),a=g.shared.buttons);var s=[];function l(e,t,n){for(var r=u(),o=0;o<e.length;o++){var i=u(e[o]);if(i.is(t)&&(r=r.add(i)),n&&i.is(\".fr-dropdown\")){var a=i.next().find(t);r=r.add(a)}}return r}function C(e,t){var n,r=u();if(!e)return r;for(n in r=(r=r.add(l(a,e,t))).add(l(s,e,t)),g.shared.popups)if(Object.prototype.hasOwnProperty.call(g.shared.popups,n)){var o=g.shared.popups[n].children().find(e);r=r.add(o)}for(n in g.shared.modals)if(Object.prototype.hasOwnProperty.call(g.shared.modals,n)){var i=g.shared.modals[n].$modal.find(e);r=r.add(i)}return r}function i(e){var t=e.next(),n=g.node.hasClass(e.get(0),\"fr-active\"),r=C(\".fr-dropdown.fr-active\").not(e),o=e.parents(\".fr-toolbar, .fr-popup\").data(\"instance\")||g;o.helpers.isIOS()&&!o.el.querySelector(\".fr-marker\")&&(o.selection.save(),o.selection.clear(),o.selection.restore()),t.parents(\".fr-more-toolbar\").addClass(\"fr-overflow-visible\");var i=0,a=0,s=t.find(\"> .fr-dropdown-wrapper\");if(!n){var l=e.data(\"cmd\");t.find(\".fr-command\").removeClass(\"fr-active\").attr(\"aria-selected\",!1),V.COMMANDS[l]&&V.COMMANDS[l].refreshOnShow&&V.COMMANDS[l].refreshOnShow.apply(o,[e,t]),t.css(\"left\",e.offset().left-e.parents(\".fr-btn-wrap, .fr-toolbar, .fr-buttons\").offset().left-(\"rtl\"===g.opts.direction?t.width()-e.outerWidth():0)),t.addClass(\"test-height\"),i=t.outerHeight(),a=g.helpers.getPX(s.css(\"max-height\")),t.removeClass(\"test-height\"),t.css(\"top\",\"\").css(\"bottom\",\"\");var c=e.outerHeight()/10;if(!g.opts.toolbarBottom&&t.offset().top+e.outerHeight()+i<u(g.o_doc).height())t.css(\"top\",e.position().top+e.outerHeight()-c);else{var d=0,f=e.parents(\".fr-more-toolbar\");0<f.length&&(d=f.first().height()),t.css(\"bottom\",e.parents(\".fr-popup, .fr-toolbar\").first().height()-d-e.position().top)}}(e.addClass(\"fr-blink\").toggleClass(\"fr-active\"),e.hasClass(\"fr-options\"))&&e.prev().toggleClass(\"fr-expanded\");e.hasClass(\"fr-active\")?(t.attr(\"aria-hidden\",!1),e.attr(\"aria-expanded\",!0),function h(e,t,n){n<=t&&(e.parent().css(\"overflow\",\"auto\"),e.parent().css(\"overflow-x\",\"hidden\")),e.css(\"height\",Math.min(t,n))}(s,i,a)):(t.attr(\"aria-hidden\",!0).css(\"overflow\",\"\"),e.attr(\"aria-expanded\",!1),s.css(\"height\",\"\")),setTimeout(function(){e.removeClass(\"fr-blink\")},300),t.css(\"margin-left\",\"\"),t.offset().left+t.outerWidth()>g.$sc.offset().left+g.$sc.width()&&t.css(\"margin-left\",-(t.offset().left+t.outerWidth()-g.$sc.offset().left-g.$sc.width())),t.offset().left<g.$sc.offset().left&&\"rtl\"===g.opts.direction&&t.css(\"margin-left\",g.$sc.offset().left),r.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),r.prev(\".fr-expanded\").removeClass(\"fr-expanded\"),r.parents(\".fr-toolbar:not(.fr-inline)\").css(\"zIndex\",\"\"),0!==e.parents(\".fr-popup\").length||g.opts.toolbarInline||(g.node.hasClass(e.get(0),\"fr-active\")?g.$tb.css(\"zIndex\",(g.opts.zIndex||1)+4):g.$tb.css(\"zIndex\",\"\"));var p=t.find(\"a.fr-command.fr-active\").first();g.helpers.isMobile()||(p.length?(g.accessibility.focusToolbarElement(p),s.scrollTop(Math.abs(p.parents(\".fr-dropdown-content\").offset().top-p.offset().top)-p.offset().top)):(g.accessibility.focusToolbarElement(e),s.scrollTop(0)))}function c(e){e.addClass(\"fr-blink\"),setTimeout(function(){e.removeClass(\"fr-blink\")},500);for(var t=e.data(\"cmd\"),n=[];void 0!==e.data(\"param\".concat(n.length+1));)n.push(e.data(\"param\".concat(n.length+1)));var r=C(\".fr-dropdown.fr-active\");r.length&&(r.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),r.prev(\".fr-expanded\").removeClass(\"fr-expanded\"),r.parents(\".fr-toolbar:not(.fr-inline)\").css(\"zIndex\",\"\")),e.parents(\".fr-popup, .fr-toolbar\").data(\"instance\").commands.exec(t,n)}function t(e){var t=e.parents(\".fr-popup, .fr-toolbar\").data(\"instance\"),n=g.popups.get(\"link.insert\");if(0===e.parents(\".fr-popup\").length&&e.data(\"popup\")&&!e.hasClass(\"fr-btn-active-popup\")&&(e.attr(\"id\")===\"insertLink-\".concat(g.id)&&n&&n.hasClass(\"fr-active\")||e.addClass(\"fr-btn-active-popup\")),0!==e.parents(\".fr-popup\").length||e.data(\"popup\")||t.popups.hideAll(),t.popups.areVisible()&&!t.popups.areVisible(t)){for(var r=0;r<V.INSTANCES.length;r++)V.INSTANCES[r]!==t&&V.INSTANCES[r].popups&&V.INSTANCES[r].popups.areVisible()&&V.INSTANCES[r].$el.find(\".fr-marker\").remove();t.popups.hideAll()}g.node.hasClass(e.get(0),\"fr-dropdown\")?i(e):(!function o(e){c(e)}(e),V.COMMANDS[e.data(\"cmd\")]&&!1!==V.COMMANDS[e.data(\"cmd\")].refreshAfterCallback&&t.button.bulkRefresh())}function d(e){t(u(e.currentTarget))}function f(e){var t=e.find(\".fr-dropdown.fr-active\");t.length&&(t.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),t.parents(\".fr-toolbar:not(.fr-inline)\").css(\"zIndex\",\"\"),t.prev().removeClass(\"fr-expanded\"))}function p(e){e.preventDefault(),e.stopPropagation()}function h(e){if(e.stopPropagation(),!g.helpers.isMobile())return!1}function m(e){var t=1<arguments.length&&arguments[1]!==undefined?arguments[1]:{},n=2<arguments.length?arguments[2]:undefined;if(g.helpers.isMobile()&&!1===t.showOnMobile)return\"\";var r=t.displaySelection;\"function\"==typeof r&&(r=r(g));var o=\"\";if(\"options\"!==t.type)if(r){var i=\"function\"==typeof t.defaultSelection?t.defaultSelection(g):t.defaultSelection;o='<span style=\"width:'.concat(t.displaySelectionWidth||100,'px\">').concat(g.language.translate(i||t.title),\"</span>\")}else o=g.icon.create(t.icon||e),o+='<span class=\"fr-sr-only\">'.concat(g.language.translate(t.title)||\"\",\"</span>\");var a=t.popup?' data-popup=\"true\"':\"\",s=t.modal?' data-modal=\"true\"':\"\",l=g.shortcuts.get(\"\".concat(e,\".\"));l=l?\" (\".concat(l,\")\"):\"\";var c=\"\".concat(e,\"-\").concat(g.id),d=\"dropdown-menu-\".concat(c),f='<button id=\"'.concat(c,'\"').concat(t.more_btn?' data-group-name=\"'.concat(c,'\" '):\"\",'type=\"button\" tabIndex=\"-1\" role=\"button\"').concat(t.toggle?' aria-pressed=\"false\"':\"\").concat(\"dropdown\"===t.type||\"options\"===t.type?' aria-controls=\"'.concat(d,'\" aria-expanded=\"false\" aria-haspopup=\"true\"'):\"\").concat(t.disabled?' aria-disabled=\"true\"':\"\",' title=\"').concat(g.language.translate(t.title)||\"\").concat(l,'\" class=\"fr-command fr-btn').concat(\"dropdown\"===t.type||\"options\"==t.type?\" fr-dropdown\":\"\").concat(\"options\"==t.type?\" fr-options\":\"\").concat(\"more\"==t.type?\" fr-more\":\"\").concat(t.displaySelection?\" fr-selection\":\"\").concat(t.back?\" fr-back\":\"\").concat(t.disabled?\" fr-disabled\":\"\").concat(n?\"\":\" fr-hidden\",'\" data-cmd=\"').concat(e,'\"').concat(a).concat(s,\">\").concat(o,\"</button>\");if(\"dropdown\"===t.type||\"options\"===t.type){var p='<div id=\"'.concat(d,'\" class=\"fr-dropdown-menu\" role=\"listbox\" aria-labelledby=\"').concat(c,'\" aria-hidden=\"true\"><div class=\"fr-dropdown-wrapper\" role=\"presentation\"><div class=\"fr-dropdown-content\" role=\"presentation\">');p+=function h(e,t){var n=\"\";if(t.html)\"function\"==typeof t.html?n+=t.html.call(g):n+=t.html;else{var r=t.options;for(var o in\"function\"==typeof r&&(r=r()),n+='<ul class=\"fr-dropdown-list\" role=\"presentation\">',r)if(Object.prototype.hasOwnProperty.call(r,o)){var i=g.shortcuts.get(\"\".concat(e,\".\").concat(o));i=i?'<span class=\"fr-shortcut\">'.concat(i,\"</span>\"):\"\",n+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"'.concat(\"options\"===t.type?e.replace(/Options/g,\"\"):e,'\" data-param1=\"').concat(o,'\" title=\"').concat(r[o],'\">').concat(g.language.translate(r[o]),\"</a></li>\")}n+=\"</ul>\"}return n}(e,t),f+=p+=\"</div></div></div>\"}return t.hasOptions&&t.hasOptions.apply(g)&&(f='<div class=\"fr-btn-wrap\">'.concat(f,\" \").concat(m(e+\"Options\",Object.assign({},t,{type:\"options\",hasOptions:!1}),n),\"  </div>\")),f}function e(o){var i=g.$tb&&g.$tb.data(\"instance\")||g;if(!1===g.events.trigger(\"buttons.refresh\"))return!0;setTimeout(function(){for(var e=i.selection.inEditor()&&i.core.hasFocus(),t=0;t<o.length;t++){var n=u(o[t]),r=n.data(\"cmd\");0===n.parents(\".fr-popup\").length?e||V.COMMANDS[r]&&V.COMMANDS[r].forcedRefresh?i.button.refresh(n):g.node.hasClass(n.get(0),\"fr-dropdown\")||(n.removeClass(\"fr-active\"),n.attr(\"aria-pressed\")&&n.attr(\"aria-pressed\",!1)):n.parents(\".fr-popup\").isVisible()&&i.button.refresh(n)}},0)}function n(){e(a),e(s)}function r(){a=[],s=[]}g.shared.popup_buttons||(g.shared.popup_buttons=[]),s=g.shared.popup_buttons;var o=null;function v(){clearTimeout(o),o=setTimeout(n,50)}return{_init:function b(){g.opts.toolbarInline?g.events.on(\"toolbar.show\",n):(g.events.on(\"mouseup\",v),g.events.on(\"keyup\",v),g.events.on(\"blur\",v),g.events.on(\"focus\",v),g.events.on(\"contentChanged\",v),g.helpers.isMobile()&&g.events.$on(g.$doc,\"selectionchange\",n)),g.events.on(\"shared.destroy\",r)},build:m,buildList:function L(e,t){for(var n=\"\",r=0;r<e.length;r++){var o=e[r],i=V.COMMANDS[o];i&&\"undefined\"!=typeof i.plugin&&g.opts.pluginsEnabled.indexOf(i.plugin)<0||(i?n+=m(o,i,void 0===t||0<=t.indexOf(o)):\"|\"===o?n+='<div class=\"fr-separator fr-vs\" role=\"separator\" aria-orientation=\"vertical\"></div>':\"-\"===o&&(n+='<div class=\"fr-separator fr-hs\" role=\"separator\" aria-orientation=\"horizontal\"></div>'))}return n},buildGroup:function E(e){var t=\"\",n=\"\";for(var r in e){var o=e[r];if(o.buttons){for(var i=\"\",a=\"\",s=0,l=\"left\",c=V.TOOLBAR_VISIBLE_BUTTONS,d=0;d<o.buttons.length;d++){var f=o.buttons[d],p=V.COMMANDS[f];p||(\"|\"==f?i+='<div class=\"fr-separator fr-vs\" role=\"separator\" aria-orientation=\"vertical\"></div>':\"-\"==f&&(i+='<div class=\"fr-separator fr-hs\" role=\"separator\" aria-orientation=\"horizontal\"></div>')),!p||p&&\"undefined\"!=typeof p.plugin&&g.opts.pluginsEnabled.indexOf(p.plugin)<0||(e[r].align!==undefined&&(l=e[r].align),e[r].buttonsVisible!==undefined&&(c=e[r].buttonsVisible),e.showMoreButtons&&c<=s?a+=m(f,p,!0):i+=m(f,p,!0),s++)}if(e.showMoreButtons&&c<s){var h=r,u=V.COMMANDS[h];u.more_btn=!0,i+=m(h,u,!0)}\"trackChanges\"!==r&&(t+='<div class=\"fr-btn-grp fr-float-'.concat(l,'\">').concat(i,\"</div>\")),e.showMoreButtons&&0<a.length&&(n+='<div class=\"fr-more-toolbar\" data-name=\"'.concat(r+\"-\"+g.id,'\">').concat(a,\"</div>\"))}}return g.opts.toolbarBottom?g.helpers.isMobile()?'<div class=\"fr-bottom-extended\">'.concat(n,\"</div><div>\").concat(t,\"</div>\"):\"\".concat(n,'<div class=\"fr-newline\"></div>').concat(t):\"\".concat(t,'<div class=\"fr-newline\"></div>').concat(n)},bindCommands:function y(t,e){g.events.bindClick(t,\".fr-command:not(.fr-disabled)\",d),g.events.$on(t,\"\".concat(g._mousedown,\" \").concat(g._mouseup,\" \").concat(g._move),\".fr-dropdown-menu\",p,!0),g.events.$on(t,\"\".concat(g._mousedown,\" \").concat(g._mouseup,\" \").concat(g._move),\".fr-dropdown-menu .fr-dropdown-wrapper\",h,!0);var n=t.get(0).ownerDocument,r=\"defaultView\"in n?n.defaultView:n.parentWindow;function o(e){(!e||e.type===g._mouseup&&e.target!==u(\"html\").get(0)||\"keydown\"===e.type&&(g.keys.isCharacter(e.which)&&!g.keys.ctrlKey(e)||e.which===V.KEYCODE.ESC))&&(f(t),g.opts.iframe&&function r(e){var t=e.find(\".fr-popup.fr-active\");if(t.length){t.removeClass(\"fr-active\").attr(\"aria-expanded\",!1).next().attr(\"aria-hidden\",!0).css(\"overflow\",\"\").find(\"> .fr-dropdown-wrapper\").css(\"height\",\"\"),t.parents(\".fr-toolbar:not(.fr-inline)\").css(\"zIndex\",\"\"),t.prev().removeClass(\"fr-expanded\");var n=g.$tb.find(\".fr-btn-active-popup\");u(n[0]).removeClass(\"fr-btn-active-popup\")}}(t))}g.events.$on(u(r),\"\".concat(g._mouseup,\" resize keydown\"),o,!0),g.opts.iframe&&g.events.$on(g.$win,g._mouseup,o,!0),g.node.hasClass(t.get(0),\"fr-popup\")?u.merge(s,t.find(\".fr-btn\").toArray()):u.merge(a,t.find(\".fr-btn\").toArray()),g.tooltip.bind(t,\".fr-btn, .fr-title\",e)},refresh:function S(e){var t,n=e.parents(\".fr-popup, .fr-toolbar\").data(\"instance\")||g,r=e.data(\"cmd\");g.node.hasClass(e.get(0),\"fr-dropdown\")?t=e.next():(e.removeClass(\"fr-active\"),e.attr(\"aria-pressed\")&&e.attr(\"aria-pressed\",!1)),V.COMMANDS[r]&&V.COMMANDS[r].refresh?V.COMMANDS[r].refresh.apply(n,[e,t]):g.refresh[r]&&n.refresh[r](e,t)},bulkRefresh:n,exec:c,click:t,hideActiveDropdowns:f,addButtons:function N(e){for(var t=0;t<e.length;t++)a.push(e[t])},getButtons:C,getPosition:function T(e){var t=e.offset().left,n=g.opts.toolbarBottom?10:e.outerHeight()-10;return{left:t,top:e.offset().top+n}}}},V.ICON_TEMPLATES={font_awesome:'<i class=\"fa fa-[NAME]\" aria-hidden=\"true\"></i>',font_awesome_5:'<i class=\"fas fa-[FA5NAME]\" aria-hidden=\"true\"></i>',font_awesome_5r:'<i class=\"far fa-[FA5NAME]\" aria-hidden=\"true\"></i>',font_awesome_5l:'<i class=\"fal fa-[FA5NAME]\" aria-hidden=\"true\"></i>',font_awesome_5b:'<i class=\"fab fa-[FA5NAME]\" aria-hidden=\"true\"></i>',text:'<span style=\"text-align: center;\">[NAME]</span>',image:\"<img src=[SRC] alt=[ALT] />\",svg:'<svg class=\"fr-svg\" focusable=\"false\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"[PATH]\"/></svg>',empty:\" \"},V.ICONS={bold:{NAME:\"bold\",SVG_KEY:\"bold\"},italic:{NAME:\"italic\",SVG_KEY:\"italic\"},underline:{NAME:\"underline\",SVG_KEY:\"underline\"},strikeThrough:{NAME:\"strikethrough\",SVG_KEY:\"strikeThrough\"},subscript:{NAME:\"subscript\",SVG_KEY:\"subscript\"},superscript:{NAME:\"superscript\",SVG_KEY:\"superscript\"},cancel:{NAME:\"cancel\",SVG_KEY:\"cancel\"},color:{NAME:\"tint\",SVG_KEY:\"textColor\"},outdent:{NAME:\"outdent\",SVG_KEY:\"outdent\"},indent:{NAME:\"indent\",SVG_KEY:\"indent\"},undo:{NAME:\"rotate-left\",FA5NAME:\"undo\",SVG_KEY:\"undo\"},redo:{NAME:\"rotate-right\",FA5NAME:\"redo\",SVG_KEY:\"redo\"},insert:{NAME:\"insert\",SVG_KEY:\"insert\"},insertAll:{NAME:\"insertAll\",SVG_KEY:\"insertAll\"},insertHR:{NAME:\"minus\",SVG_KEY:\"horizontalLine\"},clearFormatting:{NAME:\"eraser\",SVG_KEY:\"clearFormatting\"},selectAll:{NAME:\"mouse-pointer\",SVG_KEY:\"selectAll\"},minimize:{NAME:\"minimize\",SVG_KEY:\"minimize\"},moreText:{NAME:\"ellipsis-v\",SVG_KEY:\"textMore\"},moreParagraph:{NAME:\"ellipsis-v\",SVG_KEY:\"paragraphMore\"},moreRich:{NAME:\"ellipsis-v\",SVG_KEY:\"insertMore\"},moreMisc:{NAME:\"ellipsis-v\",SVG_KEY:\"more\"}},V.DefineIconTemplate=function(e,t){V.ICON_TEMPLATES[e]=t},V.DefineIcon=function(e,t){V.ICONS[e]=t},Object.assign(V.DEFAULTS,{iconsTemplate:\"svg\"}),V.MODULES.icon=function(o){return{create:function i(n){var e=null,r=V.ICONS[n];if(void 0!==r){var t=r.template||V.ICON_DEFAULT_TEMPLATE||o.opts.iconsTemplate;t&&t.apply&&(t=t.apply(o)),r.FA5NAME||(r.FA5NAME=r.NAME),\"svg\"!==t||r.PATH||(r.PATH=V.SVG[r.SVG_KEY]||\"\"),t&&(t=V.ICON_TEMPLATES[t])&&(e=t.replace(/\\[([a-zA-Z0-9]*)\\]/g,function(e,t){return\"NAME\"===t?r[t]||n:r[t]}))}return e||n},getTemplate:function r(e){var t=V.ICONS[e],n=o.opts.iconsTemplate;return void 0!==t?n=t.template||V.ICON_DEFAULT_TEMPLATE||o.opts.iconsTemplate:n},getFileIcon:function n(e){var t=V.FILEICONS[e];return void 0!==t?t:e}}},V.SVG={add:\"M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6V13z\",advancedImageEditor:\"M3,17v2h6v-2H3z M3,5v2h10V5H3z M13,21v-2h8v-2h-8v-2h-2v6H13z M7,9v2H3v2h4v2h2V9H7z M21,13v-2H11v2H21z M15,9h2V7h4V5h-4  V3h-2V9z\",alignCenter:\"M9,18h6v-2H9V18z M6,11v2h12v-2H6z M3,6v2h18V6H3z\",alignJustify:\"M3,18h18v-2H3V18z M3,11v2h18v-2H3z M3,6v2h18V6H3z\",alignLeft:\"M3,18h6v-2H3V18z M3,11v2h12v-2H3z M3,6v2h18V6H3z\",alignRight:\"M15,18h6v-2h-6V18z M9,11v2h12v-2H9z M3,6v2h18V6H3z\",anchors:\"M16,4h-4H8C6.9,4,6,4.9,6,6v4v10l6-2.6l6,2.6V10V6C18,4.9,17.1,4,16,4z M16,17l-4-1.8L8,17v-7V6h4h4v4V17z\",autoplay:\"M 7.570312 0.292969 C 7.542969 0.292969 7.515625 0.292969 7.488281 0.296875 C 7.203125 0.324219 6.984375 0.539062 6.980469 0.792969 L 6.925781 3.535156 C 2.796875 3.808594 -0.0078125 6.425781 -0.0859375 10.09375 C -0.121094 11.96875 0.710938 13.6875 2.265625 14.921875 C 3.769531 16.117188 5.839844 16.796875 8.097656 16.828125 C 8.140625 16.828125 12.835938 16.898438 13.035156 16.886719 C 15.171875 16.796875 17.136719 16.128906 18.558594 15.003906 C 20.066406 13.816406 20.882812 12.226562 20.917969 10.40625 C 20.960938 8.410156 20.023438 6.605469 18.289062 5.335938 C 18.214844 5.277344 18.128906 5.230469 18.035156 5.203125 C 17.636719 5.074219 17.222656 5.199219 17 5.476562 L 15.546875 7.308594 C 15.304688 7.609375 15.363281 8.007812 15.664062 8.265625 C 16.351562 8.851562 16.707031 9.625 16.6875 10.5 C 16.652344 12.25 15.070312 13.390625 12.757812 13.535156 C 12.59375 13.539062 8.527344 13.472656 8.164062 13.464844 C 5.703125 13.429688 4.101562 12.191406 4.140625 10.3125 C 4.175781 8.570312 5.132812 7.46875 6.847656 7.199219 L 6.796875 9.738281 C 6.792969 9.992188 7 10.214844 7.285156 10.253906 C 7.3125 10.257812 7.339844 10.257812 7.367188 10.257812 C 7.503906 10.261719 7.632812 10.222656 7.738281 10.148438 L 14.039062 5.785156 C 14.171875 5.691406 14.253906 5.558594 14.253906 5.410156 C 14.257812 5.261719 14.1875 5.125 14.058594 5.027344 L 7.941406 0.414062 C 7.835938 0.335938 7.707031 0.292969 7.570312 0.292969 \",back:\"M20 11L7.83 11 11.425 7.405 10.01 5.991 5.416 10.586 5.414 10.584 4 11.998 4.002 12 4 12.002 5.414 13.416 5.416 13.414 10.01 18.009 11.425 16.595 7.83 13 20 13 20 13 20 11 20 11Z\",backgroundColor:\"M9.91752,12.24082l7.74791-5.39017,1.17942,1.29591-6.094,7.20747L9.91752,12.24082M7.58741,12.652l4.53533,4.98327a.93412.93412,0,0,0,1.39531-.0909L20.96943,8.7314A.90827.90827,0,0,0,20.99075,7.533l-2.513-2.76116a.90827.90827,0,0,0-1.19509-.09132L7.809,11.27135A.93412.93412,0,0,0,7.58741,12.652ZM2.7939,18.52772,8.41126,19.5l1.47913-1.34617-3.02889-3.328Z\",blockquote:\"M10.31788,5l.93817,1.3226A12.88271,12.88271,0,0,0,8.1653,9.40125a5.54242,5.54242,0,0,0-.998,3.07866v.33733q.36089-.04773.66067-.084a4.75723,4.75723,0,0,1,.56519-.03691,2.87044,2.87044,0,0,1,2.11693.8427,2.8416,2.8416,0,0,1,.8427,2.09274,3.37183,3.37183,0,0,1-.8898,2.453A3.143,3.143,0,0,1,8.10547,19,3.40532,3.40532,0,0,1,5.375,17.7245,4.91156,4.91156,0,0,1,4.30442,14.453,9.3672,9.3672,0,0,1,5.82051,9.32933,14.75716,14.75716,0,0,1,10.31788,5Zm8.39243,0,.9369,1.3226a12.88289,12.88289,0,0,0-3.09075,3.07865,5.54241,5.54241,0,0,0-.998,3.07866v.33733q.33606-.04773.63775-.084a4.91773,4.91773,0,0,1,.58938-.03691,2.8043,2.8043,0,0,1,2.1042.83,2.89952,2.89952,0,0,1,.80578,2.10547,3.42336,3.42336,0,0,1-.86561,2.453A3.06291,3.06291,0,0,1,16.49664,19,3.47924,3.47924,0,0,1,13.742,17.7245,4.846,4.846,0,0,1,12.64721,14.453,9.25867,9.25867,0,0,1,14.17476,9.3898,15.26076,15.26076,0,0,1,18.71031,5Z\",bold:\"M15.25,11.8h0A3.68,3.68,0,0,0,17,9a3.93,3.93,0,0,0-3.86-4H6.65V19h7a3.74,3.74,0,0,0,3.7-3.78V15.1A3.64,3.64,0,0,0,15.25,11.8ZM8.65,7h4.2a2.09,2.09,0,0,1,2,1.3,2.09,2.09,0,0,1-1.37,2.61,2.23,2.23,0,0,1-.63.09H8.65Zm4.6,10H8.65V13h4.6a2.09,2.09,0,0,1,2,1.3,2.09,2.09,0,0,1-1.37,2.61A2.23,2.23,0,0,1,13.25,17Z\",cancel:\"M13.4,12l5.6,5.6L17.6,19L12,13.4L6.4,19L5,17.6l5.6-5.6L5,6.4L6.4,5l5.6,5.6L17.6,5L19,6.4L13.4,12z\",cellBackground:\"M16.6,12.4L7.6,3.5L6.2,4.9l2.4,2.4l-5.2,5.2c-0.6,0.6-0.6,1.5,0,2.1l5.5,5.5c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4  l5.5-5.5C17.2,14,17.2,13,16.6,12.4z M5.2,13.5L10,8.7l4.8,4.8H5.2z M19,15c0,0-2,2.2-2,3.5c0,1.1,0.9,2,2,2s2-0.9,2-2  C21,17.2,19,15,19,15z\",cellBorderColor:\"M22,22H2v2h20V22z\",cellOptions:\"M20,5H4C2.9,5,2,5.9,2,7v10c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V7C22,5.9,21.1,5,20,5z M9.5,6.5h5V9h-5V6.5z M8,17.5H4  c-0.3,0-0.5-0.2-0.5-0.4c0,0,0,0,0,0V17v-2H8V17.5z M8,13.5H3.5v-3H8V13.5z M8,9H3.5V7c0-0.3,0.2-0.5,0.4-0.5c0,0,0,0,0,0H8V9z   M14.5,17.5h-5V15h5V17.5z M20.5,17c0,0.3-0.2,0.5-0.4,0.5c0,0,0,0,0,0H16V15h4.5V17z M20.5,13.5H16v-3h4.5V13.5z M20.5,9H16V6.5h4  c0.3,0,0.5,0.2,0.5,0.4c0,0,0,0,0,0V9z\",cellStyle:\"M20,19.9l0.9,3.6l-3.2-1.9l-3.3,1.9l0.8-3.6L12.3,17h3.8l1.7-3.5l1.4,3.5H23L20,19.9z M20,5H4C2.9,5,2,5.9,2,7v10  c0,1.1,0.9,2,2,2h7.5l-0.6-0.6L10,17.5H9.5V15h5.4l1.1-2.3v-2.2h4.5v3H20l0.6,1.5H22V7C22,5.9,21.1,5,20,5z M3.5,7  c0-0.3,0.2-0.5,0.4-0.5c0,0,0,0,0.1,0h4V9H3.5V7z M3.5,10.5H8v3H3.5V10.5z M4,17.5c-0.3,0-0.5-0.2-0.5-0.4c0,0,0,0,0-0.1v-2H8v2.5H4  z M14.5,9h-5V6.5h5V9z M20.5,9H16V6.5h4c0.3,0,0.5,0.2,0.5,0.4c0,0,0,0,0,0.1V9z\",clearFormatting:\"M11.48,10.09l-1.2-1.21L8.8,7.41,6.43,5,5.37,6.1,8.25,9,4.66,19h2l1.43-4h5.14l1.43,4h2l-.89-2.51L18.27,19l1.07-1.06L14.59,13.2ZM8.8,13l.92-2.56L12.27,13Zm.56-7.15L9.66,5h2l1.75,4.9Z\",close:\"M13.4,12l5.6,5.6L17.6,19L12,13.4L6.4,19L5,17.6l5.6-5.6L5,6.4L6.4,5l5.6,5.6L17.6,5L19,6.4L13.4,12z\",codeView:\"M9.4,16.6,4.8,12,9.4,7.4,8,6,2,12l6,6Zm5.2,0L19.2,12,14.6,7.4,16,6l6,6-6,6Z\",cogs:\"M18.877 12.907a6.459 6.459 0 0 0 0 -1.814l1.952 -1.526a0.468 0.468 0 0 0 0.111 -0.593l-1.851 -3.2a0.461 0.461 0 0 0 -0.407 -0.231 0.421 0.421 0 0 0 -0.157 0.028l-2.3 0.925a6.755 6.755 0 0 0 -1.563 -0.907l-0.352 -2.452a0.451 0.451 0 0 0 -0.453 -0.388h-3.7a0.451 0.451 0 0 0 -0.454 0.388L9.347 5.588A7.077 7.077 0 0 0 7.783 6.5l-2.3 -0.925a0.508 0.508 0 0 0 -0.166 -0.028 0.457 0.457 0 0 0 -0.4 0.231l-1.851 3.2a0.457 0.457 0 0 0 0.111 0.593l1.952 1.526A7.348 7.348 0 0 0 5.063 12a7.348 7.348 0 0 0 0.064 0.907L3.175 14.433a0.468 0.468 0 0 0 -0.111 0.593l1.851 3.2a0.461 0.461 0 0 0 0.407 0.231 0.421 0.421 0 0 0 0.157 -0.028l2.3 -0.925a6.74 6.74 0 0 0 1.564 0.907L9.7 20.864a0.451 0.451 0 0 0 0.454 0.388h3.7a0.451 0.451 0 0 0 0.453 -0.388l0.352 -2.452a7.093 7.093 0 0 0 1.563 -0.907l2.3 0.925a0.513 0.513 0 0 0 0.167 0.028 0.457 0.457 0 0 0 0.4 -0.231l1.851 -3.2a0.468 0.468 0 0 0 -0.111 -0.593Zm-0.09 2.029l-0.854 1.476 -2.117 -0.852 -0.673 0.508a5.426 5.426 0 0 1 -1.164 0.679l-0.795 0.323 -0.33 2.269h-1.7l-0.32 -2.269 -0.793 -0.322a5.3 5.3 0 0 1 -1.147 -0.662L8.2 15.56l-2.133 0.86 -0.854 -1.475 1.806 -1.411 -0.1 -0.847c-0.028 -0.292 -0.046 -0.5 -0.046 -0.687s0.018 -0.4 0.045 -0.672l0.106 -0.854L5.217 9.064l0.854 -1.475 2.117 0.851 0.673 -0.508a5.426 5.426 0 0 1 1.164 -0.679l0.8 -0.323 0.331 -2.269h1.7l0.321 2.269 0.792 0.322a5.3 5.3 0 0 1 1.148 0.661l0.684 0.526 2.133 -0.859 0.853 1.473 -1.8 1.421 0.1 0.847a5 5 0 0 1 0.046 0.679c0 0.193 -0.018 0.4 -0.045 0.672l-0.106 0.853ZM12 14.544A2.544 2.544 0 1 1 14.546 12 2.552 2.552 0 0 1 12 14.544Z\",columns:\"M20,5H4C2.9,5,2,5.9,2,7v10c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V7C22,5.9,21.1,5,20,5z M8,17.5H4c-0.3,0-0.5-0.2-0.5-0.4  c0,0,0,0,0,0V17v-2H8V17.5z M8,13.5H3.5v-3H8V13.5z M8,9H3.5V7c0-0.3,0.2-0.5,0.4-0.5c0,0,0,0,0,0H8V9z M20.5,17  c0,0.3-0.2,0.5-0.4,0.5c0,0,0,0,0,0H16V15h4.5V17z M20.5,13.5H16v-3h4.5V13.5z M20.5,9H16V6.5h4c0.3,0,0.5,0.2,0.5,0.4c0,0,0,0,0,0  V9z\",edit:\"M17,11.2L12.8,7L5,14.8V19h4.2L17,11.2z M7,16.8v-1.5l5.6-5.6l1.4,1.5l-5.6,5.6H7z M13.5,6.3l0.7-0.7c0.8-0.8,2.1-0.8,2.8,0  c0,0,0,0,0,0L18.4,7c0.8,0.8,0.8,2,0,2.8l-0.7,0.7L13.5,6.3z\",exitFullscreen:\"M5,16H8v3h2V14H5ZM8,8H5v2h5V5H8Zm6,11h2V16h3V14H14ZM16,8V5H14v5h5V8Z\",fileInsert:\"M 8.09375 12.75 L 5.90625 12.75 C 5.542969 12.75 5.25 12.394531 5.25 11.953125 L 5.25 6.375 L 2.851562 6.375 C 2.367188 6.375 2.121094 5.660156 2.464844 5.242188 L 6.625 0.1875 C 6.832031 -0.0585938 7.167969 -0.0585938 7.371094 0.1875 L 11.535156 5.242188 C 11.878906 5.660156 11.632812 6.375 11.148438 6.375 L 8.75 6.375 L 8.75 11.953125 C 8.75 12.394531 8.457031 12.75 8.09375 12.75 Z M 14 12.484375 L 14 16.203125 C 14 16.644531 13.707031 17 13.34375 17 L 0.65625 17 C 0.292969 17 0 16.644531 0 16.203125 L 0 12.484375 C 0 12.042969 0.292969 11.6875 0.65625 11.6875 L 4.375 11.6875 L 4.375 11.953125 C 4.375 12.980469 5.0625 13.8125 5.90625 13.8125 L 8.09375 13.8125 C 8.9375 13.8125 9.625 12.980469 9.625 11.953125 L 9.625 11.6875 L 13.34375 11.6875 C 13.707031 11.6875 14 12.042969 14 12.484375 Z M 10.609375 15.40625 C 10.609375 15.039062 10.363281 14.742188 10.0625 14.742188 C 9.761719 14.742188 9.515625 15.039062 9.515625 15.40625 C 9.515625 15.773438 9.761719 16.070312 10.0625 16.070312 C 10.363281 16.070312 10.609375 15.773438 10.609375 15.40625 Z M 12.359375 15.40625 C 12.359375 15.039062 12.113281 14.742188 11.8125 14.742188 C 11.511719 14.742188 11.265625 15.039062 11.265625 15.40625 C 11.265625 15.773438 11.511719 16.070312 11.8125 16.070312 C 12.113281 16.070312 12.359375 15.773438 12.359375 15.40625 Z M 12.359375 15.40625 \",fileManager:\"M 0 5.625 L 20.996094 5.625 L 21 15.75 C 21 16.371094 20.410156 16.875 19.6875 16.875 L 1.3125 16.875 C 0.585938 16.875 0 16.371094 0 15.75 Z M 0 5.625 M 21 4.5 L 0 4.5 L 0 2.25 C 0 1.628906 0.585938 1.125 1.3125 1.125 L 6.921875 1.125 C 7.480469 1.125 8.015625 1.316406 8.40625 1.652344 L 9.800781 2.847656 C 10.195312 3.183594 10.730469 3.375 11.289062 3.375 L 19.6875 3.375 C 20.414062 3.375 21 3.878906 21 4.5 Z M 21 4.5\",markdown:\"M5.55006 17.75V7.35L8.96006 16.89H10.7101L14.2301 7.37V14.0729C14.3951 14.1551 14.5499 14.265 14.6875 14.4026L14.7001 14.4151V11.64C14.7001 10.8583 15.2127 10.1963 15.9201 9.97171V5H13.6801L10.0401 14.86L6.51006 5H4.00006V17.75H5.55006ZM17.2001 11.64C17.2001 11.2258 16.8643 10.89 16.4501 10.89C16.0359 10.89 15.7001 11.2258 15.7001 11.64V16.8294L13.9804 15.1097C13.6875 14.8168 13.2126 14.8168 12.9197 15.1097C12.6269 15.4026 12.6269 15.8775 12.9197 16.1703L15.9197 19.1703C16.2126 19.4632 16.6875 19.4632 16.9804 19.1703L19.9804 16.1703C20.2733 15.8775 20.2733 15.4026 19.9804 15.1097C19.6875 14.8168 19.2126 14.8168 18.9197 15.1097L17.2001 16.8294V11.64Z\",fontAwesome:\"M18.99018,13.98212V7.52679c-.08038-1.21875-1.33929-.683-1.33929-.683-2.933,1.39282-4.36274.61938-5.85938.15625a6.23272,6.23272,0,0,0-2.79376-.20062l-.00946.004A1.98777,1.98777,0,0,0,7.62189,5.106a.984.984,0,0,0-.17517-.05432c-.02447-.0055-.04882-.01032-.0736-.0149A.9565.9565,0,0,0,7.1908,5H6.82539a.9565.9565,0,0,0-.18232.0368c-.02472.00458-.04907.0094-.07348.01484a.985.985,0,0,0-.17523.05438,1.98585,1.98585,0,0,0-.573,3.49585v9.394A1.004,1.004,0,0,0,6.82539,19H7.1908a1.00406,1.00406,0,0,0,1.00409-1.00409V15.52234c3.64221-1.09827,5.19709.64282,7.09888.57587a5.57291,5.57291,0,0,0,3.25446-1.05805A1.2458,1.2458,0,0,0,18.99018,13.98212Z\",fontFamily:\"M16,19h2L13,5H11L6,19H8l1.43-4h5.14Zm-5.86-6L12,7.8,13.86,13Z\",fontSize:\"M20.75,19h1.5l-3-10h-1.5l-3,10h1.5L17,16.5h3Zm-3.3-4,1.05-3.5L19.55,15Zm-5.7,4h2l-5-14h-2l-5,14h2l1.43-4h5.14ZM5.89,13,7.75,7.8,9.61,13Z\",fullscreen:\"M7,14H5v5h5V17H7ZM5,10H7V7h3V5H5Zm12,7H14v2h5V14H17ZM14,5V7h3v3h2V5Z\",help:\"M11,17h2v2h-2V17z M12,5C9.8,5,8,6.8,8,9h2c0-1.1,0.9-2,2-2s2,0.9,2,2c0,2-3,1.7-3,5v1h2v-1c0-2.2,3-2.5,3-5  C16,6.8,14.2,5,12,5z\",horizontalLine:\"M5,12h14 M19,11H5v2h14V11z\",imageAltText:\"M19,7h-6v12h-2V7H5V5h6h2h6V7z\",imageCaption:\"M14.2,11l3.8,5H6l3-3.9l2.1,2.7L14,11H14.2z M8.5,11c0.8,0,1.5-0.7,1.5-1.5S9.3,8,8.5,8S7,8.7,7,9.5C7,10.3,7.7,11,8.5,11z   M22,6v12c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h16C21.1,4,22,4.9,22,6z M20,8.8V6H4v12h16V8.8z M22,22H2v2h20V22z\",imageClass:\"M9.5,13.4l-2.9-2.9h3.8L12.2,7l1.4,3.5h3.8l-3,2.9l0.9,3.6L12,15.1L8.8,17L9.5,13.4z M22,6v12c0,1.1-0.9,2-2,2H4  c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h16C21.1,4,22,4.9,22,6z M20,6H4v12h16V8.8V6z\",imageDisplay:\"M3,5h18v2H3V5z M13,9h8v2h-8V9z M13,13h8v2h-8V13z M3,17h18v2H3V17z M3,9h8v6H3V9z\",imageManager:\"M20,6h-7l-2-2H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V8C22,6.9,21.1,6,20,6z M20,18H4V6h6.2l2,2H20V18z   M18,16l-3.8-5H14l-2.9,3.8L9,12.1L6,16H18z M10,9.5C10,8.7,9.3,8,8.5,8S7,8.7,7,9.5S7.7,11,8.5,11S10,10.3,10,9.5z\",imageSize:\"M16.9,4c-0.3,0-0.5,0.2-0.8,0.3L3.3,13c-0.9,0.6-1.1,1.9-0.5,2.8l2.2,3.3c0.4,0.7,1.2,1,2,0.8c0.3,0,0.5-0.2,0.8-0.3  L20.7,11c0.9-0.6,1.1-1.9,0.5-2.8l-2.2-3.3C18.5,4.2,17.7,3.9,16.9,4L16.9,4z M16.9,9.9L18.1,9l-2-2.9L17,5.6c0.1,0,0.1-0.1,0.2-0.1  c0.2,0,0.4,0,0.5,0.2L19.9,9c0.2,0.2,0.1,0.5-0.1,0.7L7,18.4c-0.1,0-0.1,0.1-0.2,0.1c-0.2,0-0.4,0-0.5-0.2L4.1,15  c-0.2-0.2-0.1-0.5,0.1-0.7L5,13.7l2,2.9l1.2-0.8l-2-2.9L7.5,12l1.1,1.7l1.2-0.8l-1.1-1.7l1.2-0.8l2,2.9l1.2-0.8l-2-2.9l1.2-0.8  l1.1,1.7l1.2-0.8l-1.1-1.7L14.9,7L16.9,9.9z\",indent:\"M3,9v6l3-3L3,9z M3,19h18v-2H3V19z M3,7h18V5H3V7z M9,11h12V9H9V11z M9,15h12v-2H9V15z\",inlineClass:\"M9.9,13.313A1.2,1.2,0,0,1,9.968,13H6.277l1.86-5.2,1.841,5.148A1.291,1.291,0,0,1,11.212,12h.426l-2.5-7h-2l-5,14h2l1.43-4H9.9Zm2.651,6.727a2.884,2.884,0,0,1-.655-2.018v-2.71A1.309,1.309,0,0,1,13.208,14h3.113a3.039,3.039,0,0,1,2,1.092s1.728,1.818,2.964,2.928a1.383,1.383,0,0,1,.318,1.931,1.44,1.44,0,0,1-.19.215l-3.347,3.31a1.309,1.309,0,0,1-1.832.258h0a1.282,1.282,0,0,1-.258-.257l-1.71-1.728Zm2.48-3.96a.773.773,0,1,0,.008,0Z\",inlineStyle:\"M11.88,15h.7l.7-1.7-3-8.3h-2l-5,14h2l1.4-4Zm-4.4-2,1.9-5.2,1.9,5.2ZM15.4,21.545l3.246,1.949-.909-3.637L20.72,17H16.954l-1.429-3.506L13.837,17H10.071l2.857,2.857-.779,3.637Z\",insert:\"M13.889,11.611c-0.17,0.17-0.443,0.17-0.612,0l-3.189-3.187l-3.363,3.36c-0.171,0.171-0.441,0.171-0.612,0c-0.172-0.169-0.172-0.443,0-0.611l3.667-3.669c0.17-0.17,0.445-0.172,0.614,0l3.496,3.493C14.058,11.167,14.061,11.443,13.889,11.611 M18.25,10c0,4.558-3.693,8.25-8.25,8.25c-4.557,0-8.25-3.692-8.25-8.25c0-4.557,3.693-8.25,8.25-8.25C14.557,1.75,18.25,5.443,18.25,10 M17.383,10c0-4.07-3.312-7.382-7.383-7.382S2.618,5.93,2.618,10S5.93,17.381,10,17.381S17.383,14.07,17.383,10\",insertEmbed:\"M20.73889,15.45929a3.4768,3.4768,0,0,0-5.45965-.28662L9.5661,12.50861a3.49811,3.49811,0,0,0-.00873-1.01331l5.72174-2.66809a3.55783,3.55783,0,1,0-.84527-1.81262L8.70966,9.6839a3.50851,3.50851,0,1,0,.0111,4.63727l5.7132,2.66412a3.49763,3.49763,0,1,0,6.30493-1.526ZM18.00745,5.01056A1.49993,1.49993,0,1,1,16.39551,6.3894,1.49994,1.49994,0,0,1,18.00745,5.01056ZM5.99237,13.49536a1.49989,1.49989,0,1,1,1.61194-1.37878A1.49982,1.49982,0,0,1,5.99237,13.49536Zm11.78211,5.494a1.49993,1.49993,0,1,1,1.61193-1.37885A1.49987,1.49987,0,0,1,17.77448,18.98932Z\",insertFile:\"M7,3C5.9,3,5,3.9,5,5v14c0,1.1,0.9,2,2,2h10c1.1,0,2-0.9,2-2V7.6L14.4,3H7z M17,19H7V5h6v4h4V19z\",insertImage:\"M14.2,11l3.8,5H6l3-3.9l2.1,2.7L14,11H14.2z M8.5,11c0.8,0,1.5-0.7,1.5-1.5S9.3,8,8.5,8S7,8.7,7,9.5C7,10.3,7.7,11,8.5,11z   M22,6v12c0,1.1-0.9,2-2,2H4c-1.1,0-2-0.9-2-2V6c0-1.1,0.9-2,2-2h16C21.1,4,22,4.9,22,6z M20,8.8V6H4v12h16V8.8z\",insertLink:\"M11,17H7A5,5,0,0,1,7,7h4V9H7a3,3,0,0,0,0,6h4ZM17,7H13V9h4a3,3,0,0,1,0,6H13v2h4A5,5,0,0,0,17,7Zm-1,4H8v2h8Z\",insertMore:\"M16.5,13h-6v6h-2V13h-6V11h6V5h2v6h6Zm5,4.5A1.5,1.5,0,1,1,20,16,1.5,1.5,0,0,1,21.5,17.5Zm0-4A1.5,1.5,0,1,1,20,12,1.5,1.5,0,0,1,21.5,13.5Zm0-4A1.5,1.5,0,1,1,20,8,1.5,1.5,0,0,1,21.5,9.5Z\",insertTable:\"M20,5H4C2.9,5,2,5.9,2,7v2v1.5v3V15v2c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2v-2v-1.5v-3V9V7C22,5.9,21.1,5,20,5z M9.5,13.5v-3  h5v3H9.5z M14.5,15v2.5h-5V15H14.5z M9.5,9V6.5h5V9H9.5z M3.5,7c0-0.3,0.2-0.5,0.5-0.5h4V9H3.5V7z M3.5,10.5H8v3H3.5V10.5z M3.5,17  v-2H8v2.5H4C3.7,17.5,3.5,17.3,3.5,17z M20.5,17c0,0.3-0.2,0.5-0.5,0.5h-4V15h4.5V17z M20.5,13.5H16v-3h4.5V13.5z M16,9V6.5h4  c0.3,0,0.5,0.2,0.5,0.5v2H16z\",insertVideo:\"M15,8v8H5V8H15m2,2.5V7a1,1,0,0,0-1-1H4A1,1,0,0,0,3,7V17a1,1,0,0,0,1,1H16a1,1,0,0,0,1-1V13.5l2.29,2.29A1,1,0,0,0,21,15.08V8.91a1,1,0,0,0-1.71-.71Z\",upload:\"M12 6.66667a4.87654 4.87654 0 0 1 4.77525 3.92342l0.29618 1.50268 1.52794 0.10578a2.57021 2.57021 0 0 1 -0.1827 5.13478H6.5a3.49774 3.49774 0 0 1 -0.3844 -6.97454l1.06682 -0.11341L7.678 9.29387A4.86024 4.86024 0 0 1 12 6.66667m0 -2A6.871 6.871 0 0 0 5.90417 8.37 5.49773 5.49773 0 0 0 6.5 19.33333H18.41667a4.57019 4.57019 0 0 0 0.32083 -9.13A6.86567 6.86567 0 0 0 12 4.66667Zm0.99976 7.2469h1.91406L11.99976 9 9.08618 11.91357h1.91358v3H11V16h2V14h-0.00024Z\",uploadFiles:\"M12 6.66667a4.87654 4.87654 0 0 1 4.77525 3.92342l0.29618 1.50268 1.52794 0.10578a2.57021 2.57021 0 0 1 -0.1827 5.13478H6.5a3.49774 3.49774 0 0 1 -0.3844 -6.97454l1.06682 -0.11341L7.678 9.29387A4.86024 4.86024 0 0 1 12 6.66667m0 -2A6.871 6.871 0 0 0 5.90417 8.37 5.49773 5.49773 0 0 0 6.5 19.33333H18.41667a4.57019 4.57019 0 0 0 0.32083 -9.13A6.86567 6.86567 0 0 0 12 4.66667Zm0.99976 7.2469h1.91406L11.99976 9 9.08618 11.91357h1.91358v3H11V16h2V14h-0.00024Z\",italic:\"M11.76,9h2l-2.2,10h-2Zm1.68-4a1,1,0,1,0,1,1,1,1,0,0,0-1-1Z\",search:\"M15.5 14h-0.79l-0.28 -0.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09 -0.59 4.23 -1.57l0.27 0.28v0.79l5 4.99L20.49 19l-4.99 -5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\",lineHeight:\"M6.25,7h2.5L5.25,3.5,1.75,7h2.5V17H1.75l3.5,3.5L8.75,17H6.25Zm4-2V7h12V5Zm0,14h12V17h-12Zm0-6h12V11h-12Z\",linkStyles:\"M19,17.9l0.9,3.6l-3.2-1.9l-3.3,1.9l0.8-3.6L11.3,15h3.8l1.7-3.5l1.4,3.5H22L19,17.9z M20,12c0,0.3-0.1,0.7-0.2,1h2.1  c0.1-0.3,0.1-0.6,0.1-1c0-2.8-2.2-5-5-5h-4v2h4C18.7,9,20,10.3,20,12z M14.8,11H8v2h3.3h2.5L14.8,11z M9.9,16.4L8.5,15H7  c-1.7,0-3-1.3-3-3s1.3-3,3-3h4V7H7c-2.8,0-5,2.2-5,5s2.2,5,5,5h3.5L9.9,16.4z\",mention:\"M12.4,5c-4.1,0-7.5,3.4-7.5,7.5S8.3,20,12.4,20h3.8v-1.5h-3.8c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6v1.1  c0,0.6-0.5,1.2-1.1,1.2s-1.1-0.6-1.1-1.2v-1.1c0-2.1-1.7-3.8-3.8-3.8s-3.7,1.7-3.7,3.8s1.7,3.8,3.8,3.8c1,0,2-0.4,2.7-1.1  c0.5,0.7,1.3,1.1,2.2,1.1c1.5,0,2.6-1.2,2.6-2.7v-1.1C19.9,8.4,16.6,5,12.4,5z M12.4,14.7c-1.2,0-2.3-1-2.3-2.2s1-2.3,2.3-2.3  s2.3,1,2.3,2.3S13.6,14.7,12.4,14.7z\",minimize:\"M5,12h14 M19,11H5v2h14V11z\",more:\"M13.5,17c0,0.8-0.7,1.5-1.5,1.5s-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5S13.5,16.2,13.5,17z M13.5,12c0,0.8-0.7,1.5-1.5,1.5 s-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5S13.5,11.2,13.5,12z M13.5,7c0,0.8-0.7,1.5-1.5,1.5S10.5,7.8,10.5,7s0.7-1.5,1.5-1.5 S13.5,6.2,13.5,7z\",openLink:\"M17,17H7V7h3V5H7C6,5,5,6,5,7v10c0,1,1,2,2,2h10c1,0,2-1,2-2v-3h-2V17z M14,5v2h1.6l-5.8,5.8l1.4,1.4L17,8.4V10h2V5H14z\",orderedList:\"M2.5,16h2v.5h-1v1h1V18h-2v1h3V15h-3Zm1-7h1V5h-2V6h1Zm-1,2H4.3L2.5,13.1V14h3V13H3.7l1.8-2.1V10h-3Zm5-5V8h14V6Zm0,12h14V16H7.5Zm0-5h14V11H7.5Z\",outdent:\"M3,12l3,3V9L3,12z M3,19h18v-2H3V19z M3,7h18V5H3V7z M9,11h12V9H9V11z M9,15h12v-2H9V15z\",pageBreaker:\"M3,9v6l3-3L3,9z M21,9H8V4h2v3h9V4h2V9z M21,20h-2v-3h-9v3H8v-5h13V20z M11,13H8v-2h3V13z M16,13h-3v-2h3V13z M21,13h-3v-2  h3V13z\",paragraphFormat:\"M10.15,5A4.11,4.11,0,0,0,6.08,8.18,4,4,0,0,0,10,13v6h2V7h2V19h2V7h2V5ZM8,9a2,2,0,0,1,2-2v4A2,2,0,0,1,8,9Z\",paragraphMore:\"M7.682,5a4.11,4.11,0,0,0-4.07,3.18,4,4,0,0,0,3.11,4.725h0l.027.005a3.766,3.766,0,0,0,.82.09v6h2V7h2V19h2V7h2V5ZM5.532,9a2,2,0,0,1,2-2v4A2,2,0,0,1,5.532,9Zm14.94,8.491a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.472,17.491Zm0-4a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.472,13.491Zm0-4a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.472,9.491Z\",paragraphStyle:\"M4,9c0-1.1,0.9-2,2-2v4C4.9,11,4,10.1,4,9z M16.7,20.5l3.2,1.9L19,18.8l3-2.9h-3.7l-1.4-3.5L15.3,16h-3.8l2.9,2.9l-0.9,3.6  L16.7,20.5z M10,17.4V19h1.6L10,17.4z M6.1,5c-1.9,0-3.6,1.3-4,3.2c-0.5,2.1,0.8,4.2,2.9,4.7c0,0,0,0,0,0h0.2C5.5,13,5.8,13,6,13v6  h2V7h2v7h2V7h2V5H6.1z\",pdfExport:\"M7,3C5.9,3,5,3.9,5,5v14c0,1.1,0.9,2,2,2h10c1.1,0,2-0.9,2-2V7.6L14.4,3H7z M17,19H7V5h6v4h4V19z M16.3,13.5  c-0.2-0.6-1.1-0.8-2.6-0.8c-0.1,0-0.1,0-0.2,0c-0.3-0.3-0.8-0.9-1-1.2c-0.2-0.2-0.3-0.3-0.4-0.6c0.2-0.7,0.2-1,0.3-1.5  c0.1-0.9,0-1.6-0.2-1.8c-0.4-0.2-0.7-0.2-0.9-0.2c-0.1,0-0.3,0.2-0.7,0.7c-0.2,0.7-0.1,1.8,0.6,2.8c-0.2,0.8-0.7,1.6-1,2.4  c-0.8,0.2-1.5,0.7-1.9,1.1c-0.7,0.7-0.9,1.1-0.7,1.6c0,0.3,0.2,0.6,0.7,0.6c0.3-0.1,0.3-0.2,0.7-0.3c0.6-0.3,1.2-1.7,1.7-2.4  c0.8-0.2,1.7-0.3,2-0.3c0.1,0,0.3,0,0.6,0c0.8,0.8,1.2,1.1,1.8,1.2c0.1,0,0.2,0,0.3,0c0.3,0,0.8-0.1,1-0.6  C16.4,14.1,16.4,13.9,16.3,13.5z M8.3,15.7c-0.1,0.1-0.2,0.1-0.2,0.1c0-0.1,0-0.3,0.6-0.8c0.2-0.2,0.6-0.3,0.9-0.7  C9,15,8.6,15.5,8.3,15.7z M11.3,9c0-0.1,0.1-0.2,0.1-0.2S11.6,9,11.5,10c0,0.1,0,0.3-0.1,0.7C11.3,10.1,11,9.5,11.3,9z M10.9,13.1  c0.2-0.6,0.6-1,0.7-1.5c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.2,0.3,0.7,0.7,0.9C12.2,12.8,11.6,13,10.9,13.1z M15.2,14.1  c-0.1,0-0.1,0-0.2,0c-0.2,0-0.7-0.2-1-0.7c1.1,0,1.6,0.2,1.6,0.6C15.5,14.1,15.4,14.1,15.2,14.1z\",print:\"M16.1,17c0-0.6,0.4-1,1-1c0.6,0,1,0.4,1,1s-0.4,1-1,1C16.5,18,16.1,17.6,16.1,17z M22,15v4c0,1.1-0.9,2-2,2H4  c-1.1,0-2-0.9-2-2v-4c0-1.1,0.9-2,2-2h1V5c0-1.1,0.9-2,2-2h7.4L19,7.6V13h1C21.1,13,22,13.9,22,15z M7,13h10V9h-4V5H7V13z M20,15H4  v4h16V15z\",redo:\"M13.6,9.4c1.7,0.3,3.2,0.9,4.6,2L21,8.5v7h-7l2.7-2.7C13,10.1,7.9,11,5.3,14.7c-0.2,0.3-0.4,0.5-0.5,0.8L3,14.6  C5.1,10.8,9.3,8.7,13.6,9.4z\",removeTable:\"M15,10v8H9v-8H15 M14,4H9.9l-1,1H6v2h12V5h-3L14,4z M17,8H7v10c0,1.1,0.9,2,2,2h6c1.1,0,2-0.9,2-2V8z\",insertAll:\"M 9.25 12 L 6.75 12 C 6.335938 12 6 11.664062 6 11.25 L 6 6 L 3.257812 6 C 2.703125 6 2.425781 5.328125 2.820312 4.933594 L 7.570312 0.179688 C 7.804688 -0.0546875 8.191406 -0.0546875 8.425781 0.179688 L 13.179688 4.933594 C 13.574219 5.328125 13.296875 6 12.742188 6 L 10 6 L 10 11.25 C 10 11.664062 9.664062 12 9.25 12 Z M 16 11.75 L 16 15.25 C 16 15.664062 15.664062 16 15.25 16 L 0.75 16 C 0.335938 16 0 15.664062 0 15.25 L 0 11.75 C 0 11.335938 0.335938 11 0.75 11 L 5 11 L 5 11.25 C 5 12.214844 5.785156 13 6.75 13 L 9.25 13 C 10.214844 13 11 12.214844 11 11.25 L 11 11 L 15.25 11 C 15.664062 11 16 11.335938 16 11.75 Z M 12.125 14.5 C 12.125 14.15625 11.84375 13.875 11.5 13.875 C 11.15625 13.875 10.875 14.15625 10.875 14.5 C 10.875 14.84375 11.15625 15.125 11.5 15.125 C 11.84375 15.125 12.125 14.84375 12.125 14.5 Z M 14.125 14.5 C 14.125 14.15625 13.84375 13.875 13.5 13.875 C 13.15625 13.875 12.875 14.15625 12.875 14.5 C 12.875 14.84375 13.15625 15.125 13.5 15.125 C 13.84375 15.125 14.125 14.84375 14.125 14.5 Z M 14.125 14.5 \",remove:\"M15,10v8H9v-8H15 M14,4H9.9l-1,1H6v2h12V5h-3L14,4z M17,8H7v10c0,1.1,0.9,2,2,2h6c1.1,0,2-0.9,2-2V8z\",replaceImage:\"M16,5v3H4v2h12v3l4-4L16,5z M8,19v-3h12v-2H8v-3l-4,4L8,19z\",row:\"M20,5H4C2.9,5,2,5.9,2,7v2v1.5v3V15v2c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2v-2v-1.5v-3V9V7C22,5.9,21.1,5,20,5z M16,6.5h4  c0.3,0,0.5,0.2,0.5,0.5v2H16V6.5z M9.5,6.5h5V9h-5V6.5z M3.5,7c0-0.3,0.2-0.5,0.5-0.5h4V9H3.5V7z M8,17.5H4c-0.3,0-0.5-0.2-0.5-0.5  v-2H8V17.5z M14.5,17.5h-5V15h5V17.5z M20.5,17c0,0.3-0.2,0.5-0.5,0.5h-4V15h4.5V17z\",selectAll:\"M5,7h2V5C5.9,5,5,5.9,5,7z M5,11h2V9H5V11z M9,19h2v-2H9V19z M5,11h2V9H5V11z M15,5h-2v2h2V5z M17,5v2h2C19,5.9,18.1,5,17,5  z M7,19v-2H5C5,18.1,5.9,19,7,19z M5,15h2v-2H5V15z M11,5H9v2h2V5z M13,19h2v-2h-2V19z M17,11h2V9h-2V11z M17,19c1.1,0,2-0.9,2-2h-2  V19z M17,11h2V9h-2V11z M17,15h2v-2h-2V15z M13,19h2v-2h-2V19z M13,7h2V5h-2V7z M9,15h6V9H9V15z M11,11h2v2h-2V11z\",smile:\"M11.991,3A9,9,0,1,0,21,12,8.99557,8.99557,0,0,0,11.991,3ZM12,19a7,7,0,1,1,7-7A6.99808,6.99808,0,0,1,12,19Zm3.105-5.2h1.503a4.94542,4.94542,0,0,1-9.216,0H8.895a3.57808,3.57808,0,0,0,6.21,0ZM7.5,9.75A1.35,1.35,0,1,1,8.85,11.1,1.35,1.35,0,0,1,7.5,9.75Zm6.3,0a1.35,1.35,0,1,1,1.35,1.35A1.35,1.35,0,0,1,13.8,9.75Z\",spellcheck:\"M19.1,13.6l-5.6,5.6l-2.7-2.7l-1.4,1.4l4.1,4.1l7-7L19.1,13.6z M10.8,13.7l2.7,2.7l0.8-0.8L10.5,5h-2l-5,14h2l1.4-4h2.6  L10.8,13.7z M9.5,7.8l1.9,5.2H7.6L9.5,7.8z\",star:\"M12.1,7.7l1,2.5l0.4,0.9h1h2.4l-2.1,2l-0.6,0.6l0.2,0.9l0.6,2.3l-2.2-1.3L12,15.2l-0.8,0.5L9,17l0.5-2.5l0.1-0.8L9,13.1  l-2-2h2.5h0.9l0.4-0.8L12.1,7.7 M12.2,4L9.5,9.6H3.4L8,14.2L6.9,20l5.1-3.1l5.3,3.1l-1.5-5.8l4.8-4.6h-6.1L12.2,4L12.2,4z\",strikeThrough:\"M3,12.20294H21v1.5H16.63422a3.59782,3.59782,0,0,1,.34942,1.5929,3.252,3.252,0,0,1-1.31427,2.6997A5.55082,5.55082,0,0,1,12.20251,19a6.4421,6.4421,0,0,1-2.62335-.539,4.46335,4.46335,0,0,1-1.89264-1.48816,3.668,3.668,0,0,1-.67016-2.15546V14.704h.28723v-.0011h.34149v.0011H9.02v.11334a2.18275,2.18275,0,0,0,.85413,1.83069,3.69,3.69,0,0,0,2.32836.67926,3.38778,3.38778,0,0,0,2.07666-.5462,1.73346,1.73346,0,0,0,.7013-1.46655,1.69749,1.69749,0,0,0-.647-1.43439,3.00525,3.00525,0,0,0-.27491-.17725H3ZM16.34473,7.05981A4.18163,4.18163,0,0,0,14.6236,5.5462,5.627,5.627,0,0,0,12.11072,5,5.16083,5.16083,0,0,0,8.74719,6.06213,3.36315,3.36315,0,0,0,7.44006,8.76855a3.22923,3.22923,0,0,0,.3216,1.42786h2.59668c-.08338-.05365-.18537-.10577-.25269-.16064a1.60652,1.60652,0,0,1-.65283-1.30036,1.79843,1.79843,0,0,1,.68842-1.5108,3.12971,3.12971,0,0,1,1.96948-.55243,3.04779,3.04779,0,0,1,2.106.6687,2.35066,2.35066,0,0,1,.736,1.83258v.11341h2.00317V9.17346A3.90013,3.90013,0,0,0,16.34473,7.05981Z\",subscript:\"M10.4,12l3.6,3.6L12.6,17L9,13.4L5.4,17L4,15.6L7.6,12L4,8.4L5.4,7L9,10.6L12.6,7L14,8.4L10.4,12z M18.31234,19.674  l1.06812-1.1465c0.196-0.20141,0.37093-0.40739,0.5368-0.6088c0.15975-0.19418,0.30419-0.40046,0.432-0.617  c0.11969-0.20017,0.21776-0.41249,0.29255-0.6334c0.07103-0.21492,0.10703-0.43986,0.10662-0.66621  c0.00297-0.28137-0.04904-0.56062-0.1531-0.82206c-0.09855-0.24575-0.25264-0.46534-0.45022-0.6416  c-0.20984-0.18355-0.45523-0.32191-0.72089-0.40646c-0.63808-0.19005-1.3198-0.17443-1.94851,0.04465  c-0.28703,0.10845-0.54746,0.2772-0.76372,0.49487c-0.20881,0.20858-0.37069,0.45932-0.47483,0.73548  c-0.10002,0.26648-0.15276,0.54838-0.15585,0.833l-0.00364,0.237H17.617l0.00638-0.22692  c0.00158-0.12667,0.01966-0.25258,0.05377-0.37458c0.03337-0.10708,0.08655-0.20693,0.15679-0.29437  c0.07105-0.08037,0.15959-0.14335,0.25882-0.1841c0.22459-0.08899,0.47371-0.09417,0.7018-0.01458  c0.0822,0.03608,0.15559,0.08957,0.21509,0.15679c0.06076,0.07174,0.10745,0.15429,0.13761,0.24333  c0.03567,0.10824,0.05412,0.22141,0.05469,0.33538c-0.00111,0.08959-0.0118,0.17881-0.0319,0.26612  c-0.02913,0.10428-0.07076,0.20465-0.124,0.29893c-0.07733,0.13621-0.1654,0.26603-0.26338,0.38823  c-0.13438,0.17465-0.27767,0.34226-0.42929,0.50217l-2.15634,2.35315V21H21v-1.326H18.31234z\",superscript:\"M10.4,12,14,15.6,12.6,17,9,13.4,5.4,17,4,15.6,7.6,12,4,8.4,5.4,7,9,10.6,12.6,7,14,8.4Zm8.91234-3.326,1.06812-1.1465c.196-.20141.37093-.40739.5368-.6088a4.85745,4.85745,0,0,0,.432-.617,3.29,3.29,0,0,0,.29255-.6334,2.11079,2.11079,0,0,0,.10662-.66621,2.16127,2.16127,0,0,0-.1531-.82206,1.7154,1.7154,0,0,0-.45022-.6416,2.03,2.03,0,0,0-.72089-.40646,3.17085,3.17085,0,0,0-1.94851.04465,2.14555,2.14555,0,0,0-.76372.49487,2.07379,2.07379,0,0,0-.47483.73548,2.446,2.446,0,0,0-.15585.833l-.00364.237H18.617L18.62338,5.25a1.45865,1.45865,0,0,1,.05377-.37458.89552.89552,0,0,1,.15679-.29437.70083.70083,0,0,1,.25882-.1841,1.00569,1.00569,0,0,1,.7018-.01458.62014.62014,0,0,1,.21509.15679.74752.74752,0,0,1,.13761.24333,1.08893,1.08893,0,0,1,.05469.33538,1.25556,1.25556,0,0,1-.0319.26612,1.34227,1.34227,0,0,1-.124.29893,2.94367,2.94367,0,0,1-.26338.38823,6.41629,6.41629,0,0,1-.42929.50217L17.19709,8.92642V10H22V8.674Z\",symbols:\"M15.77493,16.98885a8.21343,8.21343,0,0,0,1.96753-2.57651,7.34824,7.34824,0,0,0,.6034-3.07618A6.09092,6.09092,0,0,0,11.99515,5a6.13347,6.13347,0,0,0-4.585,1.79187,6.417,6.417,0,0,0-1.756,4.69207,6.93955,6.93955,0,0,0,.622,2.97415,8.06587,8.06587,0,0,0,1.949,2.53076H5.41452V19h5.54114v-.04331h-.00147V16.84107a5.82825,5.82825,0,0,1-2.2052-2.2352A6.40513,6.40513,0,0,1,7.97672,11.447,4.68548,4.68548,0,0,1,9.07785,8.19191a3.73232,3.73232,0,0,1,2.9173-1.22462,3.76839,3.76839,0,0,1,2.91241,1.21489,4.482,4.482,0,0,1,1.11572,3.154,6.71141,6.71141,0,0,1-.75384,3.24732,5.83562,5.83562,0,0,1-2.22357,2.25759v2.11562H13.0444V19h5.54108V16.98885Z\",tags:\"M8.9749 7.47489a1.5 1.5 0 1 1 -1.5 1.5A1.5 1.5 0 0 1 8.9749 7.47489Zm3.78866 -3.12713L16.5362 8.12041l0.33565 0.33564 2.77038 2.77038a2.01988 2.01988 0 0 1 0.59 1.42 1.95518 1.95518 0 0 1 -0.5854 1.40455l0.00044 0.00043 -5.59583 5.59583 -0.00043 -0.00044a1.95518 1.95518 0 0 1 -1.40455 0.5854 1.98762 1.98762 0 0 1 -1.41 -0.58L8.45605 16.87185l-0.33564 -0.33565L4.35777 12.77357a1.99576 1.99576 0 0 1 -0.59 -1.42V9.36358l0 -3.59582a2.00579 2.00579 0 0 1 2 -2l3.59582 0h1.98995A1.98762 1.98762 0 0 1 12.76356 4.34776ZM15.46186 9.866l-0.33564 -0.33564L11.36359 5.76776H5.76776v5.59583L9.866 15.46186l2.7794 2.7794 5.5878 -5.60385 -0.001 -0.001Z\",tableHeader:\"M20,5H4C2.9,5,2,5.9,2,7v10c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V7C22,5.9,21.1,5,20,5z M8,17.5H4c-0.3,0-0.5-0.2-0.5-0.4  l0,0V17v-2H8V17.5z M8,13.5H3.5v-3H8V13.5z M14.5,17.5h-5V15h5V17.5z M14.5,13.5h-5v-3h5V13.5z M20.5,17c0,0.3-0.2,0.5-0.4,0.5l0,0  H16V15h4.5V17z M20.5,13.5H16v-3h4.5V13.5z M20.5,9h-4.4H16h-1.5h-5H8H7.9H3.5V7c0-0.3,0.2-0.5,0.4-0.5l0,0h4l0,0h8.2l0,0H20  c0.3,0,0.5,0.2,0.5,0.4l0,0V9z\",tableFooter:\"M20,19H4a2.006,2.006,0,0,1-2-2V7A2.006,2.006,0,0,1,4,5H20a2.006,2.006,0,0,1,2,2V17A2.006,2.006,0,0,1,20,19ZM8,6.5H4a.458.458,0,0,0-.5.4h0V9H8Zm0,4H3.5v3H8Zm6.5-4h-5V9h5Zm0,4h-5v3h5Zm6-3.5a.458.458,0,0,0-.4-.5H16V9h4.5Zm0,3.5H16v3h4.5Zm0,4.5H3.5v2a.458.458,0,0,0,.4.5H20a.458.458,0,0,0,.5-.4h0Z\",tableStyle:\"M20.0171,19.89752l.9,3.6-3.2-1.9-3.3,1.9.8-3.6-2.9-2.9h3.8l1.7-3.5,1.4,3.5h3.8ZM20,5H4A2.00591,2.00591,0,0,0,2,7V17a2.00591,2.00591,0,0,0,2,2h7.49115l-.58826-.58826L9.99115,17.5H9.5V14.9975h5.36511L16,12.66089V10.5h4.5v3h-.52783l.599,1.4975H22V7A2.00591,2.00591,0,0,0,20,5ZM3.5,7A.4724.4724,0,0,1,4,6.5H8V9H3.5Zm0,3.5H8v3H3.5Zm.5,7a.4724.4724,0,0,1-.5-.5V15H8v2.5Zm10.5-4h-5v-3h5Zm0-4.5h-5V6.5h5Zm6,0H16V6.5h4a.4724.4724,0,0,1,.5.5Z\",textColor:\"M15.2,13.494s-3.6,3.9-3.6,6.3a3.65,3.65,0,0,0,7.3.1v-.1C18.9,17.394,15.2,13.494,15.2,13.494Zm-1.47-1.357.669-.724L12.1,5h-2l-5,14h2l1.43-4h2.943A24.426,24.426,0,0,1,13.726,12.137ZM11.1,7.8l1.86,5.2H9.244Z\",textMore:\"M13.55,19h2l-5-14h-2l-5,14h2l1.4-4h5.1Zm-5.9-6,1.9-5.2,1.9,5.2Zm12.8,4.5a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.45,17.5Zm0-4a1.5,1.5,0,1,1-1.5-1.5A1.5,1.5,0,0,1,20.45,13.5Zm0-4A1.5,1.5,0,1,1,18.95,8,1.5,1.5,0,0,1,20.45,9.5Z\",underline:\"M19,20v2H5V20Zm-3-6.785a4,4,0,0,1-5.74,3.4A3.75,3.75,0,0,1,8,13.085V5.005H6v8.21a6,6,0,0,0,8,5.44,5.851,5.851,0,0,0,4-5.65v-8H16ZM16,5v0h2V5ZM8,5H6v0H8Z\",undo:\"M10.4,9.4c-1.7,0.3-3.2,0.9-4.6,2L3,8.5v7h7l-2.7-2.7c3.7-2.6,8.8-1.8,11.5,1.9c0.2,0.3,0.4,0.5,0.5,0.8l1.8-0.9  C18.9,10.8,14.7,8.7,10.4,9.4z\",unlink:\"M14.4,11l1.6,1.6V11H14.4z M17,7h-4v1.9h4c1.7,0,3.1,1.4,3.1,3.1c0,1.3-0.8,2.4-1.9,2.8l1.4,1.4C21,15.4,22,13.8,22,12  C22,9.2,19.8,7,17,7z M2,4.3l3.1,3.1C3.3,8.1,2,9.9,2,12c0,2.8,2.2,5,5,5h4v-1.9H7c-1.7,0-3.1-1.4-3.1-3.1c0-1.6,1.2-2.9,2.8-3.1  L8.7,11H8v2h2.7l2.3,2.3V17h1.7l4,4l1.4-1.4L3.4,2.9L2,4.3z\",unorderedList:\"M4,10.5c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S4.8,10.5,4,10.5z M4,5.5C3.2,5.5,2.5,6.2,2.5,7  S3.2,8.5,4,8.5S5.5,7.8,5.5,7S4.8,5.5,4,5.5z M4,15.5c-0.8,0-1.5,0.7-1.5,1.5s0.7,1.5,1.5,1.5s1.5-0.7,1.5-1.5S4.8,15.5,4,15.5z   M7.5,6v2h14V6H7.5z M7.5,18h14v-2h-14V18z M7.5,13h14v-2h-14V13z\",verticalAlignBottom:\"M16,13h-3V3h-2v10H8l4,4L16,13z M3,19v2h18v-2H3z\",verticalAlignMiddle:\"M3,11v2h18v-2H3z M8,18h3v3h2v-3h3l-4-4L8,18z M16,6h-3V3h-2v3H8l4,4L16,6z\",verticalAlignTop:\"M8,11h3v10h2V11h3l-4-4L8,11z M21,5V3H3v2H21z\",trackChanges:\"M17.2 20H12.4599L13.9938 19.2076L14.0305 19.1886L14.0616 19.1612C14.1036 19.1242 14.1373 19.0786 14.1603 19.0275C14.1806 18.9825 14.1923 18.9342 14.1948 18.885H14.2H14.3384L14.4364 18.7874L14.7049 18.52H15.45C15.5747 18.52 15.6942 18.4705 15.7823 18.3823C15.8705 18.2942 15.92 18.1746 15.92 18.05C15.92 17.9253 15.8705 17.8058 15.7823 17.7176C15.7351 17.6704 15.6789 17.6343 15.6177 17.6109L17.33 15.9056V19.87C17.33 19.8871 17.3266 19.904 17.3201 19.9197C17.3136 19.9355 17.304 19.9499 17.2919 19.9619C17.2799 19.974 17.2655 19.9836 17.2497 19.9901C17.234 19.9966 17.2171 20 17.2 20ZM4.13 20H11.2508C11.2396 19.9629 11.2337 19.9242 11.2337 19.885C11.2337 19.8133 11.2533 19.7431 11.29 19.6819L11.2739 19.6734L11.8838 18.52H5C4.87535 18.52 4.7558 18.4705 4.66766 18.3823C4.57952 18.2942 4.53 18.1746 4.53 18.05C4.53 17.9253 4.57952 17.8058 4.66766 17.7176C4.7558 17.6295 4.87535 17.58 5 17.58H12.3809L12.3925 17.5582L12.4187 17.5284C12.4558 17.4864 12.5014 17.4527 12.5525 17.4297C12.5836 17.4156 12.6163 17.4057 12.6498 17.4001C12.6522 17.3065 12.6877 17.2166 12.7503 17.1467L13 17.37C12.9902 17.381 12.9847 17.3952 12.9847 17.41C12.9847 17.4247 12.9902 17.439 13 17.45L14.13 18.55H14.2L19.09 13.68V13.6L17.99 12.5C17.979 12.4902 17.9647 12.4847 17.95 12.4847C17.9352 12.4847 17.921 12.4902 17.91 12.5L13 17.37L12.7641 17.1322L15.1759 14.74H5C4.87535 14.74 4.7558 14.6905 4.66766 14.6023C4.57952 14.5142 4.53 14.3946 4.53 14.27C4.53 14.1453 4.57952 14.0258 4.66766 13.9376C4.7558 13.8495 4.87535 13.8 5 13.8H15.45C15.5747 13.8 15.6942 13.8495 15.7823 13.9376C15.8169 13.9722 15.8454 14.0115 15.8675 14.0541L17.33 12.6034V9.3H13.28C13.207 9.30976 13.133 9.30976 13.06 9.3C12.7697 9.22119 12.5113 9.05343 12.3212 8.82027C12.1311 8.58711 12.0187 8.30026 12 8V4H4.13C4.09552 4 4.06246 4.0137 4.03808 4.03808C4.0137 4.06246 4 4.09552 4 4.13V19.87C4 19.9045 4.0137 19.9375 4.03808 19.9619C4.06246 19.9863 4.09552 20 4.13 20ZM11.7889 20H11.8785C11.8902 19.9746 11.898 19.9475 11.9015 19.9197L11.8661 19.9866L11.8117 19.9578L13.84 18.91C13.8464 18.9044 13.8515 18.8974 13.855 18.8897C13.8585 18.8819 13.8603 18.8735 13.8603 18.865C13.8603 18.8565 13.8585 18.8481 13.855 18.8403C13.8515 18.8325 13.8464 18.8256 13.84 18.82L12.76 17.75C12.7544 17.7436 12.7474 17.7385 12.7397 17.735C12.7319 17.7315 12.7235 17.7297 12.715 17.7297C12.7065 17.7297 12.6981 17.7315 12.6903 17.735C12.6825 17.7385 12.6756 17.7436 12.67 17.75L11.57 19.83L11.5023 19.7942L11.58 19.85C11.5727 19.8602 11.5687 19.8724 11.5687 19.885C11.5687 19.8975 11.5727 19.9098 11.58 19.92L11.67 20H11.73L11.7642 19.9823L11.7889 20ZM13.1 4.65L16.6 8.15C16.6212 8.17232 16.6355 8.20028 16.6412 8.23051C16.6469 8.26075 16.6437 8.29199 16.6321 8.32048C16.6205 8.34898 16.6009 8.37352 16.5757 8.39117C16.5505 8.40882 16.5207 8.41883 16.49 8.42H13.06L12.83 8.19V4.76C12.8312 4.72925 12.8412 4.6995 12.8588 4.67429C12.8765 4.64909 12.901 4.62951 12.9295 4.6179C12.958 4.6063 12.9893 4.60315 13.0195 4.60884C13.0497 4.61453 13.0777 4.62882 13.1 4.65ZM11 6.72C11.0027 6.66089 10.9937 6.60183 10.9735 6.54621C10.9534 6.49058 10.9224 6.43948 10.8825 6.39582C10.8425 6.35216 10.7944 6.31681 10.7408 6.29179C10.6871 6.26677 10.6291 6.25257 10.57 6.25H5C4.88239 6.25773 4.77251 6.3113 4.69397 6.39918C4.61543 6.48707 4.57451 6.60226 4.58 6.72C4.57451 6.83774 4.61543 6.95293 4.69397 7.04082C4.77251 7.12871 4.88239 7.18227 5 7.19H10.6C10.714 7.1774 10.8189 7.12173 10.8933 7.03438C10.9676 6.94702 11.0058 6.83457 11 6.72ZM11.1 8.14001H5C4.87535 8.14001 4.7558 8.18953 4.66766 8.27767C4.57952 8.36582 4.53 8.48536 4.53 8.61001C4.53 8.73467 4.57952 8.85421 4.66766 8.94236C4.7558 9.0305 4.87535 9.08001 5 9.08001H11.1C11.2247 9.08001 11.3442 9.0305 11.4323 8.94236C11.5205 8.85421 11.57 8.73467 11.57 8.61001C11.57 8.48536 11.5205 8.36582 11.4323 8.27767C11.3442 8.18953 11.2247 8.14001 11.1 8.14001ZM5 11H15.45C15.5826 11 15.7098 10.9473 15.8036 10.8536C15.8973 10.7598 15.95 10.6326 15.95 10.5C15.95 10.3674 15.8973 10.2402 15.8036 10.1464C15.7098 10.0527 15.5826 10 15.45 10H5C4.86739 10 4.74021 10.0527 4.64645 10.1464C4.55268 10.2402 4.5 10.3674 4.5 10.5C4.5 10.6326 4.55268 10.7598 4.64645 10.8536C4.74021 10.9473 4.86739 11 5 11ZM5 12.86H11.1C11.2211 12.8523 11.3346 12.798 11.4166 12.7085C11.4986 12.6191 11.5428 12.5013 11.54 12.38C11.5427 12.2597 11.4982 12.1431 11.4159 12.0552C11.3337 11.9673 11.2202 11.9152 11.1 11.91H5C4.94089 11.9126 4.88286 11.9268 4.82924 11.9518C4.77562 11.9768 4.72746 12.0122 4.68752 12.0558C4.64758 12.0995 4.61664 12.1506 4.59648 12.2062C4.57631 12.2618 4.56731 12.3209 4.57 12.38C4.56451 12.5004 4.60649 12.6181 4.6869 12.7079C4.76731 12.7976 4.87974 12.8523 5 12.86ZM11.1 16.63H5C4.87535 16.63 4.7558 16.5805 4.66766 16.4923C4.57952 16.4042 4.53 16.2846 4.53 16.16C4.53 16.0353 4.57952 15.9158 4.66766 15.8276C4.7558 15.7395 4.87535 15.69 5 15.69H11.1C11.2247 15.69 11.3442 15.7395 11.4323 15.8276C11.5205 15.9158 11.57 16.0353 11.57 16.16C11.57 16.2846 11.5205 16.4042 11.4323 16.4923C11.3442 16.5805 11.2247 16.63 11.1 16.63ZM18.8503 11.592C18.7991 11.6175 18.7545 11.6544 18.72 11.7L18.26 12.14C18.2501 12.151 18.2447 12.1652 18.2447 12.18C18.2447 12.1947 18.2501 12.209 18.26 12.22L19.37 13.32C19.381 13.3298 19.3952 13.3353 19.41 13.3353C19.4247 13.3353 19.439 13.3298 19.45 13.32L19.86 12.91C19.9057 12.867 19.9421 12.8151 19.967 12.7575C19.9919 12.6998 20.0047 12.6377 20.0047 12.575C20.0047 12.5122 19.9919 12.4501 19.967 12.3925C19.9421 12.3349 19.9057 12.283 19.86 12.24L19.31 11.7C19.2755 11.6544 19.2309 11.6175 19.1797 11.592C19.1285 11.5666 19.0721 11.5533 19.015 11.5533C18.9578 11.5533 18.9014 11.5666 18.8503 11.592Z\",showTrackChanges:\"M17.2421 13.6048C17.2631 13.6136 17.2841 13.6226 17.305 13.6317V9.29505H13.2626C13.1897 9.30481 13.1159 9.30481 13.043 9.29505C12.7532 9.21632 12.4953 9.04872 12.3056 8.81577C12.1158 8.58283 12.0037 8.29625 11.985 7.99627V4H4.12976C4.09534 4 4.06234 4.01368 4.038 4.03804C4.01367 4.0624 4 4.09543 4 4.12988V19.8552C4 19.8896 4.01367 19.9227 4.038 19.947C4.06234 19.9714 4.09534 19.9851 4.12976 19.9851H13.4875C13.0501 19.8216 12.6281 19.6155 12.2277 19.3686C11.8529 19.1551 11.4911 18.9196 11.1442 18.6632C11.0697 18.6152 10.9982 18.5628 10.9302 18.5065H4.99812C4.87371 18.5065 4.75438 18.457 4.66641 18.3689C4.57843 18.2809 4.529 18.1614 4.529 18.0369C4.529 17.9124 4.57843 17.7929 4.66641 17.7049C4.75438 17.6168 4.87371 17.5673 4.99812 17.5673H10.4396C10.4472 17.4488 10.4756 17.3324 10.5235 17.2235C10.5939 17.017 10.6761 16.8149 10.7694 16.6182H4.99812C4.87371 16.6182 4.75438 16.5687 4.66641 16.4807C4.57843 16.3926 4.529 16.2732 4.529 16.1487C4.529 16.0241 4.57843 15.9047 4.66641 15.8166C4.75438 15.7286 4.87371 15.6791 4.99812 15.6791H11.0867C11.1576 15.6791 11.2268 15.6952 11.2895 15.7253C11.5204 15.361 11.7938 15.027 12.1033 14.73H4.99812C4.87371 14.73 4.75438 14.6805 4.66641 14.5924C4.57843 14.5044 4.529 14.385 4.529 14.2604C4.529 14.1359 4.57843 14.0164 4.66641 13.9284C4.75438 13.8403 4.87371 13.7909 4.99812 13.7909H13.4434C13.9833 13.525 14.5656 13.3516 15.166 13.2795L15.1923 13.2763H15.2189H15.4925C16.0923 13.2609 16.6886 13.3728 17.2421 13.6048ZM13.0829 4.64939L16.5764 8.14613C16.5975 8.16843 16.6118 8.19636 16.6174 8.22657C16.6231 8.25677 16.62 8.28798 16.6084 8.31645C16.5968 8.34492 16.5773 8.36944 16.5521 8.38707C16.527 8.40471 16.4973 8.41471 16.4666 8.41587H13.043L12.8134 8.18609V4.75929C12.8146 4.72857 12.8246 4.69884 12.8422 4.67366C12.8598 4.64849 12.8843 4.62893 12.9128 4.61733C12.9412 4.60573 12.9724 4.60259 13.0026 4.60827C13.0328 4.61396 13.0607 4.62824 13.0829 4.64939ZM10.9869 6.71746C10.9896 6.65841 10.9806 6.59941 10.9604 6.54383C10.9403 6.48825 10.9094 6.4372 10.8696 6.39358C10.8297 6.34997 10.7816 6.31465 10.7281 6.28965C10.6746 6.26466 10.6167 6.25047 10.5577 6.2479H4.99813C4.88074 6.25562 4.77106 6.30914 4.69267 6.39694C4.61428 6.48475 4.57343 6.59983 4.57891 6.71746C4.57343 6.83509 4.61428 6.95017 4.69267 7.03798C4.77106 7.12579 4.88074 7.1793 4.99813 7.18702H10.5876C10.7014 7.17444 10.8061 7.11882 10.8803 7.03154C10.9545 6.94427 10.9927 6.83192 10.9869 6.71746ZM11.0867 8.13614H4.99812C4.87371 8.13614 4.75438 8.18561 4.66641 8.27367C4.57843 8.36173 4.529 8.48116 4.529 8.6057C4.529 8.73023 4.57843 8.84967 4.66641 8.93773C4.75438 9.02579 4.87371 9.07526 4.99812 9.07526H11.0867C11.2111 9.07526 11.3304 9.02579 11.4184 8.93773C11.5064 8.84967 11.5558 8.73023 11.5558 8.6057C11.5558 8.48116 11.5064 8.36173 11.4184 8.27367C11.3304 8.18561 11.2111 8.13614 11.0867 8.13614ZM4.99812 10.9935H15.4285C15.5609 10.9935 15.6878 10.9408 15.7814 10.8472C15.875 10.7535 15.9276 10.6264 15.9276 10.4939C15.9276 10.3614 15.875 10.2344 15.7814 10.1407C15.6878 10.047 15.5609 9.9944 15.4285 9.9944H4.99812C4.86576 9.9944 4.73883 10.047 4.64523 10.1407C4.55164 10.2344 4.49906 10.3614 4.49906 10.4939C4.49906 10.6264 4.55164 10.7535 4.64523 10.8472C4.73883 10.9408 4.86576 10.9935 4.99812 10.9935ZM4.99812 12.8517H11.0867C11.2076 12.844 11.3208 12.7898 11.4027 12.7004C11.4845 12.611 11.5287 12.4934 11.5259 12.3722C11.5286 12.252 11.4841 12.1355 11.402 12.0477C11.3199 11.9599 11.2067 11.9078 11.0867 11.9026H4.99812C4.93912 11.9052 4.8812 11.9194 4.82769 11.9444C4.77417 11.9694 4.7261 12.0047 4.68623 12.0483C4.64637 12.0919 4.61549 12.143 4.59536 12.1985C4.57523 12.2541 4.56625 12.3131 4.56893 12.3722C4.56345 12.4925 4.60535 12.6101 4.68561 12.6998C4.76587 12.7894 4.87809 12.844 4.99812 12.8517ZM19.97 17.4974C19.5787 16.5636 19.0431 15.6971 18.383 14.9298C18.0152 14.5351 17.5679 14.2233 17.0706 14.0148C16.5732 13.8064 16.0373 13.7062 15.4984 13.7209H15.2189C14.4787 13.8098 13.7684 14.0666 13.1423 14.4717C12.5162 14.8769 11.9906 15.4196 11.6057 16.0587C11.3211 16.4677 11.0959 16.9151 10.937 17.3875C10.9006 17.464 10.8817 17.5476 10.8817 17.6323C10.8817 17.717 10.9006 17.8006 10.937 17.877C11.0642 18.0428 11.2196 18.1849 11.3961 18.2967C11.7346 18.5476 12.0879 18.7778 12.4541 18.986C13.4096 19.5767 14.497 19.92 15.6182 19.9851C16.4392 20.0504 17.2632 19.9005 18.0088 19.5501C18.7544 19.1998 19.3959 18.661 19.8702 17.9869C19.9311 17.923 19.9729 17.8432 19.9905 17.7566C20.0082 17.67 20.0011 17.5801 19.97 17.4974ZM15.9775 19.1758C14.3849 19.068 12.8507 18.5331 11.5358 17.6273C11.5788 17.5678 11.6255 17.5111 11.6756 17.4574C12.3061 16.569 13.1295 15.8359 14.0832 15.3126C13.8003 15.7406 13.6785 16.2566 13.7417 16.7681C13.7676 17.0339 13.8465 17.2918 13.9737 17.5265C14.1009 17.7613 14.2739 17.9681 14.4823 18.1348C14.6907 18.3016 14.9304 18.4248 15.1872 18.4972C15.4441 18.5696 15.7128 18.5897 15.9775 18.5564C16.305 18.4971 16.6137 18.3609 16.8785 18.159C17.1432 17.9572 17.3564 17.6954 17.5005 17.3951C17.6446 17.0949 17.7156 16.7647 17.7077 16.4317C17.6997 16.0987 17.613 15.7723 17.4547 15.4793C17.2614 15.3391 17.0533 15.2235 16.8351 15.1339C17.0715 15.226 17.2966 15.3485 17.5046 15.4993C18.0049 15.8976 18.4424 16.3691 18.8022 16.898L18.8927 17.0137L18.8927 17.0137C19.0823 17.2564 19.2729 17.5004 19.4709 17.7072C18.5404 18.6311 17.288 19.1576 15.9775 19.1758ZM16.3168 15.769C16.2085 15.8106 16.1171 15.8873 16.0574 15.9869C15.9977 16.0865 15.9731 16.2032 15.9875 16.3185C15.9949 16.3856 16.0156 16.4505 16.0483 16.5096C16.081 16.5686 16.1251 16.6206 16.178 16.6624C16.2309 16.7042 16.2916 16.7351 16.3566 16.7532C16.4216 16.7714 16.4895 16.7764 16.5564 16.7681H16.6063C16.5618 16.9495 16.4637 17.1132 16.3248 17.238C16.186 17.3627 16.0127 17.4427 15.8278 17.4674H15.6481C15.4335 17.4396 15.2337 17.3427 15.0789 17.1913C14.924 17.04 14.8226 16.8423 14.7897 16.6282C14.7628 16.3782 14.8311 16.1271 14.981 15.9253C15.1305 15.7238 15.3504 15.5861 15.5968 15.5395C15.3446 15.5862 15.12 15.7284 14.9697 15.9364C14.8191 16.1448 14.7547 16.4034 14.7897 16.6582C14.8226 16.8723 14.924 17.0699 15.0789 17.2213C15.2337 17.3727 15.4335 17.4696 15.6481 17.4974H15.8377C16.0209 17.4708 16.1919 17.39 16.3289 17.2654C16.4658 17.1408 16.5625 16.978 16.6063 16.7981C16.7293 16.7633 16.8359 16.686 16.9072 16.5799C16.9785 16.4737 17.0098 16.3457 16.9956 16.2186C16.9882 16.1515 16.9675 16.0865 16.9348 16.0275C16.9021 15.9685 16.858 15.9165 16.805 15.8747C16.7521 15.8329 16.6914 15.802 16.6264 15.7838C16.5615 15.7657 16.4936 15.7607 16.4266 15.769H16.3168Z\",acceptAllChanges:\"M9.36499 16.7348C9.38499 16.7547 9.41212 16.7659 9.44041 16.7659H10.9881C10.9028 16.6008 10.9289 16.3933 11.0663 16.2541L11.7266 15.585H10.1444C10.0549 15.5701 9.97363 15.5238 9.91498 15.4547C9.85639 15.3856 9.82422 15.298 9.82422 15.2074C9.82422 15.1169 9.85639 15.0292 9.91498 14.9601C9.97363 14.891 10.0549 14.8448 10.1444 14.8298H12.4879C12.5584 14.785 12.6407 14.7607 12.7257 14.7607C12.8106 14.7607 12.893 14.785 12.9635 14.8298H16.5295L18.3303 13.0091C18.4135 12.925 18.5271 12.8776 18.6456 12.8777C18.7642 12.8777 18.8777 12.9252 18.9609 13.0094L20 14.0621V8.25532H16.8001C16.7301 8.27288 16.6568 8.27288 16.5868 8.25532C16.3485 8.1935 16.1367 8.0565 15.9829 7.86478C15.8292 7.67306 15.7416 7.43688 15.7335 7.19149V4H9.44041C9.41293 4.0024 9.38718 4.01437 9.36767 4.03383C9.34816 4.05329 9.33615 4.07897 9.33375 4.10638V16.6596C9.33375 16.6878 9.34499 16.7148 9.36499 16.7348ZM10.0744 17.2979H11.4803L12.259 18.0957H5.06727C5.01734 18.0957 4.96838 18.1057 4.9232 18.1246C4.8788 18.1431 4.83798 18.1702 4.80335 18.2048C4.7333 18.2746 4.69398 18.3693 4.69398 18.468C4.69398 18.5668 4.7333 18.6615 4.80335 18.7313C4.87333 18.8011 4.96832 18.8404 5.06727 18.8404H12.9857L13.7947 19.6693L14.0836 19.9574H4.10733C4.09291 19.9591 4.07829 19.9576 4.06457 19.9528C4.05085 19.9481 4.03838 19.9403 4.02812 19.9301C4.01785 19.9198 4.01004 19.9074 4.00529 19.8937C4.00054 19.88 3.99896 19.8654 4.00067 19.8511V7.29787C4.00067 7.26966 4.01191 7.2426 4.03191 7.22265C4.05192 7.2027 4.07905 7.19149 4.10733 7.19149H8.70447V9.05319H5.06727C4.97294 9.05867 4.88453 9.10069 4.8208 9.17019C4.757 9.23973 4.72302 9.33135 4.72594 9.42553C4.72289 9.52082 4.75654 9.61364 4.82002 9.6849C4.88356 9.75613 4.97203 9.80038 5.06727 9.8085H8.70447V10.5638H5.06727C5.01968 10.5652 4.97274 10.5759 4.92932 10.5954C4.88583 10.6148 4.84664 10.6426 4.8139 10.6772C4.78122 10.7118 4.7557 10.7525 4.73877 10.7969C4.72184 10.8413 4.7139 10.8887 4.71527 10.9361C4.7139 10.9837 4.72184 11.031 4.73877 11.0754C4.74424 11.0897 4.75055 11.1037 4.75778 11.1171C4.76162 11.1243 4.76566 11.1313 4.76995 11.1382C4.78265 11.1585 4.79736 11.1776 4.8139 11.1951C4.84664 11.2297 4.88583 11.2575 4.92932 11.2769C4.95491 11.2884 4.98173 11.2968 5.0092 11.3021C5.02834 11.3058 5.04774 11.3079 5.06727 11.3085H8.70447V12.0638H5.06734C4.97782 12.0789 4.89651 12.1251 4.83792 12.1942C4.77926 12.2633 4.7471 12.351 4.7471 12.4415C4.7471 12.5321 4.77926 12.6197 4.83792 12.6888C4.89651 12.758 4.97782 12.8041 5.06734 12.8192H8.70447V13.5745H5.06734C4.97782 13.5895 4.89651 13.6357 4.83792 13.7048C4.81383 13.7332 4.79424 13.7647 4.77946 13.7983C4.7583 13.8465 4.7471 13.8988 4.7471 13.9522C4.7471 14.0427 4.77926 14.1303 4.83792 14.1994C4.89651 14.2686 4.97782 14.3147 5.06734 14.3298H8.70447V15.0744H5.06727C4.97776 15.0895 4.89651 15.1357 4.83785 15.2048C4.77926 15.2739 4.7471 15.3616 4.7471 15.4521C4.7471 15.5043 4.75778 15.5556 4.77809 15.6029C4.793 15.6376 4.81305 15.6701 4.83785 15.6994C4.89651 15.7685 4.97776 15.8147 5.06727 15.8298H8.70447V16.5851H5.06727C4.97776 16.6001 4.89651 16.6463 4.83785 16.7154C4.79489 16.7661 4.76618 16.8267 4.75387 16.8912C4.74938 16.9146 4.7471 16.9386 4.7471 16.9628C4.7471 17.0533 4.77926 17.1409 4.83785 17.21C4.89651 17.2792 4.97776 17.3253 5.06727 17.3404H9.95241C9.99552 17.3331 10.0367 17.3187 10.0744 17.2979ZM20 15.3204L18.5709 16.7659H19.8933C19.9216 16.7659 19.9487 16.7547 19.9687 16.7348C19.9887 16.7148 20 16.6878 20 16.6596V15.3204ZM14.7526 16.6264L13.7248 15.585H15.7825L14.7526 16.6264ZM14.9498 6.08721C14.9465 6.06854 14.9416 6.05023 14.9353 6.03244C14.9202 5.98939 14.897 5.94929 14.8665 5.91442C14.8145 5.85488 14.7444 5.81394 14.6669 5.79787H10.1337C10.0348 5.79787 9.93978 5.83709 9.8698 5.90693C9.79975 5.97676 9.76043 6.07146 9.76043 6.17022C9.76043 6.19463 9.76283 6.21879 9.76752 6.24239C9.77462 6.2782 9.78692 6.31268 9.80398 6.34479C9.82123 6.37716 9.8433 6.40709 9.8698 6.43348C9.93978 6.50332 10.0348 6.54257 10.1337 6.54257H14.6669C14.6811 6.54023 14.6951 6.53702 14.7088 6.53299C14.7206 6.52955 14.7322 6.52549 14.7436 6.52082C14.7624 6.51309 14.7806 6.50371 14.7979 6.4928C14.8378 6.46764 14.8722 6.43468 14.8991 6.39599C14.9259 6.35729 14.9447 6.31359 14.9543 6.26749C14.9554 6.26232 14.9563 6.25716 14.9571 6.25197C14.9579 6.24739 14.9586 6.24281 14.9591 6.23824C14.9612 6.22129 14.962 6.20424 14.9616 6.18723C14.961 6.16727 14.9588 6.14733 14.9549 6.12766C14.9539 6.11406 14.9523 6.10055 14.9498 6.08721ZM15.0189 7.29788H10.1445C10.0549 7.31291 9.97363 7.35911 9.91504 7.42823C9.85639 7.49738 9.82422 7.585 9.82422 7.67555C9.82422 7.76609 9.85639 7.85369 9.91504 7.92284C9.97363 7.99196 10.0549 8.03815 10.1445 8.05319H15.0189C15.0321 8.05241 15.0451 8.05095 15.058 8.04877C15.0745 8.04601 15.0906 8.04212 15.1064 8.03718C15.1669 8.01822 15.2219 7.98361 15.2654 7.93618C15.3291 7.86664 15.3632 7.77502 15.3602 7.68084C15.3606 7.67392 15.3608 7.66701 15.3608 7.66009C15.3609 7.65087 15.3606 7.64165 15.3599 7.63247C15.3592 7.62263 15.358 7.61279 15.3565 7.60302C15.3532 7.58188 15.3479 7.56104 15.3409 7.54072C15.3254 7.49575 15.301 7.45426 15.2693 7.41868C15.2492 7.39621 15.2265 7.37638 15.2017 7.35959C15.1872 7.34979 15.172 7.34102 15.1562 7.33339C15.1132 7.31265 15.0665 7.3006 15.0189 7.29788ZM10.1445 9.56381H18.496C18.5856 9.54877 18.6669 9.50258 18.7255 9.43346C18.7841 9.3643 18.8163 9.27671 18.8163 9.18617C18.8163 9.09562 18.7841 9.008 18.7255 8.93884C18.6669 8.86973 18.5856 8.82353 18.496 8.8085H10.1445C10.0549 8.82353 9.97363 8.86973 9.91504 8.93884C9.85639 9.008 9.82422 9.09562 9.82422 9.18617C9.82422 9.24412 9.83738 9.30087 9.86224 9.35236C9.87624 9.38132 9.89395 9.40859 9.91504 9.43346C9.97363 9.50258 10.0549 9.54877 10.1445 9.56381ZM10.1445 11.0638H15.0189C15.1084 11.0488 15.1897 11.0026 15.2483 10.9335C15.2854 10.8898 15.3118 10.8387 15.3263 10.7842C15.3347 10.7525 15.3391 10.7195 15.3391 10.6861C15.3391 10.5956 15.3069 10.508 15.2483 10.4389C15.1897 10.3697 15.1084 10.3235 15.0189 10.3085H10.1445C10.0549 10.3235 9.97363 10.3697 9.91504 10.4389C9.85639 10.508 9.82422 10.5956 9.82422 10.6861C9.82422 10.7424 9.83666 10.7976 9.8601 10.8478C9.87442 10.8785 9.89284 10.9073 9.91504 10.9335C9.97363 11.0026 10.0549 11.0488 10.1445 11.0638ZM18.496 12.5745H10.1444C10.0549 12.5594 9.97363 12.5132 9.91498 12.4441C9.85639 12.3749 9.82422 12.2873 9.82422 12.1968C9.82422 12.1062 9.85639 12.0186 9.91498 11.9495C9.97363 11.8803 10.0549 11.8342 10.1444 11.8191H18.496C18.5856 11.8342 18.6669 11.8803 18.7255 11.9495C18.7841 12.0186 18.8163 12.1062 18.8163 12.1968C18.8163 12.2873 18.7841 12.3749 18.7255 12.4441C18.6971 12.4776 18.6633 12.5058 18.6259 12.5276C18.5861 12.5507 18.5421 12.5667 18.496 12.5745ZM15.0189 14.0744H10.1444C10.0968 14.0731 10.0499 14.0624 10.0064 14.0429C9.96296 14.0234 9.92376 13.9956 9.89102 13.961C9.85834 13.9265 9.83282 13.8857 9.81589 13.8413C9.79897 13.7969 9.79102 13.7496 9.79239 13.7021C9.79102 13.6546 9.79897 13.6073 9.81589 13.5628C9.83282 13.5184 9.85834 13.4778 9.89102 13.4432C9.92376 13.4086 9.96296 13.3808 10.0064 13.3613C10.0499 13.3419 10.0968 13.3311 10.1444 13.3297H15.0189C15.0661 13.3311 15.1125 13.3419 15.1554 13.3615C15.1983 13.381 15.2368 13.4091 15.2686 13.4438C15.3005 13.4785 15.325 13.5193 15.3407 13.5637C15.3564 13.608 15.363 13.6551 15.3602 13.7021C15.3631 13.7963 15.3291 13.8879 15.2653 13.9574C15.2016 14.027 15.1132 14.0689 15.0189 14.0744ZM16.6188 4.52128L19.4133 7.30852C19.4293 7.32624 19.4401 7.34808 19.4443 7.37157C19.4485 7.39506 19.446 7.41925 19.4371 7.4414C19.4282 7.46356 19.4133 7.48278 19.394 7.4969C19.3747 7.51102 19.3518 7.51947 19.328 7.52128H16.5868L16.4054 7.34043V4.60639C16.4073 4.5826 16.4157 4.55979 16.4299 4.54056C16.444 4.52133 16.4633 4.50644 16.4855 4.49757C16.5077 4.48871 16.532 4.48624 16.5556 4.49043C16.5791 4.49462 16.601 4.50531 16.6188 4.52128ZM18.6454 13.3192L20 14.6915L14.7522 20L14.7416 19.9894L14.1123 19.3617L13.3976 18.6277L11.3817 16.5638L12.7257 15.2021L14.7522 17.2553L18.6454 13.3192Z\",rejectAllChanges:\"M9.54637 16.5847H8.96997V15.8295H12.786C12.8024 15.8265 12.8186 15.8223 12.8343 15.817C12.8535 15.8105 12.8719 15.8023 12.8897 15.7926C12.9315 15.7697 12.969 15.738 12.9997 15.6991C13.0268 15.6649 13.0478 15.6261 13.0621 15.5847H13.571V16.7656H9.79386C9.78396 16.7479 9.77269 16.731 9.76011 16.7151C9.70552 16.6459 9.62976 16.5998 9.54637 16.5847ZM13.4717 12.9573V13.3295H9.72523C9.6809 13.3309 9.63716 13.3416 9.59671 13.361C9.57578 13.3711 9.55595 13.3834 9.53745 13.3977C9.5201 13.411 9.50391 13.4262 9.48917 13.4429C9.45872 13.4775 9.43494 13.5182 9.41917 13.5626C9.41778 13.5664 9.41644 13.5703 9.41523 13.5742H8.96997V12.8189H12.786C12.8694 12.8039 12.9452 12.7577 12.9997 12.6886C13.0078 12.6784 13.0153 12.6677 13.0223 12.6568L13.029 12.6458L13.033 12.6389L13.0397 12.6266C13.0452 12.6157 13.0503 12.6046 13.055 12.5931C13.0576 12.5869 13.0599 12.5806 13.0621 12.5742H13.6872C13.6453 12.5965 13.607 12.6269 13.5746 12.6644C13.5059 12.7439 13.469 12.849 13.4717 12.9573ZM9.82598 14.0742H13.4758C13.4809 14.0932 13.4904 14.1108 13.5037 14.1251C13.5242 14.147 13.552 14.1593 13.581 14.1593H13.6008L13.571 14.1912V14.8295H9.72523C9.64183 14.8445 9.56614 14.8907 9.51149 14.9598C9.4845 14.994 9.46351 15.0328 9.4492 15.0741H8.96997V14.3295H9.54637C9.62976 14.3145 9.70552 14.2683 9.76011 14.1992C9.78947 14.162 9.81166 14.1195 9.82598 14.0742ZM18.9075 8.2552V12.5317H17.7846V12.323C17.7978 12.2827 17.8047 12.2399 17.8047 12.1965C17.8047 12.106 17.7747 12.0184 17.7201 11.9493C17.6655 11.8801 17.5897 11.834 17.5063 11.8189H9.72523C9.64183 11.834 9.56614 11.8801 9.51149 11.9493C9.48444 11.9835 9.46351 12.0222 9.4492 12.0636H8.96997V11.3083H9.54637C9.63425 11.3028 9.71662 11.2608 9.776 11.1913C9.80687 11.1551 9.83029 11.113 9.84527 11.0676L9.84654 11.0637H14.2667C14.3501 11.0486 14.4258 11.0024 14.4805 10.9333C14.5231 10.8794 14.5507 10.8142 14.5607 10.7452C14.5636 10.7258 14.565 10.706 14.565 10.686C14.565 10.6658 14.5635 10.6458 14.5606 10.626C14.5572 10.6026 14.5516 10.5796 14.5442 10.5573C14.5299 10.5144 14.5084 10.4741 14.4805 10.4387C14.4258 10.3696 14.3501 10.3234 14.2667 10.3083H9.72529C9.6832 10.3159 9.64299 10.3314 9.60653 10.3538C9.57081 10.3759 9.5386 10.4045 9.51155 10.4387C9.49639 10.4579 9.4831 10.4785 9.47182 10.5002C9.46133 10.5205 9.45259 10.5417 9.44568 10.5636H8.96997V9.80838H9.16873C9.25656 9.80286 9.33899 9.76085 9.39837 9.69131C9.45775 9.62177 9.48947 9.53022 9.48674 9.43601C9.48711 9.42951 9.48735 9.42302 9.48741 9.41653C9.48741 9.41049 9.48729 9.40445 9.48705 9.39848C9.49457 9.41055 9.50269 9.42218 9.51155 9.43334C9.56614 9.50249 9.64189 9.54866 9.72529 9.56372H17.5063C17.5897 9.54866 17.6655 9.50249 17.7201 9.43334C17.7747 9.36419 17.8047 9.2766 17.8047 9.18603C17.8047 9.09552 17.7747 9.00786 17.7201 8.93878C17.6655 8.86963 17.5897 8.82346 17.5063 8.8084H9.72529C9.64189 8.82346 9.56614 8.86963 9.51155 8.93878C9.4569 9.00786 9.42694 9.09552 9.42694 9.18603L9.427 9.19707L9.42754 9.20875C9.41972 9.19661 9.41123 9.18499 9.40201 9.17389C9.38478 9.15311 9.36537 9.1346 9.34427 9.11863C9.33735 9.11344 9.33026 9.1085 9.32298 9.10383C9.31855 9.10097 9.31406 9.09824 9.30951 9.09565L9.30424 9.09266L9.29659 9.08857C9.28792 9.08402 9.27906 9.07993 9.27009 9.07623C9.2616 9.07279 9.25298 9.06974 9.24431 9.06701C9.21974 9.05935 9.19439 9.05461 9.16873 9.05305H8.96997V4.10638C8.97221 4.07897 8.9834 4.05328 9.00157 4.03383C9.01975 4.01437 9.04374 4.0024 9.06935 4H14.9325V7.1914C14.9401 7.43679 15.0216 7.67296 15.1649 7.86468C15.3082 8.0564 15.5055 8.19338 15.7275 8.2552C15.7927 8.27277 15.861 8.27277 15.9262 8.2552H18.9075ZM13.571 17.2975V19.4251L13.5722 19.4615C13.5835 19.6376 13.6323 19.8068 13.7133 19.957H4.10061C4.08718 19.9587 4.07355 19.9571 4.06077 19.9524C4.04799 19.9477 4.03637 19.9399 4.02681 19.9296C4.01724 19.9194 4.00997 19.907 4.00554 19.8933C4.00111 19.8796 3.99964 19.865 4.00124 19.8506V7.29778C4.00124 7.26957 4.01171 7.24251 4.03034 7.22256C4.04898 7.20261 4.07426 7.1914 4.10061 7.1914H8.38368V9.05305H4.99497C4.90708 9.05857 4.82471 9.10052 4.76533 9.17006C4.70589 9.2396 4.67423 9.33121 4.67696 9.42536C4.67411 9.52067 4.70547 9.61346 4.76461 9.68475C4.8238 9.75598 4.90623 9.80026 4.99497 9.80838H8.38368V10.5636H4.99497C4.96682 10.5645 4.93898 10.5692 4.91199 10.5774C4.89647 10.5821 4.88124 10.588 4.86644 10.5952C4.8494 10.6034 4.83308 10.613 4.81762 10.6241C4.79627 10.6393 4.77655 10.657 4.7589 10.6771C4.72846 10.7116 4.70468 10.7523 4.68891 10.7967C4.67314 10.8411 4.66574 10.8885 4.66701 10.9359C4.66641 10.9597 4.66792 10.9834 4.67156 11.0067C4.6752 11.03 4.68102 11.053 4.68891 11.0752C4.70468 11.1196 4.72846 11.1603 4.7589 11.1949C4.7731 11.211 4.78862 11.2256 4.80524 11.2386C4.81452 11.2459 4.82417 11.2527 4.83417 11.259C4.84461 11.2655 4.85534 11.2714 4.86644 11.2767C4.9069 11.2962 4.95063 11.3069 4.99497 11.3083H8.38368V12.0636H4.99503C4.91163 12.0787 4.83587 12.1249 4.78128 12.194C4.7526 12.2303 4.7307 12.2717 4.71639 12.3159C4.70347 12.3559 4.69667 12.3983 4.69667 12.4413C4.69667 12.5318 4.72664 12.6194 4.78128 12.6886C4.809 12.7237 4.84218 12.7529 4.87906 12.7751C4.89416 12.7842 4.90993 12.7921 4.92619 12.7988C4.94833 12.8079 4.97137 12.8147 4.99503 12.8189H8.38368V13.5742H4.99503C4.95275 13.5819 4.91242 13.5975 4.87584 13.62C4.8403 13.642 4.80822 13.6705 4.78128 13.7046C4.72664 13.7737 4.69667 13.8613 4.69667 13.9519C4.69667 14.0424 4.72664 14.13 4.78128 14.1992C4.83587 14.2683 4.91163 14.3145 4.99503 14.3295H8.38368V15.0741H4.99497C4.94644 15.0829 4.90047 15.1022 4.85977 15.1304C4.83878 15.145 4.81919 15.162 4.80136 15.1811C4.79439 15.1885 4.78765 15.1964 4.78122 15.2045C4.77188 15.2163 4.76327 15.2287 4.75539 15.2416C4.74441 15.2594 4.73495 15.2781 4.727 15.2975C4.71924 15.3163 4.71293 15.3358 4.70808 15.3558C4.70407 15.3723 4.7011 15.389 4.69922 15.4061C4.69752 15.4212 4.69667 15.4364 4.69667 15.4518C4.69667 15.5423 4.72664 15.6299 4.78122 15.6991C4.83587 15.7682 4.91157 15.8144 4.99497 15.8295H8.38368V16.5847H4.99497C4.91157 16.5998 4.83587 16.6459 4.78122 16.7151C4.72664 16.7842 4.69667 16.8718 4.69667 16.9624C4.69667 17.0529 4.72664 17.1405 4.78122 17.2097C4.83587 17.2788 4.91157 17.325 4.99497 17.34H9.54637C9.58655 17.3328 9.62496 17.3183 9.66008 17.2975H13.571ZM15.7573 4.52124L18.3609 7.30839C18.3758 7.32612 18.3858 7.34796 18.3897 7.37145C18.3937 7.39493 18.3914 7.41913 18.3831 7.44128C18.3748 7.46343 18.3609 7.48266 18.3429 7.49678C18.325 7.51089 18.3036 7.51934 18.2814 7.52115H15.7275L15.5585 7.34031V4.60634C15.5602 4.58255 15.5681 4.55975 15.5813 4.54051C15.5945 4.52128 15.6125 4.50639 15.6332 4.49753C15.6539 4.48867 15.6765 4.48619 15.6984 4.49038C15.7203 4.49457 15.7407 4.50526 15.7573 4.52124ZM14.1248 5.91437C14.1732 5.97391 14.2021 6.04884 14.2071 6.1276C14.2157 6.17377 14.2155 6.22129 14.2065 6.26739C14.2045 6.27778 14.2021 6.28804 14.1992 6.29817L14.1944 6.31388C14.1847 6.34291 14.1715 6.3705 14.1551 6.39595C14.13 6.43465 14.098 6.46757 14.0608 6.49276C14.0354 6.5099 14.008 6.52328 13.9794 6.53244C13.9661 6.53672 13.9525 6.5401 13.9387 6.5425H9.71529C9.62309 6.5425 9.5346 6.50328 9.4694 6.43342C9.40413 6.36362 9.3675 6.26889 9.3675 6.17013C9.3675 6.07144 9.40413 5.97671 9.4694 5.90691C9.5346 5.83704 9.62309 5.79783 9.71529 5.79783H13.9387C13.9718 5.80516 14.0034 5.81769 14.0326 5.83484C14.0672 5.85522 14.0984 5.88204 14.1248 5.91437ZM14.2667 7.29776H9.72529C9.69606 7.30302 9.66773 7.31211 9.64092 7.3247C9.62612 7.33171 9.61175 7.33977 9.59798 7.34879C9.56565 7.36996 9.53642 7.39664 9.51155 7.42813C9.4569 7.49722 9.42694 7.58487 9.42694 7.67538C9.42694 7.70155 9.42942 7.72752 9.43434 7.75285C9.44635 7.81505 9.47273 7.87355 9.51155 7.9227C9.55292 7.9751 9.60647 8.01432 9.66628 8.03678C9.67762 8.04107 9.6892 8.04477 9.70097 8.04775C9.70898 8.04983 9.71711 8.05158 9.72529 8.05308H14.2667C14.3546 8.04756 14.437 8.00555 14.4964 7.93601C14.5558 7.86647 14.5875 7.77492 14.5847 7.68071C14.5874 7.63318 14.5813 7.58559 14.5667 7.54059C14.5522 7.4956 14.5296 7.45417 14.5 7.41859C14.4704 7.38301 14.4346 7.35398 14.3946 7.33327C14.3546 7.31256 14.3111 7.30048 14.2667 7.29776ZM4.99497 18.84H12.786C12.8783 18.84 12.9667 18.8008 13.032 18.731C13.0972 18.6611 13.1338 18.5664 13.1338 18.4677C13.1338 18.3689 13.0972 18.2742 13.032 18.2044C12.9667 18.1346 12.8783 18.0954 12.786 18.0954H4.99497C4.90277 18.0954 4.81428 18.1346 4.74908 18.2044C4.68381 18.2742 4.64718 18.3689 4.64718 18.4677C4.64718 18.5664 4.68381 18.6611 4.74908 18.731C4.81428 18.8008 4.90277 18.84 4.99497 18.84ZM17.5858 12.7444H19.5733H19.623C19.7249 12.7499 19.821 12.7971 19.8913 12.8764C19.9616 12.9556 20.0007 13.0607 20.0006 13.17V13.8295C20.0007 13.8458 19.9976 13.862 19.9914 13.8769C19.9853 13.8918 19.9764 13.9052 19.9652 13.9163C19.9539 13.9273 19.9407 13.9357 19.9262 13.9409C19.9118 13.9461 19.8965 13.948 19.8814 13.9465H13.7797C13.7507 13.9465 13.7229 13.9342 13.7024 13.9123C13.6819 13.8903 13.6704 13.8606 13.6704 13.8295V13.17C13.6677 13.0617 13.7046 12.9566 13.7733 12.8771C13.842 12.7976 13.9371 12.75 14.0381 12.7444H16.0256V12.5104C16.0352 12.439 16.0687 12.3737 16.1199 12.3268C16.1711 12.2798 16.2365 12.2544 16.3039 12.2551H17.2976C17.3667 12.2517 17.4345 12.276 17.4878 12.3232C17.541 12.3704 17.576 12.4371 17.5858 12.5104V12.7444ZM14.0679 19.4251V14.1912H19.5037V19.4251C19.4935 19.585 19.4256 19.7344 19.3143 19.8416C19.203 19.9488 19.0571 20.0055 18.9075 19.9996H14.6642C14.5146 20.0055 14.3687 19.9488 14.2574 19.8416C14.1461 19.7344 14.0781 19.585 14.0679 19.4251ZM15.5983 15.1593H15.2505C15.0969 15.1593 14.9723 15.2926 14.9723 15.4572V18.7336C14.9723 18.8981 15.0969 19.0315 15.2505 19.0315H15.5983C15.752 19.0315 15.8766 18.8981 15.8766 18.7336V15.4572C15.8766 15.2926 15.752 15.1593 15.5983 15.1593ZM16.9598 15.1593H16.612C16.4583 15.1593 16.3337 15.2926 16.3337 15.4572V18.7336C16.3337 18.8981 16.4583 19.0315 16.612 19.0315H16.9598C17.1135 19.0315 17.238 18.8981 17.238 18.7336V15.4572C17.238 15.2926 17.1135 15.1593 16.9598 15.1593ZM17.9635 15.1593H18.3113C18.465 15.1593 18.5895 15.2926 18.5895 15.4572V18.7336C18.5895 18.8981 18.465 19.0315 18.3113 19.0315H17.9635C17.8098 19.0315 17.6852 18.8981 17.6852 18.7336V15.4572C17.6852 15.2926 17.8098 15.1593 17.9635 15.1593Z\",acceptSingleChange:\"M17.2 20H15.6628L17.33 18.3091V19.87C17.33 19.8871 17.3266 19.904 17.3201 19.9197C17.3136 19.9355 17.304 19.9499 17.2919 19.9619C17.2799 19.974 17.2655 19.9836 17.2497 19.9901C17.234 19.9966 17.2171 20 17.2 20ZM4.13 20H14.4978L14.1823 19.6791L13.5135 18.9904L13.5123 18.9891L13.0529 18.52H5C4.87537 18.52 4.75586 18.4705 4.66766 18.3823C4.57953 18.2942 4.53003 18.1747 4.53003 18.05C4.53003 17.9253 4.57953 17.8058 4.66766 17.7177C4.75586 17.6295 4.87537 17.58 5 17.58H12.1323L11.6235 17.0604L11.6231 16.48L12.8831 15.19L13.4765 15.1896L15.0807 16.8276L17.33 14.5413V9.3H13.28C13.207 9.30976 13.133 9.30976 13.06 9.3C12.7697 9.22119 12.5113 9.05343 12.3212 8.82027C12.1311 8.58711 12.0187 8.30026 12 8V4H4.13C4.09552 4 4.06246 4.0137 4.03808 4.03808C4.0137 4.06246 4 4.09552 4 4.13V19.87C4 19.9045 4.0137 19.9375 4.03808 19.9619C4.06246 19.9863 4.09552 20 4.13 20ZM13.1 4.65L16.6 8.15C16.6212 8.17232 16.6355 8.20028 16.6412 8.23051C16.6469 8.26075 16.6437 8.29199 16.6321 8.32048C16.6205 8.34898 16.6009 8.37352 16.5757 8.39117C16.5505 8.40882 16.5208 8.41883 16.49 8.42H13.06L12.83 8.19V4.76C12.8312 4.72925 12.8412 4.6995 12.8588 4.67429C12.8765 4.64909 12.901 4.62951 12.9295 4.6179C12.958 4.6063 12.9893 4.60315 13.0195 4.60884C13.0497 4.61453 13.0777 4.62882 13.1 4.65ZM11 6.72C11.0027 6.66089 10.9937 6.60184 10.9735 6.5462C10.9534 6.49057 10.9224 6.43948 10.8825 6.39581C10.8425 6.35217 10.7944 6.3168 10.7408 6.29178C10.6871 6.26678 10.6292 6.25256 10.57 6.25H5C4.88239 6.25772 4.77252 6.31131 4.69397 6.39917C4.61542 6.48706 4.57452 6.60226 4.58002 6.72C4.57452 6.83774 4.61542 6.95294 4.69397 7.04083C4.77252 7.12869 4.88239 7.18228 5 7.19H10.6C10.7141 7.1774 10.8189 7.12173 10.8933 7.03436C10.9677 6.94702 11.0058 6.83456 11 6.72ZM11.1 8.14001H5C4.87537 8.14001 4.75586 8.18954 4.66766 8.27768C4.57953 8.36581 4.53003 8.48535 4.53003 8.61002C4.53003 8.73468 4.57953 8.85422 4.66766 8.94235C4.71558 8.99023 4.77277 9.02673 4.83496 9.05008C4.86932 9.06296 4.90521 9.07184 4.94189 9.07642C4.96106 9.0788 4.98047 9.08002 5 9.08002H11.1C11.2247 9.08002 11.3442 9.03049 11.4324 8.94235C11.5205 8.85422 11.57 8.73468 11.57 8.61002C11.57 8.48535 11.5205 8.36581 11.4324 8.27768C11.3442 8.18954 11.2247 8.14001 11.1 8.14001ZM5 11H15.45C15.5826 11 15.7098 10.9473 15.8035 10.8535C15.8973 10.7598 15.95 10.6326 15.95 10.5C15.95 10.3674 15.8973 10.2402 15.8035 10.1465C15.7098 10.0527 15.5826 10 15.45 10H5C4.86737 10 4.74023 10.0527 4.64642 10.1465C4.55267 10.2402 4.5 10.3674 4.5 10.5C4.5 10.6326 4.55267 10.7598 4.64642 10.8535C4.74023 10.9473 4.86737 11 5 11ZM5 12.86H11.1C11.2211 12.8523 11.3346 12.798 11.4166 12.7085C11.4986 12.6191 11.5428 12.5013 11.54 12.38C11.5427 12.2597 11.4982 12.1431 11.416 12.0552C11.3337 11.9673 11.2203 11.9152 11.1 11.91H5C4.94086 11.9126 4.88287 11.9268 4.82922 11.9518C4.77563 11.9768 4.72748 12.0122 4.6875 12.0558C4.65833 12.0878 4.63391 12.1237 4.61505 12.1624C4.60809 12.1767 4.60193 12.1913 4.5965 12.2062C4.58264 12.2443 4.5741 12.2841 4.57092 12.3243C4.56946 12.3428 4.56915 12.3614 4.57001 12.38C4.56451 12.5004 4.60651 12.6181 4.68689 12.7079C4.76733 12.7976 4.87976 12.8523 5 12.86ZM15.45 14.74H5C4.87537 14.74 4.75586 14.6905 4.66766 14.6023C4.57953 14.5142 4.53003 14.3947 4.53003 14.27C4.53003 14.1453 4.57953 14.0258 4.66766 13.9377C4.75586 13.8495 4.87537 13.8 5 13.8H15.45C15.5747 13.8 15.6942 13.8495 15.7823 13.9377C15.8705 14.0258 15.92 14.1453 15.92 14.27C15.92 14.3947 15.8705 14.5142 15.7823 14.6023C15.6942 14.6905 15.5747 14.74 15.45 14.74ZM11.1 16.63H5C4.87537 16.63 4.75586 16.5805 4.66766 16.4923C4.57953 16.4042 4.53003 16.2846 4.53003 16.16C4.53003 16.0353 4.57953 15.9158 4.66766 15.8276C4.75586 15.7395 4.87537 15.69 5 15.69H11.1C11.2247 15.69 11.3442 15.7395 11.4324 15.8276C11.5205 15.9158 11.57 16.0353 11.57 16.16C11.57 16.2846 11.5205 16.4042 11.4324 16.4923C11.3442 16.5805 11.2247 16.63 11.1 16.63ZM18.73 13.71L20 15.01L15.08 20L15.07 19.99L14.48 19.39L13.81 18.7L11.92 16.77L13.18 15.48L15.08 17.42L18.73 13.71Z\",rejectSingleChange:\"M17.0495 11.5C17.1461 11.5 17.241 11.5173 17.33 11.5501V9.3H13.28C13.207 9.30976 13.133 9.30976 13.06 9.3C12.7697 9.22119 12.5113 9.05343 12.3212 8.82027C12.1311 8.58711 12.0187 8.30026 12 8V4H4.13C4.09552 4 4.06246 4.0137 4.03808 4.03808C4.0137 4.06246 4 4.09552 4 4.13V19.87C4 19.9045 4.0137 19.9375 4.03808 19.9619C4.06246 19.9863 4.09552 20 4.13 20H13.2305C13.1075 19.8287 13.0338 19.6249 13.0205 19.4112L13.0195 19.3956V18.52H5C4.87537 18.52 4.75586 18.4705 4.66772 18.3823C4.57959 18.2942 4.53003 18.1747 4.53003 18.05C4.53003 18.0119 4.53467 17.9742 4.54358 17.9378C4.56396 17.8552 4.60657 17.7788 4.66772 17.7177C4.75586 17.6295 4.87537 17.58 5 17.58H13.0195V14.74H5C4.87537 14.74 4.75586 14.6905 4.66772 14.6023C4.57959 14.5142 4.53003 14.3947 4.53003 14.27C4.53003 14.1453 4.57959 14.0258 4.66772 13.9377C4.75586 13.8495 4.87537 13.8 5 13.8H12.8393C12.6229 13.6377 12.4998 13.3897 12.4998 13.1032C12.4997 12.8414 12.6008 12.5847 12.7513 12.3911C12.9 12.1998 13.1561 12 13.4994 12L15.2519 12C15.2928 11.8972 15.3589 11.7915 15.4649 11.6992C15.6135 11.5698 15.8041 11.499 16.0011 11.5H17.0495ZM13.1 4.65L16.6 8.15C16.6211 8.17232 16.6354 8.20028 16.6411 8.23051C16.6468 8.26075 16.6437 8.29199 16.6321 8.32048C16.6204 8.34898 16.6009 8.37352 16.5757 8.39117C16.5505 8.40882 16.5207 8.41883 16.49 8.42H13.06L12.83 8.19V4.76C12.8311 4.72925 12.8411 4.6995 12.8588 4.67429C12.8764 4.64909 12.901 4.62951 12.9295 4.6179C12.958 4.6063 12.9892 4.60315 13.0194 4.60884C13.0497 4.61453 13.0776 4.62882 13.1 4.65ZM11 6.72C11.0027 6.66089 10.9937 6.60184 10.9735 6.5462C10.9716 6.5408 10.9695 6.53543 10.9673 6.53012C10.9626 6.51852 10.9575 6.50717 10.9518 6.49603C10.9406 6.47391 10.9275 6.45273 10.9127 6.43274C10.9033 6.41992 10.8932 6.40759 10.8824 6.39581C10.8425 6.35217 10.7943 6.3168 10.7407 6.29178C10.6871 6.26678 10.629 6.25256 10.5699 6.25H5C4.88232 6.25772 4.77246 6.31131 4.69397 6.39917C4.61536 6.48706 4.57446 6.60226 4.57996 6.72C4.57715 6.7811 4.58679 6.84152 4.60767 6.8978C4.61523 6.91803 4.62415 6.93771 4.63452 6.9567C4.65088 6.98669 4.67078 7.01495 4.69397 7.04083C4.77246 7.12869 4.88232 7.18228 5 7.19H10.6C10.714 7.1774 10.8188 7.12173 10.8932 7.03436C10.922 7.00049 10.9454 6.96283 10.9629 6.92273C10.9725 6.9006 10.9805 6.87775 10.9865 6.8544C10.9933 6.82791 10.9977 6.80075 10.9995 6.77325C11.0001 6.76453 11.0004 6.75574 11.0005 6.74695C11.0006 6.73798 11.0005 6.729 11 6.72ZM11.1 8.14001H5C4.97534 8.14001 4.95081 8.14194 4.92676 8.14575C4.89587 8.15063 4.8656 8.15857 4.83643 8.1694C4.77368 8.19272 4.71606 8.2294 4.66772 8.27768C4.57959 8.36581 4.53003 8.48535 4.53003 8.61002C4.53003 8.73468 4.57959 8.85422 4.66772 8.94235C4.75586 9.03049 4.87537 9.08002 5 9.08002H11.1C11.2247 9.08002 11.3442 9.03049 11.4324 8.94235C11.4617 8.91306 11.4867 8.88028 11.5071 8.845C11.5349 8.79691 11.554 8.74414 11.5634 8.68915C11.5677 8.66318 11.5701 8.63672 11.5701 8.61002C11.5701 8.48535 11.5205 8.36581 11.4324 8.27768C11.3929 8.23831 11.3474 8.20663 11.2979 8.18365C11.2365 8.15518 11.1689 8.14001 11.1 8.14001ZM5 11H15.45C15.5826 11 15.7098 10.9473 15.8036 10.8535C15.8973 10.7598 15.95 10.6326 15.95 10.5C15.95 10.3674 15.8973 10.2402 15.8036 10.1465C15.7098 10.0527 15.5826 10 15.45 10H5C4.86743 10 4.74023 10.0527 4.64648 10.1465C4.55273 10.2402 4.5 10.3674 4.5 10.5C4.5 10.6326 4.55273 10.7598 4.64648 10.8535C4.74023 10.9473 4.86743 11 5 11ZM5 12.86H11.1C11.2211 12.8523 11.3346 12.798 11.4166 12.7085C11.4987 12.6191 11.5428 12.5013 11.54 12.38C11.5427 12.2597 11.4982 12.1431 11.4159 12.0552C11.3336 11.9673 11.2202 11.9152 11.1 11.91H5C4.94092 11.9126 4.88281 11.9268 4.82922 11.9518C4.77563 11.9768 4.72742 12.0122 4.6875 12.0558C4.64758 12.0995 4.6167 12.1506 4.59644 12.2062C4.58899 12.2266 4.58313 12.2475 4.57874 12.2687C4.57129 12.3052 4.56824 12.3426 4.56995 12.38C4.56445 12.5004 4.60645 12.6181 4.68689 12.7079C4.76733 12.7976 4.87976 12.8523 5 12.86ZM11.1 16.63H5C4.87537 16.63 4.75586 16.5805 4.66772 16.4923C4.57959 16.4042 4.53003 16.2846 4.53003 16.16C4.53003 16.0353 4.57959 15.9158 4.66772 15.8276C4.75586 15.7395 4.87537 15.69 5 15.69H11.1C11.2247 15.69 11.3442 15.7395 11.4324 15.8276C11.5205 15.9158 11.5701 16.0353 11.5701 16.16C11.5701 16.2846 11.5205 16.4042 11.4324 16.4923C11.3442 16.5805 11.2247 16.63 11.1 16.63ZM19.59 12.53H17.36V12.3C17.3574 12.2195 17.3236 12.1432 17.2657 12.0872C17.2078 12.0313 17.1305 12 17.05 12H16C15.9242 11.9994 15.8509 12.0265 15.7938 12.0762C15.7367 12.126 15.6997 12.1949 15.69 12.27V12.5H13.44C13.3768 12.4994 13.3142 12.5125 13.2565 12.5382C13.1988 12.564 13.1473 12.6019 13.1055 12.6493C13.0638 12.6968 13.0327 12.7526 13.0145 12.8132C12.9963 12.8737 12.9913 12.9374 13 13V13.67C13 13.6871 13.0033 13.704 13.0099 13.7198C13.0164 13.7355 13.026 13.7499 13.038 13.7619C13.0501 13.774 13.0644 13.7836 13.0802 13.7901C13.096 13.7966 13.1129 13.8 13.13 13.8H19.84C19.8611 13.8054 19.8834 13.8054 19.9045 13.8C19.9257 13.7946 19.9452 13.7839 19.9611 13.7689C19.9771 13.754 19.989 13.7352 19.9958 13.7144C20.0026 13.6937 20.004 13.6715 20 13.65V13C20.0028 12.8866 19.9617 12.7765 19.8853 12.6927C19.809 12.6088 19.7031 12.5577 19.59 12.55V12.53ZM13.52 14V19.38C13.5303 19.5454 13.6054 19.7 13.7289 19.8105C13.8525 19.9209 14.0145 19.9782 14.18 19.97H18.84C19.0055 19.9782 19.1676 19.9209 19.2911 19.8105C19.4146 19.7 19.4897 19.5454 19.5 19.38V14H13.52ZM15.52 18.67C15.52 18.7522 15.4874 18.8311 15.4292 18.8892C15.3711 18.9473 15.2922 18.98 15.21 18.98H14.83C14.7478 18.98 14.669 18.9473 14.6108 18.8892C14.5527 18.8311 14.52 18.7522 14.52 18.67V15.33C14.52 15.2893 14.528 15.249 14.5436 15.2114C14.5592 15.1738 14.582 15.1396 14.6108 15.1108C14.6396 15.082 14.6738 15.0592 14.7114 15.0436C14.749 15.028 14.7893 15.02 14.83 15.02H15.21C15.2507 15.02 15.291 15.028 15.3287 15.0436C15.3663 15.0592 15.4004 15.082 15.4292 15.1108C15.458 15.1396 15.4808 15.1738 15.4964 15.2114C15.512 15.249 15.52 15.2893 15.52 15.33V18.67ZM17.01 18.67C17.01 18.7522 16.9774 18.8311 16.9192 18.8892C16.8611 18.9473 16.7822 18.98 16.7 18.98H16.32C16.2798 18.98 16.2399 18.9719 16.2029 18.9562C16.1658 18.9405 16.1323 18.9176 16.1043 18.8886C16.0763 18.8597 16.0544 18.8254 16.0399 18.7879C16.0254 18.7503 16.0187 18.7102 16.02 18.67V15.33C16.0187 15.2898 16.0254 15.2497 16.0399 15.2121C16.0544 15.1746 16.0763 15.1403 16.1043 15.1114C16.1323 15.0824 16.1658 15.0595 16.2029 15.0438C16.2399 15.0281 16.2798 15.02 16.32 15.02H16.7C16.7407 15.02 16.781 15.028 16.8187 15.0436C16.8563 15.0592 16.8904 15.082 16.9192 15.1108C16.948 15.1396 16.9708 15.1738 16.9864 15.2114C17.002 15.249 17.01 15.2893 17.01 15.33V18.67ZM18.51 18.67C18.51 18.7107 18.502 18.751 18.4864 18.7886C18.4708 18.8262 18.448 18.8604 18.4192 18.8892C18.3904 18.918 18.3563 18.9408 18.3187 18.9564C18.281 18.972 18.2407 18.98 18.2 18.98H17.82C17.7378 18.98 17.659 18.9473 17.6008 18.8892C17.5427 18.8311 17.51 18.7522 17.51 18.67V15.33C17.51 15.2893 17.518 15.249 17.5336 15.2114C17.5492 15.1738 17.572 15.1396 17.6008 15.1108C17.6296 15.082 17.6638 15.0592 17.7014 15.0436C17.739 15.028 17.7793 15.02 17.82 15.02H18.2C18.2407 15.02 18.281 15.028 18.3187 15.0436C18.3563 15.0592 18.3904 15.082 18.4192 15.1108C18.448 15.1396 18.4708 15.1738 18.4864 15.2114C18.502 15.249 18.51 15.2893 18.51 15.33V18.67Z\"},V.FILEICONS={docIcon:{extension:\".doc\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 9.617188 46.875 C 13.234375 46.875 16.160156 43.929688 16.160156 40.292969 C 16.160156 36.695312 13.234375 33.75 9.617188 33.75 L 7.402344 33.75 C 6.820312 33.75 6.371094 34.199219 6.371094 34.78125 L 6.371094 45.84375 C 6.371094 46.335938 6.714844 46.757812 7.191406 46.855469 L 7.402344 46.875 Z M 9.617188 44.792969 L 8.453125 44.792969 L 8.453125 35.832031 L 9.617188 35.832031 C 12.089844 35.832031 14.078125 37.835938 14.078125 40.292969 C 14.078125 42.789062 12.089844 44.773438 9.617188 44.792969 Z M 24.816406 46.875 C 26.539062 46.875 28.191406 46.085938 29.296875 44.867188 C 30.460938 43.648438 31.191406 41.980469 31.191406 40.125 C 31.191406 38.269531 30.460938 36.617188 29.296875 35.382812 C 28.191406 34.144531 26.539062 33.375 24.816406 33.375 C 23.015625 33.375 21.367188 34.144531 20.222656 35.382812 C 19.058594 36.617188 18.367188 38.269531 18.367188 40.125 C 18.367188 41.980469 19.058594 43.648438 20.222656 44.867188 C 21.367188 46.085938 23.015625 46.875 24.816406 46.875 Z M 24.816406 44.738281 C 23.617188 44.738281 22.566406 44.230469 21.777344 43.386719 C 20.992188 42.582031 20.503906 41.398438 20.503906 40.125 C 20.503906 38.851562 20.992188 37.667969 21.777344 36.84375 C 22.566406 36 23.617188 35.511719 24.816406 35.511719 C 25.941406 35.511719 26.992188 36 27.777344 36.84375 C 28.546875 37.667969 29.054688 38.851562 29.054688 40.125 C 29.054688 41.398438 28.546875 42.582031 27.777344 43.386719 C 26.992188 44.230469 25.941406 44.738281 24.816406 44.738281 Z M 39.996094 46.875 C 41.648438 46.875 43.148438 46.332031 44.328125 45.414062 C 44.777344 45.054688 44.851562 44.382812 44.515625 43.914062 C 44.140625 43.460938 43.445312 43.386719 43.015625 43.707031 C 42.171875 44.382812 41.160156 44.738281 39.996094 44.738281 C 38.703125 44.738281 37.503906 44.210938 36.621094 43.386719 C 35.777344 42.5625 35.253906 41.398438 35.253906 40.125 C 35.253906 38.851562 35.777344 37.726562 36.621094 36.863281 C 37.503906 36.039062 38.703125 35.511719 39.996094 35.511719 C 41.160156 35.511719 42.191406 35.867188 43.015625 36.542969 C 43.445312 36.882812 44.140625 36.804688 44.515625 36.335938 C 44.851562 35.867188 44.777344 35.210938 44.328125 34.835938 C 43.148438 33.917969 41.648438 33.375 39.996094 33.375 C 36.246094 33.394531 33.132812 36.414062 33.117188 40.125 C 33.132812 43.855469 36.246094 46.875 39.996094 46.875 Z M 39.996094 46.875 \"/>\\n      </g>'},gifIcon:{extension:\".gif\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 17.394531 46.875 C 18.988281 46.875 20.46875 46.332031 21.648438 45.414062 C 21.835938 45.28125 21.949219 45.132812 22.003906 44.960938 L 22.003906 44.945312 C 22.023438 44.90625 22.023438 44.886719 22.042969 44.851562 C 22.0625 44.738281 22.097656 44.664062 22.097656 44.53125 L 22.097656 40.386719 C 22.097656 39.789062 21.613281 39.335938 21.011719 39.335938 L 17.28125 39.335938 C 16.699219 39.335938 16.210938 39.789062 16.210938 40.386719 C 16.210938 40.96875 16.699219 41.457031 17.28125 41.457031 L 19.960938 41.457031 L 19.960938 44.023438 C 19.210938 44.457031 18.332031 44.738281 17.394531 44.738281 C 16.042969 44.738281 14.863281 44.230469 14.019531 43.367188 C 13.136719 42.523438 12.613281 41.382812 12.613281 40.144531 C 12.613281 38.867188 13.136719 37.726562 14.019531 36.882812 C 14.863281 36.019531 16.042969 35.511719 17.394531 35.511719 C 18.519531 35.511719 19.550781 35.90625 20.355469 36.523438 C 20.824219 36.898438 21.519531 36.804688 21.875 36.355469 C 22.230469 35.886719 22.15625 35.195312 21.667969 34.835938 C 20.503906 33.917969 18.988281 33.375 17.394531 33.375 C 13.585938 33.375 10.472656 36.375 10.472656 40.144531 C 10.472656 43.894531 13.585938 46.875 17.394531 46.875 Z M 26.945312 46.875 C 27.507812 46.875 27.996094 46.425781 27.996094 45.84375 L 27.996094 34.78125 C 27.996094 34.199219 27.507812 33.75 26.945312 33.75 C 26.363281 33.75 25.914062 34.199219 25.914062 34.78125 L 25.914062 45.84375 C 25.914062 46.425781 26.363281 46.875 26.945312 46.875 Z M 33.066406 46.875 C 33.648438 46.875 34.117188 46.40625 34.117188 45.84375 L 34.117188 41.34375 L 38.488281 41.34375 C 39.050781 41.34375 39.519531 40.875 39.519531 40.292969 C 39.519531 39.75 39.050781 39.261719 38.488281 39.261719 L 34.117188 39.261719 L 34.117188 35.832031 L 39.199219 35.832031 C 39.742188 35.832031 40.230469 35.363281 40.230469 34.78125 C 40.230469 34.21875 39.742188 33.75 39.199219 33.75 L 33.066406 33.75 C 32.488281 33.75 32.035156 34.21875 32.035156 34.78125 L 32.035156 45.84375 C 32.035156 46.40625 32.488281 46.875 33.066406 46.875 Z M 33.066406 46.875 \"/>\\n      </g>'},jpegIcon:{extension:\".jpeg\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 9 43.75 C 11.140625 43.75 12.890625 42.015625 12.890625 39.875 L 12.890625 33.671875 C 12.890625 33.1875 12.5 32.8125 12.03125 32.8125 C 11.546875 32.8125 11.15625 33.1875 11.15625 33.671875 L 11.15625 39.875 C 11.15625 41.046875 10.1875 42.015625 9 42.015625 C 8.046875 42.015625 7.234375 41.390625 6.953125 40.53125 C 6.8125 40.078125 6.328125 39.828125 5.859375 39.984375 C 5.421875 40.109375 5.15625 40.59375 5.3125 41.0625 C 5.8125 42.625 7.28125 43.75 9 43.75 Z M 15.640625 43.75 C 16.125 43.75 16.515625 43.359375 16.515625 42.890625 L 16.515625 39.5 L 18.4375 39.5 C 20.296875 39.5 21.796875 38 21.796875 36.171875 C 21.796875 34.3125 20.296875 32.8125 18.4375 32.8125 L 15.640625 32.8125 C 15.171875 32.8125 14.78125 33.1875 14.78125 33.671875 L 14.78125 42.890625 C 14.78125 43.359375 15.171875 43.75 15.640625 43.75 Z M 18.4375 37.765625 L 16.515625 37.765625 L 16.515625 34.546875 L 18.4375 34.546875 C 19.34375 34.546875 20.046875 35.265625 20.0625 36.171875 C 20.046875 37.046875 19.34375 37.765625 18.4375 37.765625 Z M 29.234375 43.75 C 29.6875 43.75 30.09375 43.359375 30.09375 42.890625 C 30.09375 42.40625 29.6875 42.015625 29.234375 42.015625 L 25 42.015625 L 25 39.140625 L 28.640625 39.140625 C 29.109375 39.140625 29.5 38.75 29.5 38.265625 C 29.5 37.8125 29.109375 37.40625 28.640625 37.40625 L 25 37.40625 L 25 34.546875 L 29.234375 34.546875 C 29.6875 34.546875 30.09375 34.15625 30.09375 33.671875 C 30.09375 33.1875 29.6875 32.8125 29.234375 32.8125 L 24.125 32.8125 C 23.640625 32.8125 23.265625 33.1875 23.265625 33.671875 L 23.265625 42.890625 C 23.265625 43.359375 23.640625 43.75 24.125 43.75 C 24.125 43.75 24.140625 43.734375 24.140625 43.734375 C 24.140625 43.734375 24.140625 43.75 24.171875 43.75 Z M 37.1875 43.75 C 38.515625 43.75 39.75 43.296875 40.734375 42.53125 C 40.890625 42.421875 40.984375 42.296875 41.03125 42.15625 L 41.03125 42.140625 C 41.046875 42.109375 41.046875 42.09375 41.0625 42.0625 C 41.078125 41.96875 41.109375 41.90625 41.109375 41.796875 L 41.109375 38.34375 C 41.109375 37.914062 40.8125 37.578125 40.410156 37.492188 L 40.203125 37.46875 L 37.09375 37.46875 C 36.609375 37.46875 36.203125 37.84375 36.203125 38.34375 C 36.203125 38.828125 36.609375 39.234375 37.09375 39.234375 L 39.328125 39.234375 L 39.328125 41.375 C 38.703125 41.734375 37.96875 41.96875 37.1875 41.96875 C 36.0625 41.96875 35.078125 41.546875 34.375 40.828125 C 33.640625 40.125 33.203125 39.171875 33.203125 38.140625 C 33.203125 37.078125 33.640625 36.125 34.375 35.421875 C 35.078125 34.703125 36.0625 34.28125 37.1875 34.28125 C 38.125 34.28125 38.984375 34.609375 39.65625 35.125 C 40.046875 35.4375 40.625 35.359375 40.921875 34.984375 C 41.21875 34.59375 41.15625 34.015625 40.75 33.71875 C 39.78125 32.953125 38.515625 32.5 37.1875 32.5 C 34.015625 32.5 31.421875 35 31.421875 38.140625 C 31.421875 41.265625 34.015625 43.75 37.1875 43.75 Z M 37.1875 43.75 \"/>\\n      </g>'},logIcon:{extension:\".log\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 13.542969 46.875 C 14.085938 46.875 14.574219 46.40625 14.574219 45.84375 C 14.574219 45.261719 14.085938 44.792969 13.542969 44.792969 L 8.460938 44.792969 L 8.460938 34.78125 C 8.460938 34.21875 7.992188 33.75 7.410156 33.75 C 6.828125 33.75 6.378906 34.21875 6.378906 34.78125 L 6.378906 45.84375 C 6.378906 46.40625 6.828125 46.875 7.410156 46.875 Z M 21.742188 46.875 C 23.46875 46.875 25.117188 46.085938 26.222656 44.867188 C 27.386719 43.648438 28.117188 41.980469 28.117188 40.125 C 28.117188 38.269531 27.386719 36.617188 26.222656 35.382812 C 25.117188 34.144531 23.46875 33.375 21.742188 33.375 C 19.941406 33.375 18.292969 34.144531 17.148438 35.382812 C 15.984375 36.617188 15.292969 38.269531 15.292969 40.125 C 15.292969 41.980469 15.984375 43.648438 17.148438 44.867188 C 18.292969 46.085938 19.941406 46.875 21.742188 46.875 Z M 21.742188 44.738281 C 20.542969 44.738281 19.492188 44.230469 18.703125 43.386719 C 17.917969 42.582031 17.429688 41.398438 17.429688 40.125 C 17.429688 38.851562 17.917969 37.667969 18.703125 36.84375 C 19.492188 36 20.542969 35.511719 21.742188 35.511719 C 22.867188 35.511719 23.917969 36 24.703125 36.84375 C 25.472656 37.667969 25.980469 38.851562 25.980469 40.125 C 25.980469 41.398438 25.472656 42.582031 24.703125 43.386719 C 23.917969 44.230469 22.867188 44.738281 21.742188 44.738281 Z M 37.300781 46.875 C 38.894531 46.875 40.375 46.332031 41.558594 45.414062 C 41.746094 45.28125 41.855469 45.132812 41.914062 44.960938 L 41.914062 44.945312 L 41.949219 44.851562 C 41.96875 44.738281 42.007812 44.664062 42.007812 44.53125 L 42.007812 40.386719 C 42.007812 39.789062 41.519531 39.335938 40.917969 39.335938 L 37.1875 39.335938 C 36.605469 39.335938 36.121094 39.789062 36.121094 40.386719 C 36.121094 40.96875 36.605469 41.457031 37.1875 41.457031 L 39.871094 41.457031 L 39.871094 44.023438 C 39.121094 44.457031 38.238281 44.738281 37.300781 44.738281 C 35.949219 44.738281 34.769531 44.230469 33.925781 43.367188 C 33.042969 42.523438 32.519531 41.382812 32.519531 40.144531 C 32.519531 38.867188 33.042969 37.726562 33.925781 36.882812 C 34.769531 36.019531 35.949219 35.511719 37.300781 35.511719 C 38.425781 35.511719 39.457031 35.90625 40.261719 36.523438 C 40.730469 36.898438 41.425781 36.804688 41.78125 36.355469 C 42.136719 35.886719 42.0625 35.195312 41.574219 34.835938 C 40.414062 33.917969 38.894531 33.375 37.300781 33.375 C 33.496094 33.375 30.382812 36.375 30.382812 40.144531 C 30.382812 43.894531 33.496094 46.875 37.300781 46.875 Z M 37.300781 46.875 \"/>\\n      </g>'},movIcon:{extension:\".mov\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 15.472656 46.875 C 16.035156 46.875 16.523438 46.40625 16.523438 45.84375 L 16.523438 34.78125 C 16.523438 34.289062 16.152344 33.882812 15.679688 33.777344 L 15.472656 33.75 L 15.453125 33.75 C 15.117188 33.75 14.816406 33.898438 14.609375 34.179688 L 10.878906 39.355469 L 7.148438 34.179688 C 6.960938 33.898438 6.625 33.75 6.324219 33.75 L 6.265625 33.75 C 5.703125 33.75 5.234375 34.21875 5.234375 34.78125 L 5.234375 45.84375 C 5.234375 46.40625 5.703125 46.875 6.265625 46.875 C 6.847656 46.875 7.316406 46.40625 7.316406 45.84375 L 7.316406 37.949219 L 10 41.699219 C 10.203125 41.980469 10.523438 42.132812 10.859375 42.132812 L 10.898438 42.132812 C 11.234375 42.132812 11.535156 41.980469 11.742188 41.699219 L 14.441406 37.949219 L 14.441406 45.84375 C 14.441406 46.40625 14.890625 46.875 15.472656 46.875 Z M 25.460938 46.875 C 27.1875 46.875 28.835938 46.085938 29.941406 44.867188 C 31.105469 43.648438 31.835938 41.980469 31.835938 40.125 C 31.835938 38.269531 31.105469 36.617188 29.941406 35.382812 C 28.835938 34.144531 27.1875 33.375 25.460938 33.375 C 23.660156 33.375 22.011719 34.144531 20.867188 35.382812 C 19.703125 36.617188 19.011719 38.269531 19.011719 40.125 C 19.011719 41.980469 19.703125 43.648438 20.867188 44.867188 C 22.011719 46.085938 23.660156 46.875 25.460938 46.875 Z M 25.460938 44.738281 C 24.261719 44.738281 23.210938 44.230469 22.421875 43.386719 C 21.636719 42.582031 21.148438 41.398438 21.148438 40.125 C 21.148438 38.851562 21.636719 37.667969 22.421875 36.84375 C 23.210938 36 24.261719 35.511719 25.460938 35.511719 C 26.585938 35.511719 27.636719 36 28.421875 36.84375 C 29.191406 37.667969 29.699219 38.851562 29.699219 40.125 C 29.699219 41.398438 29.191406 42.582031 28.421875 43.386719 C 27.636719 44.230469 26.585938 44.738281 25.460938 44.738281 Z M 38.683594 46.855469 L 38.71875 46.855469 C 38.777344 46.835938 38.8125 46.820312 38.871094 46.820312 C 38.886719 46.800781 38.886719 46.800781 38.90625 46.800781 C 38.964844 46.78125 39.019531 46.726562 39.058594 46.707031 L 39.09375 46.6875 L 39.207031 46.59375 C 39.226562 46.574219 39.226562 46.574219 39.246094 46.539062 L 39.339844 46.425781 C 39.355469 46.425781 39.355469 46.425781 39.355469 46.40625 C 39.394531 46.367188 39.414062 46.292969 39.433594 46.257812 L 44.0625 35.304688 C 44.269531 34.800781 44.027344 34.179688 43.5 33.976562 C 42.996094 33.75 42.375 33.992188 42.152344 34.519531 L 38.496094 43.199219 L 34.839844 34.519531 C 34.613281 33.992188 34.011719 33.75 33.507812 33.976562 C 32.964844 34.179688 32.71875 34.800781 32.945312 35.304688 L 37.539062 46.257812 C 37.574219 46.292969 37.613281 46.367188 37.632812 46.40625 C 37.632812 46.425781 37.652344 46.425781 37.652344 46.425781 C 37.667969 46.460938 37.707031 46.5 37.746094 46.539062 C 37.746094 46.574219 37.761719 46.574219 37.761719 46.59375 C 37.820312 46.632812 37.855469 46.648438 37.894531 46.6875 L 37.914062 46.6875 C 37.96875 46.726562 38.042969 46.78125 38.082031 46.800781 L 38.101562 46.800781 C 38.101562 46.800781 38.121094 46.800781 38.121094 46.820312 C 38.15625 46.820312 38.230469 46.835938 38.269531 46.855469 L 38.308594 46.855469 L 38.402344 46.871094 L 38.496094 46.875 C 38.550781 46.875 38.605469 46.875 38.683594 46.855469 Z M 38.683594 46.855469 \"/>\\n      </g>'},ogvIcon:{extension:\".ogv\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 11.511719 46.875 C 13.238281 46.875 14.886719 46.085938 15.996094 44.867188 C 17.15625 43.648438 17.886719 41.980469 17.886719 40.125 C 17.886719 38.269531 17.15625 36.617188 15.996094 35.382812 C 14.886719 34.144531 13.238281 33.375 11.511719 33.375 C 9.714844 33.375 8.0625 34.144531 6.917969 35.382812 C 5.757812 36.617188 5.0625 38.269531 5.0625 40.125 C 5.0625 41.980469 5.757812 43.648438 6.917969 44.867188 C 8.0625 46.085938 9.714844 46.875 11.511719 46.875 Z M 11.511719 44.738281 C 10.3125 44.738281 9.261719 44.230469 8.476562 43.386719 C 7.6875 42.582031 7.199219 41.398438 7.199219 40.125 C 7.199219 38.851562 7.6875 37.667969 8.476562 36.84375 C 9.261719 36 10.3125 35.511719 11.511719 35.511719 C 12.636719 35.511719 13.6875 36 14.476562 36.84375 C 15.246094 37.667969 15.75 38.851562 15.75 40.125 C 15.75 41.398438 15.246094 42.582031 14.476562 43.386719 C 13.6875 44.230469 12.636719 44.738281 11.511719 44.738281 Z M 27.25 46.875 C 28.84375 46.875 30.324219 46.332031 31.507812 45.414062 C 31.695312 45.28125 31.804688 45.132812 31.863281 44.960938 L 31.863281 44.945312 C 31.882812 44.90625 31.882812 44.886719 31.898438 44.851562 C 31.917969 44.738281 31.957031 44.664062 31.957031 44.53125 L 31.957031 40.386719 C 31.957031 39.789062 31.46875 39.335938 30.867188 39.335938 L 27.136719 39.335938 C 26.554688 39.335938 26.070312 39.789062 26.070312 40.386719 C 26.070312 40.96875 26.554688 41.457031 27.136719 41.457031 L 29.820312 41.457031 L 29.820312 44.023438 C 29.070312 44.457031 28.1875 44.738281 27.25 44.738281 C 25.898438 44.738281 24.71875 44.230469 23.875 43.367188 C 22.992188 42.523438 22.46875 41.382812 22.46875 40.144531 C 22.46875 38.867188 22.992188 37.726562 23.875 36.882812 C 24.71875 36.019531 25.898438 35.511719 27.25 35.511719 C 28.375 35.511719 29.40625 35.90625 30.210938 36.523438 C 30.679688 36.898438 31.375 36.804688 31.730469 36.355469 C 32.085938 35.886719 32.011719 35.195312 31.523438 34.835938 C 30.363281 33.917969 28.84375 33.375 27.25 33.375 C 23.445312 33.375 20.332031 36.375 20.332031 40.144531 C 20.332031 43.894531 23.445312 46.875 27.25 46.875 Z M 40.191406 46.855469 L 40.230469 46.855469 C 40.285156 46.835938 40.324219 46.820312 40.378906 46.820312 C 40.398438 46.800781 40.398438 46.800781 40.417969 46.800781 C 40.472656 46.78125 40.53125 46.726562 40.566406 46.707031 C 40.605469 46.6875 40.605469 46.6875 40.605469 46.6875 L 40.71875 46.59375 C 40.738281 46.574219 40.738281 46.574219 40.753906 46.539062 L 40.847656 46.425781 C 40.867188 46.425781 40.867188 46.425781 40.867188 46.40625 C 40.90625 46.367188 40.925781 46.292969 40.941406 46.257812 L 45.574219 35.304688 C 45.78125 34.800781 45.535156 34.179688 45.011719 33.976562 C 44.503906 33.75 43.886719 33.992188 43.660156 34.519531 L 40.003906 43.199219 L 36.347656 34.519531 C 36.125 33.992188 35.523438 33.75 35.019531 33.976562 C 34.472656 34.179688 34.230469 34.800781 34.457031 35.304688 L 39.050781 46.257812 C 39.085938 46.292969 39.125 46.367188 39.144531 46.40625 C 39.144531 46.425781 39.160156 46.425781 39.160156 46.425781 C 39.179688 46.460938 39.21875 46.5 39.253906 46.539062 C 39.253906 46.574219 39.273438 46.574219 39.273438 46.59375 C 39.332031 46.632812 39.367188 46.648438 39.40625 46.6875 L 39.425781 46.6875 C 39.480469 46.726562 39.554688 46.78125 39.59375 46.800781 L 39.613281 46.800781 C 39.613281 46.800781 39.628906 46.800781 39.628906 46.820312 C 39.667969 46.820312 39.742188 46.835938 39.78125 46.855469 L 39.816406 46.855469 L 39.910156 46.871094 L 40.003906 46.875 C 40.0625 46.875 40.117188 46.875 40.191406 46.855469 Z M 40.191406 46.855469 \"/>\\n      </g>'},pngIcon:{extension:\".png\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 7.523438 46.875 C 8.105469 46.875 8.574219 46.40625 8.574219 45.84375 L 8.574219 41.773438 L 10.878906 41.773438 C 13.109375 41.773438 14.910156 39.976562 14.910156 37.78125 C 14.910156 35.550781 13.109375 33.75 10.878906 33.75 L 7.523438 33.75 C 6.960938 33.75 6.492188 34.199219 6.492188 34.78125 L 6.492188 45.84375 C 6.492188 46.40625 6.960938 46.875 7.523438 46.875 Z M 10.878906 39.695312 L 8.574219 39.695312 L 8.574219 35.832031 L 10.878906 35.832031 C 11.964844 35.832031 12.808594 36.695312 12.828125 37.78125 C 12.808594 38.832031 11.964844 39.695312 10.878906 39.695312 Z M 26.75 46.875 C 27.3125 46.875 27.78125 46.40625 27.78125 45.84375 L 27.78125 34.949219 C 27.78125 34.40625 27.3125 33.9375 26.75 33.9375 C 26.1875 33.9375 25.738281 34.40625 25.738281 34.949219 L 25.738281 42.675781 L 19.679688 34.292969 C 19.363281 33.84375 18.722656 33.75 18.253906 34.070312 C 17.972656 34.273438 17.824219 34.613281 17.84375 34.929688 L 17.84375 45.84375 C 17.84375 46.40625 18.292969 46.875 18.875 46.875 C 19.417969 46.875 19.886719 46.40625 19.886719 45.84375 L 19.886719 38.0625 L 25.886719 46.386719 C 25.90625 46.425781 25.941406 46.460938 25.980469 46.5 C 26.167969 46.726562 26.449219 46.875 26.75 46.875 Z M 38.082031 46.875 C 39.675781 46.875 41.15625 46.332031 42.339844 45.414062 C 42.527344 45.28125 42.636719 45.132812 42.695312 44.960938 L 42.695312 44.945312 C 42.714844 44.90625 42.714844 44.886719 42.730469 44.851562 C 42.75 44.738281 42.789062 44.664062 42.789062 44.53125 L 42.789062 40.386719 C 42.789062 39.789062 42.300781 39.335938 41.699219 39.335938 L 37.96875 39.335938 C 37.386719 39.335938 36.902344 39.789062 36.902344 40.386719 C 36.902344 40.96875 37.386719 41.457031 37.96875 41.457031 L 40.652344 41.457031 L 40.652344 44.023438 C 39.902344 44.457031 39.019531 44.738281 38.082031 44.738281 C 36.730469 44.738281 35.550781 44.230469 34.707031 43.367188 C 33.824219 42.523438 33.300781 41.382812 33.300781 40.144531 C 33.300781 38.867188 33.824219 37.726562 34.707031 36.882812 C 35.550781 36.019531 36.730469 35.511719 38.082031 35.511719 C 39.207031 35.511719 40.238281 35.90625 41.042969 36.523438 C 41.511719 36.898438 42.207031 36.804688 42.5625 36.355469 C 42.917969 35.886719 42.84375 35.195312 42.355469 34.835938 C 41.195312 33.917969 39.675781 33.375 38.082031 33.375 C 34.277344 33.375 31.164062 36.375 31.164062 40.144531 C 31.164062 43.894531 34.277344 46.875 38.082031 46.875 Z M 38.082031 46.875 \"/>\\n      </g>'},txtIcon:{extension:\".txt\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 12.847656 46.875 C 13.429688 46.875 13.878906 46.425781 13.878906 45.84375 L 13.878906 35.832031 L 16.859375 35.832031 C 17.421875 35.832031 17.890625 35.34375 17.890625 34.78125 C 17.890625 34.199219 17.421875 33.75 16.859375 33.75 L 8.855469 33.75 C 8.273438 33.75 7.824219 34.199219 7.824219 34.78125 C 7.824219 35.34375 8.273438 35.832031 8.855469 35.832031 L 11.816406 35.832031 L 11.816406 45.84375 C 11.816406 46.425781 12.285156 46.875 12.847656 46.875 Z M 29.019531 46.875 C 29.222656 46.875 29.429688 46.800781 29.617188 46.667969 C 30.085938 46.351562 30.160156 45.695312 29.84375 45.242188 L 26.28125 40.367188 L 29.84375 35.53125 C 30.160156 35.0625 30.085938 34.425781 29.617188 34.105469 C 29.148438 33.75 28.53125 33.84375 28.175781 34.332031 L 25.023438 38.644531 L 21.855469 34.332031 C 21.535156 33.84375 20.878906 33.75 20.429688 34.105469 C 19.960938 34.425781 19.867188 35.0625 20.1875 35.53125 L 23.75 40.367188 L 20.1875 45.242188 C 19.867188 45.695312 19.960938 46.351562 20.429688 46.667969 C 20.597656 46.800781 20.804688 46.875 21.03125 46.875 C 21.347656 46.875 21.648438 46.707031 21.855469 46.445312 L 25.023438 42.113281 L 28.175781 46.445312 C 28.378906 46.707031 28.679688 46.875 29.019531 46.875 Z M 37.464844 46.875 C 38.042969 46.875 38.496094 46.425781 38.496094 45.84375 L 38.496094 35.832031 L 41.476562 35.832031 C 42.039062 35.832031 42.507812 35.34375 42.507812 34.78125 C 42.507812 34.199219 42.039062 33.75 41.476562 33.75 L 33.46875 33.75 C 32.886719 33.75 32.4375 34.199219 32.4375 34.78125 C 32.4375 35.34375 32.886719 35.832031 33.46875 35.832031 L 36.433594 35.832031 L 36.433594 45.84375 C 36.433594 46.425781 36.902344 46.875 37.464844 46.875 Z M 37.464844 46.875 \"/>\\n      </g>'},webmIcon:{extension:\".webm\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 7.195312 43.734375 L 7.242188 43.734375 C 7.273438 43.71875 7.304688 43.703125 7.367188 43.703125 C 7.367188 43.6875 7.382812 43.6875 7.382812 43.6875 L 7.398438 43.6875 C 7.429688 43.671875 7.476562 43.625 7.523438 43.59375 L 7.554688 43.59375 C 7.585938 43.5625 7.617188 43.53125 7.648438 43.515625 C 7.648438 43.5 7.664062 43.5 7.664062 43.46875 L 7.757812 43.375 C 7.757812 43.375 7.757812 43.359375 7.773438 43.359375 C 7.789062 43.328125 7.820312 43.265625 7.835938 43.21875 L 9.882812 38.375 L 11.929688 43.21875 C 11.945312 43.265625 11.960938 43.328125 11.992188 43.359375 C 11.992188 43.359375 11.992188 43.375 12.023438 43.375 L 12.085938 43.46875 C 12.101562 43.5 12.101562 43.5 12.117188 43.515625 C 12.148438 43.53125 12.179688 43.5625 12.226562 43.59375 L 12.242188 43.59375 C 12.273438 43.625 12.320312 43.671875 12.382812 43.6875 C 12.398438 43.6875 12.398438 43.6875 12.414062 43.703125 C 12.445312 43.703125 12.476562 43.71875 12.523438 43.734375 L 12.570312 43.734375 L 12.640625 43.746094 L 12.710938 43.75 C 12.773438 43.75 12.820312 43.75 12.867188 43.734375 L 12.898438 43.734375 C 12.945312 43.71875 12.992188 43.703125 13.023438 43.703125 C 13.023438 43.6875 13.039062 43.6875 13.039062 43.6875 L 13.054688 43.6875 C 13.117188 43.671875 13.148438 43.625 13.195312 43.59375 L 13.210938 43.59375 C 13.242188 43.5625 13.289062 43.53125 13.320312 43.515625 C 13.320312 43.5 13.335938 43.5 13.335938 43.46875 C 13.367188 43.4375 13.398438 43.40625 13.414062 43.375 C 13.414062 43.375 13.429688 43.359375 13.429688 43.359375 C 13.460938 43.328125 13.492188 43.265625 13.507812 43.21875 L 17.335938 34.109375 C 17.523438 33.6875 17.320312 33.171875 16.898438 33 C 16.445312 32.8125 15.945312 33.015625 15.757812 33.453125 L 12.710938 40.6875 L 10.695312 35.890625 C 10.539062 35.546875 10.210938 35.359375 9.882812 35.359375 C 9.539062 35.359375 9.210938 35.546875 9.070312 35.890625 L 7.054688 40.6875 L 3.992188 33.453125 C 3.820312 33.015625 3.304688 32.8125 2.882812 33 C 2.429688 33.171875 2.242188 33.6875 2.414062 34.109375 L 6.257812 43.21875 C 6.289062 43.265625 6.304688 43.328125 6.335938 43.359375 L 6.335938 43.375 C 6.367188 43.40625 6.382812 43.4375 6.414062 43.46875 C 6.429688 43.5 6.429688 43.5 6.445312 43.515625 C 6.492188 43.53125 6.507812 43.5625 6.554688 43.59375 L 6.570312 43.59375 C 6.601562 43.625 6.664062 43.671875 6.710938 43.6875 C 6.726562 43.6875 6.726562 43.6875 6.742188 43.703125 C 6.773438 43.703125 6.804688 43.71875 6.851562 43.734375 L 6.898438 43.734375 L 6.976562 43.746094 L 7.054688 43.75 C 7.101562 43.75 7.148438 43.75 7.195312 43.734375 Z M 25.179688 43.75 C 25.632812 43.75 26.039062 43.359375 26.039062 42.890625 C 26.039062 42.40625 25.632812 42.015625 25.179688 42.015625 L 20.945312 42.015625 L 20.945312 39.140625 L 24.585938 39.140625 C 25.054688 39.140625 25.445312 38.75 25.445312 38.265625 C 25.445312 37.8125 25.054688 37.40625 24.585938 37.40625 L 20.945312 37.40625 L 20.945312 34.546875 L 25.179688 34.546875 C 25.632812 34.546875 26.039062 34.15625 26.039062 33.671875 C 26.039062 33.1875 25.632812 32.8125 25.179688 32.8125 L 20.070312 32.8125 C 19.585938 32.8125 19.210938 33.1875 19.210938 33.671875 L 19.210938 42.890625 C 19.210938 43.359375 19.585938 43.75 20.070312 43.75 C 20.070312 43.75 20.085938 43.734375 20.085938 43.734375 C 20.085938 43.734375 20.085938 43.75 20.117188 43.75 Z M 31.539062 43.75 C 33.382812 43.75 34.882812 42.25 34.882812 40.390625 C 34.882812 39.203125 34.242188 38.15625 33.304688 37.5625 C 33.679688 37.0625 33.898438 36.453125 33.898438 35.78125 C 33.898438 34.140625 32.570312 32.8125 30.929688 32.8125 L 28.710938 32.8125 C 28.242188 32.8125 27.851562 33.1875 27.851562 33.671875 L 27.851562 42.890625 C 27.851562 43.359375 28.242188 43.75 28.710938 43.75 L 28.757812 43.734375 C 28.757812 43.734375 28.757812 43.75 28.773438 43.75 Z M 30.929688 37.046875 L 29.585938 37.046875 L 29.585938 34.546875 L 30.929688 34.546875 C 31.617188 34.546875 32.164062 35.09375 32.164062 35.78125 C 32.164062 36.46875 31.617188 37.046875 30.929688 37.046875 Z M 31.539062 42.015625 L 29.585938 42.015625 L 29.585938 38.78125 L 31.539062 38.78125 C 32.429688 38.796875 33.148438 39.5 33.148438 40.390625 C 33.148438 41.296875 32.429688 42 31.539062 42.015625 Z M 45.664062 43.75 C 46.132812 43.75 46.539062 43.359375 46.539062 42.890625 L 46.539062 33.671875 C 46.539062 33.269531 46.242188 32.9375 45.859375 32.839844 L 45.664062 32.8125 L 45.648438 32.8125 C 45.367188 32.8125 45.117188 32.9375 44.945312 33.171875 L 41.835938 37.484375 L 38.726562 33.171875 C 38.570312 32.9375 38.289062 32.8125 38.039062 32.8125 L 37.992188 32.8125 C 37.523438 32.8125 37.132812 33.203125 37.132812 33.671875 L 37.132812 42.890625 C 37.132812 43.359375 37.523438 43.75 37.992188 43.75 C 38.476562 43.75 38.867188 43.359375 38.867188 42.890625 L 38.867188 36.3125 L 41.101562 39.4375 C 41.273438 39.671875 41.539062 39.796875 41.820312 39.796875 L 41.851562 39.796875 C 42.132812 39.796875 42.382812 39.671875 42.554688 39.4375 L 44.804688 36.3125 L 44.804688 42.890625 C 44.804688 43.359375 45.179688 43.75 45.664062 43.75 Z M 45.664062 43.75 \"/>\\n      </g>'},webpIcon:{extension:\".webp\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 9.234375 43.734375 L 9.28125 43.734375 C 9.3125 43.71875 9.34375 43.703125 9.40625 43.703125 L 9.414062 43.6875 C 9.421875 43.6875 9.421875 43.6875 9.4375 43.6875 C 9.46875 43.671875 9.515625 43.625 9.5625 43.59375 L 9.59375 43.59375 C 9.625 43.5625 9.65625 43.53125 9.6875 43.515625 C 9.6875 43.5 9.703125 43.5 9.703125 43.46875 L 9.796875 43.375 C 9.796875 43.375 9.796875 43.359375 9.8125 43.359375 C 9.828125 43.328125 9.859375 43.265625 9.875 43.21875 L 11.921875 38.375 L 13.96875 43.21875 C 13.984375 43.265625 14 43.328125 14.03125 43.359375 C 14.03125 43.359375 14.03125 43.375 14.0625 43.375 L 14.125 43.46875 C 14.140625 43.5 14.140625 43.5 14.15625 43.515625 L 14.203125 43.546875 L 14.265625 43.59375 C 14.265625 43.59375 14.265625 43.59375 14.28125 43.59375 C 14.3125 43.625 14.359375 43.671875 14.421875 43.6875 C 14.4375 43.6875 14.4375 43.6875 14.453125 43.703125 C 14.484375 43.703125 14.515625 43.71875 14.5625 43.734375 L 14.609375 43.734375 L 14.679688 43.746094 L 14.75 43.75 C 14.8125 43.75 14.859375 43.75 14.90625 43.734375 L 14.9375 43.734375 C 14.984375 43.71875 15.03125 43.703125 15.0625 43.703125 C 15.0625 43.6875 15.078125 43.6875 15.078125 43.6875 L 15.09375 43.6875 C 15.15625 43.671875 15.1875 43.625 15.234375 43.59375 L 15.25 43.59375 C 15.28125 43.5625 15.328125 43.53125 15.359375 43.515625 C 15.359375 43.5 15.375 43.5 15.375 43.46875 C 15.40625 43.4375 15.4375 43.40625 15.453125 43.375 L 15.46875 43.359375 C 15.5 43.328125 15.53125 43.265625 15.546875 43.21875 L 19.375 34.109375 C 19.5625 33.6875 19.359375 33.171875 18.9375 33 C 18.484375 32.8125 17.984375 33.015625 17.796875 33.453125 L 14.75 40.6875 L 12.734375 35.890625 C 12.578125 35.546875 12.25 35.359375 11.921875 35.359375 C 11.578125 35.359375 11.25 35.546875 11.109375 35.890625 L 9.09375 40.6875 L 6.03125 33.453125 C 5.859375 33.015625 5.34375 32.8125 4.921875 33 C 4.46875 33.171875 4.28125 33.6875 4.453125 34.109375 L 8.296875 43.21875 C 8.328125 43.265625 8.34375 43.328125 8.375 43.359375 L 8.375 43.375 C 8.40625 43.40625 8.421875 43.4375 8.453125 43.46875 C 8.46875 43.5 8.46875 43.5 8.484375 43.515625 L 8.539062 43.546875 L 8.59375 43.59375 C 8.59375 43.59375 8.59375 43.59375 8.609375 43.59375 C 8.640625 43.625 8.703125 43.671875 8.75 43.6875 C 8.765625 43.6875 8.765625 43.6875 8.78125 43.703125 C 8.8125 43.703125 8.84375 43.71875 8.890625 43.734375 L 8.9375 43.734375 L 9.015625 43.746094 L 9.09375 43.75 C 9.140625 43.75 9.1875 43.75 9.234375 43.734375 Z M 27.21875 43.75 C 27.671875 43.75 28.078125 43.359375 28.078125 42.890625 C 28.078125 42.40625 27.671875 42.015625 27.21875 42.015625 L 22.984375 42.015625 L 22.984375 39.140625 L 26.625 39.140625 C 27.09375 39.140625 27.484375 38.75 27.484375 38.265625 C 27.484375 37.8125 27.09375 37.40625 26.625 37.40625 L 22.984375 37.40625 L 22.984375 34.546875 L 27.21875 34.546875 C 27.671875 34.546875 28.078125 34.15625 28.078125 33.671875 C 28.078125 33.1875 27.671875 32.8125 27.21875 32.8125 L 22.109375 32.8125 C 21.625 32.8125 21.25 33.1875 21.25 33.671875 L 21.25 42.890625 C 21.25 43.359375 21.625 43.75 22.109375 43.75 L 22.125 43.734375 C 22.125 43.734375 22.125 43.75 22.15625 43.75 Z M 33.578125 43.75 C 35.421875 43.75 36.921875 42.25 36.921875 40.390625 C 36.921875 39.203125 36.28125 38.15625 35.34375 37.5625 C 35.71875 37.0625 35.9375 36.453125 35.9375 35.78125 C 35.9375 34.140625 34.609375 32.8125 32.96875 32.8125 L 30.75 32.8125 C 30.28125 32.8125 29.890625 33.1875 29.890625 33.671875 L 29.890625 42.890625 C 29.890625 43.359375 30.28125 43.75 30.75 43.75 C 30.765625 43.75 30.765625 43.734375 30.796875 43.734375 C 30.796875 43.734375 30.796875 43.75 30.8125 43.75 Z M 32.96875 37.046875 L 31.625 37.046875 L 31.625 34.546875 L 32.96875 34.546875 C 33.65625 34.546875 34.203125 35.09375 34.203125 35.78125 C 34.203125 36.46875 33.65625 37.046875 32.96875 37.046875 Z M 33.578125 42.015625 L 31.625 42.015625 L 31.625 38.78125 L 33.578125 38.78125 C 34.46875 38.796875 35.1875 39.5 35.1875 40.390625 C 35.1875 41.296875 34.46875 42 33.578125 42.015625 Z M 40.03125 43.75 C 40.515625 43.75 40.90625 43.359375 40.90625 42.890625 L 40.90625 39.5 L 42.828125 39.5 C 44.6875 39.5 46.1875 38 46.1875 36.171875 C 46.1875 34.3125 44.6875 32.8125 42.828125 32.8125 L 40.03125 32.8125 C 39.5625 32.8125 39.171875 33.1875 39.171875 33.671875 L 39.171875 42.890625 C 39.171875 43.359375 39.5625 43.75 40.03125 43.75 Z M 42.828125 37.765625 L 40.90625 37.765625 L 40.90625 34.546875 L 42.828125 34.546875 C 43.734375 34.546875 44.4375 35.265625 44.453125 36.171875 C 44.4375 37.046875 43.734375 37.765625 42.828125 37.765625 Z M 42.828125 37.765625 \"/>\\n      </g>'},wmvIcon:{extension:\".wmv\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 8.484375 43.734375 L 8.53125 43.734375 C 8.5625 43.71875 8.59375 43.703125 8.65625 43.703125 L 8.664062 43.6875 C 8.671875 43.6875 8.671875 43.6875 8.6875 43.6875 C 8.71875 43.671875 8.765625 43.625 8.8125 43.59375 L 8.84375 43.59375 C 8.875 43.5625 8.90625 43.53125 8.9375 43.515625 C 8.9375 43.5 8.953125 43.5 8.953125 43.46875 L 9.046875 43.375 C 9.046875 43.375 9.046875 43.359375 9.0625 43.359375 C 9.078125 43.328125 9.109375 43.265625 9.125 43.21875 L 11.171875 38.375 L 13.21875 43.21875 C 13.234375 43.265625 13.25 43.328125 13.28125 43.359375 C 13.28125 43.359375 13.28125 43.375 13.3125 43.375 L 13.375 43.46875 C 13.390625 43.5 13.390625 43.5 13.40625 43.515625 L 13.453125 43.546875 L 13.515625 43.59375 C 13.515625 43.59375 13.515625 43.59375 13.53125 43.59375 C 13.5625 43.625 13.609375 43.671875 13.671875 43.6875 C 13.6875 43.6875 13.6875 43.6875 13.703125 43.703125 C 13.734375 43.703125 13.765625 43.71875 13.8125 43.734375 L 13.859375 43.734375 L 13.929688 43.746094 L 14 43.75 C 14.0625 43.75 14.109375 43.75 14.15625 43.734375 L 14.1875 43.734375 C 14.234375 43.71875 14.28125 43.703125 14.3125 43.703125 C 14.3125 43.6875 14.328125 43.6875 14.328125 43.6875 L 14.34375 43.6875 C 14.40625 43.671875 14.4375 43.625 14.484375 43.59375 L 14.5 43.59375 C 14.53125 43.5625 14.578125 43.53125 14.609375 43.515625 C 14.609375 43.5 14.625 43.5 14.625 43.46875 C 14.65625 43.4375 14.6875 43.40625 14.703125 43.375 L 14.71875 43.359375 C 14.75 43.328125 14.78125 43.265625 14.796875 43.21875 L 18.625 34.109375 C 18.8125 33.6875 18.609375 33.171875 18.1875 33 C 17.734375 32.8125 17.234375 33.015625 17.046875 33.453125 L 14 40.6875 L 11.984375 35.890625 C 11.828125 35.546875 11.5 35.359375 11.171875 35.359375 C 10.828125 35.359375 10.5 35.546875 10.359375 35.890625 L 8.34375 40.6875 L 5.28125 33.453125 C 5.109375 33.015625 4.59375 32.8125 4.171875 33 C 3.71875 33.171875 3.53125 33.6875 3.703125 34.109375 L 7.546875 43.21875 C 7.578125 43.265625 7.59375 43.328125 7.625 43.359375 L 7.625 43.375 C 7.65625 43.40625 7.671875 43.4375 7.703125 43.46875 C 7.71875 43.5 7.71875 43.5 7.734375 43.515625 L 7.789062 43.546875 L 7.84375 43.59375 C 7.84375 43.59375 7.84375 43.59375 7.859375 43.59375 C 7.890625 43.625 7.953125 43.671875 8 43.6875 C 8.015625 43.6875 8.015625 43.6875 8.03125 43.703125 C 8.0625 43.703125 8.09375 43.71875 8.140625 43.734375 L 8.1875 43.734375 L 8.265625 43.746094 L 8.34375 43.75 C 8.390625 43.75 8.4375 43.75 8.484375 43.734375 Z M 29.03125 43.75 C 29.5 43.75 29.90625 43.359375 29.90625 42.890625 L 29.90625 33.671875 C 29.90625 33.269531 29.609375 32.9375 29.226562 32.839844 L 29.03125 32.8125 L 29.015625 32.8125 C 28.734375 32.8125 28.484375 32.9375 28.3125 33.171875 L 25.203125 37.484375 L 22.09375 33.171875 C 21.9375 32.9375 21.65625 32.8125 21.40625 32.8125 L 21.359375 32.8125 C 20.890625 32.8125 20.5 33.203125 20.5 33.671875 L 20.5 42.890625 C 20.5 43.359375 20.890625 43.75 21.359375 43.75 C 21.84375 43.75 22.234375 43.359375 22.234375 42.890625 L 22.234375 36.3125 L 24.46875 39.4375 C 24.640625 39.671875 24.90625 39.796875 25.1875 39.796875 L 25.21875 39.796875 C 25.5 39.796875 25.75 39.671875 25.921875 39.4375 L 28.171875 36.3125 L 28.171875 42.890625 C 28.171875 43.359375 28.546875 43.75 29.03125 43.75 Z M 37.015625 43.734375 L 37.0625 43.734375 C 37.09375 43.71875 37.125 43.703125 37.1875 43.703125 L 37.195312 43.6875 C 37.203125 43.6875 37.203125 43.6875 37.21875 43.6875 C 37.25 43.671875 37.296875 43.625 37.34375 43.59375 L 37.375 43.59375 C 37.40625 43.5625 37.4375 43.53125 37.46875 43.515625 C 37.46875 43.5 37.484375 43.5 37.484375 43.46875 L 37.578125 43.375 C 37.578125 43.375 37.578125 43.359375 37.59375 43.359375 C 37.609375 43.328125 37.640625 43.265625 37.65625 43.21875 L 39.703125 38.375 L 41.75 43.21875 C 41.765625 43.265625 41.78125 43.328125 41.8125 43.359375 C 41.8125 43.359375 41.8125 43.375 41.84375 43.375 L 41.90625 43.46875 C 41.921875 43.5 41.921875 43.5 41.9375 43.515625 L 41.984375 43.546875 L 42.046875 43.59375 C 42.046875 43.59375 42.046875 43.59375 42.0625 43.59375 C 42.09375 43.625 42.140625 43.671875 42.203125 43.6875 C 42.21875 43.6875 42.21875 43.6875 42.234375 43.703125 C 42.265625 43.703125 42.296875 43.71875 42.34375 43.734375 L 42.390625 43.734375 L 42.460938 43.746094 L 42.53125 43.75 C 42.59375 43.75 42.640625 43.75 42.6875 43.734375 L 42.71875 43.734375 C 42.765625 43.71875 42.8125 43.703125 42.84375 43.703125 C 42.84375 43.6875 42.859375 43.6875 42.859375 43.6875 L 42.875 43.6875 C 42.9375 43.671875 42.96875 43.625 43.015625 43.59375 L 43.03125 43.59375 C 43.0625 43.5625 43.109375 43.53125 43.140625 43.515625 C 43.140625 43.5 43.15625 43.5 43.15625 43.46875 C 43.1875 43.4375 43.21875 43.40625 43.234375 43.375 L 43.25 43.359375 C 43.28125 43.328125 43.3125 43.265625 43.328125 43.21875 L 47.15625 34.109375 C 47.34375 33.6875 47.140625 33.171875 46.71875 33 C 46.265625 32.8125 45.765625 33.015625 45.578125 33.453125 L 42.53125 40.6875 L 40.515625 35.890625 C 40.359375 35.546875 40.03125 35.359375 39.703125 35.359375 C 39.359375 35.359375 39.03125 35.546875 38.890625 35.890625 L 36.875 40.6875 L 33.8125 33.453125 C 33.640625 33.015625 33.125 32.8125 32.703125 33 C 32.25 33.171875 32.0625 33.6875 32.234375 34.109375 L 36.078125 43.21875 C 36.109375 43.265625 36.125 43.328125 36.15625 43.359375 L 36.15625 43.375 C 36.1875 43.40625 36.203125 43.4375 36.234375 43.46875 C 36.25 43.5 36.25 43.5 36.265625 43.515625 L 36.320312 43.546875 L 36.375 43.59375 C 36.375 43.59375 36.375 43.59375 36.390625 43.59375 C 36.421875 43.625 36.484375 43.671875 36.53125 43.6875 C 36.546875 43.6875 36.546875 43.6875 36.5625 43.703125 C 36.59375 43.703125 36.625 43.71875 36.671875 43.734375 L 36.71875 43.734375 L 36.796875 43.746094 L 36.875 43.75 C 36.921875 43.75 36.96875 43.75 37.015625 43.734375 Z M 37.015625 43.734375 \"/>\\n      </g>'},xlsIcon:{extension:\".xls\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 17.21875 46.875 C 17.425781 46.875 17.632812 46.800781 17.820312 46.667969 C 18.289062 46.351562 18.363281 45.695312 18.042969 45.242188 L 14.480469 40.367188 L 18.042969 35.53125 C 18.363281 35.0625 18.289062 34.425781 17.820312 34.105469 C 17.351562 33.75 16.730469 33.84375 16.375 34.332031 L 13.226562 38.644531 L 10.054688 34.332031 C 9.738281 33.84375 9.082031 33.75 8.632812 34.105469 C 8.164062 34.425781 8.070312 35.0625 8.386719 35.53125 L 11.949219 40.367188 L 8.386719 45.242188 C 8.070312 45.695312 8.164062 46.351562 8.632812 46.667969 C 8.800781 46.800781 9.007812 46.875 9.230469 46.875 C 9.550781 46.875 9.851562 46.707031 10.054688 46.445312 L 13.226562 42.113281 L 16.375 46.445312 C 16.582031 46.707031 16.882812 46.875 17.21875 46.875 Z M 29.351562 46.875 C 29.894531 46.875 30.382812 46.40625 30.382812 45.84375 C 30.382812 45.261719 29.894531 44.792969 29.351562 44.792969 L 24.269531 44.792969 L 24.269531 34.78125 C 24.269531 34.21875 23.800781 33.75 23.21875 33.75 C 22.636719 33.75 22.1875 34.21875 22.1875 34.78125 L 22.1875 45.84375 C 22.1875 46.335938 22.53125 46.757812 23.007812 46.855469 L 23.222656 46.875 Z M 37.28125 46.855469 C 38.613281 46.855469 39.832031 46.460938 40.75 45.789062 C 41.6875 45.113281 42.363281 44.082031 42.363281 42.882812 C 42.363281 42.300781 42.195312 41.738281 41.914062 41.289062 C 41.480469 40.59375 40.804688 40.105469 40.039062 39.730469 C 39.289062 39.375 38.40625 39.132812 37.449219 38.945312 L 37.414062 38.945312 C 36.398438 38.757812 35.554688 38.457031 35.070312 38.117188 C 34.824219 37.949219 34.65625 37.78125 34.5625 37.632812 C 34.46875 37.480469 34.429688 37.332031 34.429688 37.105469 C 34.429688 36.710938 34.636719 36.300781 35.144531 35.925781 C 35.648438 35.550781 36.398438 35.289062 37.242188 35.289062 C 38.386719 35.289062 39.304688 35.851562 40.261719 36.488281 C 40.710938 36.789062 41.3125 36.65625 41.59375 36.207031 C 41.894531 35.773438 41.761719 35.175781 41.332031 34.875 C 40.375 34.257812 39.042969 33.375 37.242188 33.375 C 36.023438 33.375 34.882812 33.730469 34 34.367188 C 33.136719 35.007812 32.5 35.980469 32.5 37.105469 C 32.5 37.667969 32.648438 38.195312 32.929688 38.644531 C 33.34375 39.300781 33.960938 39.769531 34.675781 40.105469 C 35.386719 40.445312 36.210938 40.667969 37.09375 40.835938 L 37.132812 40.835938 C 38.238281 41.042969 39.15625 41.363281 39.699219 41.71875 C 39.980469 41.90625 40.148438 42.09375 40.261719 42.28125 C 40.375 42.46875 40.429688 42.636719 40.429688 42.882812 C 40.429688 43.351562 40.1875 43.820312 39.625 44.230469 C 39.0625 44.644531 38.21875 44.925781 37.28125 44.925781 C 35.949219 44.945312 34.523438 44.15625 33.699219 43.480469 C 33.289062 43.144531 32.667969 43.199219 32.332031 43.613281 C 32.011719 44.023438 32.070312 44.644531 32.480469 44.980469 C 33.550781 45.824219 35.257812 46.835938 37.28125 46.855469 Z M 37.28125 46.855469 \"/>\\n      </g>'},xlsxIcon:{extension:\".xlsx\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 13.070312 43.75 C 13.242188 43.75 13.414062 43.6875 13.570312 43.578125 C 13.960938 43.3125 14.023438 42.765625 13.757812 42.390625 L 10.789062 38.328125 L 13.757812 34.296875 C 14.023438 33.90625 13.960938 33.375 13.570312 33.109375 C 13.179688 32.8125 12.664062 32.890625 12.367188 33.296875 L 9.742188 36.890625 L 7.101562 33.296875 C 6.835938 32.890625 6.289062 32.8125 5.914062 33.109375 C 5.523438 33.375 5.445312 33.90625 5.710938 34.296875 L 8.679688 38.328125 L 5.710938 42.390625 C 5.445312 42.765625 5.523438 43.3125 5.914062 43.578125 C 6.054688 43.6875 6.226562 43.75 6.414062 43.75 C 6.679688 43.75 6.929688 43.609375 7.101562 43.390625 L 9.742188 39.78125 L 12.367188 43.390625 C 12.539062 43.609375 12.789062 43.75 13.070312 43.75 Z M 23.179688 43.75 C 23.632812 43.75 24.039062 43.359375 24.039062 42.890625 C 24.039062 42.40625 23.632812 42.015625 23.179688 42.015625 L 18.945312 42.015625 L 18.945312 33.671875 C 18.945312 33.203125 18.554688 32.8125 18.070312 32.8125 C 17.585938 32.8125 17.210938 33.203125 17.210938 33.671875 L 17.210938 42.890625 C 17.210938 43.359375 17.585938 43.75 18.070312 43.75 Z M 29.789062 43.734375 C 30.898438 43.734375 31.914062 43.40625 32.679688 42.84375 C 33.460938 42.28125 34.023438 41.421875 34.023438 40.421875 C 34.023438 39.9375 33.882812 39.46875 33.648438 39.09375 C 33.289062 38.515625 32.726562 38.109375 32.085938 37.796875 C 31.460938 37.5 30.726562 37.296875 29.929688 37.140625 L 29.898438 37.140625 C 29.054688 36.984375 28.351562 36.734375 27.945312 36.453125 C 27.742188 36.3125 27.601562 36.171875 27.523438 36.046875 C 27.445312 35.921875 27.414062 35.796875 27.414062 35.609375 C 27.414062 35.28125 27.585938 34.9375 28.007812 34.625 C 28.429688 34.3125 29.054688 34.09375 29.757812 34.09375 C 30.710938 34.09375 31.476562 34.5625 32.273438 35.09375 C 32.648438 35.34375 33.148438 35.234375 33.382812 34.859375 C 33.632812 34.5 33.523438 34 33.164062 33.75 C 32.367188 33.234375 31.257812 32.5 29.757812 32.5 C 28.742188 32.5 27.789062 32.796875 27.054688 33.328125 C 26.335938 33.859375 25.804688 34.671875 25.804688 35.609375 C 25.804688 36.078125 25.929688 36.515625 26.164062 36.890625 C 26.507812 37.4375 27.023438 37.828125 27.617188 38.109375 C 28.210938 38.390625 28.898438 38.578125 29.632812 38.71875 L 29.664062 38.71875 C 30.585938 38.890625 31.351562 39.15625 31.804688 39.453125 C 32.039062 39.609375 32.179688 39.765625 32.273438 39.921875 C 32.367188 40.078125 32.414062 40.21875 32.414062 40.421875 C 32.414062 40.8125 32.210938 41.203125 31.742188 41.546875 C 31.273438 41.890625 30.570312 42.125 29.789062 42.125 C 28.679688 42.140625 27.492188 41.484375 26.804688 40.921875 C 26.460938 40.640625 25.945312 40.6875 25.664062 41.03125 C 25.398438 41.375 25.445312 41.890625 25.789062 42.171875 C 26.679688 42.875 28.101562 43.71875 29.789062 43.734375 Z M 43.179688 43.75 C 43.351562 43.75 43.523438 43.6875 43.679688 43.578125 C 44.070312 43.3125 44.132812 42.765625 43.867188 42.390625 L 40.898438 38.328125 L 43.867188 34.296875 C 44.132812 33.90625 44.070312 33.375 43.679688 33.109375 C 43.289062 32.8125 42.773438 32.890625 42.476562 33.296875 L 39.851562 36.890625 L 37.210938 33.296875 C 36.945312 32.890625 36.398438 32.8125 36.023438 33.109375 C 35.632812 33.375 35.554688 33.90625 35.820312 34.296875 L 38.789062 38.328125 L 35.820312 42.390625 C 35.554688 42.765625 35.632812 43.3125 36.023438 43.578125 C 36.164062 43.6875 36.335938 43.75 36.523438 43.75 C 36.789062 43.75 37.039062 43.609375 37.210938 43.390625 L 39.851562 39.78125 L 42.476562 43.390625 C 42.648438 43.609375 42.898438 43.75 43.179688 43.75 Z M 43.179688 43.75 \"/>\\n      </g>'},zipIcon:{extension:\".zip\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 20.175781 46.875 C 20.855469 46.875 21.402344 46.351562 21.402344 45.671875 C 21.402344 44.992188 20.855469 44.445312 20.175781 44.445312 L 13.132812 44.445312 L 21.183594 33.488281 L 21.183594 33.445312 C 21.203125 33.421875 21.226562 33.378906 21.25 33.335938 C 21.269531 33.3125 21.269531 33.289062 21.292969 33.269531 C 21.3125 33.203125 21.3125 33.179688 21.335938 33.136719 C 21.335938 33.09375 21.378906 33.070312 21.378906 33.007812 C 21.378906 32.984375 21.378906 32.960938 21.402344 32.917969 L 21.402344 32.679688 C 21.402344 32.632812 21.402344 32.613281 21.378906 32.546875 C 21.378906 32.503906 21.378906 32.480469 21.335938 32.4375 C 21.335938 32.414062 21.3125 32.371094 21.3125 32.304688 C 21.292969 32.285156 21.269531 32.242188 21.269531 32.21875 C 21.25 32.195312 21.226562 32.152344 21.203125 32.109375 C 21.183594 32.066406 21.160156 32.042969 21.117188 32.023438 C 21.09375 32 21.074219 31.957031 21.050781 31.933594 C 21.03125 31.914062 21.007812 31.867188 20.964844 31.847656 C 20.941406 31.824219 20.941406 31.804688 20.898438 31.78125 L 20.875 31.78125 C 20.832031 31.757812 20.8125 31.738281 20.765625 31.714844 C 20.746094 31.695312 20.722656 31.648438 20.65625 31.648438 L 20.570312 31.605469 L 20.4375 31.585938 C 20.417969 31.585938 20.375 31.5625 20.351562 31.5625 L 10.75 31.5625 C 10.070312 31.5625 9.546875 32.085938 9.546875 32.765625 C 9.546875 33.421875 10.070312 33.992188 10.75 33.992188 L 17.8125 33.992188 L 9.785156 44.972656 L 9.765625 44.972656 C 9.742188 45.015625 9.71875 45.058594 9.699219 45.082031 C 9.699219 45.101562 9.675781 45.148438 9.632812 45.167969 C 9.632812 45.210938 9.609375 45.257812 9.609375 45.277344 C 9.589844 45.320312 9.589844 45.367188 9.566406 45.386719 L 9.566406 45.496094 C 9.546875 45.539062 9.546875 45.585938 9.546875 45.648438 L 9.546875 45.738281 C 9.546875 45.78125 9.566406 45.824219 9.566406 45.890625 C 9.566406 45.933594 9.589844 45.957031 9.589844 45.976562 L 9.632812 46.109375 C 9.632812 46.152344 9.675781 46.175781 9.699219 46.21875 C 9.699219 46.242188 9.71875 46.261719 9.742188 46.328125 C 9.765625 46.351562 9.785156 46.394531 9.808594 46.414062 C 9.828125 46.4375 9.851562 46.460938 9.894531 46.480469 L 9.9375 46.542969 L 9.984375 46.589844 C 10.003906 46.613281 10.027344 46.632812 10.046875 46.632812 L 10.046875 46.65625 C 10.070312 46.679688 10.09375 46.679688 10.136719 46.699219 C 10.179688 46.722656 10.222656 46.742188 10.246094 46.742188 C 10.265625 46.789062 10.289062 46.789062 10.3125 46.808594 C 10.375 46.808594 10.421875 46.832031 10.464844 46.832031 C 10.484375 46.851562 10.507812 46.851562 10.53125 46.851562 L 10.648438 46.871094 Z M 26.214844 46.875 C 26.871094 46.875 27.4375 46.351562 27.4375 45.671875 L 27.4375 32.765625 C 27.4375 32.085938 26.871094 31.5625 26.214844 31.5625 C 25.535156 31.5625 25.011719 32.085938 25.011719 32.765625 L 25.011719 45.671875 C 25.011719 46.351562 25.535156 46.875 26.214844 46.875 Z M 32.734375 46.875 C 33.410156 46.875 33.957031 46.328125 33.957031 45.671875 L 33.957031 40.925781 L 36.648438 40.925781 C 39.25 40.925781 41.351562 38.824219 41.351562 36.265625 C 41.351562 33.664062 39.25 31.5625 36.648438 31.5625 L 32.734375 31.5625 C 32.078125 31.5625 31.53125 32.085938 31.53125 32.765625 L 31.53125 45.671875 C 31.53125 46.328125 32.078125 46.875 32.734375 46.875 Z M 36.648438 38.496094 L 33.957031 38.496094 L 33.957031 33.992188 L 36.648438 33.992188 C 37.917969 33.992188 38.902344 34.996094 38.921875 36.265625 C 38.902344 37.492188 37.917969 38.496094 36.648438 38.496094 Z M 36.648438 38.496094 \"/>\\n      </g>'},docxIcon:{extension:\".docx\",path:'<g id=\"surface9\" clip-path=\"url(#clip1)\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      </g>\\n      </defs>\\n      <g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <use xlink:href=\"#surface9\" mask=\"url(#mask0)\"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 7.789062 43.75 C 9.589844 43.75 10.988281 43.269531 11.984375 42.304688 C 12.980469 41.339844 13.476562 39.984375 13.476562 38.234375 C 13.476562 36.496094 12.980469 35.144531 11.984375 34.179688 C 10.988281 33.214844 9.589844 32.734375 7.789062 32.734375 L 4.695312 32.734375 C 4.394531 32.734375 4.15625 32.816406 3.984375 32.984375 C 3.8125 33.152344 3.726562 33.386719 3.726562 33.6875 L 3.726562 42.796875 C 3.726562 43.097656 3.8125 43.332031 3.984375 43.5 C 4.15625 43.667969 4.394531 43.75 4.695312 43.75 Z M 7.664062 42.109375 L 5.742188 42.109375 L 5.742188 34.375 L 7.664062 34.375 C 10.195312 34.375 11.460938 35.660156 11.460938 38.234375 C 11.460938 40.816406 10.195312 42.109375 7.664062 42.109375 Z M 20.414062 43.890625 C 21.476562 43.890625 22.402344 43.660156 23.1875 43.203125 C 23.972656 42.746094 24.582031 42.089844 25.007812 41.234375 C 25.433594 40.378906 25.648438 39.378906 25.648438 38.234375 C 25.648438 37.089844 25.4375 36.089844 25.015625 35.242188 C 24.59375 34.394531 23.988281 33.738281 23.203125 33.28125 C 22.417969 32.824219 21.488281 32.59375 20.414062 32.59375 C 19.339844 32.59375 18.410156 32.824219 17.617188 33.28125 C 16.824219 33.738281 16.21875 34.394531 15.796875 35.242188 C 15.375 36.089844 15.164062 37.089844 15.164062 38.234375 C 15.164062 39.378906 15.378906 40.378906 15.804688 41.234375 C 16.230469 42.089844 16.839844 42.746094 17.625 43.203125 C 18.410156 43.660156 19.339844 43.890625 20.414062 43.890625 Z M 20.414062 42.28125 C 19.394531 42.28125 18.597656 41.933594 18.03125 41.234375 C 17.464844 40.535156 17.179688 39.535156 17.179688 38.234375 C 17.179688 36.933594 17.464844 35.933594 18.03125 35.242188 C 18.597656 34.550781 19.394531 34.203125 20.414062 34.203125 C 21.425781 34.203125 22.214844 34.550781 22.78125 35.242188 C 23.347656 35.933594 23.632812 36.933594 23.632812 38.234375 C 23.632812 39.535156 23.347656 40.535156 22.78125 41.234375 C 22.214844 41.933594 21.425781 42.28125 20.414062 42.28125 Z M 32.601562 43.890625 C 33.289062 43.890625 33.933594 43.789062 34.539062 43.585938 C 35.144531 43.382812 35.679688 43.089844 36.148438 42.703125 C 36.285156 42.597656 36.378906 42.488281 36.429688 42.367188 C 36.480469 42.246094 36.507812 42.109375 36.507812 41.953125 C 36.507812 41.722656 36.445312 41.53125 36.320312 41.375 C 36.195312 41.21875 36.042969 41.140625 35.867188 41.140625 C 35.753906 41.140625 35.644531 41.160156 35.539062 41.203125 C 35.433594 41.246094 35.332031 41.296875 35.226562 41.359375 C 34.746094 41.683594 34.316406 41.910156 33.9375 42.046875 C 33.558594 42.183594 33.144531 42.25 32.695312 42.25 C 31.613281 42.25 30.792969 41.910156 30.234375 41.234375 C 29.675781 40.558594 29.398438 39.558594 29.398438 38.234375 C 29.398438 36.921875 29.675781 35.925781 30.234375 35.25 C 30.792969 34.574219 31.613281 34.234375 32.695312 34.234375 C 33.164062 34.234375 33.589844 34.300781 33.976562 34.429688 C 34.363281 34.558594 34.777344 34.792969 35.226562 35.125 C 35.445312 35.269531 35.660156 35.34375 35.867188 35.34375 C 36.042969 35.34375 36.195312 35.265625 36.320312 35.109375 C 36.445312 34.953125 36.507812 34.761719 36.507812 34.53125 C 36.507812 34.363281 36.480469 34.222656 36.429688 34.109375 C 36.378906 33.996094 36.285156 33.886719 36.148438 33.78125 C 35.679688 33.394531 35.144531 33.101562 34.539062 32.898438 C 33.933594 32.695312 33.289062 32.59375 32.601562 32.59375 C 31.539062 32.59375 30.609375 32.824219 29.8125 33.28125 C 29.015625 33.738281 28.402344 34.394531 27.976562 35.242188 C 27.550781 36.089844 27.335938 37.089844 27.335938 38.234375 C 27.335938 39.378906 27.550781 40.378906 27.976562 41.234375 C 28.402344 42.089844 29.015625 42.746094 29.8125 43.203125 C 30.609375 43.660156 31.539062 43.890625 32.601562 43.890625 Z M 46.132812 43.84375 C 46.382812 43.84375 46.605469 43.75 46.796875 43.5625 C 46.988281 43.375 47.085938 43.15625 47.085938 42.90625 C 47.085938 42.707031 47.003906 42.511719 46.835938 42.3125 L 43.445312 38.15625 L 46.710938 34.171875 C 46.867188 34.003906 46.945312 33.808594 46.945312 33.578125 C 46.945312 33.328125 46.847656 33.113281 46.65625 32.929688 C 46.464844 32.746094 46.242188 32.65625 45.992188 32.65625 C 45.730469 32.65625 45.507812 32.769531 45.320312 33 L 42.273438 36.765625 L 39.226562 33 C 39.027344 32.769531 38.800781 32.65625 38.539062 32.65625 C 38.289062 32.65625 38.070312 32.746094 37.882812 32.929688 C 37.695312 33.113281 37.601562 33.328125 37.601562 33.578125 C 37.601562 33.808594 37.679688 34.003906 37.835938 34.171875 L 41.101562 38.15625 L 37.695312 42.3125 C 37.539062 42.5 37.460938 42.699219 37.460938 42.90625 C 37.460938 43.15625 37.558594 43.371094 37.75 43.554688 C 37.941406 43.738281 38.164062 43.828125 38.414062 43.828125 C 38.675781 43.828125 38.898438 43.71875 39.085938 43.5 L 42.273438 39.5625 L 45.445312 43.5 C 45.644531 43.730469 45.871094 43.84375 46.132812 43.84375 Z M 46.132812 43.84375 \"/>\\n      </g>'},jpgIcon:{extension:\".jpg\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <use xlink:href=\"#surface9\" mask=\"url(#mask0)\"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 8.789062 47.007812 L 9.488281 46.960938 C 12.214844 46.757812 13.578125 45.277344 13.578125 42.523438 L 13.578125 32.742188 C 13.578125 32.320312 13.453125 31.980469 13.195312 31.726562 C 12.941406 31.472656 12.59375 31.34375 12.15625 31.34375 C 11.734375 31.34375 11.394531 31.472656 11.140625 31.726562 C 10.886719 31.980469 10.757812 32.320312 10.757812 32.742188 L 10.757812 42.523438 C 10.757812 43.238281 10.605469 43.769531 10.296875 44.117188 C 9.992188 44.46875 9.539062 44.660156 8.941406 44.6875 L 8.242188 44.730469 C 7.847656 44.761719 7.558594 44.867188 7.378906 45.046875 C 7.195312 45.230469 7.105469 45.496094 7.105469 45.847656 C 7.105469 46.664062 7.667969 47.050781 8.789062 47.007812 Z M 18.304688 47.007812 C 18.742188 47.007812 19.089844 46.878906 19.34375 46.625 C 19.597656 46.367188 19.726562 46.023438 19.726562 45.585938 L 19.726562 40.882812 L 23.640625 40.882812 C 25.289062 40.882812 26.574219 40.464844 27.492188 39.632812 C 28.410156 38.804688 28.871094 37.644531 28.871094 36.15625 C 28.871094 34.667969 28.410156 33.511719 27.492188 32.6875 C 26.574219 31.863281 25.289062 31.453125 23.640625 31.453125 L 18.261719 31.453125 C 17.839844 31.453125 17.507812 31.570312 17.265625 31.804688 C 17.023438 32.035156 16.90625 32.363281 16.90625 32.789062 L 16.90625 45.585938 C 16.90625 46.023438 17.03125 46.367188 17.289062 46.625 C 17.542969 46.878906 17.882812 47.007812 18.304688 47.007812 Z M 23.292969 38.714844 L 19.726562 38.714844 L 19.726562 33.640625 L 23.292969 33.640625 C 25.230469 33.640625 26.203125 34.488281 26.203125 36.179688 C 26.203125 37.871094 25.230469 38.714844 23.292969 38.714844 Z M 38.605469 47.070312 C 39.320312 47.070312 40.0625 47.011719 40.835938 46.898438 C 41.609375 46.78125 42.285156 46.621094 42.871094 46.414062 C 43.410156 46.242188 43.765625 46.015625 43.941406 45.738281 C 44.117188 45.460938 44.203125 44.988281 44.203125 44.316406 L 44.203125 39.613281 C 44.203125 39.292969 44.101562 39.03125 43.898438 38.835938 C 43.695312 38.640625 43.425781 38.539062 43.089844 38.539062 L 39.21875 38.539062 C 38.867188 38.539062 38.59375 38.628906 38.398438 38.804688 C 38.199219 38.976562 38.101562 39.226562 38.101562 39.546875 C 38.101562 39.867188 38.199219 40.117188 38.398438 40.289062 C 38.59375 40.464844 38.867188 40.554688 39.21875 40.554688 L 41.6875 40.554688 L 41.6875 44.425781 C 40.699219 44.703125 39.707031 44.839844 38.714844 44.839844 C 35.390625 44.839844 33.726562 42.945312 33.726562 39.152344 C 33.726562 37.300781 34.132812 35.90625 34.941406 34.964844 C 35.75 34.023438 36.949219 33.554688 38.539062 33.554688 C 39.238281 33.554688 39.867188 33.644531 40.421875 33.828125 C 40.972656 34.007812 41.574219 34.324219 42.214844 34.777344 C 42.390625 34.894531 42.542969 34.980469 42.671875 35.03125 C 42.804688 35.082031 42.949219 35.105469 43.109375 35.105469 C 43.359375 35.105469 43.570312 34.996094 43.746094 34.777344 C 43.921875 34.558594 44.007812 34.289062 44.007812 33.96875 C 44.007812 33.75 43.96875 33.558594 43.886719 33.398438 C 43.808594 33.238281 43.679688 33.078125 43.503906 32.917969 C 42.191406 31.808594 40.507812 31.257812 38.453125 31.257812 C 36.90625 31.257812 35.5625 31.574219 34.425781 32.207031 C 33.289062 32.84375 32.410156 33.753906 31.789062 34.941406 C 31.171875 36.128906 30.859375 37.535156 30.859375 39.152344 C 30.859375 40.800781 31.171875 42.21875 31.789062 43.40625 C 32.410156 44.597656 33.304688 45.503906 34.46875 46.132812 C 35.636719 46.757812 37.015625 47.070312 38.605469 47.070312 Z M 38.605469 47.070312 \"/>\\n      </g>'},mp3Icon:{extension:\".mp3\",path:'<g id=\"surface9\" clip-path=\"url(#clip1)\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 43.828125 43.710938 C 43.605469 44.28125 43.273438 44.804688 42.84375 45.265625 C 42.40625 45.730469 41.867188 46.113281 41.242188 46.398438 C 40.597656 46.699219 39.851562 46.855469 39.027344 46.855469 C 38.328125 46.855469 37.703125 46.757812 37.160156 46.570312 C 36.609375 46.378906 36.160156 46.136719 35.769531 45.839844 C 35.386719 45.550781 35.050781 45.210938 34.796875 44.832031 C 34.570312 44.507812 34.394531 44.195312 34.265625 43.890625 C 34.140625 43.59375 34.054688 43.335938 33.996094 43.101562 C 33.792969 42.261719 34.304688 41.417969 35.140625 41.210938 C 35.980469 41.007812 36.828125 41.519531 37.03125 42.355469 C 37.039062 42.390625 37.066406 42.488281 37.144531 42.671875 C 37.191406 42.777344 37.265625 42.914062 37.371094 43.0625 C 37.4375 43.160156 37.53125 43.257812 37.65625 43.351562 C 37.792969 43.453125 37.972656 43.542969 38.195312 43.625 C 38.332031 43.667969 38.59375 43.730469 39.027344 43.730469 C 39.390625 43.730469 39.695312 43.675781 39.925781 43.566406 C 40.1875 43.445312 40.398438 43.300781 40.558594 43.132812 C 40.71875 42.957031 40.839844 42.773438 40.914062 42.578125 C 40.996094 42.371094 41.03125 42.195312 41.03125 42.023438 C 41.03125 41.789062 41 41.585938 40.921875 41.398438 C 40.871094 41.257812 40.785156 41.148438 40.660156 41.039062 C 40.515625 40.910156 40.296875 40.792969 40.011719 40.699219 C 39.6875 40.59375 39.253906 40.539062 38.738281 40.535156 C 37.882812 40.527344 37.1875 39.832031 37.1875 38.972656 L 37.1875 38.832031 C 37.1875 37.984375 37.859375 37.292969 38.699219 37.265625 C 39.070312 37.257812 39.398438 37.195312 39.679688 37.101562 C 39.921875 37.011719 40.121094 36.902344 40.273438 36.773438 C 40.40625 36.652344 40.507812 36.519531 40.582031 36.359375 C 40.652344 36.210938 40.6875 36.027344 40.6875 35.8125 C 40.6875 35.523438 40.644531 35.289062 40.574219 35.125 C 40.5 34.96875 40.414062 34.847656 40.304688 34.757812 C 40.1875 34.660156 40.042969 34.582031 39.867188 34.53125 C 39.402344 34.386719 38.878906 34.398438 38.480469 34.542969 C 38.289062 34.617188 38.121094 34.714844 37.976562 34.84375 C 37.820312 34.984375 37.695312 35.148438 37.59375 35.339844 C 37.484375 35.550781 37.40625 35.773438 37.367188 36.039062 C 37.230469 36.890625 36.429688 37.472656 35.574219 37.335938 C 34.722656 37.195312 34.140625 36.398438 34.28125 35.542969 C 34.378906 34.9375 34.5625 34.378906 34.835938 33.871094 C 35.109375 33.355469 35.464844 32.898438 35.890625 32.519531 C 36.320312 32.132812 36.824219 31.828125 37.382812 31.617188 C 38.433594 31.226562 39.667969 31.199219 40.78125 31.539062 C 41.351562 31.714844 41.863281 31.992188 42.308594 32.355469 C 42.777344 32.753906 43.148438 33.242188 43.414062 33.824219 C 43.679688 34.402344 43.8125 35.070312 43.8125 35.8125 C 43.8125 36.476562 43.679688 37.097656 43.421875 37.660156 C 43.25 38.046875 43.023438 38.394531 42.746094 38.707031 C 43.242188 39.148438 43.609375 39.671875 43.835938 40.261719 C 44.046875 40.804688 44.15625 41.398438 44.15625 42.023438 C 44.15625 42.578125 44.046875 43.148438 43.828125 43.710938 Z M 31.445312 38.492188 C 31.148438 39.140625 30.734375 39.703125 30.199219 40.164062 C 29.6875 40.605469 29.078125 40.957031 28.390625 41.199219 C 27.71875 41.4375 26.976562 41.5625 26.191406 41.5625 L 25 41.5625 L 25 45 C 25 45.859375 24.296875 46.5625 23.4375 46.5625 C 22.578125 46.5625 21.875 45.859375 21.875 45 L 21.875 32.8125 C 21.875 31.945312 22.578125 31.25 23.4375 31.25 L 26.191406 31.25 C 27.890625 31.25 29.257812 31.667969 30.253906 32.5 C 31.339844 33.398438 31.886719 34.714844 31.886719 36.40625 C 31.886719 37.148438 31.738281 37.851562 31.445312 38.492188 Z M 18.730469 45.210938 C 18.730469 46.070312 18.03125 46.773438 17.167969 46.773438 C 16.300781 46.773438 15.605469 46.070312 15.605469 45.210938 L 15.605469 39.28125 L 14.015625 43.140625 C 14.007812 43.164062 13.996094 43.191406 13.984375 43.214844 C 13.71875 43.777344 13.15625 44.117188 12.566406 44.117188 L 12.53125 44.117188 C 11.9375 44.117188 11.375 43.777344 11.109375 43.214844 L 11.082031 43.160156 L 9.339844 39.101562 L 9.339844 45.210938 C 9.339844 46.070312 8.640625 46.773438 7.777344 46.773438 C 6.910156 46.773438 6.214844 46.070312 6.214844 45.210938 L 6.214844 32.824219 C 6.214844 31.960938 6.910156 31.261719 7.777344 31.261719 L 7.835938 31.261719 C 8.472656 31.261719 9.046875 31.617188 9.335938 32.1875 L 12.527344 39.09375 L 15.59375 32.207031 C 15.894531 31.617188 16.46875 31.261719 17.105469 31.261719 L 17.167969 31.261719 C 18.03125 31.261719 18.730469 31.960938 18.730469 32.824219 Z M 41.382812 28.125 L 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.136719 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.136719 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 41.382812 28.125 \"/>\\n      </g>\\n      </defs>\\n      <g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <use xlink:href=\"#surface9\" mask=\"url(#mask0)\"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 28.257812 34.902344 C 27.835938 34.550781 27.140625 34.375 26.191406 34.375 L 25 34.375 L 25 38.4375 L 26.191406 38.4375 C 26.621094 38.4375 27.007812 38.375 27.34375 38.253906 C 27.667969 38.140625 27.929688 37.992188 28.148438 37.804688 C 28.34375 37.632812 28.492188 37.4375 28.601562 37.195312 C 28.710938 36.964844 28.757812 36.703125 28.757812 36.40625 C 28.757812 35.324219 28.382812 35.003906 28.257812 34.902344 \"/>\\n      <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(99.607843%,99.607843%,99.607843%);stroke-opacity:1;stroke-miterlimit:4;\" d=\"M 11.34125 13.57875 C 11.345 13.5925 11.3525 13.62375 11.36375 13.67375 C 11.3775 13.7225 11.3975 13.78125 11.42625 13.85 C 11.45375 13.9175 11.49375 13.9875 11.54625 14.0625 C 11.5975 14.13875 11.66625 14.20875 11.75 14.27125 C 11.83375 14.33625 11.9375 14.38875 12.0575 14.43125 C 12.1775 14.4725 12.32 14.49375 12.4875 14.49375 C 12.67875 14.49375 12.845 14.46125 12.9875 14.39375 C 13.13 14.32875 13.24875 14.245 13.34375 14.1425 C 13.43875 14.0425 13.51125 13.93 13.55875 13.8075 C 13.6075 13.6825 13.63125 13.56375 13.63125 13.4475 C 13.63125 13.31125 13.6075 13.1825 13.5625 13.065 C 13.515 12.9475 13.4425 12.845 13.3425 12.7575 C 13.2425 12.67 13.115 12.6 12.96 12.55 C 12.805 12.49875 12.6175 12.4725 12.4 12.4725 L 12.4 12.42625 C 12.57 12.42 12.72375 12.3925 12.8625 12.34375 C 13.0025 12.29625 13.11875 12.2275 13.21625 12.14375 C 13.31375 12.05875 13.3875 11.96 13.44125 11.845 C 13.4925 11.7275 13.52 11.60125 13.52 11.46 C 13.52 11.29375 13.4925 11.1525 13.43875 11.0325 C 13.38375 10.91375 13.31125 10.81625 13.21875 10.74 C 13.1275 10.66375 13.0225 10.6075 12.90375 10.5725 C 12.78625 10.535 12.66375 10.5175 12.5375 10.5175 C 12.395 10.5175 12.26125 10.54 12.14 10.58625 C 12.0175 10.6325 11.91 10.69625 11.81875 10.77875 C 11.72625 10.8625 11.64875 10.96 11.5875 11.07375 C 11.5275 11.18875 11.48625 11.315 11.4625 11.45375 M 7.5 14.4 L 7.5 10.5 L 8.3825 10.5 C 8.8075 10.5 9.13375 10.595 9.3625 10.78375 C 9.59 10.975 9.7025 11.2625 9.7025 11.65 C 9.7025 11.81625 9.6725 11.97125 9.6075 12.11125 C 9.5425 12.2525 9.4525 12.37375 9.335 12.475 C 9.21875 12.5775 9.0775 12.65625 8.9175 12.71375 C 8.75625 12.77125 8.5775 12.8 8.3825 12.8 L 7.6 12.8 M 2.4875 14.4675 L 2.4875 10.50375 L 2.5075 10.50375 C 2.5225 10.50375 2.53375 10.5125 2.5425 10.52625 L 3.9925 13.58625 C 3.99875 13.5975 4.005 13.6075 4.00875 13.6175 M 4.02125 13.6175 C 4.02625 13.6075 4.03125 13.5975 4.0375 13.58625 L 5.44 10.52625 C 5.4475 10.5125 5.45875 10.50375 5.4725 10.50375 L 5.4925 10.50375 L 5.4925 14.4675 \" transform=\"matrix(3.125,0,0,3.125,0,0)\"/>\\n      </g>'},mp4Icon:{extension:\".mp4\",path:'<g id=\"surface6\" clip-path=\"url(#clip1)\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 36.898438 40.625 L 40.625 35.480469 L 40.625 40.625 Z M 28.761719 36.40625 C 28.761719 36.703125 28.707031 36.964844 28.605469 37.195312 C 28.496094 37.433594 28.347656 37.632812 28.148438 37.804688 C 27.929688 37.992188 27.667969 38.144531 27.34375 38.257812 C 27.003906 38.375 26.621094 38.4375 26.191406 38.4375 L 25 38.4375 L 25 34.375 L 26.191406 34.375 C 27.140625 34.375 27.835938 34.554688 28.253906 34.902344 C 28.378906 35.007812 28.761719 35.324219 28.761719 36.40625 Z M 44.6875 43.75 L 43.75 43.75 L 43.75 45.3125 C 43.75 46.175781 43.050781 46.875 42.1875 46.875 C 41.324219 46.875 40.625 46.175781 40.625 45.3125 L 40.625 43.75 L 34.066406 43.75 C 33.199219 43.75 32.503906 43.050781 32.503906 42.1875 L 32.503906 41.875 C 32.503906 41.546875 32.605469 41.226562 32.800781 40.957031 L 39.363281 31.898438 C 39.660156 31.492188 40.128906 31.25 40.628906 31.25 L 42.1875 31.25 C 43.050781 31.25 43.75 31.949219 43.75 32.8125 L 43.75 40.625 L 44.6875 40.625 C 45.550781 40.625 46.25 41.324219 46.25 42.1875 C 46.25 43.050781 45.550781 43.75 44.6875 43.75 Z M 31.445312 38.492188 C 31.148438 39.140625 30.730469 39.703125 30.195312 40.167969 C 29.6875 40.605469 29.082031 40.957031 28.390625 41.203125 C 27.71875 41.441406 26.976562 41.5625 26.191406 41.5625 L 25 41.5625 L 25 45 C 25 45.863281 24.300781 46.5625 23.4375 46.5625 C 22.578125 46.5625 21.875 45.863281 21.875 45 L 21.875 32.8125 C 21.875 31.949219 22.578125 31.25 23.4375 31.25 L 26.191406 31.25 C 27.890625 31.25 29.257812 31.671875 30.253906 32.5 C 31.339844 33.398438 31.886719 34.714844 31.886719 36.40625 C 31.886719 37.148438 31.738281 37.851562 31.445312 38.492188 Z M 18.730469 45.210938 C 18.730469 46.070312 18.027344 46.773438 17.167969 46.773438 C 16.300781 46.773438 15.605469 46.070312 15.605469 45.210938 L 15.605469 39.6875 L 14.035156 43.105469 C 14.019531 43.144531 14.003906 43.179688 13.984375 43.214844 C 13.71875 43.78125 13.15625 44.117188 12.566406 44.117188 L 12.53125 44.117188 C 11.941406 44.117188 11.378906 43.78125 11.113281 43.214844 C 11.097656 43.183594 11.078125 43.152344 11.066406 43.125 L 9.339844 39.484375 L 9.339844 45.210938 C 9.339844 46.070312 8.640625 46.773438 7.777344 46.773438 C 6.910156 46.773438 6.214844 46.070312 6.214844 45.210938 L 6.214844 32.824219 C 6.214844 31.960938 6.910156 31.261719 7.777344 31.261719 L 7.835938 31.261719 C 8.472656 31.261719 9.046875 31.617188 9.335938 32.191406 L 9.355469 32.226562 L 12.523438 38.90625 L 15.578125 32.242188 C 15.585938 32.226562 15.597656 32.210938 15.605469 32.191406 C 15.894531 31.617188 16.46875 31.261719 17.105469 31.261719 L 17.164062 31.261719 C 18.027344 31.261719 18.726562 31.960938 18.726562 32.824219 L 18.726562 45.210938 Z M 41.382812 28.125 L 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 41.382812 28.125 \"/>\\n      </g>\\n      </defs>\\n      <g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <use xlink:href=\"#surface6\" mask=\"url(#mask0)\"/>\\n      <path style=\"fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(99.607843%,99.607843%,99.607843%);stroke-opacity:1;stroke-miterlimit:4;\" d=\"M 14.3 13.5 L 10.90125 13.5 L 10.90125 13.4 L 13.00125 10.5 L 13.5 10.5 L 13.5 14.5 M 7.5 14.4 L 7.5 10.5 L 8.3825 10.5 C 8.8075 10.5 9.13375 10.595 9.3625 10.78375 C 9.59 10.975 9.7025 11.2625 9.7025 11.65 C 9.7025 11.81625 9.6725 11.97125 9.6075 12.11125 C 9.5425 12.2525 9.4525 12.37375 9.335 12.47625 C 9.21875 12.5775 9.0775 12.65625 8.9175 12.71375 C 8.75625 12.77125 8.5775 12.8 8.3825 12.8 L 7.6 12.8 M 2.4875 14.4675 L 2.4875 10.50375 L 2.5075 10.50375 C 2.5225 10.50375 2.53375 10.5125 2.5425 10.52625 L 3.9925 13.58625 C 3.99875 13.5975 4.005 13.6075 4.00875 13.6175 M 4.02125 13.6175 C 4.02625 13.6075 4.03125 13.5975 4.0375 13.58625 L 5.44 10.52625 C 5.4475 10.5125 5.45875 10.50375 5.4725 10.50375 L 5.4925 10.50375 L 5.4925 14.4675 \" transform=\"matrix(3.125,0,0,3.125,0,0)\"/>\\n      </g>'},oggIcon:{extension:\".ogg\",path:'<g id=\"surface9\" clip-path=\"url(#clip1)\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.621094 28.125 C 3.859375 28.125 0 31.984375 0 36.742188 L 0 41.378906 C 0 46.140625 3.859375 50 8.621094 50 L 41.378906 50 C 46.140625 50 50 46.140625 50 41.382812 L 50 36.746094 C 50 31.984375 46.140625 28.125 41.382812 28.125 Z M 8.621094 28.125 \"/>\\n      </g>\\n      </defs>\\n      <g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.578125 25 L 39.421875 25 C 41.53125 25 43.527344 25.492188 45.3125 26.367188 L 45.3125 15.367188 C 45.3125 13.90625 44.976562 13.097656 43.984375 12.109375 C 42.996094 11.121094 35.105469 3.226562 34.503906 2.628906 C 33.90625 2.027344 33.070312 1.5625 31.617188 1.5625 L 6.5625 1.5625 C 5.527344 1.5625 4.6875 2.402344 4.6875 3.4375 L 4.6875 26.367188 C 6.476562 25.492188 8.472656 25 10.578125 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.710938 L 42.164062 12.5 L 34.515625 12.5 C 34.464844 12.46875 34.414062 12.425781 34.375 12.390625 Z M 6.25 25.722656 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.25 13.980469 32.496094 15.210938 33.742188 15.539062 C 33.902344 15.59375 34.074219 15.625 34.257812 15.625 L 43.75 15.625 L 43.75 25.722656 C 44.859375 26.105469 45.910156 26.625 46.875 27.269531 L 46.875 15.363281 C 46.875 13.511719 46.375 12.289062 45.089844 11.003906 L 35.609375 1.523438 C 34.582031 0.496094 33.273438 0 31.617188 0 L 6.5625 0 C 4.667969 0 3.125 1.542969 3.125 3.4375 L 3.125 27.269531 C 4.089844 26.625 5.140625 26.105469 6.25 25.722656 Z M 6.25 25.722656 \"/>\\n      <use xlink:href=\"#surface9\" mask=\"url(#mask0)\"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 8.976562 47.070312 C 10.464844 47.070312 11.757812 46.75 12.859375 46.109375 C 13.960938 45.46875 14.808594 44.550781 15.40625 43.351562 C 16.003906 42.15625 16.304688 40.757812 16.304688 39.152344 C 16.304688 37.550781 16.007812 36.152344 15.417969 34.964844 C 14.828125 33.777344 13.980469 32.859375 12.882812 32.21875 C 11.78125 31.578125 10.480469 31.257812 8.976562 31.257812 C 7.472656 31.257812 6.167969 31.578125 5.0625 32.21875 C 3.953125 32.859375 3.101562 33.777344 2.511719 34.964844 C 1.921875 36.152344 1.625 37.550781 1.625 39.152344 C 1.625 40.757812 1.925781 42.15625 2.523438 43.351562 C 3.121094 44.550781 3.972656 45.46875 5.070312 46.109375 C 6.171875 46.75 7.472656 47.070312 8.976562 47.070312 Z M 8.976562 44.820312 C 7.546875 44.820312 6.433594 44.332031 5.640625 43.351562 C 4.847656 42.375 4.449219 40.976562 4.449219 39.152344 C 4.449219 37.332031 4.847656 35.933594 5.640625 34.964844 C 6.433594 33.996094 7.546875 33.507812 8.976562 33.507812 C 10.390625 33.507812 11.496094 33.996094 12.289062 34.964844 C 13.085938 35.933594 13.484375 37.332031 13.484375 39.152344 C 13.484375 40.976562 13.085938 42.375 12.289062 43.351562 C 11.496094 44.332031 10.390625 44.820312 8.976562 44.820312 Z M 26.410156 47.070312 C 27.125 47.070312 27.871094 47.011719 28.640625 46.898438 C 29.414062 46.78125 30.09375 46.621094 30.675781 46.414062 C 31.214844 46.242188 31.574219 46.015625 31.75 45.738281 C 31.921875 45.460938 32.011719 44.988281 32.011719 44.316406 L 32.011719 39.613281 C 32.011719 39.292969 31.910156 39.03125 31.703125 38.835938 C 31.5 38.640625 31.230469 38.539062 30.894531 38.539062 L 27.023438 38.539062 C 26.671875 38.539062 26.398438 38.628906 26.203125 38.804688 C 26.007812 38.976562 25.90625 39.226562 25.90625 39.546875 C 25.90625 39.867188 26.007812 40.117188 26.203125 40.289062 C 26.398438 40.464844 26.671875 40.554688 27.023438 40.554688 L 29.496094 40.554688 L 29.496094 44.425781 C 28.503906 44.703125 27.511719 44.839844 26.519531 44.839844 C 23.195312 44.839844 21.53125 42.945312 21.53125 39.152344 C 21.53125 37.300781 21.9375 35.90625 22.746094 34.964844 C 23.554688 34.023438 24.753906 33.554688 26.34375 33.554688 C 27.046875 33.554688 27.671875 33.644531 28.226562 33.828125 C 28.78125 34.007812 29.378906 34.324219 30.019531 34.777344 C 30.195312 34.894531 30.347656 34.980469 30.480469 35.03125 C 30.609375 35.082031 30.757812 35.105469 30.917969 35.105469 C 31.164062 35.105469 31.375 34.996094 31.550781 34.777344 C 31.726562 34.558594 31.8125 34.289062 31.8125 33.96875 C 31.8125 33.75 31.773438 33.558594 31.695312 33.398438 C 31.613281 33.238281 31.484375 33.078125 31.3125 32.917969 C 30 31.808594 28.3125 31.257812 26.257812 31.257812 C 24.710938 31.257812 23.371094 31.574219 22.234375 32.207031 C 21.09375 32.84375 20.214844 33.753906 19.597656 34.941406 C 18.976562 36.128906 18.667969 37.535156 18.667969 39.152344 C 18.667969 40.800781 18.976562 42.21875 19.597656 43.40625 C 20.214844 44.597656 21.109375 45.503906 22.277344 46.132812 C 23.441406 46.757812 24.820312 47.070312 26.410156 47.070312 Z M 42.445312 47.070312 C 43.160156 47.070312 43.902344 47.011719 44.675781 46.898438 C 45.449219 46.78125 46.128906 46.621094 46.710938 46.414062 C 47.25 46.242188 47.609375 46.015625 47.78125 45.738281 C 47.957031 45.460938 48.046875 44.988281 48.046875 44.316406 L 48.046875 39.613281 C 48.046875 39.292969 47.941406 39.03125 47.738281 38.835938 C 47.535156 38.640625 47.265625 38.539062 46.929688 38.539062 L 43.058594 38.539062 C 42.707031 38.539062 42.433594 38.628906 42.238281 38.804688 C 42.039062 38.976562 41.941406 39.226562 41.941406 39.546875 C 41.941406 39.867188 42.039062 40.117188 42.238281 40.289062 C 42.433594 40.464844 42.707031 40.554688 43.058594 40.554688 L 45.53125 40.554688 L 45.53125 44.425781 C 44.539062 44.703125 43.546875 44.839844 42.554688 44.839844 C 39.230469 44.839844 37.566406 42.945312 37.566406 39.152344 C 37.566406 37.300781 37.972656 35.90625 38.78125 34.964844 C 39.589844 34.023438 40.789062 33.554688 42.378906 33.554688 C 43.078125 33.554688 43.707031 33.644531 44.261719 33.828125 C 44.816406 34.007812 45.414062 34.324219 46.054688 34.777344 C 46.230469 34.894531 46.382812 34.980469 46.515625 35.03125 C 46.644531 35.082031 46.792969 35.105469 46.953125 35.105469 C 47.199219 35.105469 47.410156 34.996094 47.585938 34.777344 C 47.761719 34.558594 47.847656 34.289062 47.847656 33.96875 C 47.847656 33.75 47.808594 33.558594 47.726562 33.398438 C 47.648438 33.238281 47.519531 33.078125 47.34375 32.917969 C 46.03125 31.808594 44.347656 31.257812 42.292969 31.257812 C 40.746094 31.257812 39.40625 31.574219 38.265625 32.207031 C 37.128906 32.84375 36.25 33.753906 35.632812 34.941406 C 35.011719 36.128906 34.703125 37.535156 34.703125 39.152344 C 34.703125 40.800781 35.011719 42.21875 35.632812 43.40625 C 36.25 44.597656 37.144531 45.503906 38.3125 46.132812 C 39.476562 46.757812 40.855469 47.070312 42.445312 47.070312 Z M 42.445312 47.070312 \"/>\\n      </g>'},pdfIcon:{extension:\".pdf\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(99.607843%,99.607843%,99.607843%);fill-opacity:1;\" d=\"M 10.59375 25 L 39.4375 25 C 41.476562 25.003906 43.484375 25.472656 45.3125 26.375 L 45.3125 15.375 C 45.347656 14.191406 44.867188 13.054688 44 12.25 L 34.625 2.875 C 33.875 2.003906 32.773438 1.523438 31.625 1.5625 L 6.625 1.5625 C 5.589844 1.5625 4.75 2.402344 4.75 3.4375 L 4.75 26.375 C 6.566406 25.480469 8.566406 25.007812 10.59375 25 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 34.375 4.71875 L 42.15625 12.5 L 34.53125 12.5 C 34.480469 12.511719 34.425781 12.511719 34.375 12.5 Z M 6.25 25.71875 L 6.25 3.4375 C 6.25 3.265625 6.390625 3.125 6.5625 3.125 L 31.25 3.125 L 31.25 12.5 C 31.300781 13.980469 32.316406 15.253906 33.75 15.625 C 33.957031 15.675781 34.167969 15.675781 34.375 15.625 L 43.75 15.625 L 43.75 25.71875 C 44.859375 26.09375 45.910156 26.621094 46.875 27.28125 L 46.875 15.375 C 46.964844 13.722656 46.3125 12.117188 45.09375 11 L 35.71875 1.625 C 34.648438 0.523438 33.160156 -0.0664062 31.625 0 L 6.625 0 C 5.703125 -0.015625 4.8125 0.339844 4.152344 0.984375 C 3.496094 1.632812 3.125 2.515625 3.125 3.4375 L 3.125 27.28125 C 4.09375 26.625 5.144531 26.101562 6.25 25.71875 Z M 6.25 25.71875 \"/>\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 8.625 28.125 C 6.335938 28.117188 4.136719 29.023438 2.515625 30.640625 C 0.898438 32.261719 -0.0078125 34.460938 0 36.75 L 0 41.375 C 0 46.136719 3.863281 50 8.625 50 L 41.375 50 C 46.132812 49.984375 49.984375 46.132812 50 41.375 L 50 36.75 C 50 31.988281 46.136719 28.125 41.375 28.125 Z M 8.625 28.125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 14.40625 41.78125 L 12.09375 41.78125 L 12.09375 45.84375 C 12.003906 46.351562 11.5625 46.726562 11.046875 46.726562 C 10.53125 46.726562 10.089844 46.351562 10 45.84375 L 10 34.78125 C 10 34.210938 10.460938 33.75 11.03125 33.75 L 14.40625 33.75 C 15.925781 33.617188 17.390625 34.351562 18.191406 35.648438 C 18.992188 36.945312 18.992188 38.585938 18.191406 39.882812 C 17.390625 41.179688 15.925781 41.914062 14.40625 41.78125 Z M 12.09375 39.6875 L 14.40625 39.6875 C 15.152344 39.78125 15.882812 39.4375 16.289062 38.804688 C 16.691406 38.171875 16.691406 37.359375 16.289062 36.726562 C 15.882812 36.09375 15.152344 35.75 14.40625 35.84375 L 12.09375 35.84375 Z M 12.09375 39.6875 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 20.3125 45.84375 L 20.3125 34.78125 C 20.3125 34.210938 20.773438 33.75 21.34375 33.75 L 23.5625 33.75 C 27.1875 33.75 30.125 36.6875 30.125 40.3125 C 30.125 43.9375 27.1875 46.875 23.5625 46.875 L 21.34375 46.875 C 20.773438 46.875 20.3125 46.414062 20.3125 45.84375 Z M 22.40625 44.78125 L 23.5625 44.78125 C 26.03125 44.78125 28.03125 42.78125 28.03125 40.3125 C 28.03125 37.84375 26.03125 35.84375 23.5625 35.84375 L 22.40625 35.84375 Z M 22.40625 44.78125 \"/>\\n      <path style=\" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;\" d=\"M 33.1875 45.84375 L 33.1875 34.78125 C 33.183594 34.476562 33.3125 34.1875 33.542969 33.992188 C 33.769531 33.792969 34.074219 33.703125 34.375 33.75 L 40.625 33.75 C 41.132812 33.839844 41.507812 34.28125 41.507812 34.796875 C 41.507812 35.3125 41.132812 35.753906 40.625 35.84375 L 35.25 35.84375 L 35.25 39.28125 L 39.625 39.28125 C 40.195312 39.28125 40.65625 39.742188 40.65625 40.3125 C 40.65625 40.882812 40.195312 41.34375 39.625 41.34375 L 35.25 41.34375 L 35.25 45.84375 C 35.257812 46.359375 34.882812 46.796875 34.375 46.875 C 34.074219 46.921875 33.769531 46.832031 33.542969 46.632812 C 33.3125 46.4375 33.183594 46.148438 33.1875 45.84375 Z M 33.1875 45.84375 \"/>\\n      </g>'},defaultIcon:{extension:\".default\",path:'<g id=\"surface1\">\\n      <path style=\" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;\" d=\"M 3.117188 44.777344 C 1.394531 44.777344 0 43.386719 0 41.671875 L 0 3.484375 C 0 1.769531 1.394531 0.378906 3.117188 0.378906 L 25.792969 0.378906 C 27.164062 0.304688 28.5 0.808594 29.480469 1.765625 L 37.980469 10.230469 C 39.144531 11.242188 39.769531 12.730469 39.683594 14.265625 L 39.683594 41.671875 C 39.683594 43.386719 38.289062 44.777344 36.5625 44.777344 Z M 25.511719 3.203125 L 3.117188 3.203125 C 2.960938 3.203125 2.832031 3.328125 2.832031 3.484375 L 2.832031 41.671875 C 2.832031 41.828125 2.960938 41.957031 3.117188 41.957031 L 36.5625 41.957031 C 36.679688 41.949219 36.785156 41.867188 36.820312 41.757812 L 36.820312 14.492188 L 28.34375 14.492188 C 28.160156 14.539062 27.964844 14.539062 27.777344 14.492188 C 26.480469 14.15625 25.554688 13.007812 25.511719 11.671875 Z M 28.34375 4.640625 L 28.34375 11.671875 C 28.390625 11.683594 28.441406 11.683594 28.488281 11.671875 L 35.402344 11.671875 Z M 28.34375 4.640625 \"/>\\n      </g>'}},V.MODULES.modals=function(l){var a=l.$;l.shared.modals||(l.shared.modals={});var o,c=l.shared.modals;function e(){for(var e in c)if(Object.prototype.hasOwnProperty.call(c,e)){var t=c[e];t&&t.$modal&&t.$modal.removeData().remove()}o&&o.removeData().remove(),c={}}function s(e,t){if(c[e]){var n=c[e].$modal,r=n.data(\"instance\")||l;r.events.enableBlur(),n.hide(),o.hide(),a(r.o_doc).find(\"body\").first().removeClass(\"fr-prevent-scroll fr-mobile\"),n.removeClass(\"fr-active\"),t||(r.accessibility.restoreSelection(),r.events.trigger(\"modals.hide\"))}}function n(e){var t;if(\"string\"==typeof e){if(!c[e])return;t=c[e].$modal}else t=e;return t&&l.node.hasClass(t,\"fr-active\")&&l.core.sameInstance(t)||!1}return{_init:function t(){l.events.on(\"shared.destroy\",e,!0)},get:function r(e){return c[e]},create:function d(n,e,t){if(e='<div class=\"fr-modal-head-line\">'.concat(e,\"</div>\"),l.shared.$overlay||(l.shared.$overlay=a(l.doc.createElement(\"DIV\")).addClass(\"fr-overlay\"),a(\"body\").first().append(l.shared.$overlay)),o=l.shared.$overlay,l.opts.theme&&o.addClass(\"\".concat(l.opts.theme,\"-theme\")),!c[n]){var r=function i(e,t){var n='<div tabIndex=\"-1\" class=\"fr-modal'.concat(l.opts.theme?\" \".concat(l.opts.theme,\"-theme\"):\"\",'\"><div class=\"fr-modal-wrapper\">'),r='<button title=\"'.concat(l.language.translate(\"Cancel\"),'\" class=\"fr-command fr-btn fr-modal-close\"><svg xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 24 24\"><path d=\"').concat(V.SVG.close,'\"/></svg></button>');n+='<div class=\"fr-modal-head\">'.concat(e).concat(r,\"</div>\"),n+='<div tabIndex=\"-1\" class=\"fr-modal-body\">'.concat(t,\"</div>\"),n+=\"</div></div>\";var o=a(l.doc.createElement(\"DIV\"));return o.html(n),o.find(\"> .fr-modal\")}(e,t);c[n]={$modal:r,$head:r.find(\".fr-modal-head\"),$body:r.find(\".fr-modal-body\")},l.helpers.isMobile()||r.addClass(\"fr-desktop\"),a(\"body\").first().append(r),l.events.$on(r,\"click\",\".fr-modal-close\",function(){s(n)},!0),c[n].$body.css(\"margin-top\",c[n].$head.outerHeight()),l.events.$on(r,\"keydown\",function(e){var t=e.which;return t===V.KEYCODE.ESC?(s(n),l.accessibility.focusModalButton(r),!1):!(!a(e.currentTarget).is(\"input[type=text], textarea\")&&t!==V.KEYCODE.ARROW_UP&&t!==V.KEYCODE.ARROW_DOWN&&!l.keys.isBrowserAction(e)&&(e.preventDefault(),e.stopPropagation(),1))},!0),s(n,!0)}return c[n]},show:function i(e){if(c[e]){var t=c[e].$modal;t.data(\"instance\",l),t.show(),o.show(),a(l.o_doc).find(\"body\").first().addClass(\"fr-prevent-scroll\"),l.helpers.isMobile()&&a(l.o_doc).find(\"body\").first().addClass(\"fr-mobile\"),t.addClass(\"fr-active\"),l.accessibility.focusModal(t)}},hide:s,resize:function f(e){if(c[e]){var t=c[e],n=t.$modal,r=t.$body,o=l.o_win.innerHeight,i=n.find(\".fr-modal-wrapper\"),a=o-i.outerHeight(!0)+(i.height()-(r.outerHeight(!0)-r.height())),s=\"auto\";a<r.get(0).scrollHeight&&(s=a),r.height(s)}},isVisible:n,areVisible:function p(e){for(var t in c)if(Object.prototype.hasOwnProperty.call(c,t)&&n(t)&&(void 0===e||c[t].$modal.data(\"instance\")===e))return c[t].$modal;return!1}}},V.MODULES.position=function(L){var E=L.$;function o(){var e=L.selection.ranges(0),t=e.getBoundingClientRect();if(0===t.top&&0===t.left&&0===t.width||0===t.height){var n=!1,r=L.opts.toolbarInline&&e.startContainer&&e.startContainer.firstChild&&\"BR\"===e.startContainer.firstChild.tagName;0===L.$el.find(\".fr-marker\").length&&(r?E(e.startContainer.firstChild).after(V.MARKERS):L.selection.save(),n=!0);var o=L.$el.find(\".fr-marker\").first();o.css(\"display\",\"inline\"),o.css(\"line-height\",\"\");var i=o.offset(),a=o.outerHeight();o.css(\"display\",\"none\"),o.css(\"line-height\",0),(t={}).left=i&&i.left,t.width=0,t.height=a,t.top=i&&i.top-(L.helpers.isMobile()&&!L.helpers.isIOS()||L.opts.iframe?0:L.helpers.scrollTop()),o&&0<o.length&&(t.top-=E(o.get(0).parentNode).height()),t.right=1,t.bottom=1,t.ok=!0,n&&(r?L.$el.find(\".fr-marker\").remove():L.selection.restore())}return t}function i(e,t,n,r){var o=n.data(\"container\");if(!o||\"BODY\"===o.get(0).tagName&&\"static\"===o.css(\"position\")||(e&&(e-=o.offset().left),t&&(t-=o.offset().top),\"BODY\"!==o.get(0).tagName?(e&&(e+=o.get(0).scrollLeft),t&&(t+=o.get(0).scrollTop)):\"absolute\"===o.css(\"position\")&&(e&&(e+=o.position().left),t&&(t+=o.position().top))),L.opts.iframe&&o&&L.$tb&&o.get(0)!==L.$tb.get(0)){var i=L.helpers.getPX(L.$wp.find(\".fr-iframe\").css(\"padding-top\")),a=L.helpers.getPX(L.$wp.find(\".fr-iframe\").css(\"padding-left\"));e&&(e+=L.$iframe.offset().left+a),t&&(t+=L.$iframe.offset().top+i)}var s=function l(e,t){var n=e.outerWidth(!0);return t+n>L.$sc.get(0).clientWidth-10&&(t=L.$sc.get(0).clientWidth-n-10),t<0&&(t=10),t}(n,e);e&&n.css(\"left\",s),t&&n.css(\"top\",function c(e,t,n){var r=e.outerHeight(!0);if(!L.helpers.isMobile()&&L.$tb&&e.parent().get(0)!==L.$tb.get(0)){var o=e.parent().offset().top,i=t-r-(n||0);e.parent().get(0)===L.$sc.get(0)&&(o-=e.parent().position().top);var a=L.$sc.get(0).clientHeight;o+t+r>L.$sc.offset().top+a&&0<e.parent().offset().top+i&&0<i?i>L.$wp.scrollTop()&&(t=i,e.addClass(\"fr-above\")):e.removeClass(\"fr-above\")}return t}(n,t,r))}function a(e){var n=E(e),t=n.is(\".fr-sticky-on\"),r=n.data(\"sticky-top\"),o=n.data(\"sticky-scheduled\");if(void 0===r){n.data(\"sticky-top\",0);var i=E('<div class=\"fr-sticky-dummy\" style=\"height: '.concat(n.outerHeight(),'px;\"></div>'));L.$box.prepend(i)}else L.$box.find(\".fr-sticky-dummy\").css(\"height\",n.outerHeight());if(L.core.hasFocus()||0<L.$tb.findVisible(\"input:focus\").length){var a=L.helpers.scrollTop(),s=Math.min(Math.max(a-L.$tb.parent().offset().top,0),L.$tb.parent().outerHeight()-n.outerHeight());if(s!==r&&s!==o&&(clearTimeout(n.data(\"sticky-timeout\")),n.data(\"sticky-scheduled\",s),n.outerHeight()<a-L.$tb.parent().offset().top&&n.addClass(\"fr-opacity-0\"),n.data(\"sticky-timeout\",setTimeout(function(){var e=L.helpers.scrollTop(),t=Math.min(Math.max(e-L.$tb.parent().offset().top,0),L.$tb.parent().outerHeight()-n.outerHeight());0<t&&\"BODY\"===L.$tb.parent().get(0).tagName&&(t+=L.$tb.parent().position().top),t!==r&&(n.css(\"top\",Math.max(t,0)),n.data(\"sticky-top\",t),n.data(\"sticky-scheduled\",t)),n.removeClass(\"fr-opacity-0\")},100))),!t){var l=L.$tb.parent(),c=l.get(0).offsetWidth-l.get(0).clientWidth;n.css(\"top\",\"0\"),n.width(l.width()-c),n.addClass(\"fr-sticky-on\"),L.$box.addClass(\"fr-sticky-box\")}}else clearTimeout(E(e).css(\"sticky-timeout\")),n.css(\"top\",\"0\"),n.css(\"position\",\"\"),n.css(\"width\",\"\"),n.data(\"sticky-top\",0),n.removeClass(\"fr-sticky-on\"),L.$box.removeClass(\"fr-sticky-box\")}function t(e){if(e.offsetWidth){var t=E(e),n=t.outerHeight(),r=t.data(\"sticky-position\"),o=E(\"body\"===L.opts.scrollableContainer?L.o_win:L.opts.scrollableContainer).outerHeight(),i=0,a=0;\"body\"!==L.opts.scrollableContainer&&(i=L.$sc.offset().top,a=E(L.o_win).outerHeight()-i-o);var s=\"body\"===L.opts.scrollableContainer?L.helpers.scrollTop():i,l=t.is(\".fr-sticky-on\");t.data(\"sticky-parent\")||t.data(\"sticky-parent\",t.parent());var c=t.data(\"sticky-parent\"),d=c.offset().top,f=c.outerHeight();if(t.data(\"sticky-offset\")?L.$box.find(\".fr-sticky-dummy\").css(\"height\",\"\".concat(n,\"px\")):(t.data(\"sticky-offset\",!0),t.after('<div class=\"fr-sticky-dummy\" style=\"height: '.concat(n,'px;\"></div>'))),!r){var p=\"auto\"!==t.css(\"top\")||\"auto\"!==t.css(\"bottom\");p||t.css(\"position\",\"fixed\"),r={top:L.node.hasClass(t.get(0),\"fr-top\"),bottom:L.node.hasClass(t.get(0),\"fr-bottom\")},p||t.css(\"position\",\"\"),t.data(\"sticky-position\",r),t.data(\"top\",L.node.hasClass(t.get(0),\"fr-top\")?t.css(\"top\"):\"auto\"),t.data(\"bottom\",L.node.hasClass(t.get(0),\"fr-bottom\")?t.css(\"bottom\"):\"auto\")}var h=L.helpers.getPX(t.data(\"top\")),u=L.helpers.getPX(t.data(\"bottom\")),g=r.top&&function v(){return d<s+h&&s+h<=d+f-n}()&&(L.helpers.isInViewPort(L.$sc.get(0))||\"body\"===L.opts.scrollableContainer),C=r.bottom&&function b(){return d+n<s+o-u&&s+o-u<d+f}();if(g||C){var m=c.get(0).offsetWidth-c.get(0).clientWidth;t.css(\"width\",\"\".concat(c.get(0).getBoundingClientRect().width-m,\"px\")),l||(t.addClass(\"fr-sticky-on\"),t.removeClass(\"fr-sticky-off\"),t.css(\"top\")&&(\"auto\"!==t.data(\"top\")?t.css(\"top\",L.helpers.getPX(t.data(\"top\"))+i):t.data(\"top\",\"auto\")),t.css(\"bottom\")&&(\"auto\"!==t.data(\"bottom\")?t.css(\"bottom\",L.helpers.getPX(t.data(\"bottom\"))+a):t.css(\"bottom\",\"auto\")))}else L.node.hasClass(t.get(0),\"fr-sticky-off\")||(t.css(\"width\",\"\"),t.removeClass(\"fr-sticky-on\"),t.addClass(\"fr-sticky-off\"),t.css(\"top\")&&\"auto\"!==t.data(\"top\")&&r.top&&t.css(\"top\",0),t.css(\"bottom\")&&\"auto\"!==t.data(\"bottom\")&&r.bottom&&t.css(\"bottom\",0))}}function s(){if(L.helpers.requestAnimationFrame()(s),!1!==L.events.trigger(\"position.refresh\"))for(var e=0;e<L._stickyElements.length;e++)if(L.opts.toolbarBottom){var t=L.$tb.parent(),n=t.get(0).offsetWidth-t.get(0).clientWidth,r=E(L._stickyElements[e]);r.width(t.width()-n),r.addClass(\"fr-sticky-on\"),L.$box.addClass(\"fr-sticky-box\")}else a(L._stickyElements[e])}function n(){if(L.opts.toolbarSticky&&setTimeout(function(){if(L.$tb&&0<L.$tb.length){var e=E(L.$tb[0]);if(e.data(\"sticky-parent\")||e.data(\"sticky-parent\",e.parent()),0<document.getElementsByTagName(\"BODY\")[0].querySelectorAll(\"div.modal\").length)e.is(\".fr-sticky-on\")||(L.$box.find(\".fr-sticky-dummy\").remove(),e.addClass(\"fr-sticky-on\"),e.removeClass(\"fr-sticky-off\"))}},0),L._stickyElements)for(var e=0;e<L._stickyElements.length;e++)t(L._stickyElements[e])}return{_init:function r(){!function e(){L._stickyElements=[],L.helpers.isIOS()?(s(),L.events.$on(E(L.o_win),\"scroll\",function(){if(L.core.hasFocus())for(var e=0;e<L._stickyElements.length;e++){var t=E(L._stickyElements[e]),n=t.parent(),r=L.helpers.scrollTop();t.outerHeight()<r-n.offset().top&&(L.opts.toolbarBottom&&L.helpers.isIOS()||(t.addClass(\"fr-opacity-0\"),t.data(\"sticky-top\",-1),t.data(\"sticky-scheduled\",-1)))}},!0)):(\"body\"!==L.opts.scrollableContainer&&L.events.$on(E(L.opts.scrollableContainer),\"scroll\",n,!0),L.events.$on(E(L.o_win),\"scroll\",n,!0),L.events.$on(E(L.o_win),\"resize\",n,!0),L.events.on(\"initialized\",n),L.events.on(\"focus\",n),L.events.$on(E(L.o_win),\"resize\",\"textarea\",n,!0)),L.events.on(\"destroy\",function(){L._stickyElements=[]})}()},forSelection:function l(e){var t=o();if(t.top!=undefined){e.css({top:0,left:0});var n=t.top+t.height,r=t.left+t.width/2-e.get(0).offsetWidth/2+L.helpers.scrollLeft();L.opts.iframe||(n+=L.helpers.scrollTop()),i(r,n,e,t.height)}},addSticky:function c(e){e.addClass(\"fr-sticky\"),L.helpers.isIOS()&&!L.opts.toolbarBottom&&e.addClass(\"fr-sticky-ios\"),e.removeClass(\"fr-sticky\"),L._stickyElements.push(e.get(0))},refresh:n,at:i,getBoundingRect:o}},V.MODULES.refresh=function(l){var c=l.$;function i(e,t){e.toggleClass(\"fr-disabled\",t).attr(\"aria-disabled\",t)}function e(e){var t=l.$tb.find('.fr-more-toolbar[data-name=\"'.concat(e.attr(\"data-group-name\"),'\"]')),n=function s(e,t){var n=0,r=t.find(\"> .fr-command, > .fr-btn-wrap\");r.each(function(e,t){n+=c(t).outerWidth()});var o,i=l.helpers.getPX(c(r[0]).css(\"margin-left\")),a=l.helpers.getPX(c(r[0]).css(\"margin-right\"));o=\"rtl\"===l.opts.direction?l.$tb.outerWidth()-e.offset().left+l.$tb.offset().left-(n+e.outerWidth()+r.length*(i+a))/2:e.offset().left-l.$tb.offset().left-(n-e.outerWidth()+r.length*(i+a))/2;o+n+r.length*(i+a)>l.$tb.outerWidth()&&(o-=(n+r.length*(i+a)-e.outerWidth())/2);o<0&&(o=0);return o}(e,t);\"rtl\"===l.opts.direction?t.css(\"padding-right\",n):t.css(\"padding-left\",n)}return{undo:function t(e){i(e,!l.undo.canDo())},redo:function n(e){i(e,!l.undo.canRedo())},outdent:function a(e){if(l.node.hasClass(e.get(0),\"fr-no-refresh\"))return!1;if(c(\"button#markdown-\".concat(l.id,\".fr-active\")).length)return!1;for(var t=l.selection.blocks(),n=0;n<t.length;n++){var r=\"rtl\"===l.opts.direction||\"rtl\"===c(t[n]).css(\"direction\")?\"margin-right\":\"margin-left\",o=t[0].parentElement;if([\"HTML\",\"P\",\"DIV\",\"UL\",\"OL\",\"LI\",\"TR\",\"BLOCKQUOTE\",\"BODY\"].indexOf(o.parentNode.tagName)<0)return i(e,!0),!0;if(t[0].previousSibling&&\"none\"==o.parentNode.style.listStyleType)return i(e,!0),!0;if(\"LI\"===t[n].tagName||\"LI\"===t[n].parentNode.tagName)return i(e,!1),!0;if(0<l.helpers.getPX(c(t[n]).css(r)))return i(e,!1),!0}i(e,!0)},indent:function o(e){if(l.node.hasClass(e.get(0),\"fr-no-refresh\"))return!1;if(c(\"button#markdown-\".concat(l.id,\".fr-active\")).length)return!1;for(var t=l.selection.blocks(),n=0;n<t.length;n++){for(var r=t[n].previousSibling;r&&r.nodeType===Node.TEXT_NODE&&0===r.textContent.length;)r=r.previousSibling;if(\"LI\"!==t[n].tagName||r)return i(e,!1),!0;i(e,!0)}},moreText:e,moreParagraph:e,moreMisc:e,moreRich:e}},Object.assign(V.DEFAULTS,{attribution:!0,toolbarBottom:!1,toolbarButtons:null,toolbarButtonsXS:null,toolbarButtonsSM:null,toolbarButtonsMD:null,toolbarContainer:null,toolbarInline:!1,toolbarSticky:!0,toolbarStickyOffset:0,toolbarVisibleWithoutSelection:!1}),V.TOOLBAR_BUTTONS={moreText:{buttons:[\"bold\",\"italic\",\"underline\",\"strikeThrough\",\"subscript\",\"superscript\",\"fontFamily\",\"fontSize\",\"textColor\",\"backgroundColor\",\"inlineClass\",\"inlineStyle\",\"clearFormatting\"]},moreParagraph:{buttons:[\"alignLeft\",\"alignCenter\",\"formatOLSimple\",\"alignRight\",\"alignJustify\",\"formatOL\",\"formatUL\",\"paragraphFormat\",\"paragraphStyle\",\"lineHeight\",\"outdent\",\"indent\",\"quote\"]},moreRich:{buttons:[\"trackChanges\",\"markdown\",\"insertLink\",\"insertFiles\",\"insertImage\",\"insertVideo\",\"insertTable\",\"emoticons\",\"fontAwesome\",\"specialCharacters\",\"embedly\",\"insertFile\",\"insertHR\"],buttonsVisible:4},moreMisc:{buttons:[\"undo\",\"redo\",\"fullscreen\",\"print\",\"getPDF\",\"spellChecker\",\"selectAll\",\"html\",\"help\"],align:\"right\",buttonsVisible:2},trackChanges:{buttons:[\"showChanges\",\"applyAll\",\"removeAll\",\"applyLast\",\"removeLast\"],buttonsVisible:0}},V.TOOLBAR_BUTTONS_MD=null,(V.TOOLBAR_BUTTONS_SM={}).moreText=Object.assign({},V.TOOLBAR_BUTTONS.moreText,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_SM.moreParagraph=Object.assign({},V.TOOLBAR_BUTTONS.moreParagraph,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_SM.moreRich=Object.assign({},V.TOOLBAR_BUTTONS.moreRich,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_SM.moreMisc=Object.assign({},V.TOOLBAR_BUTTONS.moreMisc,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_SM.trackChanges=Object.assign({},V.TOOLBAR_BUTTONS.trackChanges,{buttonsVisible:0}),(V.TOOLBAR_BUTTONS_XS={}).moreText=Object.assign({},V.TOOLBAR_BUTTONS.moreText,{buttonsVisible:0}),V.TOOLBAR_BUTTONS_XS.moreParagraph=Object.assign({},V.TOOLBAR_BUTTONS.moreParagraph,{buttonsVisible:0}),V.TOOLBAR_BUTTONS_XS.moreRich=Object.assign({},V.TOOLBAR_BUTTONS.moreRich,{buttonsVisible:0}),V.TOOLBAR_BUTTONS_XS.moreMisc=Object.assign({},V.TOOLBAR_BUTTONS.moreMisc,{buttonsVisible:2}),V.TOOLBAR_BUTTONS_XS.trackChanges=Object.assign({},V.TOOLBAR_BUTTONS.trackChanges,{buttonsVisible:0}),V.POWERED_BY='<a id=\"fr-logo\" href=\"https://froala.com/wysiwyg-editor\" target=\"_blank\" title=\"Froala WYSIWYG HTML Editor\"><span>Powered by</span><svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 822.8 355.33\"><defs><style>.fr-logo{fill:#b1b2b7;}</style></defs><title>Froala</title><path class=\"fr-logo\" d=\"M123.58,78.65A16.16,16.16,0,0,0,111.13,73H16.6C7.6,73,0,80.78,0,89.94V128.3a16.45,16.45,0,0,0,32.9,0V104.14h78.5A15.63,15.63,0,0,0,126.87,91.2,15.14,15.14,0,0,0,123.58,78.65Z\"/><path class=\"fr-logo\" d=\"M103.54,170a16.05,16.05,0,0,0-11.44-4.85H15.79A15.81,15.81,0,0,0,0,180.93v88.69a16.88,16.88,0,0,0,5,11.92,16,16,0,0,0,11.35,4.7h.17a16.45,16.45,0,0,0,16.41-16.6v-73.4H92.2A15.61,15.61,0,0,0,107.89,181,15.1,15.1,0,0,0,103.54,170Z\"/><path class=\"fr-logo\" d=\"M233,144.17c-5.29-6.22-16-7.52-24.14-7.52-16.68,0-28.72,7.71-36.5,23.47v-5.67a16.15,16.15,0,1,0-32.3,0v115.5a16.15,16.15,0,1,0,32.3,0v-38.7c0-19.09,3.5-63.5,35.9-63.5a44.73,44.73,0,0,1,5.95.27h.12c12.79,1.2,20.06-2.73,21.6-11.69C236.76,151.48,235.78,147.39,233,144.17Z\"/><path class=\"fr-logo\" d=\"M371.83,157c-13.93-13.11-32.9-20.33-53.43-20.33S279,143.86,265.12,157c-14.67,13.88-22.42,32.82-22.42,54.77,0,21.68,8,41.28,22.4,55.2,13.92,13.41,32.85,20.8,53.3,20.8s39.44-7.38,53.44-20.79c14.55-13.94,22.56-33.54,22.56-55.21S386.39,170.67,371.83,157Zm-9.73,54.77c0,25.84-18.38,44.6-43.7,44.6s-43.7-18.76-43.7-44.6c0-25.15,18.38-43.4,43.7-43.4S362.1,186.59,362.1,211.74Z\"/><path class=\"fr-logo\" d=\"M552.7,138.14a16.17,16.17,0,0,0-16,16.3v1C526.41,143.85,509,136.64,490,136.64c-19.83,0-38.19,7.24-51.69,20.4C424,171,416.4,190,416.4,212c0,21.61,7.78,41.16,21.9,55,13.56,13.33,31.92,20.67,51.7,20.67,18.83,0,36.29-7.41,46.7-19.37v1.57a16.15,16.15,0,1,0,32.3,0V154.44A16.32,16.32,0,0,0,552.7,138.14Zm-16.3,73.6c0,30.44-22.81,44.3-44,44.3-24.57,0-43.1-19-43.1-44.3s18.13-43.4,43.1-43.4C513.73,168.34,536.4,183.55,536.4,211.74Z\"/><path class=\"fr-logo\" d=\"M623.5,61.94a16.17,16.17,0,0,0-16,16.3v191.7a16.15,16.15,0,1,0,32.3,0V78.24A16.32,16.32,0,0,0,623.5,61.94Z\"/><path class=\"fr-logo\" d=\"M806.5,138.14a16.17,16.17,0,0,0-16,16.3v1c-10.29-11.63-27.74-18.84-46.7-18.84-19.83,0-38.19,7.24-51.69,20.4-14.33,14-21.91,33-21.91,55,0,21.61,7.78,41.16,21.9,55,13.56,13.33,31.92,20.67,51.7,20.67,18.83,0,36.29-7.41,46.7-19.37v1.57a16.15,16.15,0,1,0,32.3,0V154.44A16.32,16.32,0,0,0,806.5,138.14Zm-16.3,73.6c0,30.44-22.81,44.3-44,44.3-24.57,0-43.1-19-43.1-44.3s18.13-43.4,43.1-43.4C767.53,168.34,790.2,183.55,790.2,211.74Z\"/></svg></a>',V.MODULES.toolbar=function(E){var y,S=E.$,t=[];function e(e){var n={};if(Array.isArray(e)){if(!Array.isArray(e[0])){for(var t=[],r=[],o=0;o<e.length;o++)\"|\"===e[o]||\"-\"===e[o]?(0<r.length&&t.push(r),r=[]):r.push(e[o]);0<r.length&&t.push(r),e=t}e.forEach(function(e,t){n[\"group\".concat(t+1)]={buttons:e}}),n.showMoreButtons=!1}else\"object\"!==M(e)||Array.isArray(e)||((n=e).showMoreButtons=!0);return n}function N(){var e=E.helpers.screenSize();return t[y=e]}function T(){for(var e=E.$tb.find(\".fr-more-toolbar\"),t=0;t<e.length;t++){var c=S(e[t]);c.hasClass(\"fr-expanded\")?function(){var n=E.helpers.getPX(c.css(\"padding-left\")),e=c.find(\"> .fr-command, > .fr-btn-wrap\"),t=S(e[0]),r=E.helpers.getPX(t.css(\"margin-left\")),o=E.helpers.getPX(t.css(\"margin-right\")),i=E.helpers.getPX(t.css(\"margin-top\")),a=E.helpers.getPX(t.css(\"margin-bottom\"));if(e.each(function(e,t){n+=S(t).outerWidth()+r+o}),E.$tb.outerWidth()<n){var s=Math.floor(n/E.$tb.outerWidth());n+=s*(n/c[0].childElementCount),s=Math.ceil(n/E.$tb.outerWidth());var l=(E.helpers.getPX(t.css(\"height\"))+i+a)*s;c.css(\"height\",l)}}():c.css(\"height\",\"\")}!E.helpers.isMobile()&&E.opts.toolbarBottom?E.$tb.find(\".fr-toolbar .fr-more-toolbar\").removeClass(\"position-relative\"):E.$tb.find(\".fr-toolbar .fr-more-toolbar\").addClass(\"position-relative\")}function o(){if(0==E.$tb.find(\"[data-name='trackChanges-\".concat(E.id,\"']\")).length&&-1<E.opts.pluginsEnabled.indexOf(\"track_changes\")){E.$tb.append(S('<div class=\"fr-more-toolbar\"></div>').data(\"name\",\"trackChanges-\".concat(E.id)));for(var e=0,t=[\"showChanges\",\"applyAll\",\"removeAll\",\"applyLast\",\"removeLast\"];e<t.length;e++){var n=t[e],r=V.COMMANDS[n];if(r){r.more_btn=!0;var o=S(E.button.build(n,r,!0));E.button.addButtons(o),E.$tb.find(\"[data-name='trackChanges-\".concat(E.id,\"']\")).append(o)}}}if(y!==E.helpers.screenSize()){var i=N(),a=S(),s=S();for(var l in E.$tb.find(\".fr-btn-grp > .fr-command, .fr-more-toolbar > .fr-command, .fr-btn-grp > .fr-btn-wrap > .fr-command, .fr-more-toolbar > .fr-btn-wrap > .fr-command\").addClass(\"fr-hidden\"),function L(){for(var t=E.$tb.find(\".fr-btn-grp, .fr-more-toolbar\"),r=function r(e){var n=S(t[e]);n.children().each(function(e,t){n.before(t)}),n.remove()},e=0;e<t.length;e++)r(e)}(),i){var c=i[l];if(c.buttons&&(\"trackChanges\"!==l||-1!==E.opts.pluginsEnabled.indexOf(\"track_changes\"))){var d=void 0,f=0,p=3,h=void 0;\"trackChanges\"!==l&&(h=S('<div class=\"fr-btn-grp fr-float-'.concat(i[l].align?i[l].align:\"left\",'\"></div>'))),i.showMoreButtons&&(d=S('<div class=\"fr-more-toolbar\"></div>').data(\"name\",\"\".concat(l,\"-\").concat(E.id)),\"trackChanges\"!==l&&\"moreRich\"!==l||!E.opts.trackChangesEnabled||d.addClass(\"fr-expanded\"));for(var u=0;u<c.buttons.length;u++){c.buttonsVisible!==undefined&&(p=c.buttonsVisible);var g=E.$tb.find('> .fr-command[data-cmd=\"'+c.buttons[u]+'\"], > div.fr-btn-wrap > .fr-command[data-cmd=\"'+c.buttons[u]+'\"]'),C=null;E.node.hasClass(g.next().get(0),\"fr-dropdown-menu\")&&(C=g.next()),E.node.hasClass(g.next().get(0),\"fr-options\")&&(g.removeClass(\"fr-hidden\"),g.next().removeClass(\"fr-hidden\"),g=g.parent()),g.removeClass(\"fr-hidden\"),i.showMoreButtons&&p<=f?(d.append(g),C&&d.append(C)):(h.append(g),C&&h.append(C)),f++}if(i.showMoreButtons&&p<f){var m=E.$tb.find('.fr-command[data-cmd=\"'.concat(l,'\"]'));if(0<m.length)m.removeClass(\"fr-hidden fr-open\");else{var v=l,b=V.COMMANDS[v];b&&(b.more_btn=!0,m=S(E.button.build(v,b,!0)),E.button.addButtons(m))}h&&h.append(m)}h&&a.push(h),i.showMoreButtons&&s.push(d)}}E.opts.toolbarBottom?(E.$tb.append(s),E.$tb.find(\".fr-newline\").remove(),E.$tb.append('<div class=\"fr-newline\"></div>'),E.$tb.append(a)):(E.$tb.append(a),E.$tb.find(\".fr-newline\").remove(),E.$tb.append('<div class=\"fr-newline\"></div>'),E.$tb.append(s)),E.$tb.removeClass(\"fr-toolbar-open\"),E.$box.removeClass(\"fr-toolbar-open\"),E.events.trigger(\"codeView.toggle\")}T()}function n(e,t){setTimeout(function(){if((!e||e.which!=V.KEYCODE.ESC)&&E.selection.inEditor()&&E.core.hasFocus()&&!E.popups.areVisible()&&\"false\"!=S(E.selection.blocks()[0]).closest(\"table\").attr(\"contenteditable\")&&(E.opts.toolbarVisibleWithoutSelection||!E.selection.isCollapsed()&&!E.keys.isIME()||t)){if(E.$tb.data(\"instance\",E),!1===E.events.trigger(\"toolbar.show\",[e]))return;E.$tb.show(),E.opts.toolbarContainer||E.position.forSelection(E.$tb),1<E.opts.zIndex?E.$tb.css(\"z-index\",E.opts.zIndex+1):E.$tb.css(\"z-index\",null)}},0)}function i(e){return(!e||\"blur\"!==e.type||document.activeElement!==E.el)&&(!(!e||\"keydown\"!==e.type||!E.keys.ctrlKey(e))||(!!E.button.getButtons(\".fr-dropdown.fr-active\").next().find(E.o_doc.activeElement).length||(E.helpers.isMobile()&&E.opts.toolbarInline&&(E.$tb.find(\".fr-expanded\").toggleClass(\"fr-expanded\"),E.$tb.find(\".fr-open\").removeClass(\"fr-open\"),E.$tb.removeClass(\"fr-toolbar-open\"),T()),void(!1!==E.events.trigger(\"toolbar.hide\")&&E.$tb.hide()))))}t[V.XS]=e(E.opts.toolbarButtonsXS||E.opts.toolbarButtons||V.TOOLBAR_BUTTONS_XS||V.TOOLBAR_BUTTONS||[]),t[V.SM]=e(E.opts.toolbarButtonsSM||E.opts.toolbarButtons||V.TOOLBAR_BUTTONS_SM||V.TOOLBAR_BUTTONS||[]),t[V.MD]=e(E.opts.toolbarButtonsMD||E.opts.toolbarButtons||V.TOOLBAR_BUTTONS_MD||V.TOOLBAR_BUTTONS||[]),t[V.LG]=e(E.opts.toolbarButtons||V.TOOLBAR_BUTTONS||[]);var r=null;function a(e){clearTimeout(r),e&&e.which===V.KEYCODE.ESC||(r=setTimeout(n,E.opts.typingTimer))}function s(){E.events.on(\"window.mousedown\",i),E.events.on(\"keydown\",i),E.events.on(\"blur\",i),E.events.$on(E.$tb,\"transitionend\",\".fr-more-toolbar\",function(){E.position.forSelection(E.$tb)}),E.helpers.isMobile()||E.events.on(\"window.mouseup\",n),E.helpers.isMobile()?E.helpers.isIOS()||(E.events.on(\"window.touchend\",n),E.browser.mozilla&&setInterval(n,200)):E.events.on(\"window.keyup\",a),E.events.on(\"keydown\",function(e){e&&e.which===V.KEYCODE.ESC&&E.events.trigger(\"toolbar.esc\")}),E.events.on(\"keydown\",function(e){if(e.which===V.KEYCODE.ALT)return e.stopPropagation(),!1},!0),E.events.$on(E.$wp,\"scroll.toolbar\",n),E.events.on(\"commands.after\",n),E.helpers.isMobile()&&(E.events.$on(E.$doc,\"selectionchange\",a),E.events.$on(E.$doc,\"orientationchange\",n))}function l(){E.$tb.html(\"\").removeData().remove(),E.$tb=null,E.$second_tb&&(E.$second_tb.html(\"\").removeData().remove(),E.$second_tb=null)}function c(){E.$box.removeClass(\"fr-top fr-bottom fr-inline fr-basic\"),E.$box.find(\".fr-sticky-dummy\").remove()}function d(){E.opts.theme&&E.$tb.addClass(\"\".concat(E.opts.theme,\"-theme\")),1<E.opts.zIndex&&E.$tb.css(\"z-index\",E.opts.zIndex+1),\"auto\"!==E.opts.direction&&E.$tb.removeClass(\"fr-ltr fr-rtl\").addClass(\"fr-\".concat(E.opts.direction)),E.helpers.isMobile()?E.$tb.addClass(\"fr-mobile\"):E.$tb.addClass(\"fr-desktop\"),E.opts.toolbarContainer?(E.opts.toolbarInline&&(s(),i()),E.opts.toolbarBottom?E.$tb.addClass(\"fr-bottom\"):E.$tb.addClass(\"fr-top\")):function e(){E.opts.toolbarInline?(E.$sc.append(E.$tb),E.$tb.data(\"container\",E.$sc),E.$tb.addClass(\"fr-inline\"),s(),E.opts.toolbarBottom=!1):(E.opts.toolbarBottom?(E.$box.append(E.$tb),E.$tb.addClass(\"fr-bottom\"),E.$box.addClass(\"fr-bottom\")):(E.opts.toolbarBottom=!1,E.$box.prepend(E.$tb),E.$tb.addClass(\"fr-top\"),E.$box.addClass(\"fr-top\")),E.$tb.addClass(\"fr-basic\"),E.opts.toolbarSticky&&(E.opts.toolbarStickyOffset&&(E.opts.toolbarBottom?E.$tb.css(\"bottom\",E.opts.toolbarStickyOffset):E.$tb.css(\"top\",E.opts.toolbarStickyOffset)),E.position.addSticky(E.$tb)))}(),function t(){var e=E.button.buildGroup(N());E.$tb.append(e),T(),E.button.bindCommands(E.$tb)}(),function r(){E.events.$on(S(E.o_win),\"resize\",o),E.events.$on(S(E.o_win),\"orientationchange\",o),E.opts.toolbarButtons&&-1<JSON.stringify(E.opts.toolbarButtons).indexOf(\"trackChanges\")&&o();var e=E.$tb.find(\".fr-more-toolbar[data-name=trackChanges-\".concat(E.id,\"]\")),t=0!==e.length&&e.hasClass(\"fr-expanded\");if(E.opts.trackChangesEnabled&&!t){var n=E.$tb.find(\".fr-command.fr-btn[data-cmd=trackChanges\");e.addClass(\"fr-expanded\"),n.toggleClass(\"fr-open\"),E.toolbar.enable()}}(),E.accessibility.registerToolbar(E.$tb),E.events.$on(E.$tb,\"\".concat(E._mousedown,\" \").concat(E._mouseup),function(e){var t=e.originalEvent?e.originalEvent.target||e.originalEvent.originalTarget:null;if(t&&\"INPUT\"!==t.tagName&&!E.edit.isDisabled())return e.stopPropagation(),e.preventDefault(),!1},!0),E.helpers.isMobile()&&E.events.$on(E.$tb,\"click\",function(){E.popups.areVisible().length||E.id!==E.shared.selected_editor&&E.shared.selected_editor||E.$el.focus()}),E.events.$on(E.$tb,\"transitionend\",\".fr-more-toolbar\",function(){E.$box.hasClass(\"fr-fullscreen\")&&(E.opts.height=E.o_win.innerHeight-(E.opts.toolbarInline?0:E.$tb.outerHeight()+(E.$second_tb?E.$second_tb.outerHeight():0)),E.size.refresh())})}var f=!1;return{_init:function p(){if(E.$sc=S(E.opts.scrollableContainer).first(),!E.$wp)return!1;E.opts.toolbarInline||E.opts.toolbarBottom||(E.$second_tb=S(E.doc.createElement(\"div\")).attr(\"class\",\"fr-second-toolbar\"),E.$box.append(E.$second_tb),(!1!==E.ul||E.opts.attribution)&&E.$second_tb.prepend(V.POWERED_BY)),E.opts.toolbarContainer?(E.shared.$tb?(E.$tb=E.shared.$tb,E.opts.toolbarInline&&s()):(E.shared.$tb=S(E.doc.createElement(\"DIV\")),E.shared.$tb.addClass(\"fr-toolbar\"),E.$tb=E.shared.$tb,S(E.opts.toolbarContainer).append(E.$tb),d(),E.$tb.data(\"instance\",E)),E.opts.toolbarInline?E.$box.addClass(\"fr-inline\"):E.$box.addClass(\"fr-basic\"),E.events.on(\"focus\",function(){E.$tb.data(\"instance\",E)},!0),E.opts.toolbarInline=!1):E.opts.toolbarInline?(E.$box.addClass(\"fr-inline\"),E.shared.$tb?(E.$tb=E.shared.$tb,s()):(E.shared.$tb=S(E.doc.createElement(\"DIV\")),E.shared.$tb.addClass(\"fr-toolbar\"),E.$tb=E.shared.$tb,d())):(E.$box.addClass(\"fr-basic\"),E.$tb=S(E.doc.createElement(\"DIV\")),E.$tb.addClass(\"fr-toolbar\"),d(),E.$tb.data(\"instance\",E)),E.events.on(\"destroy\",c,!0),E.events.on(E.opts.toolbarInline||E.opts.toolbarContainer?\"shared.destroy\":\"destroy\",l,!0),E.events.on(\"edit.on\",function(){E.$tb.removeClass(\"fr-disabled\").removeAttr(\"aria-disabled\")}),E.events.on(\"edit.off\",function(){E.$tb.addClass(\"fr-disabled\").attr(\"aria-disabled\",!0)}),function e(){E.events.on(\"shortcut\",function(e,t,n){var r;if(t&&!n?r=E.$tb.find('.fr-command[data-cmd=\"'.concat(t,'\"]')):t&&n&&(r=E.$tb.find('.fr-command[data-cmd=\"'.concat(t,'\"][data-param1=\"').concat(n,'\"]'))),r.length&&(e.preventDefault(),e.stopPropagation(),r.parents(\".fr-toolbar\").data(\"instance\",E),\"keydown\"===e.type))return E.button.exec(r),!1})}()},hide:i,show:function h(){if(!1===E.events.trigger(\"toolbar.show\"))return!1;E.$tb.show()},showInline:n,disable:function u(){!f&&E.$tb&&(E.$tb.find(\".fr-btn-grp > .fr-command, .fr-more-toolbar > .fr-command, .fr-btn-wrap > .fr-command\").addClass(\"fr-disabled fr-no-refresh\").attr(\"aria-disabled\",!0),f=!0)},enable:function g(){f&&E.$tb&&(E.$tb.find(\".fr-btn-grp > .fr-command, .fr-more-toolbar > .fr-command, .fr-btn-wrap > .fr-command\").removeClass(\"fr-disabled fr-no-refresh\").attr(\"aria-disabled\",!1),f=!1),E.button.bulkRefresh()},setMoreToolbarsHeight:T}};var c=[\"scroll\",\"wheel\",\"touchmove\",\"touchstart\",\"touchend\"],d=[\"webkit\",\"moz\",\"ms\",\"o\"],f=[\"transitionend\"],o=document.createElement(\"div\").style,i=[\"Webkit\",\"Moz\",\"ms\",\"O\",\"css\",\"style\"],s={visibility:\"hidden\",display:\"block\"},r=[\"focus\",\"blur\",\"click\"],a={},l=function l(e,t){return{altKey:e.altKey,bubbles:e.bubbles,cancelable:e.cancelable,changedTouches:e.changedTouches,ctrlKey:e.ctrlKey,detail:e.detail,eventPhase:e.eventPhase,metaKey:e.metaKey,pageX:e.pageX,pageY:e.pageY,shiftKey:e.shiftKey,view:e.view,\"char\":e[\"char\"],key:e.key,keyCode:e.keyCode,button:e.button,buttons:e.buttons,clientX:e.clientX,clientY:e.clientY,offsetX:e.offsetX,offsetY:e.offsetY,pointerId:e.pointerId,pointerType:e.pointerType,screenX:e.screenX,screenY:e.screenY,targetTouches:e.targetTouches,toElement:e.toElement,touches:e.touches,type:e.type,which:e.which,target:e.target,currentTarget:t,originalEvent:e,stopPropagation:function(){e.stopPropagation()},stopImmediatePropagation:function(){e.stopImmediatePropagation()},preventDefault:function(){-1===c.indexOf(e.type)&&e.preventDefault()}}},p=function p(e){return e.ownerDocument&&e.ownerDocument.body&&e.ownerDocument.body.contains(e)||\"#document\"===e.nodeName||\"HTML\"===e.nodeName||e===window},h=function h(n,r){return function(e){var t=e.target;if(r)for(r=g(r);t&&t!==this;)Element.prototype.matches.call(t,g(r))&&n.call(t,l(e,t)),t=t.parentNode;else p(t)&&n.call(t,l(e,t))}},u=function u(e,t){return new v(e,t)},g=function g(e){return e&&\"string\"==typeof e?e.replace(/^\\s*>/g,\":scope >\").replace(/,\\s*>/g,\", :scope >\"):e},C=function C(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType},m=u;u.fn=u.prototype={constructor:u,length:0,contains:function(e){if(!e)return!1;if(Array.isArray(e)){for(var t=0;t<e.length;t++)if(this.contains(e[t])&&this!=e[t])return!0;return!1}for(var n=0;n<this.length;n++)for(var r=e;r;){if(r==this[n]||r[0]&&r[0].isEqualNode(this[n]))return!0;r=r.parentNode}return!1},findVisible:function(e){for(var t=this.find(e),n=t.length-1;0<=n;n--)m(t[n]).isVisible()||t.splice(n,1);return t},formatParams:function(t){var e=\"\".concat(Object.keys(t).map(function(e){return\"\".concat(e,\"=\").concat(encodeURIComponent(t[e]))}).join(\"&\"));return e||\"\"},ajax:function(t){var n=new XMLHttpRequest,e=this.formatParams(t.data);for(var r in\"GET\"===t.method.toUpperCase()&&(t.url=e?t.url+\"?\"+e:t.url),n.open(t.method,t.url,!0),t.withCredentials&&(n.withCredentials=!0),t.crossDomain&&n.setRequestHeader(\"Access-Control-Allow-Origin\",\"*\"),t.headers)Object.prototype.hasOwnProperty.call(t.headers,r)&&n.setRequestHeader(r,t.headers[r]);Object.prototype.hasOwnProperty.call(t.headers,\"Content-Type\")||(\"json\"===t.dataType?n.setRequestHeader(\"Content-Type\",\"application/json\"):n.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\")),n.onload=function(){if(200==n.status){var e=n.responseText;\"json\"===t.dataType&&(e=JSON.parse(e)),t.done(e,n.status,n)}else t.fail(n)},n.send(e)},prevAll:function(){var e=m();if(!this[0])return e;for(var t=this[0];t&&t.previousSibling;)t=t.previousSibling,e.push(t);return e},index:function(e){return e?\"string\"==typeof e?[].indexOf.call(m(e),this[0]):[].indexOf.call(this,e.length?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},isVisible:function(){return!!this[0]&&!!(this[0].offsetWidth||this[0].offsetHeight||this[0].getClientRects().length)},toArray:function(){return[].slice.call(this)},get:function(e){return null==e?[].slice.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=u.merge(this.constructor(),e);return t.prevObject=this,t},wrapAll:function(e){var t;return this[0]&&(C(e)&&(e=e.call(this[0])),t=u(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){if(\"string\"==typeof e){for(var t=e.split(\" \"),n=0;n<t.length&&0===t[n].trim().length;)n++;if(n<t.length&&(m(e).length&&t[n].trim()===m(e)[0].tagName&&(e=document.createElement(t[n].trim())),n++),\"string\"!=typeof e)for(var r=m(e);n<t.length;n++){t[n]=t[n].trim();var o=t[n].split(\"=\");r.attr(o[0],o[1].replace('\"',\"\"))}}for(;this[0].firstChild&&this[0].firstChild!==e&&\"string\"!=typeof e;)e.appendChild(this[0].firstChild)},wrapContent:function(e){var t=document.createElement(e.tagName);0<e.attributes.length&&e.attributes.forEach(function(e){m(t).attr(e.nodeName,e.value)}),m(this[0]).contents().wrapAll(t)},wrap:function(t){var n=C(t);return this.each(function(e){m(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(){return this.parent().each(function(){this.nodeName&&this.nodeName.toLowerCase()===name.toLowerCase()||u(this).replaceWith(this.childNodes)})},grep:function(e,t,n){for(var r=[],o=0,i=e.length,a=!n;o<i;o++)!t(e[o],o)!==a&&r.push(e[o]);return r},map:function(n){return this.pushStack(u.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack([].slice.apply(this,arguments))},each:function(e){if(this.length)for(var t=0;t<this.length&&!1!==e.call(this[t],t,this[t]);t++);return this},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},empty:function(){for(var e=0;e<this.length;e++)this[e].innerHTML=\"\"},contents:function(){for(var e=m(),t=0;t<this.length;t++)for(var n=this[t].childNodes,r=0;r<n.length;r++)e.push(n[r]);return e},attr:function(e,t){if(\"object\"===M(e)){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&null!==e[n]&&this.attr(n,e[n]);return this}if(void 0===t)return 0===this.length||!this[0].getAttribute&&\"checked\"!==e?undefined:\"checked\"===e?this[0].checked:\"tagName\"===e?this[0].tagName:this[0].getAttribute(e);if(\"checked\"===e)for(var r=0;r<this.length;r++)this[r].checked=t;else if(\"tagName\"===e)for(var o=0;o<this.length;o++)this[o].tagName=t;else for(var i=0;i<this.length;i++)this[i].setAttribute(e,t);return this},removeAttr:function(e){for(var t=0;t<this.length;t++)this[t].removeAttribute&&this[t].removeAttribute(e);return this},hide:function(){return this.css(\"display\",\"none\"),this},show:function(){return this.css(\"display\",\"block\"),this},focus:function(){return this.length&&this[0].focus(),this},blur:function(){return this.length&&this[0].blur(),this},data:function(e,t){if(void 0!==t){for(var n=0;n<this.length;n++)\"object\"!==M(this[n][\"data-\"+e]=t)&&\"function\"!=typeof t&&this[n].setAttribute&&this[n].setAttribute(\"data-\"+e,t);return this}if(void 0!==t)return this.attr(\"data-\"+e,t);if(0===this.length)return undefined;for(var r=0;r<this.length;r++){var o=this[r][\"data-\"+e];if(null==o&&this[r].getAttribute&&(o=this[r].getAttribute(\"data-\"+e)),void 0!==o&&null!=o)return o}return undefined},removeData:function(e){for(var t=0;t<this.length;t++)this[t].removeAttribute&&this[t].removeAttribute(\"data-\"+e),this[t][\"data-\"+e]=null;return this},getCorrectStyleName:function(e){if(!a[e]){var t;e in o&&(t=e);for(var n=e[0].toUpperCase()+e.slice(1),r=i.length;r--;)(e=i[r]+n)in o&&(t=e);a[e]=t}return a[e]},css:function(e,t){if(void 0!==t){if(0===this.length)return this;(\"string\"!=typeof t||\"\"===t.trim()||isNaN(t))&&\"number\"!=typeof t||!/(margin)|(padding)|(height)|(width)|(top)|(left)|(right)|(bottom)/gi.test(e)||/(line-height)/gi.test(e)||(t+=\"px\");for(var n=0;n<this.length;n++)e=m(this).getCorrectStyleName(e),this[n].style[e]=t;return this}if(\"string\"==typeof e){if(0===this.length)return undefined;var r=this[0].ownerDocument||document,o=r.defaultView||r.parentWindow;return e=m(this).getCorrectStyleName(e),o.getComputedStyle(this[0])[e]}for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&this.css(i,e[i]);return this},toggleClass:function(e,t){if(1<e.split(\" \").length){for(var n=e.split(\" \"),r=0;r<n.length;r++)this.toggleClass(n[r],t);return this}for(var o=0;o<this.length;o++)void 0===t?this[o].classList.contains(e)?this[o].classList.remove(e):this[o].classList.add(e):t?this[o].classList.contains(e)||this[o].classList.add(e):this[o].classList.contains(e)&&this[o].classList.remove(e);return this},addClass:function(e){if(0===e.length)return this;if(1<e.split(\" \").length){for(var t=e.split(\" \"),n=0;n<t.length;n++)this.addClass(t[n]);return this}for(var r=0;r<this.length;r++)this[r].classList.add(e);return this},removeClass:function(e){if(1<e.split(\" \").length){for(var t=e.split(\" \"),n=0;n<t.length;n++)t[n]=t[n].trim(),t[n].length&&this.removeClass(t[n]);return this}for(var r=0;r<this.length;r++)e.length&&this[r].classList.remove(e);return this},getClass:function(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"},stripAndCollapse:function(e){return(e.match(/[^\\x20\\t\\r\\n\\f]+/g)||[]).join(\" \")},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&-1<(\" \"+m(this).stripAndCollapse(m(this).getClass(n))+\" \").indexOf(t))return!0;return!1},scrollTop:function(e){if(void 0===e)return 0===this.length?undefined:this[0]===document?document.documentElement.scrollTop:this[0].scrollTop;for(var t=0;t<this.length;t++)this[t]===document?window.scrollTo(document.documentElement.scrollLeft,e):this[t].scrollTop=e},scrollLeft:function(e){if(void 0===e)return 0===this.length?undefined:this[0]===document?document.documentElement.scrollLeft:this[0].scrollLeft;for(var t=0;t<this.length;t++)this[t]===document?window.scrollTo(e,document.documentElement.scrollTop):this[t].scrollLeft=e},on:function(e,t,n){if(1<e.split(\" \").length){for(var r=e.split(\" \"),o=0;o<r.length;o++)if(-1!==f.indexOf(e))for(var i=0;i<d.length;i++)this.on(d[i]+e[0].toUpperCase()+e.slice(1),t,n);else this.on(r[o],t,n);return this}n=\"function\"==typeof t?h(t,null):h(n,t);for(var a=0;a<this.length;a++){var s=m(this[a]);s.data(\"events\")||s.data(\"events\",[]),s.data(\"events\").push([e,n]);var l=e.split(\".\");l=l[0],0<=c.indexOf(l)?s.get(0).addEventListener(l,n,{passive:!0}):s.get(0).addEventListener(l,n)}},off:function(e){if(1<e.split(\" \").length){for(var t=e.split(\" \"),n=0;n<t.length;n++)this.off(t[n]);return this}for(var r=0;r<this.length;r++){var o=m(this[r]);if(o.data(\"events\")){var i=e.split(\".\");i=i[0];for(var a=o.data(\"events\")||[],s=a.length-1;0<=s;s--){var l=a[s];l[0]==e&&(o.get(0).removeEventListener(i,l[1]),a.splice(s,1))}}}},trigger:function(e){for(var t=0;t<this.length;t++){var n=void 0;\"function\"==typeof Event?n=0<=e.search(/^mouse/g)?new MouseEvent(e,{view:window,cancelable:!0,bubbles:!0}):new Event(e):0<=e.search(/^mouse/g)?(n=document.createEvent(\"MouseEvents\")).initMouseEvent(e,!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null):(n=document.createEvent(\"Event\")).initEvent(e,!0,!0),0<=r.indexOf(e)&&\"function\"==typeof this[t][e]?this[t][e]():this[t].dispatchEvent(n)}},triggerHandler:function(){},val:function(e){if(void 0===e)return this[0].value;for(var t=0;t<this.length;t++)this[t].value=e;return this},siblings:function(){return m(this[0]).parent().children().not(this)},find:function(e){var t=m();if(\"string\"!=typeof e){for(var n=0;n<e.length;n++)for(var r=0;r<this.length;r++)if(this[r]!==e[n]&&m(this[r]).contains(e[n])){t.push(e[n]);break}return t}var o=function o(e){return\"object\"===(\"undefined\"==typeof HTMLElement?\"undefined\":M(HTMLElement))?e instanceof HTMLElement:e&&\"object\"===M(e)&&null!==e&&1===e.nodeType&&\"string\"==typeof e.nodeName};e=g(e);for(var i=0;i<this.length;i++)if(this[i].querySelectorAll){var a=[];if(e&&\"string\"==typeof e)try{a=this[i].querySelectorAll(e)}catch(l){a=this[i].children}else o(e)&&(a=[e]);for(var s=0;s<a.length;s++)t.push(a[s])}return t},children:function(){for(var e=m(),t=0;t<this.length;t++)for(var n=this[t].children,r=0;r<n.length;r++)e.push(n[r]);return e},not:function(e){if(\"string\"==typeof e)for(var t=this.length-1;0<=t;t--)Element.prototype.matches.call(this[t],e)&&this.splice(t,1);else if(e instanceof u){for(var n=this.length-1;0<=n;n--)for(var r=0;r<e.length;r++)if(this[n]===e[r]){this.splice(n,1);break}}else for(var o=this.length-1;0<=o;o--)this[o]===e[0]&&this.splice(o,1);return this},add:function(e){for(var t=0;t<e.length;t++)this.push(e[t]);return this},closest:function(e){for(var t=0;t<this.length;t++){var n=Element.prototype.closest.call(this[t],e);if(n)return m(n)}return m()},html:function(e){if(void 0===e)return 0===this.length?undefined:this[0].innerHTML;if(\"string\"==typeof e)for(var t=0;t<this.length;t++){this[t].innerHTML=e;for(var n=this[t].children,r=this[t].ownerDocument||document,o=0;o<n.length;o++)if(\"SCRIPT\"===n[o].tagName){var i=r.createElement(\"script\");i.innerHTML=n[o].innerHTML,n[o].hasAttribute(\"async\")&&i.setAttribute(\"async\",\"\"),i.src=n[o].src,n[o].hasAttribute(\"defer\")&&i.setAttribute(\"defer\",\"\"),r.head.appendChild(i).parentNode.removeChild(i)}}else{this[0].innerHTML=\"\",this.append(e[0]);var a=this[0].ownerDocument||document;if(\"SCRIPT\"===e[0].tagName){var s=a.createElement(\"script\");s.innerHTML=e[0].innerHTML,a.head.appendChild(s).parentNode.removeChild(s)}}return this},text:function(e){if(!e)return this.length?this[0].textContent:\"\";for(var t=0;t<this.length;t++)this[t].textContent=e},after:function e(t){if(t)if(\"string\"==typeof t)for(var n=0;n<this.length;n++){var e=this[n];if(e.nodeType!=Node.ELEMENT_NODE){var r=e.ownerDocument.createElement(\"SPAN\");m(e).after(r),m(r).after(t).remove()}else e.insertAdjacentHTML(\"afterend\",t)}else{var o=this[0];if(o.nextSibling)if(t instanceof u)for(var i=0;i<t.length;i++)o.nextSibling.parentNode.insertBefore(t[i],o.nextSibling);else o.nextSibling.parentNode.insertBefore(t,o.nextSibling);else m(o.parentNode).append(t)}return this},clone:function(e){for(var t=m(),n=0;n<this.length;n++)t.push(this[n].cloneNode(e));return t},replaceWith:function(e){if(\"string\"==typeof e)for(var t=0;t<this.length;t++)this[t].parentNode&&(this[t].outerHTML=e);else if(e&&e.length)for(var n=0;n<this.length;n++)this.replaceWith(e[n]);else this.after(e).remove()},insertBefore:function(e){return m(e).before(this[0]),this},before:function e(t){if(t instanceof u){for(var n=0;n<t.length;n++)this.before(t[n]);return this}if(t)if(\"string\"==typeof t)for(var r=0;r<this.length;r++){var e=this[r];if(e.nodeType!=Node.ELEMENT_NODE){var o=e.ownerDocument.createElement(\"SPAN\");m(e).before(o),m(o).before(t).remove()}else e.parentNode&&e.insertAdjacentHTML(\"beforebegin\",t)}else{var i=this[0];if(i.parentNode)if(t instanceof u)for(var a=0;a<t.length;a++)i.parentNode.insertBefore(t[a],i);else i.parentNode.insertBefore(t,i)}return this},append:function(e){if(0==this.length)return this;if(\"string\"==typeof e)for(var t=0;t<this.length;t++){var n=this[t],r=n.ownerDocument.createElement(\"SPAN\");m(n).append(r),m(r).after(e).remove()}else if(e instanceof u||Array.isArray(e))for(var o=0;o<e.length;o++)this.append(e[o]);else\"function\"!=typeof e&&this[0].appendChild(e);return this},prepend:function(e){if(0==this.length)return this;if(\"string\"==typeof e)for(var t=0;t<this.length;t++){var n=this[t],r=n.ownerDocument.createElement(\"SPAN\");m(n).prepend(r),m(r).before(e).remove()}else if(e instanceof u)for(var o=0;o<e.length;o++)this.prepend(e[o]);else{var i=this[0];i.firstChild?i.firstChild?i.insertBefore(e,i.firstChild):i.appendChild(e):m(i).append(e)}return this},remove:function(){for(var e=0;e<this.length;e++)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this},prev:function(){return this.length&&this[0].previousElementSibling?m(this[0].previousElementSibling):m()},next:function(){return this.length&&this[0].nextElementSibling?m(this[0].nextElementSibling):m()},nextAllVisible:function(){return this.next()},prevAllVisible:function(){return this.prev()},outerHeight:function(e){if(0===this.length)return undefined;var t=this[0];if(t===t.window)return t.innerHeight;var n={},r=this.isVisible();if(!r)for(var o in s)n[o]=t.style[o],t.style[o]=s[o];var i=t.offsetHeight;if(e&&(i+=parseInt(m(t).css(\"marginTop\"))+parseInt(m(t).css(\"marginBottom\"))),!r)for(var a in s)t.style[a]=n[a];return i},outerWidth:function(e){if(0===this.length)return undefined;var t=this[0];if(t===t.window)return t.outerWidth;var n={},r=this.isVisible();if(!r)for(var o in s)n[o]=t.style[o],t.style[o]=s[o];var i=t.offsetWidth;if(e&&(i+=parseInt(m(t).css(\"marginLeft\"))+parseInt(m(t).css(\"marginRight\"))),!r)for(var a in s)t.style[a]=n[a];return i},width:function(e){if(e===undefined){if(this[0]instanceof HTMLDocument)return this[0].body.offsetWidth;if(this[0])return this[0].offsetWidth}else this[0].style.width=e+\"px\"},height:function(e){var t=this[0];if(e===undefined){if(t instanceof HTMLDocument){var n=t.documentElement;return Math.max(t.body.scrollHeight,n.scrollHeight,t.body.offsetHeight,n.offsetHeight,n.clientHeight)}return t.offsetHeight}t.style.height=e+\"px\"},is:function(e){return 0!==this.length&&(\"string\"==typeof e&&this[0].matches?this[0].matches(e):e instanceof u?this[0]==e[0]:this[0]==e)},parent:function(){return 0===this.length?m():m(this[0].parentNode)},_matches:function(e,t){var n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return e&&!t?n:n.call(e,t)},parents:function(e){for(var t=m(),n=0;n<this.length;n++)for(var r=this[n].parentNode;r&&r!=document&&this._matches(r);)e?this._matches(r,e)&&t.push(r):t.push(r),r=r.parentNode;return t},parentsUntil:function(e,t){var n=m();e instanceof u&&0<e.length&&(e=e[0]);for(var r=0;r<this.length;r++)for(var o=this[r].parentNode;o&&o!=document&&o!=e&&this[r]!=e&&(\"string\"!=typeof e||!Element.prototype.matches.call(o,e));)t?Element.prototype.matches.call(o,t)&&n.push(o):n.push(o),o=o.parentNode;return n},insertAfter:function(e){var t=e.parent()[0];t&&t.insertBefore(this[0],e[0].nextElementSibling)},filter:function(e){var t=m();if(\"function\"==typeof e)for(var n=0;n<this.length;n++)e.call(this[n],this[n])&&t.push(this[n]);else if(\"string\"==typeof e)for(var r=0;r<this.length;r++)this[r].matches(e)&&t.push(this[r]);return t},offset:function(){if(0===this.length)return undefined;var e=this[0].getBoundingClientRect(),t=this[0].ownerDocument.defaultView;return{top:e.top+t.pageYOffset,left:e.left+t.pageXOffset}},position:function(){return{left:this[0].offsetLeft,top:this[0].offsetTop}},push:[].push,splice:[].splice},u.extend=function(e){e=e||{};for(var t=1;t<arguments.length;t++)if(arguments[t])for(var n in arguments[t])Object.prototype.hasOwnProperty.call(arguments[t],n)&&(e[n]=arguments[t][n]);return e},u.merge=function(e,t){for(var n=+t.length,r=0,o=e.length;r<n;r++)e[o++]=t[r];return e.length=o,e},u.map=function(e,t,n){var r,o,i=0,a=[];if(Array.isArray(e))for(r=e.length;i<r;i++)null!=(o=t(e[i],i,n))&&a.push(o);else for(i in e)null!=(o=t(e[i],i,n))&&a.push(o);return[].concat.apply([],a)};var v=function v(e,t){if(!e)return this;if(\"string\"==typeof e&&\"<\"===e[0]){var n=document.createElement(\"DIV\");return n.innerHTML=e,m(n.firstElementChild)}if(t=t instanceof u?t[0]:t,\"string\"!=typeof e)return e instanceof u?e:(this[0]=e,this.length=1,this);e=g(e);for(var r=(t||document).querySelectorAll(e),o=0;o<r.length;o++)this[o]=r[o];return this.length=r.length,this};v.prototype=u.prototype;var b=V;function L(){this.doc=this.$el.get(0).ownerDocument,this.win=\"defaultView\"in this.doc?this.doc.defaultView:this.doc.parentWindow,this.$doc=u(this.doc),this.$win=u(this.win),this.opts.pluginsEnabled||(this.opts.pluginsEnabled=Object.keys(b.PLUGINS)),this.opts.initOnClick?(this.load(b.MODULES),this.$el.on(\"touchstart.init\",function(){u(this).data(\"touched\",!0)}),this.$el.on(\"touchmove.init\",function(){u(this).removeData(\"touched\")}),this.$el.on(\"mousedown.init touchend.init dragenter.init focus.init\",function r(e){if(\"false\"!==this.$el.attr(\"contentEditable\")||!this.opts.initOnClick){if(\"touchend\"===e.type&&!this.$el.data(\"touched\"))return!0;if(1===e.which||!e.which){this.$el.off(\"mousedown.init touchstart.init touchmove.init touchend.init dragenter.init focus.init\"),this.load(b.MODULES),this.load(b.PLUGINS);var t=e.originalEvent&&e.originalEvent.originalTarget;if(t&&\"IMG\"===t.tagName&&u(t).trigger(\"mousedown\"),\"undefined\"==typeof this.ul&&this.destroy(),\"touchend\"===e.type&&this.image&&e.originalEvent&&e.originalEvent.target&&u(e.originalEvent.target).is(\"img\")){var n=this;setTimeout(function(){n.image.edit(u(e.originalEvent.target))},100)}this.ready=!0,this.events.trigger(\"initialized\")}}}.bind(this)),this.events.trigger(\"initializationDelayed\")):(this.load(b.MODULES),this.load(b.PLUGINS),u(this.o_win).scrollTop(this.c_scroll),\"undefined\"==typeof this.ul&&this.destroy(),this.ready=!0,this.events.trigger(\"initialized\"))}return b.Bootstrap=function(e,t,n){this.id=++b.ID,this.$=u;var r={};\"function\"==typeof t&&(n=t,t={}),n&&(t.events||(t.events={}),t.events.initialized=n),t&&t.documentReady&&(r.toolbarButtons=[[\"fullscreen\",\"undo\",\"redo\",\"getPDF\",\"print\"],[\"bold\",\"italic\",\"underline\",\"textColor\",\"backgroundColor\",\"clearFormatting\"],[\"alignLeft\",\"alignCenter\",\"alignRight\",\"alignJustify\"],[\"formatOL\",\"formatUL\",\"indent\",\"outdent\"],[\"paragraphFormat\"],[\"fontFamily\"],[\"fontSize\"],[\"insertLink\",\"insertImage\",\"quote\"]],r.paragraphFormatSelection=!0,r.fontFamilySelection=!0,r.fontSizeSelection=!0,r.placeholderText=\"\",r.quickInsertEnabled=!1,r.charCounterCount=!1),this.opts=Object.assign({},Object.assign({},b.DEFAULTS,r,\"object\"===M(t)&&t));var o=JSON.stringify(this.opts);b.OPTS_MAPPING[o]=b.OPTS_MAPPING[o]||this.id,this.sid=b.OPTS_MAPPING[o],b.SHARED[this.sid]=b.SHARED[this.sid]||{},this.shared=b.SHARED[this.sid],this.shared.count=(this.shared.count||0)+1,this.$oel=u(e),this.$oel.data(\"froala.editor\",this),this.o_doc=e.ownerDocument,this.o_win=\"defaultView\"in this.o_doc?this.o_doc.defaultView:this.o_doc.parentWindow,this.c_scroll=u(this.o_win).scrollTop(),this._init()},b.Bootstrap.prototype._init=function(){var e=this.$oel.get(0).tagName;this.$oel.closest(\"label\").length;var t=function(){\"TEXTAREA\"!==e&&(this._original_html=this._original_html||this.$oel.html()),this.$box=this.$box||this.$oel,this.opts.fullPage&&(this.opts.iframe=!0),this.opts.iframe?(this.$iframe=u('<iframe src=\"about:blank\" frameBorder=\"0\">'),this.$wp=u(\"<div></div>\"),this.$box.html(this.$wp),this.$wp.append(this.$iframe),this.$iframe.get(0).contentWindow.document.open(),this.$iframe.get(0).contentWindow.document.write(\"<!DOCTYPE html>\"),this.$iframe.get(0).contentWindow.document.write(\"<html><head></head><body></body></html>\"),this.$iframe.get(0).contentWindow.document.close(),this.iframe_document=this.$iframe.get(0).contentWindow.document,this.$el=u(this.iframe_document.querySelector(\"body\")),this.el=this.$el.get(0),this.$head=u(this.iframe_document.querySelector(\"head\")),this.$html=u(this.iframe_document.querySelector(\"html\"))):(this.$el=u(this.o_doc.createElement(\"DIV\")),this.el=this.$el.get(0),this.$wp=u(this.o_doc.createElement(\"DIV\")).append(this.$el),this.$box.html(this.$wp)),setTimeout(L.bind(this),0)}.bind(this),n=function(){this.$box=u(\"<div>\"),this.$oel.before(this.$box).hide(),this._original_html=this.$oel.val();var e=this;this.$oel.parents(\"form\").on(\"submit.\".concat(this.id),function(){e.events.trigger(\"form.submit\")}),this.$oel.parents(\"form\").on(\"reset.\".concat(this.id),function(){e.events.trigger(\"form.reset\")}),t()}.bind(this),r=function(){this.$el=this.$oel,this.el=this.$el.get(0),this.$el.attr(\"contenteditable\",!0).css(\"outline\",\"none\").css(\"display\",\"inline-block\"),this.opts.multiLine=!1,this.opts.toolbarInline=!1,setTimeout(L.bind(this),0)}.bind(this),o=function(){this.$el=this.$oel,this.el=this.$el.get(0),this.opts.toolbarInline=!1,setTimeout(L.bind(this),0)}.bind(this),i=function(){this.$el=this.$oel,this.el=this.$el.get(0),this.opts.toolbarInline=!1,this.$oel.on(\"click.popup\",function(e){e.preventDefault()}),setTimeout(L.bind(this),0)}.bind(this);this.opts.editInPopup?i():\"TEXTAREA\"===e?n():\"A\"===e?r():\"IMG\"===e?o():\"BUTTON\"===e||\"INPUT\"===e?(this.opts.editInPopup=!0,this.opts.toolbarInline=!1,i()):t()},b.Bootstrap.prototype.load=function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)){if(this[t])continue;if(b.PLUGINS[t]&&this.opts.pluginsEnabled.indexOf(t)<0)continue;if(this[t]=new e[t](this),this[t]._init&&(this[t]._init(),this.opts.initOnClick&&\"core\"===t))return!1}},b.Bootstrap.prototype.destroy=function(){this.destrying=!0,this.shared.count--,this.events&&this.events.$off();var e=this.html&&this.html.get();if(this.opts.iframe&&(this.events.disableBlur(),this.win.focus(),this.events.enableBlur()),this.events&&(this.events.trigger(\"destroy\",[],!0),this.events.trigger(\"shared.destroy\",[],!0)),0===this.shared.count){for(var t in this.shared)Object.prototype.hasOwnProperty.call(this.shared,t)&&(this.shared[t]=null,b.SHARED[this.sid][t]=null);delete b.SHARED[this.sid]}this.$oel.parents(\"form\").off(\".\".concat(this.id)),this.$oel.off(\"click.popup\"),this.$oel.removeData(\"froala.editor\"),this.$oel.off(\"froalaEditor\"),this.core&&this.core.destroy(e),b.INSTANCES.splice(b.INSTANCES.indexOf(this),1)},V});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(n,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(n.FroalaEditor)}(this,function(i){\"use strict\";(i=i&&i.hasOwnProperty(\"default\")?i[\"default\"]:i).PLUGINS.align=function(a){var l=a.$;return{apply:function r(n){var t=a.selection.element();if(l(t).parents(\".fr-img-caption\").length)l(t).css(\"text-align\",n);else{a.selection.save(),a.html.wrap(!0,!0,!0,!0),a.selection.restore();for(var e=a.selection.blocks(),i=0;i<e.length;i++)l(e[i]).css(\"text-align\",n).removeClass(\"fr-temp-div\"),\"\"===l(e[i]).attr(\"class\")&&l(e[i]).removeAttr(\"class\"),\"\"===l(e[i]).attr(\"style\")&&l(e[i]).removeAttr(\"style\");a.selection.save(),a.html.unwrap(),a.selection.restore()}},refresh:function i(n){var t=a.selection.blocks();if(t.length){var e=a.helpers.getAlignment(l(t[0]));n.find(\"> *\").first().replaceWith(a.icon.create(\"align-\".concat(e)))}},refreshOnShow:function o(n,t){var e=a.selection.blocks();if(e.length){var i=a.helpers.getAlignment(l(e[0]));t.find('a.fr-command[data-param1=\"'.concat(i,'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)}},refreshForToolbar:function s(n){var t=a.selection.blocks();if(t.length){var e=a.helpers.getAlignment(l(t[0]));e=e.charAt(0).toUpperCase()+e.slice(1),\"align\".concat(e)===n.attr(\"data-cmd\")&&n.addClass(\"fr-active\")}}}},i.DefineIcon(\"align\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),i.DefineIcon(\"align-left\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),i.DefineIcon(\"align-right\",{NAME:\"align-right\",SVG_KEY:\"alignRight\"}),i.DefineIcon(\"align-center\",{NAME:\"align-center\",SVG_KEY:\"alignCenter\"}),i.DefineIcon(\"align-justify\",{NAME:\"align-justify\",SVG_KEY:\"alignJustify\"}),i.RegisterCommand(\"align\",{type:\"dropdown\",title:\"Align\",options:{left:\"Align Left\",center:\"Align Center\",right:\"Align Right\",justify:\"Align Justify\"},html:function(){var n='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=i.COMMANDS.align.options;for(var e in t)t.hasOwnProperty(e)&&(n+='<li role=\"presentation\"><a class=\"fr-command fr-title\" tabIndex=\"-1\" role=\"option\" data-cmd=\"align\"data-param1=\"\\n        '.concat(e,'\" title=\"').concat(this.language.translate(t[e]),'\">').concat(this.icon.create(\"align-\".concat(e)),'<span class=\"fr-sr-only\">\\n        ').concat(this.language.translate(t[e]),\"</span></a></li>\"));return n+=\"</ul>\"},callback:function(n,t){this.align.apply(t)},refresh:function(n){this.align.refresh(n)},refreshOnShow:function(n,t){this.align.refreshOnShow(n,t)},plugin:\"align\"}),i.RegisterCommand(\"alignLeft\",{type:\"button\",icon:\"align-left\",title:\"Align Left\",callback:function(){this.align.apply(\"left\")},refresh:function(n){this.align.refreshForToolbar(n)},plugin:\"align\"}),i.RegisterCommand(\"alignRight\",{type:\"button\",icon:\"align-right\",title:\"Align Right\",callback:function(){this.align.apply(\"right\")},refresh:function(n){this.align.refreshForToolbar(n)},plugin:\"align\"}),i.RegisterCommand(\"alignCenter\",{type:\"button\",icon:\"align-center\",title:\"Align Center\",callback:function(){this.align.apply(\"center\")},refresh:function(n){this.align.refreshForToolbar(n)},plugin:\"align\"}),i.RegisterCommand(\"alignJustify\",{type:\"button\",icon:\"align-justify\",title:\"Align Justify\",callback:function(){this.align.apply(\"justify\")},refresh:function(n){this.align.refreshForToolbar(n)},plugin:\"align\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(o,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(o.FroalaEditor)}(this,function(k){\"use strict\";k=k&&k.hasOwnProperty(\"default\")?k[\"default\"]:k,Object.assign(k.POPUP_TEMPLATES,{\"textColor.picker\":\"[_BUTTONS_][_TEXT_COLORS_][_CUSTOM_COLOR_]\",\"backgroundColor.picker\":\"[_BUTTONS_][_BACKGROUND_COLORS_][_CUSTOM_COLOR_]\"}),Object.assign(k.DEFAULTS,{colorsText:[\"#61BD6D\",\"#1ABC9C\",\"#54ACD2\",\"#2C82C9\",\"#9365B8\",\"#475577\",\"#CCCCCC\",\"#41A85F\",\"#00A885\",\"#3D8EB9\",\"#2969B0\",\"#553982\",\"#28324E\",\"#000000\",\"#F7DA64\",\"#FBA026\",\"#EB6B56\",\"#E25041\",\"#A38F84\",\"#EFEFEF\",\"#FFFFFF\",\"#FAC51C\",\"#F37934\",\"#D14841\",\"#B8312F\",\"#7C706B\",\"#D1D5D8\",\"REMOVE\"],colorsBackground:[\"#61BD6D\",\"#1ABC9C\",\"#54ACD2\",\"#2C82C9\",\"#9365B8\",\"#475577\",\"#CCCCCC\",\"#41A85F\",\"#00A885\",\"#3D8EB9\",\"#2969B0\",\"#553982\",\"#28324E\",\"#000000\",\"#F7DA64\",\"#FBA026\",\"#EB6B56\",\"#E25041\",\"#A38F84\",\"#EFEFEF\",\"#FFFFFF\",\"#FAC51C\",\"#F37934\",\"#D14841\",\"#B8312F\",\"#7C706B\",\"#D1D5D8\",\"REMOVE\"],colorsStep:7,colorsHEXInput:!0,colorsButtons:[\"colorsBack\",\"|\",\"-\"]}),k.PLUGINS.colors=function(g){var E=g.$,l='<div class=\"fr-color-hex-layer fr-active fr-layer\" id=\"fr-color-hex-layer- \\n  '.concat(g.id,'\"><div class=\"fr-input-line\"><input maxlength=\"7\" id=\"[ID]\"\\n  type=\"text\" placeholder=\"').concat(g.language.translate(\"HEX Color\"),'\" \\n  tabIndex=\"1\" aria-required=\"true\"></div><div class=\"fr-action-buttons\"><button \\n  type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"[COMMAND]\" tabIndex=\"2\" role=\"button\">\\n  ').concat(g.language.translate(\"OK\"),\"</button></div></div>\");function s(o){for(var t=\"text\"===o?g.opts.colorsText:g.opts.colorsBackground,r='<div class=\"fr-color-set fr-'.concat(o,'-color fr-selected-set\">'),e=0;e<t.length;e++)0!==e&&e%g.opts.colorsStep==0&&(r+=\"<br>\"),\"REMOVE\"!==t[e]?r+='<span class=\"fr-command fr-select-color\" style=\"background:'.concat(t[e],';\" \\n        tabIndex=\"-1\" aria-selected=\"false\" role=\"button\" data-cmd=\"apply').concat(o,'Color\" \\n        data-param1=\"').concat(t[e],'\"><span class=\"fr-sr-only\"> ').concat(g.language.translate(\"Color\")).concat(t[e],\" \\n        &nbsp;&nbsp;&nbsp;</span></span>\"):r+='<span class=\"fr-command fr-select-color\" data-cmd=\"apply'.concat(o,'Color\"\\n         tabIndex=\"-1\" role=\"button\" data-param1=\"REMOVE\" \\n         title=\"').concat(g.language.translate(\"Clear Formatting\"),'\">').concat(g.icon.create(\"remove\"),' \\n        <span class=\"fr-sr-only\"> ').concat(g.language.translate(\"Clear Formatting\"),\" </span></span>\");return\"\".concat(r,\"</div>\")}function i(o){var t,r=g.popups.get(\"\".concat(o,\"Color.picker\")),e=E(g.selection.element());t=\"background\"===o?\"background-color\":\"color\";var c=r.find(\".fr-\".concat(o,\"-color .fr-select-color\"));for(c.find(\".fr-selected-color\").remove(),c.removeClass(\"fr-active-item\"),c.not('[data-param1=\"REMOVE\"]').attr(\"aria-selected\",!1);e.get(0)!==g.el;){if(\"transparent\"!==e.css(t)&&\"rgba(0, 0, 0, 0)\"!==e.css(t)){var a=r.find(\".fr-\".concat(o,'-color .fr-select-color[data-param1=\"').concat(g.helpers.RGBToHex(e.css(t)),'\"]'));a.append('<span class=\"fr-selected-color\" aria-hidden=\"true\">\\uf00c</span>'),a.addClass(\"fr-active-item\").attr(\"aria-selected\",!0);break}e=e.parent()}!function n(o){var t=g.popups.get(\"\".concat(o,\"Color.picker\")),r=t.find(\".fr-\".concat(o,\"-color .fr-active-item\")).attr(\"data-param1\"),e=t.find(\".fr-color-hex-layer input\");r||(r=\"\");e.length&&E(e.val(r).input).trigger(\"change\")}(o)}function e(o){\"REMOVE\"!==o?g.format.applyStyle(\"background-color\",g.helpers.HEXtoRGB(o)):g.format.removeStyle(\"background-color\"),g.popups.hide(\"backgroundColor.picker\")}function c(o){\"REMOVE\"!==o?g.format.applyStyle(\"color\",g.helpers.HEXtoRGB(o)):g.format.removeStyle(\"color\"),g.popups.hide(\"textColor.picker\")}return{showColorsPopup:function p(o){var t=g.$tb.find('.fr-command[data-cmd=\"'.concat(o,'\"]')),r=g.popups.get(\"\".concat(o,\".picker\"));if(r||(r=function n(o){var t=\"\";g.opts.toolbarInline&&0<g.opts.colorsButtons.length&&(t+='<div class=\"fr-buttons fr-colors-buttons fr-tabs\">\\n        '.concat(g.button.buildList(g.opts.colorsButtons),\"\\n        </div>\"));var r,e=\"\";r=\"textColor\"===o?(g.opts.colorsHEXInput&&(e=l.replace(/\\[ID\\]/g,\"fr-color-hex-layer-text-\".concat(g.id)).replace(/\\[COMMAND\\]/g,\"customTextColor\")),{buttons:t,text_colors:s(\"text\"),custom_color:e}):(g.opts.colorsHEXInput&&(e=l.replace(/\\[ID\\]/g,\"fr-color-hex-layer-background-\".concat(g.id)).replace(/\\[COMMAND\\]/g,\"customBackgroundColor\")),{buttons:t,background_colors:s(\"background\"),custom_color:e});var c=g.popups.create(\"\".concat(o,\".picker\"),r);return function a(C,b){g.events.on(\"popup.tab\",function(o){var t=E(o.currentTarget);if(!g.popups.isVisible(b)||!t.is(\"span\"))return!0;var r=o.which,e=!0;if(k.KEYCODE.TAB===r){var c=C.find(\".fr-buttons\");e=!g.accessibility.focusToolbar(c,!!o.shiftKey)}else if(k.KEYCODE.ARROW_UP===r||k.KEYCODE.ARROW_DOWN===r||k.KEYCODE.ARROW_LEFT===r||k.KEYCODE.ARROW_RIGHT===r){if(t.is(\"span.fr-select-color\")){var a=t.parent().find(\"span.fr-select-color\"),n=a.index(t),l=g.opts.colorsStep,s=Math.floor(a.length/l),i=n%l,p=Math.floor(n/l),u=p*l+i,d=s*l;k.KEYCODE.ARROW_UP===r?u=((u-l)%d+d)%d:k.KEYCODE.ARROW_DOWN===r?u=(u+l)%d:k.KEYCODE.ARROW_LEFT===r?u=((u-1)%d+d)%d:k.KEYCODE.ARROW_RIGHT===r&&(u=(u+1)%d);var f=E(a.get(u));g.events.disableBlur(),f.focus(),e=!1}}else k.KEYCODE.ENTER===r&&(g.button.exec(t),e=!1);return!1===e&&(o.preventDefault(),o.stopPropagation()),e},!0)}(c,\"\".concat(o,\".picker\")),c}(o)),!r.hasClass(\"fr-active\"))if(g.popups.setContainer(\"\".concat(o,\".picker\"),g.$tb),i(\"textColor\"===o?\"text\":\"background\"),t.isVisible()){var e=g.button.getPosition(t),c=e.left,a=e.top;g.popups.show(\"\".concat(o,\".picker\"),c,a,t.outerHeight())}else g.position.forSelection(r),g.popups.show(\"\".concat(o,\".picker\"))},background:e,customColor:function a(o){var t=g.popups.get(\"\".concat(o,\"Color.picker\")).find(\".fr-color-hex-layer input\");if(t.length){var r=t.val();\"background\"===o?e(r):c(r)}},text:c,back:function o(){g.popups.hide(\"textColor.picker\"),g.popups.hide(\"backgroundColor.picker\"),g.toolbar.showInline()}}},k.DefineIcon(\"textColor\",{NAME:\"tint\",SVG_KEY:\"textColor\"}),k.RegisterCommand(\"textColor\",{title:\"Text Color\",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"textColor.picker\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"textColor.picker\")):this.colors.showColorsPopup(\"textColor\")}}),k.RegisterCommand(\"applytextColor\",{undo:!0,callback:function(o,t){this.colors.text(t)}}),k.RegisterCommand(\"customTextColor\",{title:\"OK\",undo:!0,callback:function(){this.colors.customColor(\"text\")}}),k.DefineIcon(\"backgroundColor\",{NAME:\"paint-brush\",SVG_KEY:\"backgroundColor\"}),k.RegisterCommand(\"backgroundColor\",{title:\"Background Color\",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"backgroundColor.picker\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"backgroundColor.picker\")):this.colors.showColorsPopup(\"backgroundColor\")}}),k.RegisterCommand(\"applybackgroundColor\",{undo:!0,callback:function(o,t){this.colors.background(t)}}),k.RegisterCommand(\"customBackgroundColor\",{title:\"OK\",undo:!0,callback:function(){this.colors.customColor(\"background\")}}),k.DefineIcon(\"colorsBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),k.RegisterCommand(\"colorsBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,refreshAfterCallback:!1,callback:function(){this.colors.back()}}),k.DefineIcon(\"remove\",{NAME:\"eraser\",SVG_KEY:\"remove\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(Me){\"use strict\";function Ke(e){return(Ke=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}Me=Me&&Me.hasOwnProperty(\"default\")?Me[\"default\"]:Me,Object.assign(Me.POPUP_TEMPLATES,{\"image.insert\":\"[_BUTTONS_][_UPLOAD_LAYER_][_BY_URL_LAYER_][_PROGRESS_BAR_]\",\"image.edit\":\"[_BUTTONS_]\",\"image.alt\":\"[_BUTTONS_][_ALT_LAYER_]\",\"image.size\":\"[_BUTTONS_][_SIZE_LAYER_]\"}),Object.assign(Me.DEFAULTS,{imageInsertButtons:[\"imageBack\",\"|\",\"imageUpload\",\"imageByURL\"],imageEditButtons:[\"imageReplace\",\"imageAlign\",\"imageCaption\",\"imageRemove\",\"imageLink\",\"linkOpen\",\"linkEdit\",\"linkRemove\",\"-\",\"imageDisplay\",\"imageStyle\",\"imageAlt\",\"imageSize\"],imageAltButtons:[\"imageBack\",\"|\"],imageSizeButtons:[\"imageBack\",\"|\"],imageUpload:!0,imageUploadURL:null,imageCORSProxy:\"https://cors-anywhere.froala.com\",imageUploadRemoteUrls:!0,imageUploadParam:\"file\",imageUploadParams:{},imageUploadToS3:!1,imageUploadToAzure:!1,imageUploadMethod:\"POST\",imageMaxSize:10485760,imageAllowedTypes:[\"jpeg\",\"jpg\",\"png\",\"gif\",\"webp\"],imageResize:!0,imageResizeWithPercent:!1,imageRoundPercent:!1,imageDefaultWidth:300,imageDefaultAlign:\"center\",imageDefaultDisplay:\"block\",imageSplitHTML:!1,imageStyles:{\"fr-rounded\":\"Rounded\",\"fr-bordered\":\"Bordered\",\"fr-shadow\":\"Shadow\"},imageMove:!0,imageMultipleStyles:!0,imageTextNear:!0,imagePaste:!0,imagePasteProcess:!1,imageMinWidth:16,imageOutputSize:!1,imageDefaultMargin:5,imageAddNewLine:!1}),Me.IMAGE_ALLOW_REGEX=/\\.(gif|jpe?g|tiff?|png|webp|bmp)$/i,Me.PLUGINS.image=function(A){var C,p,g,f,s,a,S=A.$,E=\"https://i.froala.com/upload\",t=!1,i=1,c=2,d=3,m=4,R=5,U=6,r={};function u(){var e=A.popups.get(\"image.insert\").find(\".fr-image-by-url-layer input\");e.val(\"\"),C&&e.val(C.attr(\"src\")),e.trigger(\"change\")}function o(e){return window.pageYOffset+e.get(0).getBoundingClientRect().top}function n(){var e=A.popups.get(\"image.edit\");if(e||(e=P()),e){var t=C;A.popups.setContainer(\"image.edit\",A.$sc),A.popups.refresh(\"image.edit\");var a=t.offset().left+t.outerWidth()/2,i=t&&o(t),r=A.$wp&&o(A.$wp);r||(r=i);var n=0;A.opts.iframe?((n=A.$wp.scrollTop()+e.outerHeight())<t.get(0).getBoundingClientRect().top&&(n=t.get(0).getBoundingClientRect().top),n>t.get(0).getBoundingClientRect().top+t.height()&&(n=t.get(0).getBoundingClientRect().top+t.height())):n=r<i?i:A.$wp&&i+t.height()<r+A.$wp.height()?i+t.height():r+e.outerHeight(),C.hasClass(\"fr-uploading\")?N():A.popups.show(\"image.edit\",a,n,1,!0)}}function h(){k()}function l(e){0<e.parents(\".fr-img-caption\").length&&(e=e.parents(\".fr-img-caption\").first());var t=e.hasClass(\"fr-dib\")?\"block\":e.hasClass(\"fr-dii\")?\"inline\":null,a=e.hasClass(\"fr-fil\")?\"left\":e.hasClass(\"fr-fir\")?\"right\":ve(e);he(e,t,a),e.removeClass(\"fr-dib fr-dii fr-fir fr-fil\")}function v(){for(var e,t=\"IMG\"==A.el.tagName?[A.el]:A.el.querySelectorAll(\"img\"),a=0;a<t.length;a++){var i=S(t[a]);!A.opts.htmlUntouched&&A.opts.useClasses?((A.opts.imageDefaultAlign||A.opts.imageDefaultDisplay)&&(0<(e=i).parents(\".fr-img-caption\").length&&(e=e.parents(\".fr-img-caption\").first()),e.hasClass(\"fr-dii\")||e.hasClass(\"fr-dib\")||(e.addClass(\"fr-fi\".concat(ve(e)[0])),e.addClass(\"fr-di\".concat(be(e)[0])),e.css(\"margin\",\"\"),e.css(\"float\",\"\"),e.css(\"display\",\"\"),e.css(\"z-index\",\"\"),e.css(\"position\",\"\"),e.css(\"overflow\",\"\"),e.css(\"vertical-align\",\"\"))),A.opts.imageTextNear||(0<i.parents(\".fr-img-caption\").length?i.parents(\".fr-img-caption\").first().removeClass(\"fr-dii\").addClass(\"fr-dib\"):i.removeClass(\"fr-dii\").addClass(\"fr-dib\"))):A.opts.htmlUntouched||A.opts.useClasses||(A.opts.imageDefaultAlign||A.opts.imageDefaultDisplay)&&l(i),A.opts.iframe&&i.on(\"load\",A.size.syncIframe)}}function b(e){void 0===e&&(e=!0);var t,a=Array.prototype.slice.call(A.el.querySelectorAll(\"img\")),i=[];for(t=0;t<a.length;t++)if(i.push(a[t].getAttribute(\"src\")),S(a[t]).toggleClass(\"fr-draggable\",A.opts.imageMove),\"\"===a[t].getAttribute(\"class\")&&a[t].removeAttribute(\"class\"),\"\"===a[t].getAttribute(\"style\")&&a[t].removeAttribute(\"style\"),a[t].parentNode&&a[t].parentNode.parentNode&&A.node.hasClass(a[t].parentNode.parentNode,\"fr-img-caption\")){var r=a[t].parentNode.parentNode;A.browser.mozilla||r.setAttribute(\"contenteditable\",!1),r.setAttribute(\"draggable\",!1),r.classList.add(\"fr-draggable\");var n=a[t].nextSibling;n&&!A.browser.mozilla&&n.setAttribute(\"contenteditable\",!0)}if(s)for(t=0;t<s.length;t++)i.indexOf(s[t].getAttribute(\"src\"))<0&&A.events.trigger(\"image.removed\",[S(s[t])]);if(s&&e){var o=[];for(t=0;t<s.length;t++)o.push(s[t].getAttribute(\"src\"));for(t=0;t<a.length;t++)o.indexOf(a[t].getAttribute(\"src\"))<0&&A.events.trigger(\"image.loaded\",[S(a[t])])}s=a}function D(){if(p||function o(){var e;A.shared.$image_resizer?(p=A.shared.$image_resizer,f=A.shared.$img_overlay,A.events.on(\"destroy\",function(){S(\"body\").first().append(p.removeClass(\"fr-active\"))},!0)):(A.shared.$image_resizer=S(document.createElement(\"div\")).attr(\"class\",\"fr-image-resizer\"),p=A.shared.$image_resizer,A.events.$on(p,\"mousedown\",function(e){e.stopPropagation()},!0),A.opts.imageResize&&(p.append(y(\"nw\")+y(\"ne\")+y(\"sw\")+y(\"se\")),A.shared.$img_overlay=S(document.createElement(\"div\")).attr(\"class\",\"fr-image-overlay\"),f=A.shared.$img_overlay,e=p.get(0).ownerDocument,S(e).find(\"body\").first().append(f)));A.events.on(\"shared.destroy\",function(){p.html(\"\").removeData().remove(),p=null,A.opts.imageResize&&(f.remove(),f=null)},!0),A.helpers.isMobile()||A.events.$on(S(A.o_win),\"resize\",function(){C&&!C.hasClass(\"fr-uploading\")?ce(!0):C&&(D(),ye(),N(!1))});if(A.opts.imageResize){e=p.get(0).ownerDocument,A.events.$on(p,A._mousedown,\".fr-handler\",x),A.events.$on(S(e),A._mousemove,T),A.events.$on(S(e.defaultView||e.parentWindow),A._mouseup,$),A.events.$on(f,\"mouseleave\",$);var i=1,r=null,n=0;A.events.on(\"keydown\",function(e){if(C){var t=-1!=navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey,a=e.which;(a!==r||200<e.timeStamp-n)&&(i=1),(a==Me.KEYCODE.EQUALS||A.browser.mozilla&&a==Me.KEYCODE.FF_EQUALS)&&t&&!e.altKey?i=te.call(this,e,1,1,i):(a==Me.KEYCODE.HYPHEN||A.browser.mozilla&&a==Me.KEYCODE.FF_HYPHEN)&&t&&!e.altKey?i=te.call(this,e,2,-1,i):A.keys.ctrlKey(e)||a!=Me.KEYCODE.ENTER||(C.before(\"<br>\"),z(C)),r=a,n=e.timeStamp}},!0),A.events.on(\"keyup\",function(){i=1})}}(),!C)return!1;var e=A.$wp||A.$sc;e.append(p),p.data(\"instance\",A);var t=e.scrollTop()-(\"static\"!=e.css(\"position\")?e.offset().top:0),a=e.scrollLeft()-(\"static\"!=e.css(\"position\")?e.offset().left:0);a-=A.helpers.getPX(e.css(\"border-left-width\")),t-=A.helpers.getPX(e.css(\"border-top-width\")),A.$el.is(\"img\")&&A.$sc.is(\"body\")&&(a=t=0);var i=Ce();Se()&&(i=i.find(\".fr-img-wrap\"));var r=0,n=0;A.opts.iframe&&(r=A.helpers.getPX(A.$wp.find(\".fr-iframe\").css(\"padding-top\")),n=A.helpers.getPX(A.$wp.find(\".fr-iframe\").css(\"padding-left\"))),p.css(\"top\",(A.opts.iframe?i.offset().top+r:i.offset().top+t)-1).css(\"left\",(A.opts.iframe?i.offset().left+n:i.offset().left+a)-1).css(\"width\",i.get(0).getBoundingClientRect().width).css(\"height\",i.get(0).getBoundingClientRect().height).addClass(\"fr-active\")}function y(e){return'<div class=\"fr-handler fr-h'.concat(e,'\"></div>')}function w(e){Se()&&C.parents(\".fr-img-caption\").css(\"width\",e),C.css(\"width\",e)}function x(e){if(!A.core.sameInstance(p))return!0;if(e.preventDefault(),e.stopPropagation(),A.$el.find(\"img.fr-error\").left)return!1;A.undo.canDo()||A.undo.saveStep();var t=e.pageX||e.originalEvent.touches[0].pageX;if(\"mousedown\"==e.type){var a=A.$oel.get(0),i=a.ownerDocument,r=i.defaultView||i.parentWindow,n=!1;try{n=r.location!=r.parent.location&&!(r.$&&r.$.FE)}catch(l){}n&&r.frameElement&&(t+=A.helpers.getPX(S(a).offset().left)+r.frameElement.clientLeft)}(g=S(this)).data(\"start-x\",t),g.data(\"start-width\",C.width()),g.data(\"start-height\",C.height());var o=C.width();if(A.opts.imageResizeWithPercent){var s=C.parentsUntil(A.$el,A.html.blockTagsQuery()).get(0)||A.el;o=(o/S(s).outerWidth()*100).toFixed(2)+\"%\"}w(o),f.show(),A.popups.hideAll(),ue()}function T(e){if(!A.core.sameInstance(p))return!0;var t;if(g&&C){if(e.preventDefault(),A.$el.find(\"img.fr-error\").left)return!1;var a=e.pageX||(e.originalEvent.touches?e.originalEvent.touches[0].pageX:null);if(!a)return!1;var i=a-g.data(\"start-x\"),r=g.data(\"start-width\");if((g.hasClass(\"fr-hnw\")||g.hasClass(\"fr-hsw\"))&&(i=0-i),A.opts.imageResizeWithPercent){var n=C.parentsUntil(A.$el,A.html.blockTagsQuery()).get(0)||A.el;r=((r+i)/S(n).outerWidth()*100).toFixed(2),A.opts.imageRoundPercent&&(r=Math.round(r)),w(\"\".concat(r,\"%\")),(t=Se()?(A.helpers.getPX(C.parents(\".fr-img-caption\").css(\"width\"))/S(n).outerWidth()*100).toFixed(2):(A.helpers.getPX(C.css(\"width\"))/S(n).outerWidth()*100).toFixed(2))===r||A.opts.imageRoundPercent||w(\"\".concat(t,\"%\")),C.css(\"height\",\"\").removeAttr(\"height\")}else r+i>=A.opts.imageMinWidth&&(w(r+i),t=Se()?A.helpers.getPX(C.parents(\".fr-img-caption\").css(\"width\")):A.helpers.getPX(C.css(\"width\"))),t!==r+i&&w(t),((C.attr(\"style\")||\"\").match(/(^height:)|(; *height:)/)||C.attr(\"height\"))&&(C.css(\"height\",g.data(\"start-height\")*C.width()/g.data(\"start-width\")),C.removeAttr(\"height\"));D(),A.events.trigger(\"image.resize\",[Ae()])}}function $(e){if(!A.core.sameInstance(p))return!0;if(g&&C){if(e&&e.stopPropagation(),A.$el.find(\"img.fr-error\").left)return!1;g=null,f.hide(),D(),n(),A.undo.saveStep(),A.events.trigger(\"image.resizeEnd\",[Ae()])}else p.removeClass(\"fr-active\")}function I(e,t,a){A.edit.on(),C&&C.addClass(\"fr-error\"),r[e]?O(A.language.translate(r[e])):O(A.language.translate(\"Something went wrong. Please try again.\")),!C&&a&&ae(a),A.events.trigger(\"image.error\",[{code:e,message:r[e]},t,a])}function P(e){if(e)return A.$wp&&A.events.$on(A.$wp,\"scroll.image-edit\",function(){C&&A.popups.isVisible(\"image.edit\")&&(A.events.disableBlur(),n())}),!0;var t=\"\";if(0<A.opts.imageEditButtons.length){var a={buttons:t+='<div class=\"fr-buttons\">\\n        '.concat(A.button.buildList(A.opts.imageEditButtons),\"\\n        </div>\")};return A.popups.create(\"image.edit\",a)}return!1}function N(e){var t=A.popups.get(\"image.insert\");if(t||(t=X()),t.find(\".fr-layer.fr-active\").removeClass(\"fr-active\").addClass(\"fr-pactive\"),t.find(\".fr-image-progress-bar-layer\").addClass(\"fr-active\"),t.find(\".fr-buttons\").hide(),C){var a=Ce();A.popups.setContainer(\"image.insert\",A.$sc);var i=a.offset().left,r=a.offset().top+a.height();A.popups.show(\"image.insert\",i,r,a.outerHeight())}void 0===e&&B(A.language.translate(\"Uploading\"),0)}function k(e){var t=A.popups.get(\"image.insert\");if(t&&(t.find(\".fr-layer.fr-pactive\").addClass(\"fr-active\").removeClass(\"fr-pactive\"),t.find(\".fr-image-progress-bar-layer\").removeClass(\"fr-active\"),t.find(\".fr-buttons\").show(),e||A.$el.find(\"img.fr-error\").length)){if(A.events.focus(),A.$el.find(\"img.fr-error\").length&&(A.$el.find(\"img.fr-error\").remove(),A.undo.saveStep(),A.undo.run(),A.undo.dropRedo()),!A.$wp&&C){var a=C;ce(!0),A.selection.setAfter(a.get(0)),A.selection.restore()}A.popups.hide(\"image.insert\")}}function B(e,t){var a=A.popups.get(\"image.insert\");if(a){var i=a.find(\".fr-image-progress-bar-layer\");i.find(\"h3\").text(e+(t?\" \".concat(t,\"%\"):\"\")),i.removeClass(\"fr-error\"),t?(i.find(\"div\").removeClass(\"fr-indeterminate\"),i.find(\"div > span\").css(\"width\",\"\".concat(t,\"%\"))):i.find(\"div\").addClass(\"fr-indeterminate\")}}function O(e){N();var t=A.popups.get(\"image.insert\").find(\".fr-image-progress-bar-layer\");t.addClass(\"fr-error\");var a=t.find(\"h3\");a.text(e),A.events.disableBlur(),a.focus()}function z(e){fe.call(e.get(0))}function L(){var e=S(this);A.popups.hide(\"image.insert\"),e.removeClass(\"fr-uploading\"),e.next().is(\"br\")&&e.next().remove(),z(e),A.events.trigger(\"image.loaded\",[e])}function _(o,e,s,l,p){l&&\"string\"==typeof l&&(l=A.$(l)),A.edit.off(),B(A.language.translate(\"Loading image\")),e&&(o=A.helpers.sanitizeURL(o));var t=new Image;t.onload=function(){var e,t;if(l){A.undo.canDo()||l.hasClass(\"fr-uploading\")||A.undo.saveStep();var a=l.data(\"fr-old-src\");l.data(\"fr-image-pasted\")&&(a=null),A.$wp?((e=l.clone().removeData(\"fr-old-src\").removeClass(\"fr-uploading\").removeAttr(\"data-fr-image-pasted\")).off(\"load\"),a&&l.attr(\"src\",a),!A.opts.trackChangesEnabled||l[0].parentNode&&\"SPAN\"===l[0].parentNode.tagName&&l[0].parentNode.hasAttribute(\"data-tracking\")||A.track_changes.replaceSpecialItem(l),l.replaceWith(e)):e=l;for(var i=e.get(0).attributes,r=0;r<i.length;r++){var n=i[r];0===n.nodeName.indexOf(\"data-\")?e.removeAttr(n.nodeName):s&&s.hasOwnProperty(n.nodeName)&&e.removeAttr(n.nodeName)}if(void 0!==s)for(t in s)s.hasOwnProperty(t)&&\"link\"!=t&&e.attr(\"\".concat(t),s[t]);e.on(\"load\",L),e.attr(\"src\",o),A.edit.on(),b(!1),l[0].src!=o&&A.selection.restore(),A.undo.saveStep(),A.events.disableBlur(),A.$el.blur(),A.events.trigger(a?\"image.replaced\":\"image.inserted\",[e,p])}else(e=W(o,s,L))&&(b(!1),A.undo.saveStep(),A.events.disableBlur(),A.$el.blur(),A.events.trigger(\"image.inserted\",[e,p]))},t.onerror=function(){I(i)},N(A.language.translate(\"Loading image\")),t.src=o}function M(e,t,a){B(A.language.translate(\"Loading image\"));var i=this.status,r=this.response,n=this.responseXML,o=this.responseText;try{if(A.opts.imageUploadToS3||A.opts.imageUploadToAzure)if(201==i){var s;if(A.opts.imageUploadToAzure){if(!1===A.events.trigger(\"image.uploadedToAzure\",[this.responseURL,a,r],!0))return A.edit.on(),!1;s=t}else s=function p(e){try{var t=S(e).find(\"Location\").text(),a=S(e).find(\"Key\").text();return!1===A.events.trigger(\"image.uploadedToS3\",[t,a,e],!0)?(A.edit.on(),!1):t}catch(i){return I(m,e),!1}}(n);s&&_(s,!1,[],e,r||n)}else I(m,r||n,e);else if(200<=i&&i<300){var l=function g(e){try{if(!1===A.events.trigger(\"image.uploaded\",[e],!0))return A.edit.on(),!1;var t=JSON.parse(e);return t.link?t:(I(c,e),!1)}catch(a){return I(m,e),!1}}(o);l&&_(l.link,!1,l,e,r||o)}else I(d,r||o,e)}catch(f){I(m,r||o,e)}}function K(){I(m,this.response||this.responseText||this.responseXML)}function Y(e){if(e.lengthComputable){var t=e.loaded/e.total*100|0;B(A.language.translate(\"Uploading\"),t)}}function W(e,t,a){var i,r=S(document.createElement(\"img\")).attr(\"src\",e);if(t&&void 0!==t)for(i in t)t.hasOwnProperty(i)&&\"link\"!=i&&(\" data-\".concat(i,'=\"').concat(t[i],'\"'),r.attr(\"\".concat(i),t[i]));var n=A.opts.imageDefaultWidth;n&&\"auto\"!=n&&(n=A.opts.imageResizeWithPercent?\"100%\":\"\".concat(n,\"px\")),r.attr(\"style\",n?\"width: \".concat(n,\";\"):\"\"),he(r,A.opts.imageDefaultDisplay,A.opts.imageDefaultAlign),r.on(\"load\",a),r.on(\"error\",a),A.edit.on(),A.events.focus(!0),A.selection.restore(),A.undo.saveStep(),A.opts.imageSplitHTML?A.markers.split():A.markers.insert(),A.html.wrap();var o=A.$el.find(\".fr-marker\");if(o.length)(o.parent().is(\"hr\")||o.parent().is(\"IMG\"))&&o.parent().after(o),A.node.isLastSibling(o)&&o.parent().hasClass(\"fr-deletable\")&&o.insertAfter(o.parent()),o.replaceWith(r);else{if(A.opts.trackChangesEnabled)return k(!0),!1;A.$el.append(r)}return A.selection.clear(),r}function G(){A.edit.on(),k(!0)}function H(e,t){if(void 0!==e&&0<e.length){if(!1===A.events.trigger(\"image.beforeUpload\",[e,t]))return!1;var a,i=e[0];if(!(null!==A.opts.imageUploadURL&&A.opts.imageUploadURL!=E||A.opts.imageUploadToS3||A.opts.imageUploadToAzure))return function y(r,n){var o=new FileReader;o.onload=function(){var e=o.result;if(o.result.indexOf(\"svg+xml\")<0){for(var t=atob(o.result.split(\",\")[1]),a=[],i=0;i<t.length;i++)a.push(t.charCodeAt(i));e=window.URL.createObjectURL(new Blob([new Uint8Array(a)],{type:r.type})),n&&n.data(\"fr-old-src\",n.attr(\"src\")),A.image.insert(e,!1,null,n)}else A.image.insert(e,null,null,A.image.get())},N(),o.readAsDataURL(r)}(i,t||C),!1;if(i.name||(i.name=(new Date).getTime()+\".\"+(i.type||\"image/jpeg\").replace(/image\\//g,\"\")),i.size>A.opts.imageMaxSize)return I(R),!1;if(A.opts.imageAllowedTypes.indexOf(i.type.replace(/image\\//g,\"\"))<0)return I(U),!1;if(A.drag_support.formdata&&(a=A.drag_support.formdata?new FormData:null),a){var r;if(!1!==A.opts.imageUploadToS3)for(r in a.append(\"key\",A.opts.imageUploadToS3.keyStart+(new Date).getTime()+\"-\"+(i.name||\"untitled\")),a.append(\"success_action_status\",\"201\"),a.append(\"X-Requested-With\",\"xhr\"),a.append(\"Content-Type\",i.type),A.opts.imageUploadToS3.params)A.opts.imageUploadToS3.params.hasOwnProperty(r)&&a.append(r,A.opts.imageUploadToS3.params[r]);for(r in A.opts.imageUploadParams)A.opts.imageUploadParams.hasOwnProperty(r)&&a.append(r,A.opts.imageUploadParams[r]);a.append(A.opts.imageUploadParam,i,i.name);var n,o,s=A.opts.imageUploadURL,l=A.opts.imageUploadMethod;A.opts.imageUploadToS3&&(s=A.opts.imageUploadToS3.uploadURL?A.opts.imageUploadToS3.uploadURL:\"https://\".concat(A.opts.imageUploadToS3.region,\".amazonaws.com/\").concat(A.opts.imageUploadToS3.bucket)),A.opts.imageUploadToAzure&&(n=s=A.opts.imageUploadToAzure.uploadURL?\"\".concat(A.opts.imageUploadToAzure.uploadURL,\"/\").concat(i.name):encodeURI(\"https://\".concat(A.opts.imageUploadToAzure.account,\".blob.core.windows.net/\").concat(A.opts.imageUploadToAzure.container,\"/\").concat(i.name)),A.opts.imageUploadToAzure.SASToken&&(s+=A.opts.imageUploadToAzure.SASToken),l=\"PUT\");var p=A.core.getXHR(s,l);if(A.opts.imageUploadToAzure){var g=(new Date).toUTCString();if(!A.opts.imageUploadToAzure.SASToken&&A.opts.imageUploadToAzure.accessKey){var f=A.opts.imageUploadToAzure.account,c=A.opts.imageUploadToAzure.container;if(A.opts.imageUploadToAzure.uploadURL){var d=A.opts.imageUploadToAzure.uploadURL.split(\"/\");c=d.pop(),f=d.pop().split(\".\")[0]}var m=\"x-ms-blob-type:BlockBlob\\nx-ms-date:\".concat(g,\"\\nx-ms-version:2019-07-07\"),u=encodeURI(\"/\"+f+\"/\"+c+\"/\"+i.name),h=l+\"\\n\\n\\n\"+i.size+\"\\n\\n\"+i.type+\"\\n\\n\\n\\n\\n\\n\\n\"+m+\"\\n\"+u,v=A.cryptoJSPlugin.cryptoJS.HmacSHA256(h,A.cryptoJSPlugin.cryptoJS.enc.Base64.parse(A.opts.imageUploadToAzure.accessKey)).toString(A.cryptoJSPlugin.cryptoJS.enc.Base64),b=\"SharedKey \"+f+\":\"+v;o=v,p.setRequestHeader(\"Authorization\",b)}for(r in p.setRequestHeader(\"x-ms-version\",\"2019-07-07\"),p.setRequestHeader(\"x-ms-date\",g),p.setRequestHeader(\"Content-Type\",i.type),p.setRequestHeader(\"x-ms-blob-type\",\"BlockBlob\"),A.opts.imageUploadParams)A.opts.imageUploadParams.hasOwnProperty(r)&&p.setRequestHeader(r,A.opts.imageUploadParams[r]);for(r in A.opts.imageUploadToAzure.params)A.opts.imageUploadToAzure.params.hasOwnProperty(r)&&p.setRequestHeader(r,A.opts.imageUploadToAzure.params[r])}!function w(t,a,i,r,n,o){function s(){var e=S(this);e.off(\"load\"),e.addClass(\"fr-uploading\"),e.next().is(\"br\")&&e.next().remove(),A.placeholder.refresh(),z(e),D(),N(),A.edit.off(),t.onload=function(){M.call(t,e,n,o)},t.onerror=K,t.upload.onprogress=Y,t.onabort=G,S(e.off(\"abortUpload\")).on(\"abortUpload\",function(){4!=t.readyState&&(t.abort(),r?(r.attr(\"src\",r.data(\"fr-old-src\")),r.removeClass(\"fr-uploading\")):e.remove(),ce(!0))}),t.send(A.opts.imageUploadToAzure?i:a)}var l=new FileReader;l.onload=function(){var e=l.result;if(l.result.indexOf(\"svg+xml\")<0){for(var t=atob(l.result.split(\",\")[1]),a=[],i=0;i<t.length;i++)a.push(t.charCodeAt(i));e=window.URL.createObjectURL(new Blob([new Uint8Array(a)],{type:\"image/jpeg\"}))}r?(r.on(\"load\",s),r.on(\"error\",function(){s(),S(this).off(\"error\")}),A.edit.on(),A.undo.saveStep(),r.data(\"fr-old-src\",r.attr(\"src\")),r.attr(\"src\",e)):W(e,null,s)},l.readAsDataURL(i)}(p,a,i,t||C,n,o)}}}function F(e){if(e.is(\"img\")&&0<e.parents(\".fr-img-caption\").length)return e.parents(\".fr-img-caption\")}function V(e){var t=e.originalEvent.dataTransfer;if(t&&t.files&&t.files.length){var a=t.files[0];if(a&&a.type&&-1!==a.type.indexOf(\"image\")&&0<=A.opts.imageAllowedTypes.indexOf(a.type.replace(/image\\//g,\"\"))){if(!A.opts.imageUpload)return e.preventDefault(),e.stopPropagation(),!1;A.markers.remove(),A.markers.insertAtPoint(e.originalEvent),A.$el.find(\".fr-marker\").replaceWith(Me.MARKERS),0===A.$el.find(\".fr-marker\").length&&A.selection.setAtEnd(A.el),A.popups.hideAll();var i=A.popups.get(\"image.insert\");i||(i=X()),A.popups.setContainer(\"image.insert\",A.$sc);var r=e.originalEvent.pageX,n=e.originalEvent.pageY;if(A.opts.iframe){var o=A.helpers.getPX(A.$wp.find(\".fr-iframe\").css(\"padding-top\")),s=A.helpers.getPX(A.$wp.find(\".fr-iframe\").css(\"padding-left\"));n+=A.$iframe.offset().top+o,r+=A.$iframe.offset().left+s}return A.popups.show(\"image.insert\",r,n),N(),0<=A.opts.imageAllowedTypes.indexOf(a.type.replace(/image\\//g,\"\"))?(ce(!0),H(t.files)):I(U),e.preventDefault(),e.stopPropagation(),!1}}}function X(e){if(e)return A.popups.onRefresh(\"image.insert\",u),A.popups.onHide(\"image.insert\",h),!0;var t,a,i=\"\";A.opts.imageUpload||-1===A.opts.imageInsertButtons.indexOf(\"imageUpload\")||A.opts.imageInsertButtons.splice(A.opts.imageInsertButtons.indexOf(\"imageUpload\"),1);var r=A.button.buildList(A.opts.imageInsertButtons);\"\"!==r&&(i='<div class=\"fr-buttons fr-tabs\">'.concat(r,\"</div>\"));var n=A.opts.imageInsertButtons.indexOf(\"imageUpload\"),o=A.opts.imageInsertButtons.indexOf(\"imageByURL\"),s=\"\";0<=n&&(t=\" fr-active\",0<=o&&o<n&&(t=\"\"),s='<div class=\"fr-image-upload-layer'.concat(t,' fr-layer\" id=\"fr-image-upload-layer-').concat(A.id,'\"><strong>').concat(A.language.translate(\"Drop image\"),\"</strong><br>(\").concat(A.language.translate(\"or click\"),')<div class=\"fr-form\"><input type=\"file\" accept=\"image/').concat(A.opts.imageAllowedTypes.join(\", image/\").toLowerCase(),'\" tabIndex=\"-1\" aria-labelledby=\"fr-image-upload-layer-').concat(A.id,'\" role=\"button\"></div></div>'));var l=\"\";0<=o&&(t=\" fr-active\",0<=n&&n<o&&(t=\"\"),l='<div class=\"fr-image-by-url-layer'.concat(t,' fr-layer\" id=\"fr-image-by-url-layer-').concat(A.id,'\"><div class=\"fr-input-line\"><input id=\"fr-image-by-url-layer-text-').concat(A.id,'\" type=\"text\" placeholder=\"http://\" tabIndex=\"1\" aria-required=\"true\"></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"imageInsertByURL\" tabIndex=\"2\" role=\"button\">').concat(A.language.translate(\"Insert\"),\"</button></div></div>\"));var p={buttons:i,upload_layer:s,by_url_layer:l,progress_bar:'<div class=\"fr-image-progress-bar-layer fr-layer\"><h3 tabIndex=\"-1\" class=\"fr-message\">Uploading</h3><div class=\"fr-loader\"><span class=\"fr-progress\"></span></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-dismiss\" data-cmd=\"imageDismissError\" tabIndex=\"2\" role=\"button\">OK</button></div></div>'};return 1<=A.opts.imageInsertButtons.length&&(a=A.popups.create(\"image.insert\",p)),A.$wp&&A.events.$on(A.$wp,\"scroll\",function(){C&&A.popups.isVisible(\"image.insert\")&&ye()}),function g(i){A.events.$on(i,\"dragover dragenter\",\".fr-image-upload-layer\",function(e){return S(this).addClass(\"fr-drop\"),(A.browser.msie||A.browser.edge)&&e.preventDefault(),!1},!0),A.events.$on(i,\"dragleave dragend\",\".fr-image-upload-layer\",function(e){return S(this).removeClass(\"fr-drop\"),(A.browser.msie||A.browser.edge)&&e.preventDefault(),!1},!0),A.events.$on(i,\"drop\",\".fr-image-upload-layer\",function(e){e.preventDefault(),e.stopPropagation(),S(this).removeClass(\"fr-drop\");var t=e.originalEvent.dataTransfer;if(t&&t.files){var a=i.data(\"instance\")||A;a.events.disableBlur(),a.image.upload(t.files),a.events.enableBlur()}},!0),A.helpers.isIOS()&&A.events.$on(i,\"touchstart\",'.fr-image-upload-layer input[type=\"file\"]',function(){S(this).trigger(\"click\")},!0),A.events.$on(i,\"change\",'.fr-image-upload-layer input[type=\"file\"]',function(){if(this.files){var e=i.data(\"instance\")||A;e.events.disableBlur(),i.find(\"input:focus\").blur(),e.events.enableBlur(),e.image.upload(this.files,C)}S(this).val(\"\")},!0)}(a),a}function q(){C&&A.popups.get(\"image.alt\").find(\"input\").val(C.attr(\"alt\")||\"\").trigger(\"change\")}function j(){var e=A.popups.get(\"image.alt\");e||(e=J()),k(),A.popups.refresh(\"image.alt\"),A.popups.setContainer(\"image.alt\",A.$sc);var t=Ce(),a=t.outerWidth()/2;Se()&&(t=t.find(\".fr-img-wrap\"),a=C.outerWidth()/2);var i=t.offset().left+a,r=t.offset().top+t.outerHeight(),n=t.outerHeight();A.opts.iframe&&Se()&&(n=C?C.outerHeight():0),A.popups.show(\"image.alt\",i,r,n,!0)}function J(e){if(e)return A.popups.onRefresh(\"image.alt\",q),!0;var t={buttons:'<div class=\"fr-buttons fr-tabs\">'.concat(A.button.buildList(A.opts.imageAltButtons),\"</div>\"),alt_layer:'<div class=\"fr-image-alt-layer fr-layer fr-active\" id=\"fr-image-alt-layer-'.concat(A.id,'\"><div class=\"fr-input-line\"><input id=\"fr-image-alt-layer-text-').concat(A.id,'\" type=\"text\" placeholder=\"').concat(A.language.translate(\"Alternative Text\"),'\" tabIndex=\"1\"></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"imageSetAlt\" tabIndex=\"2\" role=\"button\">').concat(A.language.translate(\"Update\"),\"</button></div></div>\")},a=A.popups.create(\"image.alt\",t);return A.$wp&&A.events.$on(A.$wp,\"scroll.image-alt\",function(){C&&A.popups.isVisible(\"image.alt\")&&j()}),a}function Q(){var e=A.popups.get(\"image.size\"),t=C.get(0).style.height?C.get(0).style.height:\"auto\",a=C.get(0).style.width?C.get(0).style.width:\"auto\";if(C)if(Se()){var i=C.parent();i.get(0).style.width||(i=C.parent().parent()),e.find('input[name=\"width\"]').val(a).trigger(\"change\"),e.find('input[name=\"height\"]').val(t).trigger(\"change\")}else e.find('input[name=\"width\"]').val(a).trigger(\"change\"),e.find('input[name=\"height\"]').val(t).trigger(\"change\")}function Z(){var e=A.popups.get(\"image.size\");e||(e=ee()),k(),A.popups.refresh(\"image.size\"),A.popups.setContainer(\"image.size\",A.$sc);var t=Ce(),a=t.outerWidth()/2;Se()&&(t=t.find(\".fr-img-wrap\"),a=C.outerWidth()/2);var i=t.outerHeight();A.opts.iframe&&Se()&&(i=C?C.outerHeight():0);var r=t.offset().left+a,n=t.offset().top+t.outerHeight();A.popups.show(\"image.size\",r,n,i,!0)}function ee(e){if(e)return A.popups.onRefresh(\"image.size\",Q),!0;var t={buttons:'<div class=\"fr-buttons fr-tabs\">'.concat(A.button.buildList(A.opts.imageSizeButtons),\"</div>\"),size_layer:'<div class=\"fr-image-size-layer fr-layer fr-active\" id=\"fr-image-size-layer-'.concat(A.id,'\"><div class=\"fr-image-group\"><div class=\"fr-input-line\"><input id=\"fr-image-size-layer-width-\\'').concat(A.id,'\" type=\"text\" name=\"width\" placeholder=\"').concat(A.language.translate(\"Width\"),'\" tabIndex=\"1\"></div><div class=\"fr-input-line\"><input id=\"fr-image-size-layer-height').concat(A.id,'\" type=\"text\" name=\"height\" placeholder=\"').concat(A.language.translate(\"Height\"),'\" tabIndex=\"1\"></div></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"imageSetSize\" tabIndex=\"2\" role=\"button\">').concat(A.language.translate(\"Update\"),\"</button></div></div>\")},a=A.popups.create(\"image.size\",t);return A.$wp&&A.events.$on(A.$wp,\"scroll.image-size\",function(){C&&A.popups.isVisible(\"image.size\")&&Z()}),a}function te(e,t,a,i){return e.pageX=t,x.call(this,e),e.pageX=e.pageX+a*Math.floor(Math.pow(1.1,i)),T.call(this,e),$.call(this,e),++i}function ae(e){if(e=e||Ce(),A.opts.trackChangesEnabled&&!A.helpers.isMobile()&&(!e[0].parentNode||\"SPAN\"!==e[0].parentNode.tagName||!e[0].parentNode.hasAttribute(\"data-tracking\")))return A.track_changes.removeSpecialItem(e),A.popups.hideAll(),void ce(!0);e&&!1!==A.events.trigger(\"image.beforeRemove\",[e])&&(A.popups.hideAll(),we(),ce(!0),A.undo.canDo()||A.undo.saveStep(),e.get(0)==A.el?e.removeAttr(\"src\"):(e.get(0).parentNode&&\"A\"==e.get(0).parentNode.tagName?(A.selection.setBefore(e.get(0).parentNode)||A.selection.setAfter(e.get(0).parentNode)||e.parent().after(Me.MARKERS),S(e.get(0).parentNode).remove()):(A.selection.setBefore(e.get(0))||A.selection.setAfter(e.get(0))||e.after(Me.MARKERS),e.remove()),A.html.fillEmptyBlocks(),A.selection.restore()),A.undo.saveStep())}function ie(e){var t=e.which;if(C&&(t==Me.KEYCODE.BACKSPACE||t==Me.KEYCODE.DELETE))return e.preventDefault(),e.stopPropagation(),ae(),!1;if(C&&t==Me.KEYCODE.ESC){var a=C;return ce(!0),A.selection.setAfter(a.get(0)),A.selection.restore(),e.preventDefault(),!1}if(!C||t!=Me.KEYCODE.ARROW_LEFT&&t!=Me.KEYCODE.ARROW_RIGHT)return C&&t===Me.KEYCODE.TAB?(e.preventDefault(),e.stopPropagation(),ce(!0),!1):C&&t!=Me.KEYCODE.F10&&!A.keys.isBrowserAction(e)?(e.preventDefault(),e.stopPropagation(),!1):void 0;var i=C.get(0);return ce(!0),t==Me.KEYCODE.ARROW_LEFT?A.selection.setBefore(i):A.selection.setAfter(i),A.selection.restore(),e.preventDefault(),!1}function re(e){if(e&&\"IMG\"==e.tagName){if(A.node.hasClass(e,\"fr-uploading\")||A.node.hasClass(e,\"fr-error\")?e.parentNode.removeChild(e):A.node.hasClass(e,\"fr-draggable\")&&e.classList.remove(\"fr-draggable\"),e.parentNode&&e.parentNode.parentNode&&A.node.hasClass(e.parentNode.parentNode,\"fr-img-caption\")){var t=e.parentNode.parentNode;t.removeAttribute(\"contenteditable\"),t.removeAttribute(\"draggable\"),t.classList.remove(\"fr-draggable\");var a=e.nextSibling;a&&a.removeAttribute(\"contenteditable\")}}else if(e&&e.nodeType==Node.ELEMENT_NODE)for(var i=e.querySelectorAll(\"img.fr-uploading, img.fr-error, img.fr-draggable\"),r=0;r<i.length;r++)re(i[r])}function ne(e){if(!1===A.events.trigger(\"image.beforePasteUpload\",[e]))return S(e).removeAttr(\"data-fr-image-pasted\"),!1;C=S(e),D(),n(),ye(),N(),C.on(\"load\",function(){var t=[];D(),S(A.popups.get(\"image.insert\").get(0)).find(\"div.fr-active.fr-error\").length<1&&N(),S(this).data(\"events\").filter(function(e){\"load\"===e[0]&&t.push(e)}),t.length<=1&&S(this).off(\"load\")});for(var t=S(e).attr(\"src\").split(\",\"),a=atob(t[1]),i=[],r=0;r<a.length;r++)i.push(a.charCodeAt(r));H([A.browser.safari&&!A.opts.imageUploadURL?new Blob([new Uint8Array(i)],{type:t[0].replace(/data\\:/g,\"\")}):new Blob([new Uint8Array(i)],{type:t[0].replace(/data\\:/g,\"\").replace(/;base64/g,\"\")})],C)}function oe(){A.opts.imagePaste?A.$el.find(\"img[data-fr-image-pasted]\").each(function(e,a){if(A.opts.imagePasteProcess){var t=A.opts.imageDefaultWidth;t&&\"auto\"!=t&&(t+=A.opts.imageResizeWithPercent?\"%\":\"px\"),S(a).css(\"width\",t).removeClass(\"fr-dii fr-dib fr-fir fr-fil\"),he(S(a),A.opts.imageDefaultDisplay,A.opts.imageDefaultAlign)}if(0===a.src.indexOf(\"data:\"))ne(a);else if(0===a.src.indexOf(\"blob:\")||0===a.src.indexOf(\"http\")&&A.opts.imageUploadRemoteUrls&&A.opts.imageCORSProxy){var i=new Image;i.crossOrigin=\"Anonymous\",i.onload=function(){var e=A.o_doc.createElement(\"CANVAS\"),t=e.getContext(\"2d\");e.height=this.naturalHeight,e.width=this.naturalWidth,t.drawImage(this,0,0),setTimeout(function(){ne(a)},0),a.src=e.toDataURL(Me.IMAGE_TYPE)},A.browser.msie&&Me.IMAGE_ALLOW_REGEX.test(a.src)&&(Me.IMAGE_TYPE=\"image/\"+a.src.split(Me.IMAGE_ALLOW_REGEX)[1]),i.src=(0===a.src.indexOf(\"blob:\")?\"\":\"\".concat(A.opts.imageCORSProxy,\"/\"))+a.src,0!==a.src.indexOf(\"blob:\")&&A.undo.saveStep()}else 0!==a.src.indexOf(\"http\")||0===a.src.indexOf(\"https://mail.google.com/mail\")?(A.selection.save(),S(a).remove(),A.selection.restore()):S(a).removeAttr(\"data-fr-image-pasted\")}):A.$el.find(\"img[data-fr-image-pasted]\").remove()}function se(e){var t=e.target.result,a=A.opts.imageDefaultWidth;a&&\"auto\"!=a&&(a+=A.opts.imageResizeWithPercent?\"%\":\"px\"),A.undo.saveStep(),A.html.insert('<img data-fr-image-pasted=\"true\" src=\"'.concat(t,'\"').concat(a?' style=\"width: '.concat(a,';\"'):\"\",\">\"));var i=A.$el.find('img[data-fr-image-pasted=\"true\"]');i&&he(i,A.opts.imageDefaultDisplay,A.opts.imageDefaultAlign),A.events.trigger(\"paste.after\")}function le(e,t){var a=new FileReader;a.onload=function i(e){var t=A.opts.imageDefaultWidth;t&&\"auto\"!=t&&(t+=A.opts.imageResizeWithPercent?\"%\":\"px\"),A.html.insert('<img data-fr-image-pasted=\"true\" src=\"'.concat(e,'\"').concat(t?' style=\"width: '.concat(t,';\"'):\"\",\">\"));var a=A.$el.find('img[data-fr-image-pasted=\"true\"]');a&&he(a,A.opts.imageDefaultDisplay,A.opts.imageDefaultAlign),A.events.trigger(\"paste.after\")}(t),a.readAsDataURL(e,t)}function pe(e){if(e&&e.clipboardData&&e.clipboardData.items){var t=(e.clipboardData||window.clipboardData).getData(\"text/html\")||\"\";A.browser.mozilla&&(\"\"===t||/<!--StartFragment-->([ ])<!--EndFragment-->/.test(t))&&(t=A.win.localStorage.getItem(\"fr-copied-html\"));var a=(new DOMParser).parseFromString(t,\"text/html\").querySelector(\"img\");if(a&&!A.opts.imageUploadURL){if(!a)return!1;var i=a.src,r=null;if(e.clipboardData.types&&-1!=[].indexOf.call(e.clipboardData.types,\"text/rtf\")||e.clipboardData.getData(\"text/rtf\"))r=e.clipboardData.items[0].getAsFile();else for(var n=0;n<e.clipboardData.items.length;n++)if(r=e.clipboardData.items[n].getAsFile()){Me.IMAGE_TYPE=r.type;break}if(r)return le(r,i),!1}else{var o=null;if(e.clipboardData.types&&-1!=[].indexOf.call(e.clipboardData.types,\"text/rtf\")||e.clipboardData.getData(\"text/rtf\"))o=e.clipboardData.items[0].getAsFile();else for(var s=0;s<e.clipboardData.items.length&&!(o=e.clipboardData.items[s].getAsFile());s++);if(o)return function l(e){var t=new FileReader;t.onload=se,t.readAsDataURL(e)}(o),!1}}}function ge(e){return e=e.replace(/<img /gi,'<img data-fr-image-pasted=\"true\" ')}function fe(e){if(\"false\"==S(this).parents(\"[contenteditable]\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;if(e&&\"touchend\"==e.type&&a)return!0;if(e&&A.edit.isDisabled())return e.stopPropagation(),e.preventDefault(),!1;for(var t=0;t<Me.INSTANCES.length;t++)Me.INSTANCES[t]!=A&&Me.INSTANCES[t].events.trigger(\"image.hideResizer\");A.toolbar.disable(),e&&(e.stopPropagation(),e.preventDefault()),A.helpers.isMobile()&&(A.events.disableBlur(),A.$el.blur(),A.events.enableBlur()),A.opts.iframe&&A.size.syncIframe(),C=S(this),we(),D(),n(),A.browser.msie?(A.popups.areVisible()&&A.events.disableBlur(),A.win.getSelection&&(A.win.getSelection().removeAllRanges(),A.win.getSelection().addRange(A.doc.createRange()))):A.selection.clear(),A.helpers.isIOS()&&(A.events.disableBlur(),A.$el.blur()),A.button.bulkRefresh(),A.events.trigger(\"video.hideResizer\")}function ce(e){C&&(function t(){return de}()||!0===e)&&(A.toolbar.enable(),p.removeClass(\"fr-active\"),A.popups.hideAll(),C=null,ue(),g=null,f&&f.hide())}r[i]=\"Image cannot be loaded from the passed link.\",r[c]=\"No link in upload response.\",r[d]=\"Error during file upload.\",r[m]=\"Parsing response failed.\",r[R]=\"File is too large.\",r[U]=\"Image file type is invalid.\",r[7]=\"Files can be uploaded only to same domain in IE 8 and IE 9.\";var de=!(r[8]=\"Image file is corrupted.\");function me(){de=!0}function ue(){de=!1}function he(e,t,a){if(!A.opts.htmlUntouched&&A.opts.useClasses)e.removeClass(\"fr-fil fr-fir fr-dib fr-dii\"),a&&e.addClass(\"fr-fi\".concat(a[0])),t&&e.addClass(\"fr-di\".concat(t[0]));else if(\"inline\"==t)if(e.css({display:\"inline-block\",verticalAlign:\"bottom\",margin:A.opts.imageDefaultMargin}),\"center\"==a)e.css({\"float\":\"none\",marginBottom:\"\",marginTop:\"\",maxWidth:\"calc(100% - \".concat(2*A.opts.imageDefaultMargin,\"px)\"),textAlign:\"center\"});else if(\"left\"==a){var i=\"0px\",r=e.parent(\"span.fr-img-caption\").get(0);r||(r=e.parent().get(0)),r&&\"li\"===r.tagName.toLowerCase()?i=\"20px\":r&&\"p\"===r.tagName.toLowerCase()&&(i=\"15px\"),e.css({\"float\":\"left\",marginLeft:0,maxWidth:\"calc(100% - \".concat(A.opts.imageDefaultMargin,\"px)\"),textAlign:\"left\",marginRight:i})}else e.css({\"float\":\"right\",marginRight:0,maxWidth:\"calc(100% - \".concat(A.opts.imageDefaultMargin,\"px)\"),textAlign:\"right\"});else\"block\"==t&&(e.css({display:\"block\",\"float\":\"none\",verticalAlign:\"top\",margin:\"\".concat(A.opts.imageDefaultMargin,\"px auto\"),textAlign:\"center\"}),\"left\"==a?e.css({marginLeft:0,textAlign:\"left\"}):\"right\"==a&&e.css({marginRight:0,textAlign:\"right\"}))}function ve(e){if(void 0===e&&(e=Ce()),e){if(e.hasClass(\"fr-fil\"))return\"left\";if(e.hasClass(\"fr-fir\"))return\"right\";if(e.hasClass(\"fr-dib\")||e.hasClass(\"fr-dii\"))return\"center\";var t=e.css(\"float\");if(e.css(\"float\",\"none\"),\"block\"==e.css(\"display\")){if(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),0===parseInt(e.css(\"margin-left\"),10))return\"left\";if(0===parseInt(e.css(\"margin-right\"),10))return\"right\"}else{if(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"left\"==e.css(\"float\"))return\"left\";if(\"right\"==e.css(\"float\"))return\"right\"}}return\"center\"}function be(e){void 0===e&&(e=Ce());var t=e.css(\"float\");return e.css(\"float\",\"none\"),\"block\"==e.css(\"display\")?(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"block\"):(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"inline\")}function ye(){var e=A.popups.get(\"image.insert\");e||(e=X()),A.popups.isVisible(\"image.insert\")||(k(),A.popups.refresh(\"image.insert\"),A.popups.setContainer(\"image.insert\",A.$sc));var t=Ce(),a=t.outerWidth()/2;Se()&&(t=t.find(\".fr-img-wrap\"),a=C.outerWidth()/2);var i=t.offset().left+a,r=t.outerHeight(!0);A.opts.iframe&&Se()&&(r=C?C.outerHeight():0);var n=t.offset().top+t.outerHeight();A.popups.show(\"image.insert\",i,n,r,!0)}function we(){if(C){A.events.disableBlur(),A.selection.clear();var e=A.doc.createRange();e.selectNode(C.get(0)),A.browser.msie&&e.collapse(!0),A.selection.get().addRange(e),A.events.enableBlur()}}function Ae(){return C}function Ce(){return Se()?C.parents(\".fr-img-caption\").first():C}function Se(){return!!C&&0<C.parents(\".fr-img-caption\").length}function Ee(e){for(var t=document.createDocumentFragment();e.firstChild;){var a=e.removeChild(e.firstChild);t.appendChild(a)}e.parentNode.replaceChild(t,e)}return{_init:function Re(){var i;(function e(){A.events.$on(A.$el,A._mousedown,\"IMG\"==A.el.tagName?null:'img:not([contenteditable=\"false\"])',function(e){if(\"false\"==S(this).parents(\"contenteditable\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;A.helpers.isMobile()||A.selection.clear(),t=!0,A.popups.areVisible()&&A.events.disableBlur(),A.browser.msie&&(A.events.disableBlur(),A.$el.attr(\"contenteditable\",!1)),A.draggable||\"touchstart\"==e.type||e.preventDefault(),e.stopPropagation()}),A.events.$on(A.$el,A._mousedown,\".fr-img-caption .fr-inner\",function(e){A.core.hasFocus()||A.events.focus(),e.stopPropagation()}),A.events.$on(A.$el,\"paste\",\".fr-img-caption .fr-inner\",function(e){!0===A.opts.toolbarInline&&(A.toolbar.hide(),e.stopPropagation())}),A.events.$on(A.$el,A._mousedown,'img:not([contenteditable=\"false\"])',function(e){var t=this;A.browser.mozilla&&3==e.which&&(S(this).attr(\"contenteditable\",!1),setTimeout(function(){S(t).removeAttr(\"contenteditable\")},200))}),A.events.$on(A.$el,A._mouseup,\"IMG\"==A.el.tagName?null:'img:not([contenteditable=\"false\"])',function(e){if(\"false\"==S(this).parents(\"contenteditable\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;t&&(t=!1,e.stopPropagation(),A.browser.msie&&(A.$el.attr(\"contenteditable\",!0),A.events.enableBlur()))}),A.events.on(\"keyup\",function(e){if(e.shiftKey&&\"\"===A.selection.text().replace(/\\n/g,\"\")&&A.keys.isArrow(e.which)){var t=A.selection.element(),a=A.selection.endElement();t&&\"IMG\"==t.tagName?z(S(t)):a&&\"IMG\"==a.tagName&&z(S(a))}},!0),A.events.on(\"drop\",V),A.events.on(\"element.beforeDrop\",F),A.events.on(\"mousedown window.mousedown\",me),A.events.on(\"window.touchmove\",ue),A.events.on(\"mouseup window.mouseup\",function(){if(C&&!A.helpers.isMobile())return ce(),!1;ue()}),A.events.on(\"touchstart touchend\",function(){if(C&&A.helpers.isMobile())return ce(),!1;ue()}),A.events.on(\"commands.mousedown\",function(e){0<e.parents(\".fr-toolbar\").length&&ce()}),A.events.on(\"image.resizeEnd\",function(){A.opts.iframe&&A.size.syncIframe()}),A.events.on(\"blur image.hideResizer commands.undo commands.redo element.dropped\",function(){ce(!(t=!1))}),A.events.on(\"modals.hide\",function(){C&&(we(),A.selection.clear())}),A.events.on(\"image.resizeEnd\",function(){A.win.getSelection&&z(C)}),A.opts.imageAddNewLine&&A.events.on(\"image.inserted\",function(e){var t=e.get(0);for(t.nextSibling&&\"BR\"===t.nextSibling.tagName&&(t=t.nextSibling);t&&!A.node.isElement(t);)t=A.node.isLastSibling(t)?t.parentNode:null;A.node.isElement(t)&&(A.opts.enter===Me.ENTER_BR?e.after(\"<br>\"):S(A.node.blockParent(e.get(0))).after(\"<\".concat(A.html.defaultTag(),\"><br></\").concat(A.html.defaultTag(),\">\")))})})(),\"IMG\"==A.el.tagName&&A.$el.addClass(\"fr-view\"),A.events.$on(A.$el,A.helpers.isMobile()&&!A.helpers.isWindowsPhone()?\"touchend\":\"click\",\"IMG\"==A.el.tagName?null:'img:not([contenteditable=\"false\"])',fe),A.helpers.isMobile()&&(A.events.$on(A.$el,\"touchstart\",\"IMG\"==A.el.tagName?null:'img:not([contenteditable=\"false\"])',function(){a=!1}),A.events.$on(A.$el,\"touchmove\",function(){a=!0})),A.$wp?(A.events.on(\"window.keydown keydown\",ie,!0),A.events.on(\"keyup\",function(e){if(C&&e.which==Me.KEYCODE.ENTER)return!1},!0),A.events.$on(A.$el,\"keydown\",function(){var e=A.selection.element();(e.nodeType===Node.TEXT_NODE||\"BR\"==e.tagName&&A.node.isLastSibling(e))&&(e=e.parentNode),A.node.hasClass(e,\"fr-inner\")||(A.node.hasClass(e,\"fr-img-caption\")||(e=S(e).parents(\".fr-img-caption\").get(0)),A.node.hasClass(e,\"fr-img-caption\")&&(A.opts.trackChangesEnabled||S(e).after(Me.INVISIBLE_SPACE+Me.MARKERS),A.selection.restore()))})):A.events.$on(A.$win,\"keydown\",ie),A.events.on(\"toolbar.esc\",function(){if(C){if(A.$wp)A.events.disableBlur(),A.events.focus();else{var e=C;ce(!0),A.selection.setAfter(e.get(0)),A.selection.restore()}return!1}},!0),A.events.on(\"toolbar.focusEditor\",function(){if(C)return!1},!0),A.events.on(\"window.cut window.copy\",function(e){if(C&&A.popups.isVisible(\"image.edit\")&&!A.popups.get(\"image.edit\").find(\":focus\").length){var t=Ce();Se()?(t.before(Me.START_MARKER),t.after(Me.END_MARKER),A.selection.restore(),A.paste.saveCopiedText(t.get(0).outerHTML,t.text())):(we(),A.paste.saveCopiedText(C.get(0).outerHTML,C.attr(\"alt\"))),\"copy\"==e.type?setTimeout(function(){z(C)}):(ce(!0),A.undo.saveStep(),setTimeout(function(){A.undo.saveStep()},0))}},!0),A.browser.msie&&A.events.on(\"keydown\",function(e){if(!A.selection.isCollapsed()||!C)return!0;var t=e.which;t==Me.KEYCODE.C&&A.keys.ctrlKey(e)?A.events.trigger(\"window.copy\"):t==Me.KEYCODE.X&&A.keys.ctrlKey(e)&&A.events.trigger(\"window.cut\")}),A.events.$on(S(A.o_win),\"keydown\",function(e){var t=e.which;if(C&&t==Me.KEYCODE.BACKSPACE)return e.preventDefault(),!1}),A.events.$on(A.$win,\"keydown\",function(e){var t=e.which;C&&C.hasClass(\"fr-uploading\")&&t==Me.KEYCODE.ESC&&C.trigger(\"abortUpload\")}),A.events.on(\"destroy\",function(){C&&C.hasClass(\"fr-uploading\")&&C.trigger(\"abortUpload\")}),A.events.on(\"paste.before\",pe),A.events.on(\"paste.beforeCleanup\",ge),A.events.on(\"paste.after\",oe),A.events.on(\"html.set\",v),A.events.on(\"html.inserted\",v),v(),A.events.on(\"destroy\",function(){s=[]}),A.events.on(\"html.processGet\",re),A.opts.imageOutputSize&&A.events.on(\"html.beforeGet\",function(){i=A.el.querySelectorAll(\"img\");for(var e=0;e<i.length;e++){var t=i[e].style.width||S(i[e]).width(),a=i[e].style.height||S(i[e]).height();t&&i[e].setAttribute(\"width\",\"\".concat(t).replace(/px/,\"\")),a&&i[e].setAttribute(\"height\",\"\".concat(a).replace(/px/,\"\"))}}),A.opts.iframe&&A.events.on(\"image.loaded\",A.size.syncIframe),A.$wp&&(b(),A.events.on(\"contentChanged\",b)),A.events.$on(S(A.o_win),\"orientationchange.image\",function(){setTimeout(function(){C&&z(C)},100)}),P(!0),X(!0),ee(!0),J(!0),A.events.on(\"node.remove\",function(e){if(\"IMG\"==e.get(0).tagName)return ae(e),!1})},showInsertPopup:function Ue(){var e=A.$tb.find('.fr-command[data-cmd=\"insertImage\"]'),t=A.popups.get(\"image.insert\");if(t||(t=X()),k(),!t.hasClass(\"fr-active\"))if(A.popups.refresh(\"image.insert\"),A.popups.setContainer(\"image.insert\",A.$tb),e.isVisible()){var a=A.button.getPosition(e),i=a.left,r=a.top;A.popups.show(\"image.insert\",i,r,e.outerHeight())}else A.position.forSelection(t),A.popups.show(\"image.insert\")},showLayer:function De(e){var t,a,i=A.popups.get(\"image.insert\");if(C||A.opts.toolbarInline){if(C){var r=Ce(),n=0;Se()&&(r=r.find(\".fr-img-wrap\"),n=C.outerWidth()/2),a=r.offset().top+r.outerHeight(),t=r.offset().left+n}}else{var o=A.$tb.find('.fr-command[data-cmd=\"insertImage\"]');t=o.offset().left,a=o.offset().top+(A.opts.toolbarBottom?10:o.outerHeight()-10)}!C&&A.opts.toolbarInline&&(a=i.offset().top-A.helpers.getPX(i.css(\"margin-top\")),i.hasClass(\"fr-above\")&&(a+=i.outerHeight())),i.find(\".fr-layer\").removeClass(\"fr-active\"),i.find(\".fr-\".concat(e,\"-layer\")).addClass(\"fr-active\"),A.popups.show(\"image.insert\",t,a,C?C.outerHeight():0,Se()),A.accessibility.focusPopup(i)},refreshUploadButton:function xe(e){var t=A.popups.get(\"image.insert\");t&&t.find(\".fr-image-upload-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},refreshByURLButton:function Te(e){var t=A.popups.get(\"image.insert\");t&&t.find(\".fr-image-by-url-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},upload:H,insertByURL:function $e(){var e=A.popups.get(\"image.insert\").find(\".fr-image-by-url-layer input\");if(0<e.val().length){N(),B(A.language.translate(\"Loading image\"));var t=e.val().trim();if(A.opts.imageUploadRemoteUrls&&A.opts.imageCORSProxy&&A.opts.imageUpload){var a=new XMLHttpRequest;a.onload=function(){200==this.status?H([new Blob([this.response],{type:this.response.type||\"image/png\"})],C):I(i)},a.onerror=function(){_(t,!0,[],C)},a.open(\"GET\",\"\".concat(A.opts.imageCORSProxy,\"/\").concat(t),!0),a.responseType=\"blob\",a.send()}else _(t,!0,[],C);e.val(\"\"),e.blur()}},align:function Ie(e){var t=Ce();t.removeClass(\"fr-fir fr-fil\"),!A.opts.htmlUntouched&&A.opts.useClasses?\"left\"==e?t.addClass(\"fr-fil\"):\"right\"==e&&t.addClass(\"fr-fir\"):he(t,be(),e),we(),D(),n(),A.selection.clear()},refreshAlign:function Pe(e){C&&e.find(\"> *\").first().replaceWith(A.icon.create(\"image-align-\".concat(ve())))},refreshAlignOnShow:function Ne(e,t){C&&t.find('.fr-command[data-param1=\"'.concat(ve(),'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},display:function ke(e){var t=Ce();t.removeClass(\"fr-dii fr-dib\"),!A.opts.htmlUntouched&&A.opts.useClasses?\"inline\"==e?t.addClass(\"fr-dii\"):\"block\"==e&&t.addClass(\"fr-dib\"):he(t,e,ve()),we(),D(),n(),A.selection.clear()},refreshDisplayOnShow:function Be(e,t){C&&t.find('.fr-command[data-param1=\"'.concat(be(),'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},replace:ye,back:function e(){C?(A.events.disableBlur(),S(\".fr-popup input:focus\").blur(),z(C)):(A.events.disableBlur(),A.selection.restore(),A.events.enableBlur(),A.popups.hide(\"image.insert\"),A.toolbar.showInline())},get:Ae,getEl:Ce,insert:_,showProgressBar:N,remove:ae,hideProgressBar:k,applyStyle:function Oe(e,t,a){if(void 0===t&&(t=A.opts.imageStyles),void 0===a&&(a=A.opts.imageMultipleStyles),!C)return!1;var i=Ce();if(!a){var r=Object.keys(t);r.splice(r.indexOf(e),1),i.removeClass(r.join(\" \"))}\"object\"==Ke(t[e])?(i.removeAttr(\"style\"),i.css(t[e].style)):(i.toggleClass(e),Se()&&C.hasClass(e)&&C.removeClass(e)),z(C)},showAltPopup:j,showSizePopup:Z,setAlt:function ze(e){if(C){var t=A.popups.get(\"image.alt\");C.attr(\"alt\",e||t.find(\"input\").val()||\"\"),t.find(\"input:focus\").blur(),z(C)}},setSize:function Le(e,t){if(C){var a=A.popups.get(\"image.size\");e=e||a.find('input[name=\"width\"]').val()||\"\",t=t||a.find('input[name=\"height\"]').val()||\"\";var i=/^[\\d]+((px)|%)*$/g;C.removeAttr(\"width\").removeAttr(\"height\"),e.match(i)?C.css(\"width\",e):C.css(\"width\",\"\"),t.match(i)?C.css(\"height\",t):C.css(\"height\",\"\"),Se()&&(C.parents(\".fr-img-caption\").removeAttr(\"width\").removeAttr(\"height\"),e.match(i)?C.parents(\".fr-img-caption\").css(\"width\",e):C.parents(\".fr-img-caption\").css(\"width\",\"\"),t.match(i)?C.parents(\".fr-img-caption\").css(\"height\",t):C.parents(\".fr-img-caption\").css(\"height\",\"\")),a&&a.find(\"input:focus\").blur(),z(C)}},toggleCaption:function _e(){var e;if(C&&!Se()){(e=C).parent().is(\"a\")&&(e=C.parent());var t,a,i=C.parents(\"ul\")&&0<C.parents(\"ul\").length?C.parents(\"ul\"):C.parents(\"ol\")&&0<C.parents(\"ol\").length?C.parents(\"ol\"):[];if(0<i.length){var r=i.find(\"li\").length,n=C.parents(\"li\"),o=document.createElement(\"li\");r-1===n.index()&&(i.append(o),o.innerHTML=\"&nbsp;\")}e.attr(\"style\")?a=-1<(t=e.attr(\"style\").split(\":\")).indexOf(\"width\")?t[t.indexOf(\"width\")+1].replace(\";\",\"\"):\"\":e.attr(\"width\")&&(a=e.attr(\"width\"));var s=A.opts.imageResizeWithPercent?(-1<a.indexOf(\"px\")?null:a)||\"100%\":C.width()+\"px\";e.wrap('<div class=\"fr-img-space-wrap\"><span '+(A.browser.mozilla?\"\":'contenteditable=\"false\"')+'class=\"fr-img-caption '+C.attr(\"class\")+'\" style=\"'+(A.opts.useClasses?\"\":e.attr(\"style\"))+'\" draggable=\"false\"></span></div>'),e.wrap('<span class=\"fr-img-wrap\"></span>'),C.after('<span class=\"fr-inner\"'.concat(A.browser.mozilla?\"\":' contenteditable=\"true\"',\">\").concat(Me.START_MARKER).concat(A.language.translate(\"Image Caption\")).concat(Me.END_MARKER,\"</span>\")),C.parents(\".fr-img-caption\").css(\"width\",s);var l=C.parents(\".fr-img-space-wrap\").length;1==l?Ee(document.querySelector(\".fr-img-space-wrap\")):1<l&&(Ee(document.querySelector(\".fr-img-space-wrap\")),Ee(document.querySelector(\".fr-img-space-wrap2\"))),ce(!0),A.selection.restore()}else{if(e=Ce(),C.insertBefore(e),null!==e[0].querySelector(\"a\")){for(var p,g=e[0].querySelector(\"a\"),f=document.createElement(\"a\"),c=0,d=g.attributes,m=d.length;c<m;c++)p=d[c],f.setAttribute(p.nodeName,p.nodeValue);C.wrap(f)}C.attr(\"class\",e.attr(\"class\").replace(\"fr-img-caption\",\"\")).attr(\"style\",e.attr(\"style\")),e.remove();var u=C.parents(\".fr-img-space-wrap\").length;1==u?Ee(document.querySelector(\".fr-img-space-wrap\")):1<u&&(Ee(document.querySelector(\".fr-img-space-wrap\")),Ee(document.querySelector(\".fr-img-space-wrap2\"))),z(C)}},hasCaption:Se,exitEdit:ce,edit:z}},Me.DefineIcon(\"insertImage\",{NAME:\"image\",SVG_KEY:\"insertImage\"}),Me.RegisterShortcut(Me.KEYCODE.P,\"insertImage\",null,\"P\"),Me.RegisterCommand(\"insertImage\",{title:\"Insert Image\",undo:!1,focus:!0,refreshAfterCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"image.insert\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"image.insert\")):this.image.showInsertPopup()},plugin:\"image\"}),Me.DefineIcon(\"imageUpload\",{NAME:\"upload\",SVG_KEY:\"upload\"}),Me.RegisterCommand(\"imageUpload\",{title:\"Upload Image\",undo:!1,focus:!1,toggle:!0,callback:function(){this.image.showLayer(\"image-upload\")},refresh:function(e){this.image.refreshUploadButton(e)}}),Me.DefineIcon(\"imageByURL\",{NAME:\"link\",SVG_KEY:\"insertLink\"}),Me.RegisterCommand(\"imageByURL\",{title:\"By URL\",undo:!1,focus:!1,toggle:!0,callback:function(){this.image.showLayer(\"image-by-url\")},refresh:function(e){this.image.refreshByURLButton(e)}}),Me.RegisterCommand(\"imageInsertByURL\",{title:\"Insert Image\",undo:!0,refreshAfterCallback:!1,callback:function(){this.image.insertByURL()},refresh:function(e){this.image.get()?e.text(this.language.translate(\"Replace\")):e.text(this.language.translate(\"Insert\"))}}),Me.DefineIcon(\"imageDisplay\",{NAME:\"star\",SVG_KEY:\"imageDisplay\"}),Me.RegisterCommand(\"imageDisplay\",{title:\"Display\",type:\"dropdown\",options:{inline:\"Inline\",block:\"Break Text\"},callback:function(e,t){this.image.display(t)},refresh:function(e){this.opts.imageTextNear||e.addClass(\"fr-hidden\")},refreshOnShow:function(e,t){this.image.refreshDisplayOnShow(e,t)}}),Me.DefineIcon(\"image-align\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),Me.DefineIcon(\"image-align-left\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),Me.DefineIcon(\"image-align-right\",{NAME:\"align-right\",SVG_KEY:\"alignRight\"}),Me.DefineIcon(\"image-align-center\",{NAME:\"align-justify\",SVG_KEY:\"alignCenter\"}),Me.DefineIcon(\"imageAlign\",{NAME:\"align-justify\",SVG_KEY:\"alignJustify\"}),Me.RegisterCommand(\"imageAlign\",{type:\"dropdown\",title:\"Align\",options:{left:\"Align Left\",center:\"None\",right:\"Align Right\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Me.COMMANDS.imageAlign.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command fr-title\" tabIndex=\"-1\" role=\"option\" data-cmd=\"imageAlign\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.icon.create(\"image-align-\".concat(a)),'<span class=\"fr-sr-only\">').concat(this.language.translate(t[a]),\"</span></a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.image.align(t)},refresh:function(e){this.image.refreshAlign(e)},refreshOnShow:function(e,t){this.image.refreshAlignOnShow(e,t)}}),Me.DefineIcon(\"imageReplace\",{NAME:\"exchange\",FA5NAME:\"exchange-alt\",SVG_KEY:\"replaceImage\"}),Me.RegisterCommand(\"imageReplace\",{title:\"Replace\",undo:!1,focus:!1,popup:!0,refreshAfterCallback:!1,callback:function(){this.image.replace()}}),Me.DefineIcon(\"imageRemove\",{NAME:\"trash\",SVG_KEY:\"remove\"}),Me.RegisterCommand(\"imageRemove\",{title:\"Remove\",callback:function(){this.image.remove()}}),Me.DefineIcon(\"imageBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),Me.RegisterCommand(\"imageBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,callback:function(){this.image.back()},refresh:function(e){this.$;this.image.get()||this.opts.toolbarInline?(e.removeClass(\"fr-hidden\"),e.next(\".fr-separator\").removeClass(\"fr-hidden\")):(e.addClass(\"fr-hidden\"),e.next(\".fr-separator\").addClass(\"fr-hidden\"))}}),Me.RegisterCommand(\"imageDismissError\",{title:\"OK\",undo:!1,callback:function(){this.image.hideProgressBar(!0)}}),Me.DefineIcon(\"imageStyle\",{NAME:\"magic\",SVG_KEY:\"imageClass\"}),Me.RegisterCommand(\"imageStyle\",{title:\"Style\",type:\"dropdown\",html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.imageStyles;for(var a in t)if(t.hasOwnProperty(a)){var i=t[a];\"object\"==Ke(i)&&(i=i.title),e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"imageStyle\" data-param1=\"'.concat(a,'\">').concat(this.language.translate(i),\"</a></li>\")}return e+=\"</ul>\"},callback:function(e,t){this.image.applyStyle(t)},refreshOnShow:function(e,t){var a=this.$,i=this.image.getEl();i&&t.find(\".fr-command\").each(function(){var e=a(this).data(\"param1\"),t=i.hasClass(e);a(this).toggleClass(\"fr-active\",t).attr(\"aria-selected\",t)})}}),Me.DefineIcon(\"imageAlt\",{NAME:\"info\",SVG_KEY:\"imageAltText\"}),Me.RegisterCommand(\"imageAlt\",{undo:!1,focus:!1,popup:!0,title:\"Alternative Text\",callback:function(){this.image.showAltPopup()}}),Me.RegisterCommand(\"imageSetAlt\",{undo:!0,focus:!1,title:\"Update\",refreshAfterCallback:!1,callback:function(){this.image.setAlt()}}),Me.DefineIcon(\"imageSize\",{NAME:\"arrows-alt\",SVG_KEY:\"imageSize\"}),Me.RegisterCommand(\"imageSize\",{undo:!1,focus:!1,popup:!0,title:\"Change Size\",callback:function(){this.image.showSizePopup()}}),Me.RegisterCommand(\"imageSetSize\",{undo:!0,focus:!1,title:\"Update\",refreshAfterCallback:!1,callback:function(){this.image.setSize()}}),Me.DefineIcon(\"imageCaption\",{NAME:\"commenting\",FA5NAME:\"comment-alt\",SVG_KEY:\"imageCaption\"}),Me.RegisterCommand(\"imageCaption\",{undo:!0,focus:!1,title:\"Image Caption\",refreshAfterCallback:!0,callback:function(){this.image.toggleCaption()},refresh:function(e){this.image.get()&&e.toggleClass(\"fr-active\",this.image.hasCaption())}})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(y){\"use strict\";y=y&&y.hasOwnProperty(\"default\")?y[\"default\"]:y,Object.assign(y.POPUP_TEMPLATES,{\"link.edit\":\"[_BUTTONS_]\",\"link.insert\":\"[_BUTTONS_][_INPUT_LAYER_]\"}),Object.assign(y.DEFAULTS,{linkEditButtons:[\"linkOpen\",\"linkStyle\",\"linkEdit\",\"linkRemove\"],linkInsertButtons:[\"linkBack\",\"|\",\"linkList\"],linkAttributes:{},linkAutoPrefix:\"http://\",linkStyles:{\"fr-green\":\"Green\",\"fr-strong\":\"Thick\"},linkMultipleStyles:!0,linkConvertEmailAddress:!0,linkAlwaysBlank:!1,linkAlwaysNoFollow:!1,linkNoOpener:!0,linkNoReferrer:!0,linkList:[{text:\"Froala\",href:\"https://froala.com\",target:\"_blank\"},{text:\"Google\",href:\"https://google.com\",target:\"_blank\"},{displayText:\"Facebook\",href:\"https://facebook.com\"}],linkText:!0}),y.PLUGINS.link=function(h){var m=h.$;function v(){var e=h.image?h.image.get():null;if(e||!h.$wp)return\"A\"==h.el.tagName?h.el:e&&e.get(0).parentNode&&\"A\"==e.get(0).parentNode.tagName?e.get(0).parentNode:void 0;var t=h.selection.ranges(0).commonAncestorContainer;try{t&&(t.contains&&t.contains(h.el)||!h.el.contains(t)||h.el==t)&&(t=null)}catch(r){t=null}if(t&&\"A\"===t.tagName)return t;var n=h.selection.element(),i=h.selection.endElement();\"A\"==n.tagName||h.node.isElement(n)||(n=m(n).parentsUntil(h.$el,\"a\").first().get(0)),\"A\"==i.tagName||h.node.isElement(i)||(i=m(i).parentsUntil(h.$el,\"a\").first().get(0));try{i&&(i.contains&&i.contains(h.el)||!h.el.contains(i)||h.el==i)&&(i=null)}catch(r){i=null}try{n&&(n.contains&&n.contains(h.el)||!h.el.contains(n)||h.el==n)&&(n=null)}catch(r){n=null}return i&&i==n&&\"A\"==i.tagName?(h.browser.msie||h.helpers.isMobile())&&(h.selection.info(n).atEnd||h.selection.info(n).atStart)?null:n:null}function b(){var e,t,n,i,r=h.image?h.image.get():null,a=[];if(r)\"A\"==r.get(0).parentNode.tagName&&a.push(r.get(0).parentNode);else if(h.win.getSelection){var l=h.win.getSelection();if(l.getRangeAt&&l.rangeCount){i=h.doc.createRange();for(var s=0;s<l.rangeCount;++s)if((t=(e=l.getRangeAt(s)).commonAncestorContainer)&&1!=t.nodeType&&(t=t.parentNode),t&&\"a\"==t.nodeName.toLowerCase())a.push(t);else{n=t.getElementsByTagName(\"a\");for(var o=0;o<n.length;++o)i.selectNodeContents(n[o]),i.compareBoundaryPoints(e.END_TO_START,e)<1&&-1<i.compareBoundaryPoints(e.START_TO_END,e)&&a.push(n[o])}}}else if(h.doc.selection&&\"Control\"!=h.doc.selection.type)if(\"a\"==(t=(e=h.doc.selection.createRange()).parentElement()).nodeName.toLowerCase())a.push(t);else{n=t.getElementsByTagName(\"a\"),i=h.doc.body.createTextRange();for(var p=0;p<n.length;++p)i.moveToElementText(n[p]),-1<i.compareEndPoints(\"StartToEnd\",e)&&i.compareEndPoints(\"EndToStart\",e)<1&&a.push(n[p])}return a}function E(r){if(h.core.hasFocus()||h.opts.iframe&&(!document.hasFocus||document.hasFocus())){if(a(),r&&\"keyup\"===r.type&&(r.altKey||r.which==y.KEYCODE.ALT))return!0;setTimeout(function(){if(!r||r&&(1==r.which||\"mouseup\"!=r.type)){var e=v(),t=h.image?h.image.get():null;if(e&&!t){if(h.image){var n=h.node.contents(e);if(1==n.length&&\"IMG\"==n[0].tagName){var i=h.selection.ranges(0);return 0===i.startOffset&&0===i.endOffset?m(e).before(y.INVISIBLE_SPACE+y.MARKERS):m(e).after(y.INVISIBLE_SPACE+y.MARKERS),h.selection.restore(),!1}}r&&r.stopPropagation(),l(e)}}},h.helpers.isIOS()?100:0)}}function l(e){var t=h.popups.get(\"link.edit\");t||(t=function a(){var e=\"\";1<=h.opts.linkEditButtons.length&&(\"A\"==h.el.tagName&&0<=h.opts.linkEditButtons.indexOf(\"linkRemove\")&&h.opts.linkEditButtons.splice(h.opts.linkEditButtons.indexOf(\"linkRemove\"),1),e='<div class=\"fr-buttons\">'.concat(h.button.buildList(h.opts.linkEditButtons),\"</div>\"));var t={buttons:e},n=h.popups.create(\"link.edit\",t);h.$wp&&h.events.$on(h.$wp,\"scroll.link-edit\",function(){v()&&h.popups.isVisible(\"link.edit\")&&l(v())});return n}());var n=m(e);h.popups.isVisible(\"link.edit\")||h.popups.refresh(\"link.edit\"),h.popups.setContainer(\"link.edit\",h.$sc);var i=n.offset().left+n.outerWidth()/2,r=n.offset().top+n.outerHeight();h.popups.show(\"link.edit\",i,r,n.outerHeight(),!0)}function a(){h.popups.hide(\"link.edit\")}function o(){var e=h.popups.get(\"link.insert\"),t=v();if(t){var n,i,r=m(t),a=e.find('input.fr-link-attr[type=\"text\"]'),l=e.find('input.fr-link-attr[type=\"checkbox\"]');for(n=0;n<a.length;n++)(i=m(a[n])).val(r.attr(i.attr(\"name\")||\"\"));for(l.attr(\"checked\",!1),n=0;n<l.length;n++)i=m(l[n]),r.attr(i.attr(\"name\"))==i.data(\"checked\")&&i.attr(\"checked\",!0);e.find('input.fr-link-attr[type=\"text\"][name=\"text\"]').val(r.text())}else e.find('input.fr-link-attr[type=\"text\"]').val(\"\"),e.find('input.fr-link-attr[type=\"checkbox\"]').attr(\"checked\",!1),e.find('input.fr-link-attr[type=\"text\"][name=\"text\"]').val(h.selection.text());e.find(\"input.fr-link-attr\").trigger(\"change\"),(h.image?h.image.get():null)?e.find('.fr-link-attr[name=\"text\"]').parent().hide():e.find('.fr-link-attr[name=\"text\"]').parent().show()}function s(e){if(e)return h.popups.onRefresh(\"link.insert\",o),!0;var t=\"\";1<=h.opts.linkInsertButtons.length&&(t='<div class=\"fr-buttons fr-tabs\">'.concat(h.button.buildList(h.opts.linkInsertButtons),\"</div>\"));var n=\"\",i=0;for(var r in n='<div class=\"fr-link-insert-layer fr-layer fr-active\" id=\"fr-link-insert-layer-'.concat(h.id,'\">'),n+='<div class=\"fr-input-line\"><input id=\"fr-link-insert-layer-url-'.concat(h.id,'\" name=\"href\" type=\"text\" class=\"fr-link-attr\" placeholder=\"').concat(h.language.translate(\"URL\"),'\" tabIndex=\"').concat(++i,'\"></div>'),h.opts.linkText&&(n+='<div class=\"fr-input-line\"><input id=\"fr-link-insert-layer-text-'.concat(h.id,'\" name=\"text\" type=\"text\" class=\"fr-link-attr\" placeholder=\"').concat(h.language.translate(\"Text\"),'\" tabIndex=\"').concat(++i,'\"></div>')),h.opts.linkAttributes)if(h.opts.linkAttributes.hasOwnProperty(r)){var a=h.opts.linkAttributes[r];n+='<div class=\"fr-input-line\"><input name=\"'.concat(r,'\" type=\"text\" class=\"fr-link-attr\" placeholder=\"').concat(h.language.translate(a),'\" tabIndex=\"').concat(++i,'\"></div>')}h.opts.linkAlwaysBlank||(n+='<div class=\"fr-checkbox-line\"><span class=\"fr-checkbox\"><input name=\"target\" class=\"fr-link-attr\" data-checked=\"_blank\" type=\"checkbox\" id=\"fr-link-target-'.concat(h.id,'\" tabIndex=\"').concat(++i,'\"><span>').concat('<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"10\" height=\"10\" viewBox=\"0 0 32 32\"><path d=\"M27 4l-15 15-7-7-5 5 12 12 20-20z\" fill=\"#FFF\"></path></svg>','</span></span><label id=\"fr-label-target-').concat(h.id,'\">').concat(h.language.translate(\"Open in new tab\"),\"</label></div>\"));var l={buttons:t,input_layer:n+='<div class=\"fr-action-buttons\"><button class=\"fr-command fr-submit\" role=\"button\" data-cmd=\"linkInsert\" href=\"#\" tabIndex=\"'.concat(++i,'\" type=\"button\">').concat(h.language.translate(\"Insert\"),\"</button></div></div>\")},s=h.popups.create(\"link.insert\",l);return h.$wp&&h.events.$on(h.$wp,\"scroll.link-insert\",function(){(h.image?h.image.get():null)&&h.popups.isVisible(\"link.insert\")&&f(),h.popups.isVisible(\"link.insert\")&&c()}),s}function p(e,t,n){if(h.opts.trackChangesEnabled){if(h.edit.on(),h.events.focus(!0),h.undo.saveStep(),h.markers.insert(),h.html.wrap(),!h.$el.find(\".fr-marker\").length)return void h.popups.hide(\"link.insert\");h.markers.remove()}if(void 0===n&&(n={}),!1===h.events.trigger(\"link.beforeInsert\",[e,t,n]))return!1;var i=h.image?h.image.get():null;i||\"A\"==h.el.tagName?\"A\"==h.el.tagName&&h.$el.focus():(h.selection.restore(),h.popups.hide(\"link.insert\"));var r=e;h.opts.linkConvertEmailAddress&&h.helpers.isEmail(e)&&!/^mailto:.*/i.test(e)&&(e=\"mailto:\".concat(e));if(\"\"===h.opts.linkAutoPrefix||new RegExp(\"^(\"+y.LinkProtocols.join(\"|\")+\"):.\",\"i\").test(e)||/^data:image.*/i.test(e)||/^(https?:|ftps?:|file:|)\\/\\//i.test(e)||/^([A-Za-z]:(\\\\){1,2}|[A-Za-z]:((\\\\){1,2}[^\\\\]+)+)(\\\\)?$/i.test(e)||[\"/\",\"{\",\"[\",\"#\",\"(\",\".\",'\"',\"\\\\\"].indexOf((e||\"\")[0])<0&&(e=h.opts.linkAutoPrefix+e),e=h.helpers.sanitizeURL(e),h.opts.linkAlwaysBlank&&(n.target=\"_blank\"),h.opts.linkAlwaysNoFollow&&(n.rel=\"nofollow\"),h.helpers.isEmail(r)&&(n.target=null,n.rel=null),\"_blank\"==n.target?(h.opts.linkNoOpener&&(n.rel?n.rel+=\" noopener\":n.rel=\"noopener\"),h.opts.linkNoReferrer&&(n.rel?n.rel+=\" noreferrer\":n.rel=\"noreferrer\")):null==n.target&&(n.rel?n.rel=n.rel.replace(/noopener/,\"\").replace(/noreferrer/,\"\"):n.rel=null),t=t||\"\",e===h.opts.linkAutoPrefix)return h.popups.get(\"link.insert\").find('input[name=\"href\"]').addClass(\"fr-error\"),h.events.trigger(\"link.bad\",[r]),!1;var a,l=v();if(l){if((a=m(l)).attr(\"href\",e),0<t.length&&a.text()!=t&&!i){if(h.opts.trackChangesEnabled){var s=m(a.get(0).outerHTML);s.insertBefore(a.parent());var o=h.track_changes.wrapLinkInTracking(s,h.track_changes.getPendingChanges().length-1),p=h.track_changes.wrapInDelete(o);a.parent().append(p)}for(var c=a.get(0);1===c.childNodes.length&&c.childNodes[0].nodeType==Node.ELEMENT_NODE;)c=c.childNodes[0];m(c).text(t)}for(var f in i||a.prepend(y.START_MARKER).append(y.END_MARKER),n)n[f]?a.attr(f,n[f]):a.removeAttr(f);i||h.selection.restore()}else{i?(i.wrap('<a href=\"'.concat(e,'\"></a>')),h.image.hasCaption()&&i.parent().append(i.parents(\".fr-img-caption\").find(\".fr-inner\"))):(h.format.remove(\"a\"),h.selection.isCollapsed()?(t=0===t.length?r:t,h.html.insert('<a href=\"'.concat(e,'\">').concat(y.START_MARKER).concat(t.replace(/&/g,\"&amp;\").replace(/</,\"&lt;\",\">\",\"&gt;\")).concat(y.END_MARKER,\"</a>\")),h.selection.restore()):0<t.length&&t!=h.selection.text().replace(/\\n/g,\"\")?(h.selection.remove(),h.html.insert('<a href=\"'.concat(e,'\">').concat(y.START_MARKER).concat(t.replace(/&/g,\"&amp;\")).concat(y.END_MARKER,\"</a>\")),h.selection.restore()):(!function g(){if(!h.selection.isCollapsed()){h.selection.save();for(var e=h.$el.find(\".fr-marker\").addClass(\"fr-unprocessed\").toArray();e.length;){var t=m(e.pop());t.removeClass(\"fr-unprocessed\");var n=h.node.deepestParent(t.get(0));if(n){for(var i=t.get(0),r=\"\",a=\"\";i=i.parentNode,h.node.isBlock(i)||(r+=h.node.closeTagString(i),a=h.node.openTagString(i)+a),i!=n;);var l=h.node.openTagString(t.get(0))+t.html()+h.node.closeTagString(t.get(0));t.replaceWith('<span id=\"fr-break\"></span>');var s=n.outerHTML;s=(s=s.replace(/<span id=\"fr-break\"><\\/span>/g,r+l+a)).replace(a+r,\"\"),n.outerHTML=s}e=h.$el.find(\".fr-marker.fr-unprocessed\").toArray()}h.html.cleanEmptyTags(),h.selection.restore()}}(),h.format.apply(\"a\",{href:e})));for(var d=b(),u=0;u<d.length;u++)(a=m(d[u])).attr(n),a.removeAttr(\"_moz_dirty\");1==d.length&&h.$wp&&!i&&(m(d[0]).prepend(y.START_MARKER).append(y.END_MARKER),h.selection.restore())}if(i){var k=h.popups.get(\"link.insert\");k&&k.find(\"input:focus\").blur(),h.image.edit(i)}else E()}function c(){a();var e=v();if(e){var t=h.popups.get(\"link.insert\");t||(t=s()),h.popups.isVisible(\"link.insert\")||(h.popups.refresh(\"link.insert\"),h.selection.save(),h.helpers.isMobile()&&(h.events.disableBlur(),h.$el.blur(),h.events.enableBlur())),h.popups.setContainer(\"link.insert\",h.$sc);var n=(h.image?h.image.get():null)||m(e),i=n.offset().left+n.outerWidth()/2,r=n.offset().top+n.outerHeight();h.popups.show(\"link.insert\",i,r,n.outerHeight(),!0)}}function f(){var e=h.image?h.image.getEl():null;if(e){var t=h.popups.get(\"link.insert\"),n=e.outerWidth()/2;h.image.hasCaption()&&(e=e.find(\".fr-img-wrap\"),m(e)&&m(e).find(\"img\")&&(n=m(e).find(\"img\").outerWidth()/2)),t||(t=s()),o(),h.popups.setContainer(\"link.insert\",h.$sc);var i=e.offset().left+n,r=e.offset().top+e.outerHeight(),a=e.outerHeight();h.opts.iframe&&h.image.hasCaption()&&m(e)&&m(e).find(\"img\")&&(a=m(e).find(\"img\").outerHeight()),h.popups.show(\"link.insert\",i,r,a,!0)}}return{_init:function e(){h.events.on(\"keyup\",function(e){e.which!=y.KEYCODE.ESC&&E(e)}),h.events.on(\"window.mouseup\",E),h.events.$on(h.$el,\"click\",\"a\",function(e){h.edit.isDisabled()&&e.preventDefault()}),h.helpers.isMobile()&&h.events.$on(h.$doc,\"selectionchange\",E),s(!0),\"A\"==h.el.tagName&&h.$el.addClass(\"fr-view\"),h.events.on(\"toolbar.esc\",function(){if(h.popups.isVisible(\"link.edit\"))return h.events.disableBlur(),h.events.focus(),!1},!0)},remove:function i(){var e=v(),t=h.image?h.image.get():null;if(!1===h.events.trigger(\"link.beforeRemove\",[e]))return!1;if(t&&e)if(h.image.hasCaption()){t.addClass(\"img-link-caption\"),m(e).replaceWith(m(e).html());var n=document.querySelectorAll(\"img.img-link-caption\");h.image.edit(m(n[0])),m(n[0]).removeClass(\"img-link-caption\")}else t.unwrap(),h.image.edit(t);else e&&(h.selection.save(),m(e).replaceWith(m(e).html()),h.selection.restore(),a())},showInsertPopup:function d(){var e=h.$tb.find('.fr-command[data-cmd=\"insertLink\"]'),t=h.popups.get(\"link.insert\");if(t||(t=s()),!t.hasClass(\"fr-active\"))if(h.popups.refresh(\"link.insert\"),h.popups.setContainer(\"link.insert\",h.$tb||h.$sc),e.isVisible()){var n=h.button.getPosition(e),i=n.left,r=n.top;h.popups.show(\"link.insert\",i,r,e.outerHeight())}else h.position.forSelection(t),h.popups.show(\"link.insert\")},usePredefined:function u(e){var t,n,i=h.opts.linkList[e],r=h.popups.get(\"link.insert\"),a=r.find('input.fr-link-attr[type=\"text\"]'),l=r.find('input.fr-link-attr[type=\"checkbox\"]');for(i.rel&&(r.rel=i.rel),n=0;n<a.length;n++)i[(t=m(a[n])).attr(\"name\")]?(t.val(i[t.attr(\"name\")]),t.toggleClass(\"fr-not-empty\",!0)):\"text\"!=t.attr(\"name\")&&t.val(\"\");for(n=0;n<l.length;n++)(t=m(l[n])).attr(\"checked\",t.data(\"checked\")==i[t.attr(\"name\")]);h.accessibility.focusPopup(r)},insertCallback:function k(){var e,t,n=h.popups.get(\"link.insert\"),i=n.find('input.fr-link-attr[type=\"text\"]'),r=n.find('input.fr-link-attr[type=\"checkbox\"]'),a=(i.filter('[name=\"href\"]').val()||\"\").trim(),l=h.opts.linkText?i.filter('[name=\"text\"]').val():\"\",s={};for(t=0;t<i.length;t++)e=m(i[t]),[\"href\",\"text\"].indexOf(e.attr(\"name\"))<0&&(s[e.attr(\"name\")]=e.val());for(t=0;t<r.length;t++)(e=m(r[t])).is(\":checked\")?s[e.attr(\"name\")]=e.data(\"checked\"):s[e.attr(\"name\")]=e.data(\"unchecked\")||null;n.rel&&(s.rel=n.rel);var o=h.helpers.scrollTop();p(a,l,s),m(h.o_win).scrollTop(o)},insert:p,update:c,get:v,allSelected:b,back:function t(){h.image&&h.image.get()?h.image.back():(h.events.disableBlur(),h.selection.restore(),h.events.enableBlur(),v()&&h.$wp?(h.selection.restore(),a(),E()):\"A\"==h.el.tagName?(h.$el.focus(),E()):(h.popups.hide(\"link.insert\"),h.toolbar.showInline()))},imageLink:f,applyStyle:function g(e,t,n){void 0===n&&(n=h.opts.linkMultipleStyles),void 0===t&&(t=h.opts.linkStyles);var i=v();if(!i)return!1;if(!n){var r=Object.keys(t);r.splice(r.indexOf(e),1),m(i).removeClass(r.join(\" \"))}m(i).toggleClass(e),E()}}},y.DefineIcon(\"insertLink\",{NAME:\"link\",SVG_KEY:\"insertLink\"}),y.RegisterShortcut(y.KEYCODE.K,\"insertLink\",null,\"K\"),y.RegisterCommand(\"insertLink\",{title:\"Insert Link\",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"link.insert\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"link.insert\")):this.link.showInsertPopup()},plugin:\"link\"}),y.DefineIcon(\"linkOpen\",{NAME:\"external-link\",FA5NAME:\"external-link-alt\",SVG_KEY:\"openLink\"}),y.RegisterCommand(\"linkOpen\",{title:\"Open Link\",undo:!1,refresh:function(e){this.link.get()?e.removeClass(\"fr-hidden\"):e.addClass(\"fr-hidden\")},callback:function(){var e=this.link.get();e&&(-1!==e.href.indexOf(\"mailto:\")?this.o_win.open(e.href).close():(e.target||(e.target=\"_self\"),this.browser.msie||this.browser.edge?this.o_win.open(e.href,e.target):this.o_win.open(e.href,e.target,\"noopener\")),this.popups.hide(\"link.edit\"))},plugin:\"link\"}),y.DefineIcon(\"linkEdit\",{NAME:\"edit\",SVG_KEY:\"edit\"}),y.RegisterCommand(\"linkEdit\",{title:\"Edit Link\",undo:!1,refreshAfterCallback:!1,popup:!0,callback:function(){this.link.update()},refresh:function(e){this.link.get()?e.removeClass(\"fr-hidden\"):e.addClass(\"fr-hidden\")},plugin:\"link\"}),y.DefineIcon(\"linkRemove\",{NAME:\"unlink\",SVG_KEY:\"unlink\"}),y.RegisterCommand(\"linkRemove\",{title:\"Unlink\",callback:function(){this.link.remove()},refresh:function(e){this.link.get()?e.removeClass(\"fr-hidden\"):e.addClass(\"fr-hidden\")},plugin:\"link\"}),y.DefineIcon(\"linkBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),y.RegisterCommand(\"linkBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,refreshAfterCallback:!1,callback:function(){this.link.back()},refresh:function(e){var t=this.link.get()&&this.doc.hasFocus();(this.image?this.image.get():null)||t||this.opts.toolbarInline?(e.removeClass(\"fr-hidden\"),e.next(\".fr-separator\").removeClass(\"fr-hidden\")):(e.addClass(\"fr-hidden\"),e.next(\".fr-separator\").addClass(\"fr-hidden\"))},plugin:\"link\"}),y.DefineIcon(\"linkList\",{NAME:\"search\",SVG_KEY:\"search\"}),y.RegisterCommand(\"linkList\",{title:\"Choose Link\",type:\"dropdown\",focus:!1,undo:!1,refreshAfterCallback:!1,html:function(){for(var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.linkList,n=0;n<t.length;n++)e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"linkList\" data-param1=\"'.concat(n,'\">').concat(t[n].displayText||t[n].text,\"</a></li>\");return e+=\"</ul>\"},callback:function(e,t){this.link.usePredefined(t)},plugin:\"link\"}),y.RegisterCommand(\"linkInsert\",{focus:!1,refreshAfterCallback:!1,callback:function(){this.link.insertCallback()},refresh:function(e){this.link.get()?e.text(this.language.translate(\"Update\")):e.text(this.language.translate(\"Insert\"))},plugin:\"link\"}),y.DefineIcon(\"imageLink\",{NAME:\"link\",SVG_KEY:\"insertLink\"}),y.RegisterCommand(\"imageLink\",{title:\"Insert Link\",undo:!1,focus:!1,popup:!0,callback:function(){this.link.imageLink()},refresh:function(e){var t;this.link.get()?((t=e.prev()).hasClass(\"fr-separator\")&&t.removeClass(\"fr-hidden\"),e.addClass(\"fr-hidden\")):((t=e.prev()).hasClass(\"fr-separator\")&&t.addClass(\"fr-hidden\"),e.removeClass(\"fr-hidden\"))},plugin:\"link\"}),y.DefineIcon(\"linkStyle\",{NAME:\"magic\",SVG_KEY:\"linkStyles\"}),y.RegisterCommand(\"linkStyle\",{title:\"Style\",type:\"dropdown\",html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.linkStyles;for(var n in t)t.hasOwnProperty(n)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"linkStyle\" data-param1=\"'.concat(n,'\">').concat(this.language.translate(t[n]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.link.applyStyle(t)},refreshOnShow:function(e,t){var n=this.$,i=this.link.get();if(i){var r=n(i);t.find(\".fr-command\").each(function(){var e=n(this).data(\"param1\"),t=r.hasClass(e);n(this).toggleClass(\"fr-active\",t).attr(\"aria-selected\",t)})}},refresh:function(e){this.link.get()?e.removeClass(\"fr-hidden\"):e.addClass(\"fr-hidden\")},plugin:\"link\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(c,E){\"object\"==typeof exports&&\"undefined\"!=typeof module?E(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],E):E(c.FroalaEditor)}(this,function(t){\"use strict\";t=t&&t.hasOwnProperty(\"default\")?t[\"default\"]:t,Object.assign(t.DEFAULTS,{specialCharactersSets:[{title:\"Latin\",\"char\":\"&iexcl;\",list:[{\"char\":\"&iexcl;\",desc:\"INVERTED EXCLAMATION MARK\"},{\"char\":\"&cent;\",desc:\"CENT SIGN\"},{\"char\":\"&pound;\",desc:\"POUND SIGN\"},{\"char\":\"&curren;\",desc:\"CURRENCY SIGN\"},{\"char\":\"&yen;\",desc:\"YEN SIGN\"},{\"char\":\"&brvbar;\",desc:\"BROKEN BAR\"},{\"char\":\"&sect;\",desc:\"SECTION SIGN\"},{\"char\":\"&uml;\",desc:\"DIAERESIS\"},{\"char\":\"&copy;\",desc:\"COPYRIGHT SIGN\"},{\"char\":\"&trade;\",desc:\"TRADEMARK SIGN\"},{\"char\":\"&ordf;\",desc:\"FEMININE ORDINAL INDICATOR\"},{\"char\":\"&laquo;\",desc:\"LEFT-POINTING DOUBLE ANGLE QUOTATION MARK\"},{\"char\":\"&not;\",desc:\"NOT SIGN\"},{\"char\":\"&reg;\",desc:\"REGISTERED SIGN\"},{\"char\":\"&macr;\",desc:\"MACRON\"},{\"char\":\"&deg;\",desc:\"DEGREE SIGN\"},{\"char\":\"&plusmn;\",desc:\"PLUS-MINUS SIGN\"},{\"char\":\"&sup2;\",desc:\"SUPERSCRIPT TWO\"},{\"char\":\"&sup3;\",desc:\"SUPERSCRIPT THREE\"},{\"char\":\"&acute;\",desc:\"ACUTE ACCENT\"},{\"char\":\"&micro;\",desc:\"MICRO SIGN\"},{\"char\":\"&para;\",desc:\"PILCROW SIGN\"},{\"char\":\"&middot;\",desc:\"MIDDLE DOT\"},{\"char\":\"&cedil;\",desc:\"CEDILLA\"},{\"char\":\"&sup1;\",desc:\"SUPERSCRIPT ONE\"},{\"char\":\"&ordm;\",desc:\"MASCULINE ORDINAL INDICATOR\"},{\"char\":\"&raquo;\",desc:\"RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK\"},{\"char\":\"&frac14;\",desc:\"VULGAR FRACTION ONE QUARTER\"},{\"char\":\"&frac12;\",desc:\"VULGAR FRACTION ONE HALF\"},{\"char\":\"&frac34;\",desc:\"VULGAR FRACTION THREE QUARTERS\"},{\"char\":\"&iquest;\",desc:\"INVERTED QUESTION MARK\"},{\"char\":\"&Agrave;\",desc:\"LATIN CAPITAL LETTER A WITH GRAVE\"},{\"char\":\"&Aacute;\",desc:\"LATIN CAPITAL LETTER A WITH ACUTE\"},{\"char\":\"&Acirc;\",desc:\"LATIN CAPITAL LETTER A WITH CIRCUMFLEX\"},{\"char\":\"&Atilde;\",desc:\"LATIN CAPITAL LETTER A WITH TILDE\"},{\"char\":\"&Auml;\",desc:\"LATIN CAPITAL LETTER A WITH DIAERESIS \"},{\"char\":\"&Aring;\",desc:\"LATIN CAPITAL LETTER A WITH RING ABOVE\"},{\"char\":\"&AElig;\",desc:\"LATIN CAPITAL LETTER AE\"},{\"char\":\"&Ccedil;\",desc:\"LATIN CAPITAL LETTER C WITH CEDILLA\"},{\"char\":\"&Egrave;\",desc:\"LATIN CAPITAL LETTER E WITH GRAVE\"},{\"char\":\"&Eacute;\",desc:\"LATIN CAPITAL LETTER E WITH ACUTE\"},{\"char\":\"&Ecirc;\",desc:\"LATIN CAPITAL LETTER E WITH CIRCUMFLEX\"},{\"char\":\"&Euml;\",desc:\"LATIN CAPITAL LETTER E WITH DIAERESIS\"},{\"char\":\"&Igrave;\",desc:\"LATIN CAPITAL LETTER I WITH GRAVE\"},{\"char\":\"&Iacute;\",desc:\"LATIN CAPITAL LETTER I WITH ACUTE\"},{\"char\":\"&Icirc;\",desc:\"LATIN CAPITAL LETTER I WITH CIRCUMFLEX\"},{\"char\":\"&Iuml;\",desc:\"LATIN CAPITAL LETTER I WITH DIAERESIS\"},{\"char\":\"&ETH;\",desc:\"LATIN CAPITAL LETTER ETH\"},{\"char\":\"&Ntilde;\",desc:\"LATIN CAPITAL LETTER N WITH TILDE\"},{\"char\":\"&Ograve;\",desc:\"LATIN CAPITAL LETTER O WITH GRAVE\"},{\"char\":\"&Oacute;\",desc:\"LATIN CAPITAL LETTER O WITH ACUTE\"},{\"char\":\"&Ocirc;\",desc:\"LATIN CAPITAL LETTER O WITH CIRCUMFLEX\"},{\"char\":\"&Otilde;\",desc:\"LATIN CAPITAL LETTER O WITH TILDE\"},{\"char\":\"&Ouml;\",desc:\"LATIN CAPITAL LETTER O WITH DIAERESIS\"},{\"char\":\"&times;\",desc:\"MULTIPLICATION SIGN\"},{\"char\":\"&Oslash;\",desc:\"LATIN CAPITAL LETTER O WITH STROKE\"},{\"char\":\"&Ugrave;\",desc:\"LATIN CAPITAL LETTER U WITH GRAVE\"},{\"char\":\"&Uacute;\",desc:\"LATIN CAPITAL LETTER U WITH ACUTE\"},{\"char\":\"&Ucirc;\",desc:\"LATIN CAPITAL LETTER U WITH CIRCUMFLEX\"},{\"char\":\"&Uuml;\",desc:\"LATIN CAPITAL LETTER U WITH DIAERESIS\"},{\"char\":\"&Yacute;\",desc:\"LATIN CAPITAL LETTER Y WITH ACUTE\"},{\"char\":\"&THORN;\",desc:\"LATIN CAPITAL LETTER THORN\"},{\"char\":\"&szlig;\",desc:\"LATIN SMALL LETTER SHARP S\"},{\"char\":\"&agrave;\",desc:\"LATIN SMALL LETTER A WITH GRAVE\"},{\"char\":\"&aacute;\",desc:\"LATIN SMALL LETTER A WITH ACUTE \"},{\"char\":\"&acirc;\",desc:\"LATIN SMALL LETTER A WITH CIRCUMFLEX\"},{\"char\":\"&atilde;\",desc:\"LATIN SMALL LETTER A WITH TILDE\"},{\"char\":\"&auml;\",desc:\"LATIN SMALL LETTER A WITH DIAERESIS\"},{\"char\":\"&aring;\",desc:\"LATIN SMALL LETTER A WITH RING ABOVE\"},{\"char\":\"&aelig;\",desc:\"LATIN SMALL LETTER AE\"},{\"char\":\"&ccedil;\",desc:\"LATIN SMALL LETTER C WITH CEDILLA\"},{\"char\":\"&egrave;\",desc:\"LATIN SMALL LETTER E WITH GRAVE\"},{\"char\":\"&eacute;\",desc:\"LATIN SMALL LETTER E WITH ACUTE\"},{\"char\":\"&ecirc;\",desc:\"LATIN SMALL LETTER E WITH CIRCUMFLEX\"},{\"char\":\"&euml;\",desc:\"LATIN SMALL LETTER E WITH DIAERESIS\"},{\"char\":\"&igrave;\",desc:\"LATIN SMALL LETTER I WITH GRAVE\"},{\"char\":\"&iacute;\",desc:\"LATIN SMALL LETTER I WITH ACUTE\"},{\"char\":\"&icirc;\",desc:\"LATIN SMALL LETTER I WITH CIRCUMFLEX\"},{\"char\":\"&iuml;\",desc:\"LATIN SMALL LETTER I WITH DIAERESIS\"},{\"char\":\"&eth;\",desc:\"LATIN SMALL LETTER ETH\"},{\"char\":\"&ntilde;\",desc:\"LATIN SMALL LETTER N WITH TILDE\"},{\"char\":\"&ograve;\",desc:\"LATIN SMALL LETTER O WITH GRAVE\"},{\"char\":\"&oacute;\",desc:\"LATIN SMALL LETTER O WITH ACUTE\"},{\"char\":\"&ocirc;\",desc:\"LATIN SMALL LETTER O WITH CIRCUMFLEX\"},{\"char\":\"&otilde;\",desc:\"LATIN SMALL LETTER O WITH TILDE\"},{\"char\":\"&ouml;\",desc:\"LATIN SMALL LETTER O WITH DIAERESIS\"},{\"char\":\"&divide;\",desc:\"DIVISION SIGN\"},{\"char\":\"&oslash;\",desc:\"LATIN SMALL LETTER O WITH STROKE\"},{\"char\":\"&ugrave;\",desc:\"LATIN SMALL LETTER U WITH GRAVE\"},{\"char\":\"&uacute;\",desc:\"LATIN SMALL LETTER U WITH ACUTE\"},{\"char\":\"&ucirc;\",desc:\"LATIN SMALL LETTER U WITH CIRCUMFLEX\"},{\"char\":\"&uuml;\",desc:\"LATIN SMALL LETTER U WITH DIAERESIS\"},{\"char\":\"&yacute;\",desc:\"LATIN SMALL LETTER Y WITH ACUTE\"},{\"char\":\"&thorn;\",desc:\"LATIN SMALL LETTER THORN\"},{\"char\":\"&yuml;\",desc:\"LATIN SMALL LETTER Y WITH DIAERESIS\"}]},{title:\"Greek\",\"char\":\"&Alpha;\",list:[{\"char\":\"&Alpha;\",desc:\"GREEK CAPITAL LETTER ALPHA\"},{\"char\":\"&Beta;\",desc:\"GREEK CAPITAL LETTER BETA\"},{\"char\":\"&Gamma;\",desc:\"GREEK CAPITAL LETTER GAMMA\"},{\"char\":\"&Delta;\",desc:\"GREEK CAPITAL LETTER DELTA\"},{\"char\":\"&Epsilon;\",desc:\"GREEK CAPITAL LETTER EPSILON\"},{\"char\":\"&Zeta;\",desc:\"GREEK CAPITAL LETTER ZETA\"},{\"char\":\"&Eta;\",desc:\"GREEK CAPITAL LETTER ETA\"},{\"char\":\"&Theta;\",desc:\"GREEK CAPITAL LETTER THETA\"},{\"char\":\"&Iota;\",desc:\"GREEK CAPITAL LETTER IOTA\"},{\"char\":\"&Kappa;\",desc:\"GREEK CAPITAL LETTER KAPPA\"},{\"char\":\"&Lambda;\",desc:\"GREEK CAPITAL LETTER LAMBDA\"},{\"char\":\"&Mu;\",desc:\"GREEK CAPITAL LETTER MU\"},{\"char\":\"&Nu;\",desc:\"GREEK CAPITAL LETTER NU\"},{\"char\":\"&Xi;\",desc:\"GREEK CAPITAL LETTER XI\"},{\"char\":\"&Omicron;\",desc:\"GREEK CAPITAL LETTER OMICRON\"},{\"char\":\"&Pi;\",desc:\"GREEK CAPITAL LETTER PI\"},{\"char\":\"&Rho;\",desc:\"GREEK CAPITAL LETTER RHO\"},{\"char\":\"&Sigma;\",desc:\"GREEK CAPITAL LETTER SIGMA\"},{\"char\":\"&Tau;\",desc:\"GREEK CAPITAL LETTER TAU\"},{\"char\":\"&Upsilon;\",desc:\"GREEK CAPITAL LETTER UPSILON\"},{\"char\":\"&Phi;\",desc:\"GREEK CAPITAL LETTER PHI\"},{\"char\":\"&Chi;\",desc:\"GREEK CAPITAL LETTER CHI\"},{\"char\":\"&Psi;\",desc:\"GREEK CAPITAL LETTER PSI\"},{\"char\":\"&Omega;\",desc:\"GREEK CAPITAL LETTER OMEGA\"},{\"char\":\"&alpha;\",desc:\"GREEK SMALL LETTER ALPHA\"},{\"char\":\"&beta;\",desc:\"GREEK SMALL LETTER BETA\"},{\"char\":\"&gamma;\",desc:\"GREEK SMALL LETTER GAMMA\"},{\"char\":\"&delta;\",desc:\"GREEK SMALL LETTER DELTA\"},{\"char\":\"&epsilon;\",desc:\"GREEK SMALL LETTER EPSILON\"},{\"char\":\"&zeta;\",desc:\"GREEK SMALL LETTER ZETA\"},{\"char\":\"&eta;\",desc:\"GREEK SMALL LETTER ETA\"},{\"char\":\"&theta;\",desc:\"GREEK SMALL LETTER THETA\"},{\"char\":\"&iota;\",desc:\"GREEK SMALL LETTER IOTA\"},{\"char\":\"&kappa;\",desc:\"GREEK SMALL LETTER KAPPA\"},{\"char\":\"&lambda;\",desc:\"GREEK SMALL LETTER LAMBDA\"},{\"char\":\"&mu;\",desc:\"GREEK SMALL LETTER MU\"},{\"char\":\"&nu;\",desc:\"GREEK SMALL LETTER NU\"},{\"char\":\"&xi;\",desc:\"GREEK SMALL LETTER XI\"},{\"char\":\"&omicron;\",desc:\"GREEK SMALL LETTER OMICRON\"},{\"char\":\"&pi;\",desc:\"GREEK SMALL LETTER PI\"},{\"char\":\"&rho;\",desc:\"GREEK SMALL LETTER RHO\"},{\"char\":\"&sigmaf;\",desc:\"GREEK SMALL LETTER FINAL SIGMA\"},{\"char\":\"&sigma;\",desc:\"GREEK SMALL LETTER SIGMA\"},{\"char\":\"&tau;\",desc:\"GREEK SMALL LETTER TAU\"},{\"char\":\"&upsilon;\",desc:\"GREEK SMALL LETTER UPSILON\"},{\"char\":\"&phi;\",desc:\"GREEK SMALL LETTER PHI\"},{\"char\":\"&chi;\",desc:\"GREEK SMALL LETTER CHI\"},{\"char\":\"&psi;\",desc:\"GREEK SMALL LETTER PSI\"},{\"char\":\"&omega;\",desc:\"GREEK SMALL LETTER OMEGA\"},{\"char\":\"&thetasym;\",desc:\"GREEK THETA SYMBOL\"},{\"char\":\"&upsih;\",desc:\"GREEK UPSILON WITH HOOK SYMBOL\"},{\"char\":\"&straightphi;\",desc:\"GREEK PHI SYMBOL\"},{\"char\":\"&piv;\",desc:\"GREEK PI SYMBOL\"},{\"char\":\"&Gammad;\",desc:\"GREEK LETTER DIGAMMA\"},{\"char\":\"&gammad;\",desc:\"GREEK SMALL LETTER DIGAMMA\"},{\"char\":\"&varkappa;\",desc:\"GREEK KAPPA SYMBOL\"},{\"char\":\"&varrho;\",desc:\"GREEK RHO SYMBOL\"},{\"char\":\"&straightepsilon;\",desc:\"GREEK LUNATE EPSILON SYMBOL\"},{\"char\":\"&backepsilon;\",desc:\"GREEK REVERSED LUNATE EPSILON SYMBOL\"}]},{title:\"Cyrillic\",\"char\":\"&#x400\",list:[{\"char\":\"&#x400\",desc:\"CYRILLIC CAPITAL LETTER IE WITH GRAVE\"},{\"char\":\"&#x401\",desc:\"CYRILLIC CAPITAL LETTER IO\"},{\"char\":\"&#x402\",desc:\"CYRILLIC CAPITAL LETTER DJE\"},{\"char\":\"&#x403\",desc:\"CYRILLIC CAPITAL LETTER GJE\"},{\"char\":\"&#x404\",desc:\"CYRILLIC CAPITAL LETTER UKRAINIAN IE\"},{\"char\":\"&#x405\",desc:\"CYRILLIC CAPITAL LETTER DZE\"},{\"char\":\"&#x406\",desc:\"CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I\"},{\"char\":\"&#x407\",desc:\"CYRILLIC CAPITAL LETTER YI\"},{\"char\":\"&#x408\",desc:\"CYRILLIC CAPITAL LETTER JE\"},{\"char\":\"&#x409\",desc:\"CYRILLIC CAPITAL LETTER LJE\"},{\"char\":\"&#x40A\",desc:\"CYRILLIC CAPITAL LETTER NJE\"},{\"char\":\"&#x40B\",desc:\"CYRILLIC CAPITAL LETTER TSHE\"},{\"char\":\"&#x40C\",desc:\"CYRILLIC CAPITAL LETTER KJE\"},{\"char\":\"&#x40D\",desc:\"CYRILLIC CAPITAL LETTER I WITH GRAVE\"},{\"char\":\"&#x40E\",desc:\"CYRILLIC CAPITAL LETTER SHORT U\"},{\"char\":\"&#x40F\",desc:\"CYRILLIC CAPITAL LETTER DZHE\"},{\"char\":\"&#x410\",desc:\"CYRILLIC CAPITAL LETTER A\"},{\"char\":\"&#x411\",desc:\"CYRILLIC CAPITAL LETTER BE\"},{\"char\":\"&#x412\",desc:\"CYRILLIC CAPITAL LETTER VE\"},{\"char\":\"&#x413\",desc:\"CYRILLIC CAPITAL LETTER GHE\"},{\"char\":\"&#x414\",desc:\"CYRILLIC CAPITAL LETTER DE\"},{\"char\":\"&#x415\",desc:\"CYRILLIC CAPITAL LETTER IE\"},{\"char\":\"&#x416\",desc:\"CYRILLIC CAPITAL LETTER ZHE\"},{\"char\":\"&#x417\",desc:\"CYRILLIC CAPITAL LETTER ZE\"},{\"char\":\"&#x418\",desc:\"CYRILLIC CAPITAL LETTER I\"},{\"char\":\"&#x419\",desc:\"CYRILLIC CAPITAL LETTER SHORT I\"},{\"char\":\"&#x41A\",desc:\"CYRILLIC CAPITAL LETTER KA\"},{\"char\":\"&#x41B\",desc:\"CYRILLIC CAPITAL LETTER EL\"},{\"char\":\"&#x41C\",desc:\"CYRILLIC CAPITAL LETTER EM\"},{\"char\":\"&#x41D\",desc:\"CYRILLIC CAPITAL LETTER EN\"},{\"char\":\"&#x41E\",desc:\"CYRILLIC CAPITAL LETTER O\"},{\"char\":\"&#x41F\",desc:\"CYRILLIC CAPITAL LETTER PE\"},{\"char\":\"&#x420\",desc:\"CYRILLIC CAPITAL LETTER ER\"},{\"char\":\"&#x421\",desc:\"CYRILLIC CAPITAL LETTER ES\"},{\"char\":\"&#x422\",desc:\"CYRILLIC CAPITAL LETTER TE\"},{\"char\":\"&#x423\",desc:\"CYRILLIC CAPITAL LETTER U\"},{\"char\":\"&#x424\",desc:\"CYRILLIC CAPITAL LETTER EF\"},{\"char\":\"&#x425\",desc:\"CYRILLIC CAPITAL LETTER HA\"},{\"char\":\"&#x426\",desc:\"CYRILLIC CAPITAL LETTER TSE\"},{\"char\":\"&#x427\",desc:\"CYRILLIC CAPITAL LETTER CHE\"},{\"char\":\"&#x428\",desc:\"CYRILLIC CAPITAL LETTER SHA\"},{\"char\":\"&#x429\",desc:\"CYRILLIC CAPITAL LETTER SHCHA\"},{\"char\":\"&#x42A\",desc:\"CYRILLIC CAPITAL LETTER HARD SIGN\"},{\"char\":\"&#x42B\",desc:\"CYRILLIC CAPITAL LETTER YERU\"},{\"char\":\"&#x42C\",desc:\"CYRILLIC CAPITAL LETTER SOFT SIGN\"},{\"char\":\"&#x42D\",desc:\"CYRILLIC CAPITAL LETTER E\"},{\"char\":\"&#x42E\",desc:\"CYRILLIC CAPITAL LETTER YU\"},{\"char\":\"&#x42F\",desc:\"CYRILLIC CAPITAL LETTER YA\"},{\"char\":\"&#x430\",desc:\"CYRILLIC SMALL LETTER A\"},{\"char\":\"&#x431\",desc:\"CYRILLIC SMALL LETTER BE\"},{\"char\":\"&#x432\",desc:\"CYRILLIC SMALL LETTER VE\"},{\"char\":\"&#x433\",desc:\"CYRILLIC SMALL LETTER GHE\"},{\"char\":\"&#x434\",desc:\"CYRILLIC SMALL LETTER DE\"},{\"char\":\"&#x435\",desc:\"CYRILLIC SMALL LETTER IE\"},{\"char\":\"&#x436\",desc:\"CYRILLIC SMALL LETTER ZHE\"},{\"char\":\"&#x437\",desc:\"CYRILLIC SMALL LETTER ZE\"},{\"char\":\"&#x438\",desc:\"CYRILLIC SMALL LETTER I\"},{\"char\":\"&#x439\",desc:\"CYRILLIC SMALL LETTER SHORT I\"},{\"char\":\"&#x43A\",desc:\"CYRILLIC SMALL LETTER KA\"},{\"char\":\"&#x43B\",desc:\"CYRILLIC SMALL LETTER EL\"},{\"char\":\"&#x43C\",desc:\"CYRILLIC SMALL LETTER EM\"},{\"char\":\"&#x43D\",desc:\"CYRILLIC SMALL LETTER EN\"},{\"char\":\"&#x43E\",desc:\"CYRILLIC SMALL LETTER O\"},{\"char\":\"&#x43F\",desc:\"CYRILLIC SMALL LETTER PE\"},{\"char\":\"&#x440\",desc:\"CYRILLIC SMALL LETTER ER\"},{\"char\":\"&#x441\",desc:\"CYRILLIC SMALL LETTER ES\"},{\"char\":\"&#x442\",desc:\"CYRILLIC SMALL LETTER TE\"},{\"char\":\"&#x443\",desc:\"CYRILLIC SMALL LETTER U\"},{\"char\":\"&#x444\",desc:\"CYRILLIC SMALL LETTER EF\"},{\"char\":\"&#x445\",desc:\"CYRILLIC SMALL LETTER HA\"},{\"char\":\"&#x446\",desc:\"CYRILLIC SMALL LETTER TSE\"},{\"char\":\"&#x447\",desc:\"CYRILLIC SMALL LETTER CHE\"},{\"char\":\"&#x448\",desc:\"CYRILLIC SMALL LETTER SHA\"},{\"char\":\"&#x449\",desc:\"CYRILLIC SMALL LETTER SHCHA\"},{\"char\":\"&#x44A\",desc:\"CYRILLIC SMALL LETTER HARD SIGN\"},{\"char\":\"&#x44B\",desc:\"CYRILLIC SMALL LETTER YERU\"},{\"char\":\"&#x44C\",desc:\"CYRILLIC SMALL LETTER SOFT SIGN\"},{\"char\":\"&#x44D\",desc:\"CYRILLIC SMALL LETTER E\"},{\"char\":\"&#x44E\",desc:\"CYRILLIC SMALL LETTER YU\"},{\"char\":\"&#x44F\",desc:\"CYRILLIC SMALL LETTER YA\"},{\"char\":\"&#x450\",desc:\"CYRILLIC SMALL LETTER IE WITH GRAVE\"},{\"char\":\"&#x451\",desc:\"CYRILLIC SMALL LETTER IO\"},{\"char\":\"&#x452\",desc:\"CYRILLIC SMALL LETTER DJE\"},{\"char\":\"&#x453\",desc:\"CYRILLIC SMALL LETTER GJE\"},{\"char\":\"&#x454\",desc:\"CYRILLIC SMALL LETTER UKRAINIAN IE\"},{\"char\":\"&#x455\",desc:\"CYRILLIC SMALL LETTER DZE\"},{\"char\":\"&#x456\",desc:\"CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I\"},{\"char\":\"&#x457\",desc:\"CYRILLIC SMALL LETTER YI\"},{\"char\":\"&#x458\",desc:\"CYRILLIC SMALL LETTER JE\"},{\"char\":\"&#x459\",desc:\"CYRILLIC SMALL LETTER LJE\"},{\"char\":\"&#x45A\",desc:\"CYRILLIC SMALL LETTER NJE\"},{\"char\":\"&#x45B\",desc:\"CYRILLIC SMALL LETTER TSHE\"},{\"char\":\"&#x45C\",desc:\"CYRILLIC SMALL LETTER KJE\"},{\"char\":\"&#x45D\",desc:\"CYRILLIC SMALL LETTER I WITH GRAVE\"},{\"char\":\"&#x45E\",desc:\"CYRILLIC SMALL LETTER SHORT U\"},{\"char\":\"&#x45F\",desc:\"CYRILLIC SMALL LETTER DZHE\"}]},{title:\"Punctuation\",\"char\":\"&ndash;\",list:[{\"char\":\"&ndash;\",desc:\"EN DASH\"},{\"char\":\"&mdash;\",desc:\"EM DASH\"},{\"char\":\"&lsquo;\",desc:\"LEFT SINGLE QUOTATION MARK\"},{\"char\":\"&rsquo;\",desc:\"RIGHT SINGLE QUOTATION MARK\"},{\"char\":\"&sbquo;\",desc:\"SINGLE LOW-9 QUOTATION MARK\"},{\"char\":\"&ldquo;\",desc:\"LEFT DOUBLE QUOTATION MARK\"},{\"char\":\"&rdquo;\",desc:\"RIGHT DOUBLE QUOTATION MARK\"},{\"char\":\"&bdquo;\",desc:\"DOUBLE LOW-9 QUOTATION MARK\"},{\"char\":\"&dagger;\",desc:\"DAGGER\"},{\"char\":\"&Dagger;\",desc:\"DOUBLE DAGGER\"},{\"char\":\"&bull;\",desc:\"BULLET\"},{\"char\":\"&hellip;\",desc:\"HORIZONTAL ELLIPSIS\"},{\"char\":\"&permil;\",desc:\"PER MILLE SIGN\"},{\"char\":\"&prime;\",desc:\"PRIME\"},{\"char\":\"&Prime;\",desc:\"DOUBLE PRIME\"},{\"char\":\"&lsaquo;\",desc:\"SINGLE LEFT-POINTING ANGLE QUOTATION MARK\"},{\"char\":\"&rsaquo;\",desc:\"SINGLE RIGHT-POINTING ANGLE QUOTATION MARK\"},{\"char\":\"&oline;\",desc:\"OVERLINE\"},{\"char\":\"&frasl;\",desc:\"FRACTION SLASH\"}]},{title:\"Currency\",\"char\":\"&#x20A0\",list:[{\"char\":\"&#x20A0\",desc:\"EURO-CURRENCY SIGN\"},{\"char\":\"&#x20A1\",desc:\"COLON SIGN\"},{\"char\":\"&#x20A2\",desc:\"CRUZEIRO SIGN\"},{\"char\":\"&#x20A3\",desc:\"FRENCH FRANC SIGN\"},{\"char\":\"&#x20A4\",desc:\"LIRA SIGN\"},{\"char\":\"&#x20A5\",desc:\"MILL SIGN\"},{\"char\":\"&#x20A6\",desc:\"NAIRA SIGN\"},{\"char\":\"&#x20A7\",desc:\"PESETA SIGN\"},{\"char\":\"&#x20A8\",desc:\"RUPEE SIGN\"},{\"char\":\"&#x20A9\",desc:\"WON SIGN\"},{\"char\":\"&#x20AA\",desc:\"NEW SHEQEL SIGN\"},{\"char\":\"&#x20AB\",desc:\"DONG SIGN\"},{\"char\":\"&#x20AC\",desc:\"EURO SIGN\"},{\"char\":\"&#x20AD\",desc:\"KIP SIGN\"},{\"char\":\"&#x20AE\",desc:\"TUGRIK SIGN\"},{\"char\":\"&#x20AF\",desc:\"DRACHMA SIGN\"},{\"char\":\"&#x20B0\",desc:\"GERMAN PENNY SYMBOL\"},{\"char\":\"&#x20B1\",desc:\"PESO SIGN\"},{\"char\":\"&#x20B2\",desc:\"GUARANI SIGN\"},{\"char\":\"&#x20B3\",desc:\"AUSTRAL SIGN\"},{\"char\":\"&#x20B4\",desc:\"HRYVNIA SIGN\"},{\"char\":\"&#x20B5\",desc:\"CEDI SIGN\"},{\"char\":\"&#x20B6\",desc:\"LIVRE TOURNOIS SIGN\"},{\"char\":\"&#x20B7\",desc:\"SPESMILO SIGN\"},{\"char\":\"&#x20B8\",desc:\"TENGE SIGN\"},{\"char\":\"&#x20B9\",desc:\"INDIAN RUPEE SIGN\"}]},{title:\"Arrows\",\"char\":\"&#x2190\",list:[{\"char\":\"&#x2190\",desc:\"LEFTWARDS ARROW\"},{\"char\":\"&#x2191\",desc:\"UPWARDS ARROW\"},{\"char\":\"&#x2192\",desc:\"RIGHTWARDS ARROW\"},{\"char\":\"&#x2193\",desc:\"DOWNWARDS ARROW\"},{\"char\":\"&#x2194\",desc:\"LEFT RIGHT ARROW\"},{\"char\":\"&#x2195\",desc:\"UP DOWN ARROW\"},{\"char\":\"&#x2196\",desc:\"NORTH WEST ARROW\"},{\"char\":\"&#x2197\",desc:\"NORTH EAST ARROW\"},{\"char\":\"&#x2198\",desc:\"SOUTH EAST ARROW\"},{\"char\":\"&#x2199\",desc:\"SOUTH WEST ARROW\"},{\"char\":\"&#x219A\",desc:\"LEFTWARDS ARROW WITH STROKE\"},{\"char\":\"&#x219B\",desc:\"RIGHTWARDS ARROW WITH STROKE\"},{\"char\":\"&#x219C\",desc:\"LEFTWARDS WAVE ARROW\"},{\"char\":\"&#x219D\",desc:\"RIGHTWARDS WAVE ARROW\"},{\"char\":\"&#x219E\",desc:\"LEFTWARDS TWO HEADED ARROW\"},{\"char\":\"&#x219F\",desc:\"UPWARDS TWO HEADED ARROW\"},{\"char\":\"&#x21A0\",desc:\"RIGHTWARDS TWO HEADED ARROW\"},{\"char\":\"&#x21A1\",desc:\"DOWNWARDS TWO HEADED ARROW\"},{\"char\":\"&#x21A2\",desc:\"LEFTWARDS ARROW WITH TAIL\"},{\"char\":\"&#x21A3\",desc:\"RIGHTWARDS ARROW WITH TAIL\"},{\"char\":\"&#x21A4\",desc:\"LEFTWARDS ARROW FROM BAR\"},{\"char\":\"&#x21A5\",desc:\"UPWARDS ARROW FROM BAR\"},{\"char\":\"&#x21A6\",desc:\"RIGHTWARDS ARROW FROM BAR\"},{\"char\":\"&#x21A7\",desc:\"DOWNWARDS ARROW FROM BAR\"},{\"char\":\"&#x21A8\",desc:\"UP DOWN ARROW WITH BASE\"},{\"char\":\"&#x21A9\",desc:\"LEFTWARDS ARROW WITH HOOK\"},{\"char\":\"&#x21AA\",desc:\"RIGHTWARDS ARROW WITH HOOK\"},{\"char\":\"&#x21AB\",desc:\"LEFTWARDS ARROW WITH LOOP\"},{\"char\":\"&#x21AC\",desc:\"RIGHTWARDS ARROW WITH LOOP\"},{\"char\":\"&#x21AD\",desc:\"LEFT RIGHT WAVE ARROW\"},{\"char\":\"&#x21AE\",desc:\"LEFT RIGHT ARROW WITH STROKE\"},{\"char\":\"&#x21AF\",desc:\"DOWNWARDS ZIGZAG ARROW\"},{\"char\":\"&#x21B0\",desc:\"UPWARDS ARROW WITH TIP LEFTWARDS\"},{\"char\":\"&#x21B1\",desc:\"UPWARDS ARROW WITH TIP RIGHTWARDS\"},{\"char\":\"&#x21B2\",desc:\"DOWNWARDS ARROW WITH TIP LEFTWARDS\"},{\"char\":\"&#x21B3\",desc:\"DOWNWARDS ARROW WITH TIP RIGHTWARDS\"},{\"char\":\"&#x21B4\",desc:\"RIGHTWARDS ARROW WITH CORNER DOWNWARDS\"},{\"char\":\"&#x21B5\",desc:\"DOWNWARDS ARROW WITH CORNER LEFTWARDS\"},{\"char\":\"&#x21B6\",desc:\"ANTICLOCKWISE TOP SEMICIRCLE ARROW\"},{\"char\":\"&#x21B7\",desc:\"CLOCKWISE TOP SEMICIRCLE ARROW\"},{\"char\":\"&#x21B8\",desc:\"NORTH WEST ARROW TO LONG BAR\"},{\"char\":\"&#x21B9\",desc:\"LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR\"},{\"char\":\"&#x21BA\",desc:\"ANTICLOCKWISE OPEN CIRCLE ARROW\"},{\"char\":\"&#x21BB\",desc:\"CLOCKWISE OPEN CIRCLE ARROW\"},{\"char\":\"&#x21BC\",desc:\"LEFTWARDS HARPOON WITH BARB UPWARDS\"},{\"char\":\"&#x21BD\",desc:\"LEFTWARDS HARPOON WITH BARB DOWNWARDS\"},{\"char\":\"&#x21BE\",desc:\"UPWARDS HARPOON WITH BARB RIGHTWARDS\"},{\"char\":\"&#x21BF\",desc:\"UPWARDS HARPOON WITH BARB LEFTWARDS\"},{\"char\":\"&#x21C0\",desc:\"RIGHTWARDS HARPOON WITH BARB UPWARDS\"},{\"char\":\"&#x21C1\",desc:\"RIGHTWARDS HARPOON WITH BARB DOWNWARDS\"},{\"char\":\"&#x21C2\",desc:\"DOWNWARDS HARPOON WITH BARB RIGHTWARDS\"},{\"char\":\"&#x21C3\",desc:\"DOWNWARDS HARPOON WITH BARB LEFTWARDS\"},{\"char\":\"&#x21C4\",desc:\"RIGHTWARDS ARROW OVER LEFTWARDS ARROW\"},{\"char\":\"&#x21C5\",desc:\"UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW\"},{\"char\":\"&#x21C6\",desc:\"LEFTWARDS ARROW OVER RIGHTWARDS ARROW\"},{\"char\":\"&#x21C7\",desc:\"LEFTWARDS PAIRED ARROWS\"},{\"char\":\"&#x21C8\",desc:\"UPWARDS PAIRED ARROWS\"},{\"char\":\"&#x21C9\",desc:\"RIGHTWARDS PAIRED ARROWS\"},{\"char\":\"&#x21CA\",desc:\"DOWNWARDS PAIRED ARROWS\"},{\"char\":\"&#x21CB\",desc:\"LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON\"},{\"char\":\"&#x21CC\",desc:\"RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON\"},{\"char\":\"&#x21CD\",desc:\"LEFTWARDS DOUBLE ARROW WITH STROKE\"},{\"char\":\"&#x21CE\",desc:\"LEFT RIGHT DOUBLE ARROW WITH STROKE\"},{\"char\":\"&#x21CF\",desc:\"RIGHTWARDS DOUBLE ARROW WITH STROKE\"},{\"char\":\"&#x21D0\",desc:\"LEFTWARDS DOUBLE ARROW\"},{\"char\":\"&#x21D1\",desc:\"UPWARDS DOUBLE ARROW\"},{\"char\":\"&#x21D2\",desc:\"RIGHTWARDS DOUBLE ARROW\"},{\"char\":\"&#x21D3\",desc:\"DOWNWARDS DOUBLE ARROW\"},{\"char\":\"&#x21D4\",desc:\"LEFT RIGHT DOUBLE ARROW\"},{\"char\":\"&#x21D5\",desc:\"UP DOWN DOUBLE ARROW\"},{\"char\":\"&#x21D6\",desc:\"NORTH WEST DOUBLE ARROW\"},{\"char\":\"&#x21D7\",desc:\"NORTH EAST DOUBLE ARROW\"},{\"char\":\"&#x21D8\",desc:\"SOUTH EAST DOUBLE ARROW\"},{\"char\":\"&#x21D9\",desc:\"SOUTH WEST DOUBLE ARROW\"},{\"char\":\"&#x21DA\",desc:\"LEFTWARDS TRIPLE ARROW\"},{\"char\":\"&#x21DB\",desc:\"RIGHTWARDS TRIPLE ARROW\"},{\"char\":\"&#x21DC\",desc:\"LEFTWARDS SQUIGGLE ARROW\"},{\"char\":\"&#x21DD\",desc:\"RIGHTWARDS SQUIGGLE ARROW\"},{\"char\":\"&#x21DE\",desc:\"UPWARDS ARROW WITH DOUBLE STROKE\"},{\"char\":\"&#x21DF\",desc:\"DOWNWARDS ARROW WITH DOUBLE STROKE\"},{\"char\":\"&#x21E0\",desc:\"LEFTWARDS DASHED ARROW\"},{\"char\":\"&#x21E1\",desc:\"UPWARDS DASHED ARROW\"},{\"char\":\"&#x21E2\",desc:\"RIGHTWARDS DASHED ARROW\"},{\"char\":\"&#x21E3\",desc:\"DOWNWARDS DASHED ARROW\"},{\"char\":\"&#x21E4\",desc:\"LEFTWARDS ARROW TO BAR\"},{\"char\":\"&#x21E5\",desc:\"RIGHTWARDS ARROW TO BAR\"},{\"char\":\"&#x21E6\",desc:\"LEFTWARDS WHITE ARROW\"},{\"char\":\"&#x21E7\",desc:\"UPWARDS WHITE ARROW\"},{\"char\":\"&#x21E8\",desc:\"RIGHTWARDS WHITE ARROW\"},{\"char\":\"&#x21E9\",desc:\"DOWNWARDS WHITE ARROW\"},{\"char\":\"&#x21EA\",desc:\"UPWARDS WHITE ARROW FROM BAR\"},{\"char\":\"&#x21EB\",desc:\"UPWARDS WHITE ARROW ON PEDESTAL\"},{\"char\":\"&#x21EC\",desc:\"UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR\"},{\"char\":\"&#x21ED\",desc:\"UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR\"},{\"char\":\"&#x21EE\",desc:\"UPWARDS WHITE DOUBLE ARROW\"},{\"char\":\"&#x21EF\",desc:\"UPWARDS WHITE DOUBLE ARROW ON PEDESTAL\"},{\"char\":\"&#x21F0\",desc:\"RIGHTWARDS WHITE ARROW FROM WALL\"},{\"char\":\"&#x21F1\",desc:\"NORTH WEST ARROW TO CORNER\"},{\"char\":\"&#x21F2\",desc:\"SOUTH EAST ARROW TO CORNER\"},{\"char\":\"&#x21F3\",desc:\"UP DOWN WHITE ARROW\"},{\"char\":\"&#x21F4\",desc:\"RIGHT ARROW WITH SMALL CIRCLE\"},{\"char\":\"&#x21F5\",desc:\"DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW\"},{\"char\":\"&#x21F6\",desc:\"THREE RIGHTWARDS ARROWS\"},{\"char\":\"&#x21F7\",desc:\"LEFTWARDS ARROW WITH VERTICAL STROKE\"},{\"char\":\"&#x21F8\",desc:\"RIGHTWARDS ARROW WITH VERTICAL STROKE\"},{\"char\":\"&#x21F9\",desc:\"LEFT RIGHT ARROW WITH VERTICAL STROKE\"},{\"char\":\"&#x21FA\",desc:\"LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE\"},{\"char\":\"&#x21FB\",desc:\"RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE\"},{\"char\":\"&#x21FC\",desc:\"LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE\"},{\"char\":\"&#x21FD\",desc:\"LEFTWARDS OPEN-HEADED ARROW\"},{\"char\":\"&#x21FE\",desc:\"RIGHTWARDS OPEN-HEADED ARROW\"},{\"char\":\"&#x21FF\",desc:\"LEFT RIGHT OPEN-HEADED ARROW\"}]},{title:\"Math\",\"char\":\"&forall;\",list:[{\"char\":\"&forall;\",desc:\"FOR ALL\"},{\"char\":\"&part;\",desc:\"PARTIAL DIFFERENTIAL\"},{\"char\":\"&exist;\",desc:\"THERE EXISTS\"},{\"char\":\"&empty;\",desc:\"EMPTY SET\"},{\"char\":\"&nabla;\",desc:\"NABLA\"},{\"char\":\"&isin;\",desc:\"ELEMENT OF\"},{\"char\":\"&notin;\",desc:\"NOT AN ELEMENT OF\"},{\"char\":\"&ni;\",desc:\"CONTAINS AS MEMBER\"},{\"char\":\"&prod;\",desc:\"N-ARY PRODUCT\"},{\"char\":\"&sum;\",desc:\"N-ARY SUMMATION\"},{\"char\":\"&minus;\",desc:\"MINUS SIGN\"},{\"char\":\"&lowast;\",desc:\"ASTERISK OPERATOR\"},{\"char\":\"&radic;\",desc:\"SQUARE ROOT\"},{\"char\":\"&prop;\",desc:\"PROPORTIONAL TO\"},{\"char\":\"&infin;\",desc:\"INFINITY\"},{\"char\":\"&ang;\",desc:\"ANGLE\"},{\"char\":\"&and;\",desc:\"LOGICAL AND\"},{\"char\":\"&or;\",desc:\"LOGICAL OR\"},{\"char\":\"&cap;\",desc:\"INTERSECTION\"},{\"char\":\"&cup;\",desc:\"UNION\"},{\"char\":\"&int;\",desc:\"INTEGRAL\"},{\"char\":\"&there4;\",desc:\"THEREFORE\"},{\"char\":\"&sim;\",desc:\"TILDE OPERATOR\"},{\"char\":\"&cong;\",desc:\"APPROXIMATELY EQUAL TO\"},{\"char\":\"&asymp;\",desc:\"ALMOST EQUAL TO\"},{\"char\":\"&ne;\",desc:\"NOT EQUAL TO\"},{\"char\":\"&equiv;\",desc:\"IDENTICAL TO\"},{\"char\":\"&le;\",desc:\"LESS-THAN OR EQUAL TO\"},{\"char\":\"&ge;\",desc:\"GREATER-THAN OR EQUAL TO\"},{\"char\":\"&sub;\",desc:\"SUBSET OF\"},{\"char\":\"&sup;\",desc:\"SUPERSET OF\"},{\"char\":\"&nsub;\",desc:\"NOT A SUBSET OF\"},{\"char\":\"&sube;\",desc:\"SUBSET OF OR EQUAL TO\"},{\"char\":\"&supe;\",desc:\"SUPERSET OF OR EQUAL TO\"},{\"char\":\"&oplus;\",desc:\"CIRCLED PLUS\"},{\"char\":\"&otimes;\",desc:\"CIRCLED TIMES\"},{\"char\":\"&perp;\",desc:\"UP TACK\"}]},{title:\"Misc\",\"char\":\"&spades;\",list:[{\"char\":\"&spades;\",desc:\"BLACK SPADE SUIT\"},{\"char\":\"&clubs;\",desc:\"BLACK CLUB SUIT\"},{\"char\":\"&hearts;\",desc:\"BLACK HEART SUIT\"},{\"char\":\"&diams;\",desc:\"BLACK DIAMOND SUIT\"},{\"char\":\"&#x2669\",desc:\"QUARTER NOTE\"},{\"char\":\"&#x266A\",desc:\"EIGHTH NOTE\"},{\"char\":\"&#x266B\",desc:\"BEAMED EIGHTH NOTES\"},{\"char\":\"&#x266C\",desc:\"BEAMED SIXTEENTH NOTES\"},{\"char\":\"&#x266D\",desc:\"MUSIC FLAT SIGN\"},{\"char\":\"&#x266E\",desc:\"MUSIC NATURAL SIGN\"},{\"char\":\"&#x2600\",desc:\"BLACK SUN WITH RAYS\"},{\"char\":\"&#x2601\",desc:\"CLOUD\"},{\"char\":\"&#x2602\",desc:\"UMBRELLA\"},{\"char\":\"&#x2603\",desc:\"SNOWMAN\"},{\"char\":\"&#x2615\",desc:\"HOT BEVERAGE\"},{\"char\":\"&#x2618\",desc:\"SHAMROCK\"},{\"char\":\"&#x262F\",desc:\"YIN YANG\"},{\"char\":\"&#x2714\",desc:\"HEAVY CHECK MARK\"},{\"char\":\"&#x2716\",desc:\"HEAVY MULTIPLICATION X\"},{\"char\":\"&#x2744\",desc:\"SNOWFLAKE\"},{\"char\":\"&#x275B\",desc:\"HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT\"},{\"char\":\"&#x275C\",desc:\"HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT\"},{\"char\":\"&#x275D\",desc:\"HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT\"},{\"char\":\"&#x275E\",desc:\"HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT\"},{\"char\":\"&#x2764\",desc:\"HEAVY BLACK HEART\"}]}],specialCharButtons:[\"specialCharBack\",\"|\"]}),Object.assign(t.POPUP_TEMPLATES,{specialCharacters:\"[_BUTTONS_][_CUSTOM_LAYER_]\"}),t.PLUGINS.specialCharacters=function(W){var N=W.$,T=W.opts.specialCharactersSets[0],L=W.opts.specialCharactersSets,a=\"\";function I(){return'\\n        <div class=\"fr-buttons fr-tabs fr-tabs-scroll\">\\n          '.concat(function E(c,T){var R=\"\";return c.forEach(function(c){var E={elementClass:c.title===T.title?\"fr-active fr-active-tab\":\"\",title:c.title,dataParam1:c.title,desc:c[\"char\"]};R+='<button class=\"fr-command fr-btn fr-special-character-category '.concat(E.elementClass,'\" title=\"').concat(E.title,'\" data-cmd=\"setSpecialCharacterCategory\" data-param1=\"').concat(E.dataParam1,'\"><span>').concat(E.desc,\"</span></button>\")}),R}(L,T),'\\n        </div>\\n        <div class=\"fr-icon-container fr-sc-container\">\\n          ').concat(function R(c){var T=\"\";return c.list.forEach(function(c){var E={dataParam1:c[\"char\"],title:c.desc,splCharValue:c[\"char\"]};T+='<span class=\"fr-command fr-special-character fr-icon\" role=\"button\" \\n      data-cmd=\"insertSpecialCharacter\" data-param1=\"'.concat(E.dataParam1,'\" \\n      title=\"').concat(E.title,'\">').concat(E.splCharValue,\"</span>\")}),T}(T),\"\\n        </div>\")}return{setSpecialCharacterCategory:function R(E){T=L.filter(function(c){return c.title===E})[0],function c(){W.popups.get(\"specialCharacters\").html(a+I())}()},showSpecialCharsPopup:function e(){var c=W.popups.get(\"specialCharacters\");if(c||(c=function A(){W.opts.toolbarInline&&0<W.opts.specialCharButtons.length&&(a='<div class=\"fr-buttons fr-tabs\">'.concat(W.button.buildList(W.opts.specialCharButtons),\"</div>\"));var c={buttons:a,custom_layer:I()},E=W.popups.create(\"specialCharacters\",c);return function T(S){W.events.on(\"popup.tab\",function(c){var E=N(c.currentTarget);if(!W.popups.isVisible(\"specialCharacters\")||!E.is(\"span, a\"))return!0;var T,R,L,A=c.which;if(t.KEYCODE.TAB==A){if(E.is(\"span.fr-icon\")&&c.shiftKey||E.is(\"a\")&&!c.shiftKey){var a=S.find(\".fr-buttons\");T=!W.accessibility.focusToolbar(a,!!c.shiftKey)}if(!1!==T){var I=S.find(\"span.fr-icon:focus\").first().concat(S.findVisible(\" span.fr-icon\").first().concat(S.find(\"a\")));E.is(\"span.fr-icon\")&&(I=I.not(\"span.fr-icon:not(:focus)\")),R=I.index(E),R=c.shiftKey?((R-1)%I.length+I.length)%I.length:(R+1)%I.length,L=I.get(R),W.events.disableBlur(),L.focus(),T=!1}}else if(t.KEYCODE.ARROW_UP==A||t.KEYCODE.ARROW_DOWN==A||t.KEYCODE.ARROW_LEFT==A||t.KEYCODE.ARROW_RIGHT==A){if(E.is(\"span.fr-icon\")){var e=E.parent().find(\"span.fr-icon\");R=e.index(E);var r=11,s=Math.floor(e.length/r),h=R%r,d=Math.floor(R/r),C=d*r+h,O=s*r;t.KEYCODE.ARROW_UP==A?C=((C-r)%O+O)%O:t.KEYCODE.ARROW_DOWN==A?C=(C+r)%O:t.KEYCODE.ARROW_LEFT==A?C=((C-1)%O+O)%O:t.KEYCODE.ARROW_RIGHT==A&&(C=(C+1)%O),L=N(e.get(C)),W.events.disableBlur(),L.focus(),T=!1}}else t.KEYCODE.ENTER==A&&(E.is(\"a\")?E[0].click():W.button.exec(E),T=!1);return!1===T&&(c.preventDefault(),c.stopPropagation()),T},!0)}(E),E}()),!c.hasClass(\"fr-active\")){W.popups.refresh(\"specialCharacters\"),W.popups.setContainer(\"specialCharacters\",W.$tb);var E=W.$tb.find('.fr-command[data-cmd=\"specialCharacters\"]'),T=W.button.getPosition(E),R=T.left,L=T.top;W.popups.show(\"specialCharacters\",R,L,outerHeight)}},back:function c(){W.popups.hide(\"specialCharacters\"),W.toolbar.showInline()}}},t.DefineIcon(\"specialCharacters\",{NAME:\"dollar-sign\",SVG_KEY:\"symbols\"}),t.RegisterCommand(\"specialCharacters\",{title:\"Special Characters\",icon:\"specialCharacters\",undo:!1,focus:!1,popup:!0,refreshAfterCallback:!1,plugin:\"specialCharacters\",showOnMobile:!0,callback:function(){this.popups.isVisible(\"specialCharacters\")?(this.$el.find(\".fr-marker\")&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"specialCharacters\")):this.specialCharacters.showSpecialCharsPopup()}}),t.RegisterCommand(\"insertSpecialCharacter\",{callback:function(c,E){this.undo.saveStep(),this.html.insert(E),this.undo.saveStep(),this.popups.hide(\"specialCharacters\")}}),t.RegisterCommand(\"setSpecialCharacterCategory\",{undo:!1,focus:!1,callback:function(c,E){this.specialCharacters.setSpecialCharacterCategory(E)}}),t.DefineIcon(\"specialCharBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),t.RegisterCommand(\"specialCharBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,refreshAfterCallback:!1,callback:function(){this.specialCharacters.back()}})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(c){\"use strict\";c=c&&c.hasOwnProperty(\"default\")?c[\"default\"]:c,Object.assign(c.DEFAULTS,{dragInline:!0}),c.PLUGINS.draggable=function(g){var d=g.$;function e(e){return!(!e.originalEvent||!e.originalEvent.target||e.originalEvent.target.nodeType!==Node.TEXT_NODE)||(e.target&&\"A\"===e.target.tagName&&1===e.target.childNodes.length&&\"IMG\"===e.target.childNodes[0].tagName&&(e.target=e.target.childNodes[0]),d(e.target).hasClass(\"fr-draggable\")?(g.undo.canDo()||g.undo.saveStep(),g.opts.dragInline?g.$el.attr(\"contenteditable\",!0):g.$el.attr(\"contenteditable\",!1),g.opts.toolbarInline&&g.toolbar.hide(),d(e.target).addClass(\"fr-dragging\"),g.browser.msie||g.browser.edge||g.selection.clear(),void e.originalEvent.dataTransfer.setData(\"text\",\"Froala\")):(e.preventDefault(),!1))}var p,v=function v(e){return!(e&&(\"HTML\"===e.tagName||\"BODY\"===e.tagName||g.node.isElement(e)))};function m(e,t,r){if(g.opts.iframe){var n=g.helpers.getPX(g.$wp.find(\".fr-iframe\").css(\"padding-top\")),a=g.helpers.getPX(g.$wp.find(\".fr-iframe\").css(\"padding-left\"));e+=g.$iframe.offset().top+n,t+=g.$iframe.offset().left+a}p.offset().top!==e&&p.css(\"top\",e),p.offset().left!==t&&p.css(\"left\",t),p.width()!==r&&p.css(\"width\",r)}function t(e){e.originalEvent.dataTransfer.dropEffect=\"move\",g.opts.dragInline?(!function r(){for(var e=null,t=0;t<c.INSTANCES.length;t++)if((e=c.INSTANCES[t].$el.find(\".fr-dragging\")).length)return e.get(0)}()||g.browser.msie||g.browser.edge)&&e.preventDefault():(e.preventDefault(),function f(e){var t=g.doc.elementFromPoint(e.originalEvent.pageX-g.win.pageXOffset,e.originalEvent.pageY-g.win.pageYOffset);if(!v(t)){for(var r=0,n=t;!v(n)&&n===t&&0<e.originalEvent.pageY-g.win.pageYOffset-r;)r++,n=g.doc.elementFromPoint(e.originalEvent.pageX-g.win.pageXOffset,e.originalEvent.pageY-g.win.pageYOffset-r);(!v(n)||p&&0===g.$el.find(n).length&&n!==p.get(0))&&(n=null);for(var a=0,o=t;!v(o)&&o===t&&e.originalEvent.pageY-g.win.pageYOffset+a<d(g.doc).height();)a++,o=g.doc.elementFromPoint(e.originalEvent.pageX-g.win.pageXOffset,e.originalEvent.pageY-g.win.pageYOffset+a);(!v(o)||p&&0===g.$el.find(o).length&&o!==p.get(0))&&(o=null),t=null===o&&n?n:o&&null===n?o:o&&n?r<a?n:o:null}if(d(t).hasClass(\"fr-drag-helper\"))return!1;if(t&&!g.node.isBlock(t)&&(t=g.node.blockParent(t)),t&&0<=[\"TD\",\"TH\",\"TR\",\"THEAD\",\"TBODY\"].indexOf(t.tagName)&&(t=d(t).parents(\"table\").get(0)),t&&0<=[\"LI\"].indexOf(t.tagName)&&(t=d(t).parents(\"UL, OL\").get(0)),t&&!d(t).hasClass(\"fr-drag-helper\")){var i;p||(c.$draggable_helper||(c.$draggable_helper=d(document.createElement(\"div\")).attr(\"class\",\"fr-drag-helper\")),p=c.$draggable_helper,g.events.on(\"shared.destroy\",function(){p.html(\"\").removeData().remove(),p=null},!0)),i=e.originalEvent.pageY<d(t).offset().top+d(t).outerHeight()/2;var l=d(t),s=0;i||0!==l.next().length?(i||(l=l.next()),\"before\"===p.data(\"fr-position\")&&l.is(p.data(\"fr-tag\"))||(0<l.prev().length&&(s=parseFloat(l.prev().css(\"margin-bottom\"))||0),s=Math.max(s,parseFloat(l.css(\"margin-top\"))||0),m(l.offset().top-s/2-g.$box.offset().top,l.offset().left-g.win.pageXOffset-g.$box.offset().left,l.width()),p.data(\"fr-position\",\"before\"))):\"after\"===p.data(\"fr-position\")&&l.is(p.data(\"fr-tag\"))||(s=parseFloat(l.css(\"margin-bottom\"))||0,m(l.offset().top+d(t).height()+s/2-g.$box.offset().top,l.offset().left-g.win.pageXOffset-g.$box.offset().left,l.width()),p.data(\"fr-position\",\"after\")),p.data(\"fr-tag\",l),p.addClass(\"fr-visible\"),g.$box.append(p)}else p&&0<g.$box.find(p).length&&p.removeClass(\"fr-visible\")}(e))}function r(e){e.originalEvent.dataTransfer.dropEffect=\"move\",g.opts.dragInline||e.preventDefault()}function n(e){g.$el.attr(\"contenteditable\",!0);var t=g.$el.find(\".fr-dragging\");p&&p.hasClass(\"fr-visible\")&&g.$box.find(p).length?a(e):t.length&&(e.preventDefault(),e.stopPropagation()),p&&g.$box.find(p).length&&p.removeClass(\"fr-visible\"),t.removeClass(\"fr-dragging\")}function a(e){var t,r;g.$el.attr(\"contenteditable\",!0);for(var n=0;n<c.INSTANCES.length;n++)if((t=c.INSTANCES[n].$el.find(\".fr-dragging\")).length){r=c.INSTANCES[n];break}if(t.length){if(e.preventDefault(),e.stopPropagation(),p&&p.hasClass(\"fr-visible\")&&g.$box.find(p).length)p.data(\"fr-tag\")[p.data(\"fr-position\")]('<span class=\"fr-marker\"></span>'),p.removeClass(\"fr-visible\");else if(!1===g.markers.insertAtPoint(e.originalEvent))return!1;if(t.removeClass(\"fr-dragging\"),!1===(t=g.events.chainTrigger(\"element.beforeDrop\",t)))return!1;var a=t;if(t.parent().is(\"A\")&&1===t.parent().get(0).childNodes.length&&(a=t.parent()),g.core.isEmpty())g.events.focus();else g.$el.find(\".fr-marker\").replaceWith(c.MARKERS),g.selection.restore();if(r===g||g.undo.canDo()||g.undo.saveStep(),g.core.isEmpty())g.$el.html(a);else{var o=g.markers.insert();0===a.find(o).length?d(o).replaceWith(a):0===t.find(o).length&&d(o).replaceWith(t),t.after(c.MARKERS),g.selection.restore()}return g.popups.hideAll(),g.selection.save(),g.$el.find(g.html.emptyBlockTagsQuery()).not(\"TD, TH, LI, .fr-inner\").not(g.opts.htmlAllowedEmptyTags.join(\",\")).remove(),g.html.wrap(),g.html.fillEmptyBlocks(),g.selection.restore(),g.undo.saveStep(),g.opts.iframe&&g.size.syncIframe(),r!==g&&(r.popups.hideAll(),r.$el.find(r.html.emptyBlockTagsQuery()).not(\"TD, TH, LI, .fr-inner\").remove(),r.html.wrap(),r.html.fillEmptyBlocks(),r.undo.saveStep(),r.events.trigger(\"element.dropped\"),r.opts.iframe&&r.size.syncIframe()),g.events.trigger(\"element.dropped\",[a]),!1}p&&p.removeClass(\"fr-visible\"),g.undo.canDo()||g.undo.saveStep(),setTimeout(function(){g.undo.saveStep()},0)}function o(e){if(e&&\"DIV\"===e.tagName&&g.node.hasClass(e,\"fr-drag-helper\"))e.parentNode.removeChild(e);else if(e&&e.nodeType===Node.ELEMENT_NODE)for(var t=e.querySelectorAll(\"div.fr-drag-helper\"),r=0;r<t.length;r++)t[r].parentNode.removeChild(t[r])}return{_init:function i(){g.opts.enter===c.ENTER_BR&&(g.opts.dragInline=!0),g.events.on(\"dragstart\",e,!0),g.events.on(\"dragover\",t,!0),g.events.on(\"dragenter\",r,!0),g.events.on(\"document.dragend\",n,!0),g.events.on(\"document.drop\",n,!0),g.events.on(\"drop\",a,!0),g.events.on(\"html.processGet\",o)}}}});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],e):e(t.FroalaEditor)}(this,function(t){\"use strict\";t=t&&t.hasOwnProperty(\"default\")?t[\"default\"]:t,Object.assign(t.DEFAULTS,{fontSize:[\"8\",\"9\",\"10\",\"11\",\"12\",\"14\",\"18\",\"24\",\"30\",\"36\",\"48\",\"60\",\"72\",\"96\"],fontSizeSelection:!1,fontSizeDefaultSelection:\"12\",fontSizeUnit:\"px\"}),t.PLUGINS.fontSize=function(o){var i=o.$;return{apply:function e(t){o.format.applyStyle(\"font-size\",t)},refreshOnShow:function a(t,e){var n=i(o.selection.element()).css(\"font-size\");\"pt\"===o.opts.fontSizeUnit&&(n=\"\".concat(Math.round(72*parseFloat(n,10)/96),\"pt\")),e.find(\".fr-command.fr-active\").removeClass(\"fr-active\").attr(\"aria-selected\",!1),e.find('.fr-command[data-param1=\"'.concat(n,'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},refresh:function n(t){if(o.opts.fontSizeSelection){var e=o.helpers.getPX(i(o.selection.element()).css(\"font-size\"));\"pt\"===o.opts.fontSizeUnit&&(e=\"\".concat(Math.round(72*parseFloat(e,10)/96),\"pt\")),t.find(\"> span\").text(e)}}}},t.RegisterCommand(\"fontSize\",{type:\"dropdown\",title:\"Font Size\",displaySelection:function(t){return t.opts.fontSizeSelection},displaySelectionWidth:30,defaultSelection:function(t){return t.opts.fontSizeDefaultSelection},html:function(){for(var t='<ul class=\"fr-dropdown-list\" role=\"presentation\">',e=this.opts.fontSize,n=0;n<e.length;n++){var o=e[n];t+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"fontSize\" data-param1=\"'.concat(o).concat(this.opts.fontSizeUnit,'\" title=\"').concat(o,'\">').concat(o,\"</a></li>\")}return t+=\"</ul>\"},callback:function(t,e){this.fontSize.apply(e)},refresh:function(t){this.fontSize.refresh(t)},refreshOnShow:function(t,e){this.fontSize.refreshOnShow(t,e)},plugin:\"fontSize\"}),t.DefineIcon(\"fontSize\",{NAME:\"text-height\",SVG_KEY:\"fontSize\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(i){\"use strict\";i=i&&i.hasOwnProperty(\"default\")?i[\"default\"]:i,Object.assign(i.DEFAULTS,{listAdvancedTypes:!0}),i.PLUGINS.lists=function(m){var g=m.$;function d(e){return'<span class=\"fr-open-'.concat(e.toLowerCase(),'\"></span>')}function f(e){return'<span class=\"fr-close-'.concat(e.toLowerCase(),'\"></span>')}function o(e,t){!function c(e,t){for(var a=[],n=0;n<e.length;n++){var r=e[n].parentNode;\"LI\"==e[n].tagName&&r.tagName!=t&&a.indexOf(r)<0&&a.push(r)}for(var o=a.length-1;0<=o;o--){var l=g(a[o]);l.replaceWith(\"<\".concat(t.toLowerCase(),\" \").concat(m.node.attributes(l.get(0)),\">\").concat(l.html(),\"</\").concat(t.toLowerCase(),\">\"))}}(e,t);var a,n=m.html.defaultTag(),r=null;e.length&&(a=\"rtl\"==m.opts.direction||\"rtl\"==g(e[0]).css(\"direction\")?\"margin-right\":\"margin-left\");for(var o=0;o<e.length;o++)if(\"TD\"!=e[o].tagName&&\"TH\"!=e[o].tagName&&\"LI\"!=e[o].tagName){var l=m.helpers.getPX(g(e[o]).css(a))||0;(e[o].style.marginLeft=null)===r&&(r=l);var i=0<r?\"<\".concat(t,' style=\"').concat(a,\": \").concat(r,'px \">'):\"<\".concat(t,\">\"),s=\"</\".concat(t,\">\");for(l-=r;0<l/m.opts.indentMargin;)i+=\"</\".concat(t,\">\"),s+=s,l-=m.opts.indentMargin;n&&e[o].tagName.toLowerCase()==n?g(e[o]).replaceWith(\"\".concat(i,\"<li\").concat(m.node.attributes(e[o]),\">\").concat(g(e[o]).html(),\"</li>\").concat(s)):g(e[o]).wrap(\"\".concat(i,\"<li></li>\").concat(s))}m.clean.lists()}function c(e){var t,a;for(t=e.length-1;0<=t;t--)for(a=t-1;0<=a;a--){if(g(e[a]).find(e[t]).length||e[a]==e[t]){e.splice(t,1);break}if(g(e[a]).contains(e[t])){e.splice(a,1);break}}var n=[];for(t=0;t<e.length;t++){var r=g(e[t]),o=e[t].parentNode,l=r.attr(\"class\");if(r.before(f(o.tagName)),\"LI\"==o.parentNode.tagName)r.before(f(\"LI\")),r.after(d(\"LI\"));else if(\"OL\"==o.parentNode.tagName)r.before(f(\"OL\")),r.after(d(\"OL\"));else if(\"UL\"==o.parentNode.tagName)r.before(f(\"UL\")),r.after(d(\"UL\"));else{var i=\"\";l&&(i+=' class=\"'.concat(l,'\"'));var s=\"rtl\"==m.opts.direction||\"rtl\"==r.css(\"direction\")?\"margin-right\":\"margin-left\";m.helpers.getPX(g(o).css(s))&&0<=(g(o).attr(\"style\")||\"\").indexOf(\"\".concat(s,\":\"))&&(i+=' style=\"'.concat(s,\":\").concat(m.helpers.getPX(g(o).css(s)),'px;\"')),m.html.defaultTag()&&0===r.find(m.html.blockTagsQuery()).length&&r.wrapInner(m.html.defaultTag()+i),m.node.isEmpty(r.get(0),!0)||0!==r.find(m.html.blockTagsQuery()).length||(\"DIV\"==o.parentNode.tagName&&m.html.defaultTag()?(r.prepend(d(m.html.defaultTag())),r.append(f(m.html.defaultTag()))):r.append(\"<br>\")),r.append(d(\"LI\")),r.prepend(f(\"LI\"))}r.after(d(o.tagName)),\"LI\"==o.parentNode.tagName&&(o=o.parentNode.parentNode),n.indexOf(o)<0&&n.push(o)}for(t=0;t<n.length;t++){var c=g(n[t]),p=c.html();p=(p=p.replace(/<span class=\"fr-close-([a-z]*)\"><\\/span>/g,\"</$1>\")).replace(/<span class=\"fr-open-([a-z]*)\"><\\/span>/g,\"<$1>\"),c.replaceWith(m.node.openTagString(c.get(0))+p+m.node.closeTagString(c.get(0)))}m.$el.find(\"li:empty\").remove(),m.$el.find(\"ul:empty, ol:empty\").remove(),m.clean.lists(),m.$el.find(\"ul:empty, ol:empty\").remove(),m.html.wrap()}function e(e){if(\"indent\"==e||\"outdent\"==e){var t=!1,a=m.selection.blocks(),n=[],r=a[0].previousSibling||a[0].parentElement;if(\"outdent\"==e){if(\"UL\"!=a[0].parentNode.tagName&&\"UL\"!=r.parentNode.tagName&&\"OL\"!=r.parentNode.tagName&&\"LI\"!=r.parentNode.tagName)return;if(!a[0].previousSibling&&\"none\"==r.parentNode.style.listStyleType)return void function l(e){for(m.selection.save();0<e.childNodes.length;)e.parentNode.parentNode.append(e.childNodes[0]);m.clean.lists(),m.selection.restore()}(r)}else{if(\"UL\"!=a[0].parentElement.tagName&&\"OL\"!=a[0].parentElement.tagName&&\"LI\"!=a[0].parentElement.tagName)return;if(m.node.isBlock(a[0])&&\"LI\"!==a[0].tagName&&0<g(a[0]).parentsUntil(m.$el,\"LI\").length&&(a[0]=a[0].parentElement,r=a[0].parentElement),!a[0].previousSibling||\"LI\"!=a[0].previousSibling.tagName)return void function i(e){m.selection.save();for(var t=\"OL\"==e.tagName?document.createElement(\"ol\"):document.createElement(\"ul\");0<e.childNodes.length;)t.append(e.childNodes[0]);var a=document.createElement(\"li\");t.append(a),e.append(t),m.clean.lists(),m.selection.restore()}(r)}for(var o=0;o<a.length;o++)\"LI\"==a[o].tagName?(t=!0,n.push(a[o])):\"LI\"==a[o].parentNode.tagName&&(t=!0,n.push(a[o].parentNode));t&&(\"indent\"==e?function f(e){m.selection.save();for(var t=0;t<e.length;t++){var a=e[t].previousSibling;if(a){var n=g(e[t]).find(\"> ul, > ol\").last().get(0);if(n){var r=g(document.createElement(\"li\"));if(n.childNodes.length)for(var o=n.childNodes[0].attributes,l=0;l<o.length;l++){var i=o[l];\"style\"===i.name&&(r[0].style.cssText+=i.value)}g(n).prepend(r);for(var s=m.node.contents(e[t])[0];s&&!m.node.isList(s);){var c=s.nextSibling;r.append(s),s=c}g(a).append(g(n)),g(e[t]).remove()}else{var p=g(a).find(\"> ul, > ol\").last().get(0);if(p)g(p).append(g(e[t]));else{var d=g(\"<\".concat(e[t].parentNode.tagName,\">\"));g(a).append(d),d.append(g(e[t]))}}}}m.clean.lists(),m.selection.restore()}(n):function s(e){m.selection.save(),c(e),m.selection.restore()}(n))}}return{_init:function t(){m.events.on(\"commands.after\",e),m.events.on(\"keydown\",function(e){if(e.which==i.KEYCODE.TAB){for(var t=m.selection.blocks(),a=[],n=0;n<t.length;n++)\"LI\"==t[n].tagName?a.push(t[n]):\"LI\"==t[n].parentNode.tagName&&a.push(t[n].parentNode);if(1<=a.length||a.length&&(m.selection.info(a[0]).atStart||m.node.isEmpty(a[0])))return e.preventDefault(),e.stopPropagation(),e.shiftKey?m.commands.outdent():m.commands.indent(),!1}},!0)},format:function l(e,t){var a,n;for(m.html.syncInputs(),m.selection.save(),m.html.wrap(!0,!0,!0,!0),m.selection.restore(),n=m.selection.blocks(!0),a=0;a<n.length;a++)\"LI\"!=n[a].tagName&&\"LI\"==n[a].parentNode.tagName&&(n[a]=n[a].parentNode);if(m.selection.save(),function r(e,t){for(var a=!0,n=0;n<e.length;n++){if(\"LI\"!=e[n].tagName)return!1;e[n].parentNode.tagName!=t&&(a=!1)}return a}(n,e)?t||c(n):o(n,e),m.html.unwrap(),m.selection.restore(),t=t||\"default\"){for(n=m.selection.blocks(),a=0;a<n.length;a++)\"LI\"!=n[a].tagName&&\"LI\"==n[a].parentNode.tagName&&(n[a]=n[a].parentNode);for(a=0;a<n.length;a++)\"LI\"==n[a].tagName&&(g(n[a].parentNode).css(\"list-style-type\",\"default\"===t?\"\":t),0===(g(n[a].parentNode).attr(\"style\")||\"\").length&&g(n[a].parentNode).removeAttr(\"style\"))}},refresh:function r(e,t){var a=g(m.selection.element());if(a.get(0)!=m.el){var n=a.get(0);(n=\"LI\"!=n.tagName&&n.firstElementChild&&\"LI\"!=n.firstElementChild.tagName?a.parents(\"li\").get(0):\"LI\"==n.tagName||n.firstElementChild?n.firstElementChild&&\"LI\"==n.firstElementChild.tagName?a.get(0).firstChild:a.get(0):a.parents(\"li\").get(0))&&n.parentNode.tagName==t&&m.el.contains(n.parentNode)&&e.addClass(\"fr-active\")}}}},i.DefineIcon(\"formatOLSimple\",{NAME:\"list-ol\",SVG_KEY:\"orderedList\"}),i.RegisterCommand(\"formatOLSimple\",{title:\"Ordered List\",type:\"button\",options:{\"default\":\"Default\",circle:\"Circle\",disc:\"Disc\",square:\"Square\"},refresh:function(e){this.lists.refresh(e,\"OL\")},callback:function(e,t){this.lists.format(\"OL\",t)},plugin:\"lists\"}),i.RegisterCommand(\"formatUL\",{title:\"Unordered List\",type:\"button\",hasOptions:function(){return this.opts.listAdvancedTypes},options:{\"default\":\"Default\",circle:\"Circle\",disc:\"Disc\",square:\"Square\"},refresh:function(e){this.lists.refresh(e,\"UL\")},callback:function(e,t){this.lists.format(\"UL\",t)},plugin:\"lists\"}),i.RegisterCommand(\"formatOL\",{title:\"Ordered List\",hasOptions:function(){return this.opts.listAdvancedTypes},options:{\"default\":\"Default\",\"lower-alpha\":\"Lower Alpha\",\"lower-greek\":\"Lower Greek\",\"lower-roman\":\"Lower Roman\",\"upper-alpha\":\"Upper Alpha\",\"upper-roman\":\"Upper Roman\"},refresh:function(e){this.lists.refresh(e,\"OL\")},callback:function(e,t){this.lists.format(\"OL\",t)},plugin:\"lists\"}),i.DefineIcon(\"formatUL\",{NAME:\"list-ul\",SVG_KEY:\"unorderedList\"}),i.DefineIcon(\"formatOL\",{NAME:\"list-ol\",SVG_KEY:\"orderedList\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(a,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(a.FroalaEditor)}(this,function(a){\"use strict\";a=a&&a.hasOwnProperty(\"default\")?a[\"default\"]:a,Object.assign(a.DEFAULTS,{paragraphFormat:{N:\"Normal\",H1:\"Heading 1\",H2:\"Heading 2\",H3:\"Heading 3\",H4:\"Heading 4\",PRE:\"Code\"},paragraphFormatSelection:!1,paragraphDefaultSelection:\"Paragraph Format\"}),a.PLUGINS.paragraphFormat=function(h){var g=h.$;function c(a,t){var e=h.html.defaultTag();if(t&&t.toLowerCase()!=e)if(0<a.find(\"ul, ol\").length){var r=g(\"<\"+t+\">\");a.prepend(r);for(var n=h.node.contents(a.get(0))[0];n&&[\"UL\",\"OL\"].indexOf(n.tagName)<0;){var o=n.nextSibling;r.append(n),n=o}}else a.html(\"<\"+t+\">\"+a.html()+\"</\"+t+\">\")}return{apply:function u(a){\"N\"==a&&(a=h.html.defaultTag()),h.selection.save(),h.html.wrap(!0,!0,!h.opts.paragraphFormat.BLOCKQUOTE,!0,!0),h.selection.restore();var t,e,r,n,o,i,p,l,s=h.selection.blocks();h.selection.save(),h.$el.find(\"pre\").attr(\"skip\",!0);for(var m=0;m<s.length;m++)if(s[m].tagName!=a&&!h.node.isList(s[m])){var d=g(s[m]);if(\"LI\"==s[m].tagName)c(d,a);else if(\"LI\"==s[m].parentNode.tagName&&s[m])i=d,p=a,l=h.html.defaultTag(),p&&p.toLowerCase()!=l||(p='div class=\"fr-temp-div\"'),i.replaceWith(g(\"<\"+p+\">\").html(i.html()));else if(0<=[\"TD\",\"TH\"].indexOf(s[m].parentNode.tagName))r=d,n=a,o=h.html.defaultTag(),n||(n='div class=\"fr-temp-div\"'+(h.node.isEmpty(r.get(0),!0)?' data-empty=\"true\"':\"\")),n.toLowerCase()==o?(h.node.isEmpty(r.get(0),!0)||r.append(\"<br/>\"),r.replaceWith(r.html())):r.replaceWith(g(\"<\"+n+\">\").html(r.html()));else{if(\"PRE\"===a&&null===d[0].nextSibling){var f=g(\"<br>\");d[0].after(f[0])}t=d,(e=a)||(e='div class=\"fr-temp-div\"'+(h.node.isEmpty(t.get(0),!0)?' data-empty=\"true\"':\"\")),(\"H1\"==e||\"H2\"==e||\"H3\"==e||\"H4\"==e||\"H5\"==e)&&-1<h.node.attributes(t.get(0)).indexOf(\"font-size:\")?t.replaceWith(g(\"<\"+e+\" \"+h.node.attributes(t.get(0)).replace(/font-size:[0-9]+px;?/,\"\")+\">\").html(t.html()).removeAttr(\"data-empty\")):t.replaceWith(g(\"<\"+e+\" \"+h.node.attributes(t.get(0))+\">\").html(t.html()).removeAttr(\"data-empty\"))}}h.$el.find('pre:not([skip=\"true\"]) + pre:not([skip=\"true\"])').each(function(){g(this).prev().append(\"<br>\"+g(this).html()),g(this).remove()}),h.$el.find(\"pre\").removeAttr(\"skip\"),h.html.unwrap(),h.selection.restore()},refreshOnShow:function i(a,t){var e=h.selection.blocks();if(e.length){var r=e[0],n=\"N\",o=h.html.defaultTag();r.tagName.toLowerCase()!=o&&r!=h.el&&(n=r.tagName),t.find('.fr-command[data-param1=\"'+n+'\"]').addClass(\"fr-active\").attr(\"aria-selected\",!0)}else t.find('.fr-command[data-param1=\"N\"]').addClass(\"fr-active\").attr(\"aria-selected\",!0)},refresh:function o(a){if(h.opts.paragraphFormatSelection){var t=h.selection.blocks();if(t.length){var e=t[0],r=\"N\",n=h.html.defaultTag();e.tagName.toLowerCase()!=n&&e!=h.el&&(r=e.tagName),0<=[\"LI\",\"TD\",\"TH\"].indexOf(r)&&(r=\"N\"),a.find(\">span\").text(h.language.translate(h.opts.paragraphFormat[r]))}else a.find(\">span\").text(h.language.translate(h.opts.paragraphFormat.N))}}}},a.RegisterCommand(\"paragraphFormat\",{type:\"dropdown\",displaySelection:function(a){return a.opts.paragraphFormatSelection},defaultSelection:function(a){return a.language.translate(a.opts.paragraphDefaultSelection)},displaySelectionWidth:80,html:function(){var a='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.paragraphFormat;for(var e in t)if(t.hasOwnProperty(e)){var r=this.shortcuts.get(\"paragraphFormat.\"+e);r=r?'<span class=\"fr-shortcut\">'+r+\"</span>\":\"\",a+='<li role=\"presentation\"><'+(\"N\"==e?this.html.defaultTag()||\"DIV\":e)+' style=\"padding: 0 !important; margin: 0 !important; border: 0 !important; background-color: transparent !important; '+(\"PRE\"==e||\"N\"==e?\"font-size: 15px\":\"font-weight: bold !important; \")+(\"H1\"==e?\"font-size: 2em !important; \":\"\")+(\"H2\"==e?\"font-size: 1.5em !important; \":\"\")+(\"H3\"==e?\"font-size: 1.17em !important; \":\"\")+(\"H4\"==e?\"font-size: 15px !important;\":\"\")+'\"  role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"paragraphFormat\" data-param1=\"'+e+'\" title=\"'+this.language.translate(t[e])+'\">'+this.language.translate(t[e])+\"</a></\"+(\"N\"==e?this.html.defaultTag()||\"DIV\":e)+\"></li>\"}return a+=\"</ul>\"},title:\"Paragraph Format\",callback:function(a,t){this.paragraphFormat.apply(t)},refresh:function(a){this.paragraphFormat.refresh(a)},refreshOnShow:function(a,t){this.paragraphFormat.refreshOnShow(a,t)},plugin:\"paragraphFormat\"}),a.DefineIcon(\"paragraphFormat\",{NAME:\"paragraph\",SVG_KEY:\"paragraphFormat\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(e){\"use strict\";e=e&&e.hasOwnProperty(\"default\")?e[\"default\"]:e,Object.assign(e.DEFAULTS,{helpSets:[{title:\"Inline Editor\",commands:[{val:\"OSkeyE\",desc:\"Show the editor\"}]},{title:\"Common actions\",commands:[{val:\"OSkeyC\",desc:\"Copy\"},{val:\"OSkeyX\",desc:\"Cut\"},{val:\"OSkeyV\",desc:\"Paste\"},{val:\"OSkeyZ\",desc:\"Undo\"},{val:\"OSkeyShift+Z\",desc:\"Redo\"},{val:\"OSkeyK\",desc:\"Insert Link\"},{val:\"OSkeyP\",desc:\"Insert Image\"}]},{title:\"Basic Formatting\",commands:[{val:\"OSkeyA\",desc:\"Select All\"},{val:\"OSkeyB\",desc:\"Bold\"},{val:\"OSkeyI\",desc:\"Italic\"},{val:\"OSkeyU\",desc:\"Underline\"},{val:\"OSkeyS\",desc:\"Strikethrough\"},{val:\"OSkey]\",desc:\"Increase Indent\"},{val:\"OSkey[\",desc:\"Decrease Indent\"}]},{title:\"Quote\",commands:[{val:\"OSkey'\",desc:\"Increase quote level\"},{val:\"OSkeyShift+'\",desc:\"Decrease quote level\"}]},{title:\"Image / Video\",commands:[{val:\"OSkey+\",desc:\"Resize larger\"},{val:\"OSkey-\",desc:\"Resize smaller\"}]},{title:\"Table\",commands:[{val:\"Alt+Space\",desc:\"Select table cell\"},{val:\"Shift+Left/Right arrow\",desc:\"Extend selection one cell\"},{val:\"Shift+Up/Down arrow\",desc:\"Extend selection one row\"}]},{title:\"Navigation\",commands:[{val:\"OSkey/\",desc:\"Shortcuts\"},{val:\"Alt+F10\",desc:\"Focus popup / toolbar\"},{val:\"Esc\",desc:\"Return focus to previous position\"}]}]}),e.PLUGINS.help=function(c){var a,o=c.$,s=\"help\";return{_init:function e(){},show:function d(){if(!a){var e=\"<h4>\".concat(c.language.translate(\"Shortcuts\"),\"</h4>\"),t=function n(){for(var e='<div class=\"fr-help-modal\">',t=0;t<c.opts.helpSets.length;t++){var l=c.opts.helpSets[t],a=\"<table>\";a+=\"<thead><tr><th>\".concat(c.language.translate(l.title),\"</th></tr></thead>\"),a+=\"<tbody>\";for(var o=0;o<l.commands.length;o++){var s=l.commands[o];a+=\"<tr>\",a+=\"<td>\".concat(c.language.translate(s.desc),\"</td>\"),a+=\"<td>\".concat(s.val.replace(\"OSkey\",c.helpers.isMac()?\"&#8984;\":\"Ctrl+\"),\"</td>\"),a+=\"</tr>\"}e+=a+=\"</tbody></table>\"}return e+=\"</div>\"}(),l=c.modals.create(s,e,t);a=l.$modal,c.events.$on(o(c.o_win),\"resize\",function(){c.modals.resize(s)})}c.modals.show(s),c.modals.resize(s)},hide:function t(){c.modals.hide(s)}}},e.DefineIcon(\"help\",{NAME:\"question\",SVG_KEY:\"help\"}),e.RegisterShortcut(e.KEYCODE.SLASH,\"help\",null,\"/\"),e.RegisterCommand(\"help\",{title:\"Help\",icon:\"help\",undo:!1,focus:!1,modal:!0,callback:function(){this.help.show()},plugin:\"help\",showOnMobile:!1})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(h){\"use strict\";h=h&&h.hasOwnProperty(\"default\")?h[\"default\"]:h,Object.assign(h.DEFAULTS,{quickInsertButtons:[\"image\",\"video\",\"embedly\",\"table\",\"ul\",\"ol\",\"hr\"],quickInsertTags:[\"p\",\"div\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"pre\",\"blockquote\"],quickInsertEnabled:!0}),h.QUICK_INSERT_BUTTONS={},h.DefineIcon(\"quickInsert\",{SVG_KEY:\"add\",template:\"svg\"}),h.RegisterQuickInsertButton=function(e,t){h.QUICK_INSERT_BUTTONS[e]=Object.assign({undo:!0},t)},h.RegisterQuickInsertButton(\"image\",{icon:\"insertImage\",requiredPlugin:\"image\",title:\"Insert Image\",undo:!1,callback:function(){var e=this,t=e.$;e.shared.$qi_image_input||(e.shared.$qi_image_input=t(document.createElement(\"input\")).attr(\"accept\",\"image/\"+e.opts.imageAllowedTypes.join(\", image/\").toLowerCase()).attr(\"name\",\"quickInsertImage\".concat(this.id)).attr(\"style\",\"display: none;\").attr(\"type\",\"file\"),t(\"body\").first().append(e.shared.$qi_image_input),e.events.$on(e.shared.$qi_image_input,\"change\",function(){var e=t(this).data(\"inst\");this.files&&(e.quickInsert.hide(),e.image.upload(this.files)),t(this).val(\"\")},!0)),e.$qi_image_input=e.shared.$qi_image_input,e.helpers.isMobile()&&e.selection.save(),e.events.disableBlur(),e.$qi_image_input.data(\"inst\",e)[0].click()}}),h.RegisterQuickInsertButton(\"video\",{icon:\"insertVideo\",requiredPlugin:\"video\",title:\"Insert Video\",undo:!1,callback:function(){var e=prompt(this.language.translate(\"Paste the URL of the video you want to insert.\"));e&&this.video.insertByURL(e)}}),h.RegisterQuickInsertButton(\"embedly\",{icon:\"embedly\",requiredPlugin:\"embedly\",title:\"Embed URL\",undo:!1,callback:function(){var e=prompt(this.language.translate(\"Paste the URL of any web content you want to insert.\"));e&&this.embedly.add(e)}}),h.RegisterQuickInsertButton(\"table\",{icon:\"insertTable\",requiredPlugin:\"table\",title:\"Insert Table\",callback:function(){this.table.insert(2,2)}}),h.RegisterQuickInsertButton(\"ol\",{icon:\"formatOL\",requiredPlugin:\"lists\",title:\"Ordered List\",callback:function(){this.lists.format(\"OL\")}}),h.RegisterQuickInsertButton(\"ul\",{icon:\"formatUL\",requiredPlugin:\"lists\",title:\"Unordered List\",callback:function(){this.lists.format(\"UL\")}}),h.RegisterQuickInsertButton(\"hr\",{icon:\"insertHR\",title:\"Insert Horizontal Line\",callback:function(){this.commands.insertHR()}}),h.PLUGINS.quickInsert=function(r){var a,l,c=r.$,u=!1;function n(e){var t,n,i;(t=e.offset().top-r.$box.offset().top,n=(r.$iframe&&r.$iframe.offset().left||0)+e.offset().left-e.position().left-4<a.outerWidth()?e.offset().left+a.outerWidth():0-a.outerWidth(),r.opts.enter!=h.ENTER_BR)?i=(a.outerHeight()-e.outerHeight())/2:(c(document.createElement(\"span\")).html(h.INVISIBLE_SPACE).insertAfter(e),i=(a.outerHeight()-e.next().outerHeight())/2,e.next().remove());if(r.opts.iframe){var s=r.helpers.getPX(r.$wp.find(\".fr-iframe\").css(\"padding-top\"));t+=r.$iframe.offset().top+s}a.hasClass(\"fr-on\")&&0<=t&&l.css(\"top\",t-i),0<=t&&t-Math.abs(i)<=r.$box.outerHeight()-e.outerHeight()?(a.hasClass(\"fr-hidden\")&&(a.hasClass(\"fr-on\")&&d(),a.removeClass(\"fr-hidden\")),a.css(\"top\",t-i)):a.hasClass(\"fr-visible\")&&!r.opts.toolbarInline&&(a.addClass(\"fr-hidden\"),f()),a.css(\"left\",n)}function s(e){r.markdown&&r.markdown.isEnabled()||(a||function t(){r.shared.$quick_insert||(r.shared.$quick_insert=c(document.createElement(\"div\")).attr(\"class\",\"fr-quick-insert\").html('<a class=\"fr-floating-btn\" role=\"button\" tabIndex=\"-1\" title=\"'.concat(r.language.translate(\"Quick Insert\"),'\">').concat(r.icon.create(\"quickInsert\"),\"</a>\")));a=r.shared.$quick_insert,r.tooltip.bind(r.$box,\".fr-quick-insert > a.fr-floating-btn\"),r.events.on(\"destroy\",function(){c(\"body\").first().append(a.removeClass(\"fr-on\")),l&&(f(),c(\"body\").first().append(l.css(\"left\",-9999).css(\"top\",-9999)))},!0),r.events.on(\"shared.destroy\",function(){a.html(\"\").removeData().remove(),a=null,l&&(l.html(\"\").removeData().remove(),l=null)},!0),r.events.on(\"commands.before\",o),r.events.on(\"commands.after\",function(){r.popups.areVisible()||i()}),r.events.bindClick(r.$box,\".fr-quick-insert > a\",d),r.events.bindClick(r.$box,\".fr-qi-helper > a.fr-btn\",function(e){var t=c(e.currentTarget).data(\"cmd\");if(!1===r.events.trigger(\"quickInsert.commands.before\",[t]))return!1;h.QUICK_INSERT_BUTTONS[t].callback.apply(r,[e.currentTarget]),h.QUICK_INSERT_BUTTONS[t].undo&&r.undo.saveStep(),r.events.trigger(\"quickInsert.commands.after\",[t]),r.quickInsert.hide()}),r.events.$on(r.$wp,\"scroll\",p),r.events.$on(r.$tb,\"transitionend\",\".fr-more-toolbar\",p)}(),a.hasClass(\"fr-on\")&&f(),r.$box.append(a),n(e),a.data(\"tag\",e),a.addClass(\"fr-visible\"))}function i(){if(r.core.hasFocus()){var e=r.selection.element();if(r.opts.enter==h.ENTER_BR||r.node.isBlock(e)||(e=r.node.blockParent(e)),r.opts.enter==h.ENTER_BR&&!r.node.isBlock(e)){var t=r.node.deepestParent(e);t&&(e=t)}var n=function n(){return r.opts.enter!=h.ENTER_BR&&r.node.isEmpty(e)&&0<=r.opts.quickInsertTags.indexOf(e.tagName.toLowerCase())},i=function i(){return r.opts.enter==h.ENTER_BR&&(\"BR\"==e.tagName&&(!e.previousSibling||\"BR\"==e.previousSibling.tagName||r.node.isBlock(e.previousSibling))||r.node.isEmpty(e)&&(!e.previousSibling||\"BR\"==e.previousSibling.tagName||r.node.isBlock(e.previousSibling))&&(!e.nextSibling||\"BR\"==e.nextSibling.tagName||r.node.isBlock(e.nextSibling)))};e&&(n()||i())?a&&a.data(\"tag\").is(c(e))&&a.hasClass(\"fr-on\")?f():r.selection.isCollapsed()&&s(c(e)):o()}}function o(){a&&!u&&(a.hasClass(\"fr-on\")&&f(),a.removeClass(\"fr-visible fr-on\"),a.css(\"left\",-9999).css(\"top\",-9999))}function d(e){if(e&&e.preventDefault(),a.hasClass(\"fr-on\")&&!a.hasClass(\"fr-hidden\"))f();else{if(!r.shared.$qi_helper){for(var t=r.opts.quickInsertButtons,n='<div class=\"fr-qi-helper\">',i=0,s=0;s<t.length;s++){var o=h.QUICK_INSERT_BUTTONS[t[s]];o&&(!o.requiredPlugin||h.PLUGINS[o.requiredPlugin]&&0<=r.opts.pluginsEnabled.indexOf(o.requiredPlugin))&&(n+='<a class=\"fr-btn fr-floating-btn\" role=\"button\" title=\"'.concat(r.language.translate(o.title),'\" tabIndex=\"-1\" data-cmd=\"').concat(t[s],'\" style=\"transition-delay: ').concat(.025*i++,'s;\">').concat(r.icon.create(o.icon),\"</a>\"))}n+=\"</div>\",r.shared.$qi_helper=c(n),r.tooltip.bind(r.shared.$qi_helper,\"a.fr-btn\"),r.events.$on(r.shared.$qi_helper,\"mousedown\",function(e){e.preventDefault()},!0)}l=r.shared.$qi_helper,r.$box.append(l),u=!0,setTimeout(function(){u=!1,l.css(\"top\",parseFloat(a.css(\"top\"))),l.css(\"left\",parseFloat(a.css(\"left\"))+a.outerWidth()),l.find(\"a\").addClass(\"fr-size-1\"),a.addClass(\"fr-on\")},10)}}function f(){var n=r.$box.find(\".fr-qi-helper\");n.length&&function(){for(var t=n.find(\"a\"),e=0;e<t.length;e++)!function(e){setTimeout(function(){n.children().eq(t.length-1-e).removeClass(\"fr-size-1\")},25*e)}(e);setTimeout(function(){n.css(\"left\",-9999),a&&!a.hasClass(\"fr-hidden\")&&a.removeClass(\"fr-on\")},25*e)}()}function p(){a.hasClass(\"fr-visible\")&&n(a.data(\"tag\"))}return{_init:function e(){if(!r.$wp||!r.opts.quickInsertEnabled)return!1;r.popups.onShow(\"image.edit\",o),r.events.on(\"mouseup\",i),r.helpers.isMobile()&&r.events.$on(c(r.o_doc),\"selectionchange\",i),r.events.on(\"blur\",o),r.events.on(\"keyup\",i),r.events.on(\"keydown\",function(){setTimeout(function(){i()},0)})},hide:o}}});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(we){\"use strict\";we=we&&we.hasOwnProperty(\"default\")?we[\"default\"]:we,Object.assign(we.POPUP_TEMPLATES,{\"video.insert\":\"[_BUTTONS_][_BY_URL_LAYER_][_EMBED_LAYER_][_UPLOAD_LAYER_][_PROGRESS_BAR_]\",\"video.edit\":\"[_BUTTONS_]\",\"video.size\":\"[_BUTTONS_][_SIZE_LAYER_]\"}),Object.assign(we.DEFAULTS,{videoAllowedTypes:[\"mp4\",\"webm\",\"ogg\",\"mp3\",\"mpeg\",\"url\"],videoAllowedProviders:[\".*\"],videoDefaultAlign:\"center\",videoDefaultDisplay:\"block\",videoDefaultWidth:600,videoEditButtons:[\"videoReplace\",\"videoRemove\",\"videoDisplay\",\"videoAlign\",\"videoSize\",\"autoplay\"],videoInsertButtons:[\"videoBack\",\"|\",\"videoByURL\",\"videoEmbed\",\"videoUpload\"],videoMaxSize:52428800,videoMove:!0,videoResize:!0,videoResponsive:!1,videoSizeButtons:[\"videoBack\",\"|\"],videoSplitHTML:!1,videoTextNear:!0,videoUpload:!0,videoUploadMethod:\"POST\",videoUploadParam:\"file\",videoUploadParams:{},videoUploadToS3:!1,videoUploadToAzure:!1,videoUploadURL:null}),we.VIDEO_PROVIDERS=[{test_regex:/^.*((youtu.be)|(youtube.com))\\/((v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))?\\??v?=?([^#\\&\\?]*).*/,url_regex:/(?:https?:\\/\\/)?(?:www\\.)?(?:m\\.)?(?:youtube\\.com|youtu\\.be)\\/(?:watch\\?v=|embed\\/)?([0-9a-zA-Z_\\-]+)(.+)?/g,url_text:\"https://www.youtube.com/embed/$1?$2\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}&wmode=opaque&rel=0\" frameborder=\"0\" allowfullscreen></iframe>',provider:\"youtube\"},{test_regex:/^.*(?:vimeo.com)\\/(?:channels(\\/\\w+\\/)?|groups\\/*\\/videos\\/\\u200b\\d+\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/,url_regex:/(?:https?:\\/\\/)?(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?(\\/[a-zA-Z0-9_\\-]+)?/i,url_text:\"https://player.vimeo.com/video/$1\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}\" frameborder=\"0\" allowfullscreen></iframe>',provider:\"vimeo\"},{test_regex:/^.+(dailymotion.com|dai.ly)\\/(video|hub)?\\/?([^_]+)[^#]*(#video=([^_&]+))?/,url_regex:/(?:https?:\\/\\/)?(?:www\\.)?(?:dailymotion\\.com|dai\\.ly)\\/(?:video|hub)?\\/?(.+)/g,url_text:\"https://www.dailymotion.com/embed/video/$1\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}\" frameborder=\"0\" allowfullscreen></iframe>',provider:\"dailymotion\"},{test_regex:/^.+(screen.yahoo.com)\\/[^_&]+/,url_regex:\"\",url_text:\"\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}?format=embed\" frameborder=\"0\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\" allowtransparency=\"true\"></iframe>',provider:\"yahoo\"},{test_regex:/^.+(rutube.ru)\\/[^_&]+/,url_regex:/(?:https?:\\/\\/)?(?:www\\.)?(?:rutube\\.ru)\\/(?:video)?\\/?(.+)/g,url_text:\"https://rutube.ru/play/embed/$1\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}\" frameborder=\"0\" allowfullscreen=\"true\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\" allowtransparency=\"true\"></iframe>',provider:\"rutube\"},{test_regex:/^(?:.+)vidyard.com\\/(?:watch)?\\/?([^.&/]+)\\/?(?:[^_.&]+)?/,url_regex:/^(?:.+)vidyard.com\\/(?:watch)?\\/?([^.&/]+)\\/?(?:[^_.&]+)?/g,url_text:\"https://play.vidyard.com/$1\",html:'<iframe width=\"640\" height=\"360\" src=\"{url}\" frameborder=\"0\" allowfullscreen></iframe>',provider:\"vidyard\"}],we.VIDEO_EMBED_REGEX=/^\\W*((<iframe(.|\\n)*>(\\s|\\n)*<\\/iframe>)|(<embed(.|\\n)*>))\\W*$/i,we.PLUGINS.video=function(w){var s,p,f,E,i,o,A=w.$,C=\"https://i.froala.com/upload\",c=2,v=3,u=4,S=5,U=6,a={};function g(){var e=w.popups.get(\"video.insert\");e.find(\".fr-video-by-url-layer input\").val(\"\").trigger(\"change\");var t=e.find(\".fr-video-embed-layer textarea\");t.val(\"\").trigger(\"change\"),(t=e.find(\".fr-video-upload-layer input\")).val(\"\").trigger(\"change\")}function r(){var e=w.popups.get(\"video.edit\");if(e||(e=function n(){var e=\"\";if(0<w.opts.videoEditButtons.length){w.opts.videoResponsive&&(-1<w.opts.videoEditButtons.indexOf(\"videoSize\")&&w.opts.videoEditButtons.splice(w.opts.videoEditButtons.indexOf(\"videoSize\"),1),-1<w.opts.videoEditButtons.indexOf(\"videoDisplay\")&&w.opts.videoEditButtons.splice(w.opts.videoEditButtons.indexOf(\"videoDisplay\"),1),-1<w.opts.videoEditButtons.indexOf(\"videoAlign\")&&w.opts.videoEditButtons.splice(w.opts.videoEditButtons.indexOf(\"videoAlign\"),1));var t={buttons:e+='<div class=\"fr-buttons\"> \\n      '.concat(w.button.buildList(w.opts.videoEditButtons),\" \\n      </div>\")},o=w.popups.create(\"video.edit\",t);return w.events.$on(w.$wp,\"scroll.video-edit\",function(){E&&w.popups.isVisible(\"video.edit\")&&(w.events.disableBlur(),l(E))}),o}return!1}()),e){w.popups.setContainer(\"video.edit\",w.$sc),w.popups.refresh(\"video.edit\");var t=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\")),o=t.offset().left+t.outerWidth()/2,i=t.offset().top+t.outerHeight(),a=t.get(0).src?t.get(0).src:t.get(0).currentSrc,r=!(!(a=(a=a.split(\".\"))[a.length-1]).includes(\"pdf\")&&!a.includes(\"txt\"));t.hasClass(\"fr-file\")||r||E.find(\"audio\").get(0)?(document.getElementById(\"autoplay-\".concat(w.id))&&(document.getElementById(\"autoplay-\".concat(w.id)).style.display=\"none\"),document.getElementById(\"videoReplace-\".concat(w.id))&&(document.getElementById(\"videoReplace-\".concat(w.id)).style.display=\"none\")):(document.getElementById(\"autoplay-\".concat(w.id))&&(document.getElementById(\"autoplay-\".concat(w.id)).style.display=\"\"),document.getElementById(\"videoReplace-\".concat(w.id))&&(document.getElementById(\"videoReplace-\".concat(w.id)).style.display=\"\")),w.popups.show(\"video.edit\",o,i,t.outerHeight(),!0)}}function n(e){if(e)return w.popups.onRefresh(\"video.insert\",g),w.popups.onHide(\"video.insert\",J),!0;var t=\"\";w.opts.videoUpload||-1===w.opts.videoInsertButtons.indexOf(\"videoUpload\")||w.opts.videoInsertButtons.splice(w.opts.videoInsertButtons.indexOf(\"videoUpload\"),1);var o=w.button.buildList(w.opts.videoInsertButtons);\"\"!==o&&(t='<div class=\"fr-buttons\">'+o+\"</div>\");var i,a=\"\",r=w.opts.videoInsertButtons.indexOf(\"videoUpload\"),n=w.opts.videoInsertButtons.indexOf(\"videoByURL\"),s=w.opts.videoInsertButtons.indexOf(\"videoEmbed\");if(0<=n){i=\" fr-active\",(r<n&&0<=r||s<n&&0<=s)&&(i=\"\");a='<div class=\"fr-video-by-url-layer fr-layer'.concat(i,'\" id=\"fr-video-by-url-layer-').concat(w.id,'\"><div class=\"fr-input-line\"><input id=\"fr-video-by-url-layer-text-').concat(w.id,'\" type=\"text\" placeholder=\"').concat(w.language.translate(\"Paste in a video URL\"),'\" tabIndex=\"1\" aria-required=\"true\"></div><div class=\"fr-action-buttons\"><span style=\\'float:left\\'><div class=\"fr-checkbox-line fr-autoplay-margin\"><span class=\"fr-checkbox\"> <input id=\\'videoPluginAutoplay\\' data-checked=\"_blank\" type=\"checkbox\"> <span>').concat('<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"10\" height=\"10\" viewBox=\"0 0 32 32\"><path d=\"M27 4l-15 15-7-7-5 5 12 12 20-20z\" fill=\"#FFF\"></path></svg>','</span></span> <label id=\"fr-label-target-').concat(w.id,'\">Autoplay</label></div> </span><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"videoInsertByURL\" tabIndex=\"2\" role=\"button\">').concat(w.language.translate(\"Insert\"),\"</button></div></div>\")}var d=\"\";0<=s&&(i=\" fr-active\",(r<s&&0<=r||n<s&&0<=n)&&(i=\"\"),d='<div class=\"fr-video-embed-layer fr-layer'.concat(i,'\" id=\"fr-video-embed-layer-').concat(w.id,'\"><div class=\"fr-input-line\"><textarea id=\"fr-video-embed-layer-text').concat(w.id,'\" type=\"text\" placeholder=\"').concat(w.language.translate(\"Embedded Code\"),'\" tabIndex=\"1\" aria-required=\"true\" rows=\"5\"></textarea></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"videoInsertEmbed\" tabIndex=\"2\" role=\"button\">').concat(w.language.translate(\"Insert\"),\"</button></div></div>\"));var l=\"\";0<=r&&(i=\" fr-active\",(s<r&&0<=s||n<r&&0<=n)&&(i=\"\"),l='<div class=\"fr-video-upload-layer fr-layer'.concat(i,'\" id=\"fr-video-upload-layer-').concat(w.id,'\"><strong>').concat(w.language.translate(\"Drop video\"),\"</strong><br>(\").concat(w.language.translate(\"or click\"),')<div class=\"fr-form\"><input type=\"file\" accept=\"video/').concat(w.opts.videoAllowedTypes.join(\", video/\").toLowerCase(),'\" tabIndex=\"-1\" aria-labelledby=\"fr-video-upload-layer-').concat(w.id,'\" role=\"button\"></div></div>'));var p={buttons:t,by_url_layer:a,embed_layer:d,upload_layer:l,progress_bar:'<div class=\"fr-video-progress-bar-layer fr-layer\"><h3 tabIndex=\"-1\" class=\"fr-message\">Uploading</h3><div class=\"fr-loader\"><span class=\"fr-progress\"></span></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-dismiss\" data-cmd=\"videoDismissError\" tabIndex=\"2\" role=\"button\">OK</button></div></div>'},f=w.popups.create(\"video.insert\",p);return function c(i){w.events.$on(i,\"dragover dragenter\",\".fr-video-upload-layer\",function(){return A(this).addClass(\"fr-drop\"),!1},!0),w.events.$on(i,\"dragleave dragend\",\".fr-video-upload-layer\",function(){return A(this).removeClass(\"fr-drop\"),!1},!0),w.events.$on(i,\"drop\",\".fr-video-upload-layer\",function(e){e.preventDefault(),e.stopPropagation(),A(this).removeClass(\"fr-drop\");var t=e.originalEvent.dataTransfer;if(t&&t.files){var o=i.data(\"instance\")||w;o.events.disableBlur(),o.video.upload(t.files),o.events.enableBlur()}},!0),w.helpers.isIOS()&&w.events.$on(i,\"touchstart\",'.fr-video-upload-layer input[type=\"file\"]',function(){A(this).trigger(\"click\")},!0);w.events.$on(i,\"change\",'.fr-video-upload-layer input[type=\"file\"]',function(){if(this.files){var e=i.data(\"instance\")||w;e.events.disableBlur(),i.find(\"input:focus\").blur(),e.events.enableBlur(),e.video.upload(this.files)}A(this).val(\"\")},!0)}(f),f}function h(e){w.events.focus(!0),w.selection.restore();var t=!1;if(E&&(q(),t=!0),w.opts.trackChangesEnabled){w.edit.on(),w.events.focus(!0),w.selection.restore(),w.undo.saveStep(),w.markers.insert(),w.html.wrap();var o=w.$el.find(\".fr-marker\");w.node.isLastSibling(o)&&o.parent().hasClass(\"fr-deletable\")&&o.insertAfter(o.parent()),o.replaceWith('<span contenteditable=\"false\" draggable=\"true\" class=\"fr-jiv fr-video fr-deletable\">'.concat(e,\"</span>\")),w.selection.clear()}else w.html.insert('<span contenteditable=\"false\" draggable=\"true\" class=\"fr-jiv fr-video fr-deletable\">'.concat(e,\"</span>\"),!1,w.opts.videoSplitHTML);w.popups.hide(\"video.insert\");var i=w.$el.find(\".fr-jiv\");i.removeClass(\"fr-jiv\"),i.toggleClass(\"fr-rv\",w.opts.videoResponsive),Z(i,w.opts.videoDefaultDisplay,w.opts.videoDefaultAlign),i.toggleClass(\"fr-draggable\",w.opts.videoMove),w.events.trigger(t?\"video.replaced\":\"video.inserted\",[i])}function m(){var e=A(this);w.popups.hide(\"video.insert\"),e.removeClass(\"fr-uploading\"),e.parent().next().is(\"br\")&&e.parent().next().remove(),l(e.parent()),w.events.trigger(\"video.loaded\",[e.parent()])}function x(s,e,d,l,p){w.edit.off(),b(\"Loading video\"),e&&(s=w.helpers.sanitizeURL(s));var f=function f(){var e,t;if(l){w.undo.canDo()||l.find(\"video\").hasClass(\"fr-uploading\")||w.undo.saveStep();var o=l.find(\"video\").data(\"fr-old-src\"),i=l.data(\"fr-replaced\");if(l.data(\"fr-replaced\",!1),0<l.find(\"iframe\").length)l.remove(),e=k(s,d,m);else{w.$wp?((e=l.clone(!0)).find(\"video\").removeData(\"fr-old-src\").removeClass(\"fr-uploading\"),e.find(\"video\").off(\"canplay\"),o&&l.find(\"video\").attr(\"src\",o),l.replaceWith(e)):e=l;for(var a=e.find(\"video\").get(0).attributes,r=0;r<a.length;r++){var n=a[r];0===n.nodeName.indexOf(\"data-\")&&e.find(\"video\").removeAttr(n.nodeName)}if(void 0!==d)for(t in d)d.hasOwnProperty(t)&&\"link\"!=t&&e.find(\"video\").attr(\"data-\".concat(t),d[t]);e.find(\"video\").on(\"canplay\",m),e.find(\"video\").attr(\"src\",s)}w.edit.on(),L(),w.undo.saveStep(),w.$el.blur(),w.events.trigger(i?\"video.replaced\":\"video.inserted\",[e,p])}else e=k(s,d,m),L(),w.undo.saveStep(),w.events.trigger(\"video.inserted\",[e,p])};R(\"Loading video\"),f()}function R(e){var t=w.popups.get(\"video.insert\");if(t||(t=n()),t.find(\".fr-layer.fr-active\").removeClass(\"fr-active\").addClass(\"fr-pactive\"),t.find(\".fr-video-progress-bar-layer\").addClass(\"fr-active\"),t.find(\".fr-buttons\").hide(),E){var o=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\"));w.popups.setContainer(\"video.insert\",w.$sc);var i=o.offset().left,a=o.offset().top+o.height();w.popups.show(\"video.insert\",i,a,o.outerHeight())}void 0===e&&b(w.language.translate(\"Uploading\"),0)}function d(e){var t=w.popups.get(\"video.insert\");if(t&&(t.find(\".fr-layer.fr-pactive\").addClass(\"fr-active\").removeClass(\"fr-pactive\"),t.find(\".fr-video-progress-bar-layer\").removeClass(\"fr-active\"),t.find(\".fr-buttons\").show(),e||w.$el.find(\"video.fr-error\").length)){if(w.events.focus(),w.$el.find(\"video.fr-error\").length&&(w.$el.find(\"video.fr-error\").parent().remove(),w.undo.saveStep(),w.undo.run(),w.undo.dropRedo()),!w.$wp&&E){var o=E;V(!0),w.selection.setAfter(o.find(\"video\").get(0)),w.selection.restore()}w.popups.hide(\"video.insert\")}}function b(e,t){var o=w.popups.get(\"video.insert\");if(o){var i=o.find(\".fr-video-progress-bar-layer\");i.find(\"h3\").text(e+(t?\" \".concat(t,\"%\"):\"\")),i.removeClass(\"fr-error\"),t?(i.find(\"div\").removeClass(\"fr-indeterminate\"),i.find(\"div > span\").css(\"width\",\"\".concat(t,\"%\"))):i.find(\"div\").addClass(\"fr-indeterminate\")}}function y(e){R();var t=w.popups.get(\"video.insert\").find(\".fr-video-progress-bar-layer\");t.addClass(\"fr-error\");var o=t.find(\"h3\");o.text(e),w.events.disableBlur(),o.focus()}function l(e){t.call(e.get(0))}function _(e,t,o){b(\"Loading video\");var i=this.status,a=this.response,r=this.responseXML,n=this.responseText;try{if(w.opts.videoUploadToS3||w.opts.videoUploadToAzure)if(201==i){var s;if(w.opts.videoUploadToAzure){if(!1===w.events.trigger(\"video.uploadedToAzure\",[this.responseURL,o,a],!0))return w.edit.on(),!1;s=t}else s=function l(e){try{var t=A(e).find(\"Location\").text(),o=A(e).find(\"Key\").text();return!1===w.events.trigger(\"video.uploadedToS3\",[t,o,e],!0)?(w.edit.on(),!1):t}catch(i){return F(u,e),!1}}(r);s&&x(s,!1,[],e,a||r)}else F(u,a||r);else if(200<=i&&i<300){var d=function p(e){try{if(!1===w.events.trigger(\"video.uploaded\",[e],!0))return w.edit.on(),!1;var t=JSON.parse(e);return t.link?t:(F(c,e),!1)}catch(o){return F(u,e),!1}}(n);d&&x(d.link,!1,d,e,a||n)}else F(v,a||n)}catch(f){F(u,a||n)}}function B(){F(u,this.response||this.responseText||this.responseXML)}function D(e){if(e.lengthComputable){var t=e.loaded/e.total*100|0;b(w.language.translate(\"Uploading\"),t)}}function I(){w.edit.on(),d(!0)}function k(e,t,o){var i,a=\"\";if(t&&void 0!==t)for(i in t)t.hasOwnProperty(i)&&\"link\"!=i&&(a+=\" data-\".concat(i,'=\"').concat(t[i],'\"'));var r=w.opts.videoDefaultWidth;r&&\"auto\"!=r&&(r=\"\".concat(r,\"px\")),w.helpers.isMobile()&&w.browser.safari&&(a+=\" autoplay playsinline\");var n=A(document.createElement(\"span\")).attr(\"contenteditable\",\"false\").attr(\"draggable\",\"true\").attr(\"class\",\"fr-video fr-dv\"+w.opts.videoDefaultDisplay[0]+(\"center\"!=w.opts.videoDefaultAlign?\" fr-fv\"+w.opts.videoDefaultAlign[0]:\"\")).html('<video src=\"'+e+'\" '+a+(r?' style=\"width: '+r+';\" ':\"\")+\" controls>\"+w.language.translate(\"Your browser does not support HTML5 video.\")+\"</video>\");n.toggleClass(\"fr-draggable\",w.opts.videoMove),w.edit.on(),w.events.focus(!0),w.selection.restore(),w.undo.saveStep(),w.opts.videoSplitHTML?w.markers.split():(w.cursor.enter(),w.markers.insert()),w.html.wrap();var s=w.$el.find(\".fr-marker\");return w.node.isLastSibling(s)&&s.parent().hasClass(\"fr-deletable\")&&s.insertAfter(s.parent()),s.replaceWith(n),w.selection.clear(),n.find(\"video\").get(0).readyState>n.find(\"video\").get(0).HAVE_FUTURE_DATA||w.helpers.isIOS()?o.call(n.find(\"video\").get(0)):n.find(\"video\").on(\"canplaythrough load\",o),n}function T(e){if(!w.core.sameInstance(f))return!0;e.preventDefault(),e.stopPropagation();var t=e.pageX||(e.originalEvent.touches?e.originalEvent.touches[0].pageX:null),o=e.pageY||(e.originalEvent.touches?e.originalEvent.touches[0].pageY:null);if(!t||!o)return!1;if(\"mousedown\"==e.type){var i=w.$oel.get(0).ownerDocument,a=i.defaultView||i.parentWindow,r=!1;try{r=a.location!=a.parent.location&&!(a.$&&a.$.FE)}catch(n){}r&&a.frameElement&&(t+=w.helpers.getPX(A(a.frameElement).offset().left)+a.frameElement.clientLeft,o=e.clientY+w.helpers.getPX(A(a.frameElement).offset().top)+a.frameElement.clientTop)}w.undo.canDo()||w.undo.saveStep(),(p=A(this)).data(\"start-x\",t),p.data(\"start-y\",o),s.show(),w.popups.hideAll(),Y()}function z(e){if(!w.core.sameInstance(f))return!0;if(p){e.preventDefault();var t=e.pageX||(e.originalEvent.touches?e.originalEvent.touches[0].pageX:null),o=e.pageY||(e.originalEvent.touches?e.originalEvent.touches[0].pageY:null);if(!t||!o)return!1;var i=p.data(\"start-x\"),a=p.data(\"start-y\");p.data(\"start-x\",t),p.data(\"start-y\",o);var r=t-i,n=o-a,s=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\")),d=s.width(),l=s.height();(p.hasClass(\"fr-hnw\")||p.hasClass(\"fr-hsw\"))&&(r=0-r),(p.hasClass(\"fr-hnw\")||p.hasClass(\"fr-hne\"))&&(n=0-n),s.css(\"width\",d+r),s.css(\"height\",l+n),s.removeAttr(\"width\"),s.removeAttr(\"height\"),M()}}function P(e){if(!w.core.sameInstance(f))return!0;p&&E&&(e&&e.stopPropagation(),p=null,s.hide(),M(),r(),w.undo.saveStep())}function $(e){return'<div class=\"fr-handler fr-h'.concat(e,'\"></div>')}function O(e,t,o,i){return e.pageX=t,e.pageY=t,T.call(this,e),e.pageX=e.pageX+o*Math.floor(Math.pow(1.1,i)),e.pageY=e.pageY+o*Math.floor(Math.pow(1.1,i)),z.call(this,e),P.call(this,e),++i}function L(){var e,t=Array.prototype.slice.call(w.el.querySelectorAll(\"video, .fr-video > *\")),o=[];for(e=0;e<t.length;e++)o.push(t[e].getAttribute(\"src\")),A(t[e]).toggleClass(\"fr-draggable\",w.opts.videoMove),\"\"===t[e].getAttribute(\"class\")&&t[e].removeAttribute(\"class\"),\"\"===t[e].getAttribute(\"style\")&&t[e].removeAttribute(\"style\");if(i)for(e=0;e<i.length;e++)o.indexOf(i[e].getAttribute(\"src\"))<0&&w.events.trigger(\"video.removed\",[A(i[e])]);i=t}function M(){f||function n(){var e;if(w.shared.$video_resizer?(f=w.shared.$video_resizer,s=w.shared.$vid_overlay,w.events.on(\"destroy\",function(){A(\"body\").first().append(f.removeClass(\"fr-active\"))},!0)):(w.shared.$video_resizer=A(document.createElement(\"div\")).attr(\"class\",\"fr-video-resizer\"),f=w.shared.$video_resizer,w.events.$on(f,\"mousedown\",function(e){e.stopPropagation()},!0),w.opts.videoResize&&(f.append($(\"nw\")+$(\"ne\")+$(\"sw\")+$(\"se\")),w.shared.$vid_overlay=A(document.createElement(\"div\")).attr(\"class\",\"fr-video-overlay\"),s=w.shared.$vid_overlay,e=f.get(0).ownerDocument,A(e).find(\"body\").first().append(s))),w.events.on(\"shared.destroy\",function(){f.html(\"\").removeData().remove(),f=null,w.opts.videoResize&&(s.remove(),s=null)},!0),w.helpers.isMobile()||w.events.$on(A(w.o_win),\"resize.video\",function(){V(!0)}),w.opts.videoResize){e=f.get(0).ownerDocument,w.events.$on(f,w._mousedown,\".fr-handler\",T),w.events.$on(A(e),w._mousemove,z),w.events.$on(A(e.defaultView||e.parentWindow),w._mouseup,P),w.events.$on(s,\"mouseleave\",P);var i=1,a=null,r=0;w.events.on(\"keydown\",function(e){if(E){var t=-1!=navigator.userAgent.indexOf(\"Mac OS X\")?e.metaKey:e.ctrlKey,o=e.which;(o!==a||200<e.timeStamp-r)&&(i=1),(o==we.KEYCODE.EQUALS||w.browser.mozilla&&o==we.KEYCODE.FF_EQUALS)&&t&&!e.altKey?i=O.call(this,e,1,1,i):(o==we.KEYCODE.HYPHEN||w.browser.mozilla&&o==we.KEYCODE.FF_HYPHEN)&&t&&!e.altKey&&(i=O.call(this,e,2,-1,i)),a=o,r=e.timeStamp}}),w.events.on(\"keyup\",function(){i=1})}}(),(w.$wp||w.$sc).append(f),f.data(\"instance\",w);var e=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\")),t=0,o=0;w.opts.iframe&&(o=w.helpers.getPX(w.$wp.find(\".fr-iframe\").css(\"padding-top\")),t=w.helpers.getPX(w.$wp.find(\".fr-iframe\").css(\"padding-left\"))),f.css(\"top\",(w.opts.iframe?e.offset().top+o-1:e.offset().top-w.$wp.offset().top-1)+w.$wp.scrollTop()).css(\"left\",(w.opts.iframe?e.offset().left+t-1:e.offset().left-w.$wp.offset().left-1)+w.$wp.scrollLeft()).css(\"width\",e.get(0).getBoundingClientRect().width).css(\"height\",e.get(0).getBoundingClientRect().height).addClass(\"fr-active\")}function t(e){if(e&&\"touchend\"==e.type&&o)return!0;if(e&&w.edit.isDisabled())return e.stopPropagation(),e.preventDefault(),!1;if(w.edit.isDisabled())return!1;for(var t=0;t<we.INSTANCES.length;t++)we.INSTANCES[t]!=w&&we.INSTANCES[t].events.trigger(\"video.hideResizer\");w.toolbar.disable(),w.helpers.isMobile()&&(w.events.disableBlur(),w.$el.blur(),w.events.enableBlur()),w.$el.find(\".fr-video.fr-active\").removeClass(\"fr-active\"),(E=A(this)).addClass(\"fr-active\"),w.opts.iframe&&w.size.syncIframe(),te(),M(),r(),w.selection.clear(),w.button.bulkRefresh(),w.events.trigger(\"image.hideResizer\")}function V(e){E&&(function t(){return w.shared.vid_exit_flag}()||!0===e)&&(f.removeClass(\"fr-active\"),w.toolbar.enable(),E.removeClass(\"fr-active\"),E=null,Y())}function N(){w.shared.vid_exit_flag=!0}function Y(){w.shared.vid_exit_flag=!1}function H(e){var t=e.originalEvent.dataTransfer;if(t&&t.files&&t.files.length){var o=t.files[0];if(o&&o.type&&-1!==o.type.indexOf(\"video\")){if(!w.opts.videoUpload)return e.preventDefault(),e.stopPropagation(),!1;w.markers.remove(),w.markers.insertAtPoint(e.originalEvent),w.$el.find(\".fr-marker\").replaceWith(we.MARKERS),w.popups.hideAll();var i=w.popups.get(\"video.insert\");return i||(i=n()),w.popups.setContainer(\"video.insert\",w.$sc),w.popups.show(\"video.insert\",e.originalEvent.pageX,e.originalEvent.pageY),R(),0<=w.opts.videoAllowedTypes.indexOf(o.type.replace(/video\\//g,\"\"))?K(t.files):F(U),e.preventDefault(),e.stopPropagation(),!1}}}function K(e){if(void 0!==e&&0<e.length){if(!1===w.events.trigger(\"video.beforeUpload\",[e]))return!1;var t,o=e[0];if(!(null!==w.opts.videoUploadURL&&w.opts.videoUploadURL!=C||w.opts.videoUploadToS3||w.opts.videoUploadToAzure))return function y(i){E&&E.find(\"iframe\")&&E.find(\"iframe\").length&&q();var a=new FileReader;a.onload=function(){a.result;for(var e=atob(a.result.split(\",\")[1]),t=[],o=0;o<e.length;o++)t.push(e.charCodeAt(o));x(window.URL.createObjectURL(new Blob([new Uint8Array(t)],{type:i.type})),!1,null,E)},R(),a.readAsDataURL(i)}(o),!1;if(o.size>w.opts.videoMaxSize)return F(S),!1;if(w.opts.videoAllowedTypes.indexOf(o.type.replace(/video\\//g,\"\"))<0)return F(U),!1;if(w.drag_support.formdata&&(t=w.drag_support.formdata?new FormData:null),t){var i;if(!1!==w.opts.videoUploadToS3)for(i in t.append(\"key\",w.opts.videoUploadToS3.keyStart+(new Date).getTime()+\"-\"+(o.name||\"untitled\")),t.append(\"success_action_status\",\"201\"),t.append(\"X-Requested-With\",\"xhr\"),t.append(\"Content-Type\",o.type),w.opts.videoUploadToS3.params)w.opts.videoUploadToS3.params.hasOwnProperty(i)&&t.append(i,w.opts.videoUploadToS3.params[i]);for(i in w.opts.videoUploadParams)w.opts.videoUploadParams.hasOwnProperty(i)&&t.append(i,w.opts.videoUploadParams[i]);t.append(w.opts.videoUploadParam,o);var a,r,n=w.opts.videoUploadURL;w.opts.videoUploadToS3&&(n=w.opts.videoUploadToS3.uploadURL?w.opts.videoUploadToS3.uploadURL:\"https://\".concat(w.opts.videoUploadToS3.region,\".amazonaws.com/\").concat(w.opts.videoUploadToS3.bucket));var s=w.opts.videoUploadMethod;w.opts.videoUploadToAzure&&(n=w.opts.videoUploadToAzure.uploadURL?\"\".concat(w.opts.videoUploadToAzure.uploadURL,\"/\").concat(o.name):encodeURI(\"https://\".concat(w.opts.videoUploadToAzure.account,\".blob.core.windows.net/\").concat(w.opts.videoUploadToAzure.container,\"/\").concat(o.name)),a=n,w.opts.videoUploadToAzure.SASToken&&(n+=w.opts.videoUploadToAzure.SASToken),s=\"PUT\");var d=w.core.getXHR(n,s);if(w.opts.videoUploadToAzure){var l=(new Date).toUTCString();if(!w.opts.videoUploadToAzure.SASToken&&w.opts.videoUploadToAzure.accessKey){var p=w.opts.videoUploadToAzure.account,f=w.opts.videoUploadToAzure.container;if(w.opts.videoUploadToAzure.uploadURL){var c=w.opts.videoUploadToAzure.uploadURL.split(\"/\");f=c.pop(),p=c.pop().split(\".\")[0]}var v=\"x-ms-blob-type:BlockBlob\\nx-ms-date:\".concat(l,\"\\nx-ms-version:2019-07-07\"),u=encodeURI(\"/\"+p+\"/\"+f+\"/\"+o.name),g=s+\"\\n\\n\\n\"+o.size+\"\\n\\n\"+o.type+\"\\n\\n\\n\\n\\n\\n\\n\"+v+\"\\n\"+u,h=w.cryptoJSPlugin.cryptoJS.HmacSHA256(g,w.cryptoJSPlugin.cryptoJS.enc.Base64.parse(w.opts.videoUploadToAzure.accessKey)).toString(w.cryptoJSPlugin.cryptoJS.enc.Base64),m=\"SharedKey \"+p+\":\"+h;r=h,d.setRequestHeader(\"Authorization\",m)}for(i in d.setRequestHeader(\"x-ms-version\",\"2019-07-07\"),d.setRequestHeader(\"x-ms-date\",l),d.setRequestHeader(\"Content-Type\",o.type),d.setRequestHeader(\"x-ms-blob-type\",\"BlockBlob\"),w.opts.videoUploadParams)w.opts.videoUploadParams.hasOwnProperty(i)&&d.setRequestHeader(i,w.opts.videoUploadParams[i]);for(i in w.opts.videoUploadToAzure.params)w.opts.videoUploadToAzure.params.hasOwnProperty(i)&&d.setRequestHeader(i,w.opts.videoUploadToAzure.params[i])}d.onload=function(){_.call(d,E,a,r)},d.onerror=B,d.upload.onprogress=D,d.onabort=I,R(),w.events.disableBlur(),w.edit.off(),w.events.enableBlur();var b=w.popups.get(\"video.insert\");b&&A(b.off(\"abortUpload\")).on(\"abortUpload\",function(){4!=d.readyState&&d.abort()}),d.send(w.opts.videoUploadToAzure?o:t)}}}function F(e,t){w.edit.on(),E&&E.find(\"video\").addClass(\"fr-error\"),y(w.language.translate(\"Something went wrong. Please try again.\")),w.events.trigger(\"video.error\",[{code:e,message:a[e]},t])}function X(){if(E){var e=w.popups.get(\"video.size\"),t=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\"));e.find('input[name=\"width\"]').val(t.get(0).style.width||t.attr(\"width\")).trigger(\"change\"),e.find('input[name=\"height\"]').val(t.get(0).style.height||t.attr(\"height\")).trigger(\"change\")}}function G(e){if(e)return w.popups.onRefresh(\"video.size\",X),!0;var t={buttons:'<div class=\"fr-buttons fr-tabs\">'.concat(w.button.buildList(w.opts.videoSizeButtons),\"</div>\"),size_layer:'<div class=\"fr-video-size-layer fr-layer fr-active\" id=\"fr-video-size-layer-'.concat(w.id,'\"><div class=\"fr-video-group\"><div class=\"fr-input-line\"><input id=\"fr-video-size-layer-width-').concat(w.id,'\" type=\"text\" name=\"width\" placeholder=\"').concat(w.language.translate(\"Width\"),'\" tabIndex=\"1\"></div><div class=\"fr-input-line\"><input id=\"fr-video-size-layer-height-').concat(w.id,'\" type=\"text\" name=\"height\" placeholder=\"').concat(w.language.translate(\"Height\"),'\" tabIndex=\"1\"></div></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"videoSetSize\" tabIndex=\"2\" role=\"button\">').concat(w.language.translate(\"Update\"),\"</button></div></div>\")},o=w.popups.create(\"video.size\",t);return w.events.$on(w.$wp,\"scroll\",function(){E&&w.popups.isVisible(\"video.size\")&&(w.events.disableBlur(),l(E))}),o}function j(e){if(void 0===e&&(e=E),e){if(e.hasClass(\"fr-fvl\"))return\"left\";if(e.hasClass(\"fr-fvr\"))return\"right\";if(e.hasClass(\"fr-dvb\")||e.hasClass(\"fr-dvi\"))return\"center\";if(\"block\"==e.css(\"display\")){if(\"left\"==e.css(\"text-algin\"))return\"left\";if(\"right\"==e.css(\"text-align\"))return\"right\"}else{if(\"left\"==e.css(\"float\"))return\"left\";if(\"right\"==e.css(\"float\"))return\"right\"}}return\"center\"}function W(e){void 0===e&&(e=E);var t=e.css(\"float\");return e.css(\"float\",\"none\"),\"block\"==e.css(\"display\")?(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"block\"):(e.css(\"float\",\"\"),e.css(\"float\")!=t&&e.css(\"float\",t),\"inline\")}function q(){if(E&&!1!==w.events.trigger(\"video.beforeRemove\",[E])){var e=E;if(w.popups.hideAll(),V(!0),w.opts.trackChangesEnabled&&(!e[0].parentNode||\"SPAN\"!==e[0].parentNode.tagName||!e[0].parentNode.hasAttribute(\"data-tracking\")))return void w.track_changes.removeSpecialItem(e);w.selection.setBefore(e.get(0))||w.selection.setAfter(e.get(0)),e.remove(),w.selection.restore(),w.html.fillEmptyBlocks()}}function J(){d()}function Z(e,t,o){!w.opts.htmlUntouched&&w.opts.useClasses?(e.removeClass(\"fr-fvl fr-fvr fr-dvb fr-dvi\"),e.addClass(\"fr-fv\".concat(o[0],\" fr-dv\").concat(t[0]))):\"inline\"==t?(e.css({display:\"inline-block\"}),\"center\"==o?e.css({\"float\":\"none\"}):\"left\"==o?e.css({\"float\":\"left\"}):e.css({\"float\":\"right\"})):(e.css({display:\"block\",clear:\"both\"}),\"left\"==o?e.css({textAlign:\"left\"}):\"right\"==o?e.css({textAlign:\"right\"}):e.css({textAlign:\"center\"}))}function Q(){var e=w.$el.find(\"video\").filter(function(){return 0===A(this).parents(\"span.fr-video\").length});if(0!=e.length){e.wrap(A(document.createElement(\"span\")).attr(\"class\",\"fr-video fr-deletable\").attr(\"contenteditable\",\"false\")),w.$el.find(\"embed, iframe\").filter(function(){if(w.browser.safari&&this.getAttribute(\"src\")&&this.setAttribute(\"src\",this.src),0<A(this).parents(\"span.fr-video\").length)return!1;for(var e=A(this).attr(\"src\"),t=0;t<we.VIDEO_PROVIDERS.length;t++){var o=we.VIDEO_PROVIDERS[t];if(o.test_regex.test(e)&&new RegExp(w.opts.videoAllowedProviders.join(\"|\")).test(o.provider))return!0}return!1}).map(function(){return 0===A(this).parents(\"object\").length?this:A(this).parents(\"object\").get(0)}).wrap(A(document.createElement(\"span\")).attr(\"class\",\"fr-video\").attr(\"contenteditable\",\"false\"));for(var t,o,i,a,r=w.$el.find(\"span.fr-video, video\"),n=0;n<r.length;n++){var s=A(r[n]);!w.opts.htmlUntouched&&w.opts.useClasses?((a=s).hasClass(\"fr-dvi\")||a.hasClass(\"fr-dvb\")||(a.addClass(\"fr-fv\".concat(j(a)[0])),a.addClass(\"fr-dv\".concat(W(a)[0]))),w.opts.videoTextNear||s.removeClass(\"fr-dvi\").addClass(\"fr-dvb\")):w.opts.htmlUntouched||w.opts.useClasses||(void 0,o=(t=s).hasClass(\"fr-dvb\")?\"block\":t.hasClass(\"fr-dvi\")?\"inline\":null,i=t.hasClass(\"fr-fvl\")?\"left\":t.hasClass(\"fr-fvr\")?\"right\":j(t),Z(t,o,i),t.removeClass(\"fr-dvb fr-dvi fr-fvr fr-fvl\"))}r.toggleClass(\"fr-draggable\",w.opts.videoMove)}}function ee(e){document.getElementById(\"autoplay-\".concat(w.id)).style.cssText=\"background:\".concat(e)}function te(){if(E){w.selection.clear();var e=w.doc.createRange();e.selectNode(E.get(0)),w.selection.get().addRange(e)}}return a[1]=\"Video cannot be loaded from the passed link.\",a[c]=\"No link in upload response.\",a[v]=\"Error during file upload.\",a[u]=\"Parsing response failed.\",a[S]=\"File is too large.\",a[U]=\"Video file type is invalid.\",a[7]=\"Files can be uploaded only to same domain in IE 8 and IE 9.\",w.shared.vid_exit_flag=!1,{_init:function oe(){w.opts.videoResponsive&&(w.opts.videoResize=!1),function e(){w.events.on(\"drop\",H,!0),w.events.on(\"mousedown window.mousedown\",N),w.events.on(\"window.touchmove\",Y),w.events.on(\"mouseup window.mouseup\",V),w.events.on(\"commands.mousedown\",function(e){0<e.parents(\".fr-toolbar\").length&&V()}),w.events.on(\"video.hideResizer commands.undo commands.redo element.dropped\",function(){V(!0)})}(),w.helpers.isMobile()&&(w.events.$on(w.$el,\"touchstart\",\"span.fr-video\",function(){o=!1}),w.events.$on(w.$el,\"touchmove\",function(){o=!0})),w.events.on(\"html.set\",Q),Q(),w.events.$on(w.$el,\"mousedown\",\"span.fr-video\",function(e){e.stopPropagation(),(w.browser.msie||w.browser.edge)&&(e.target.innerText||(e.target.dragDrop(),t.call(this,e)))}),w.events.$on(w.$el,\"click touchend\",\"span.fr-video\",function(e){if(e.target.innerText.length||\"false\"==A(this).parents(\"[contenteditable]\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;t.call(this,e)}),w.events.on(\"keydown\",function(e){var t=e.which;return!E||t!=we.KEYCODE.BACKSPACE&&t!=we.KEYCODE.DELETE?E&&t==we.KEYCODE.ESC?(V(!0),e.preventDefault(),!1):E&&t!=we.KEYCODE.F10&&!w.keys.isBrowserAction(e)?(e.preventDefault(),!1):void 0:(e.preventDefault(),q(),w.undo.saveStep(),!1)},!0),w.events.on(\"toolbar.esc\",function(){if(E)return w.events.disableBlur(),w.events.focus(),!1},!0),w.events.on(\"toolbar.focusEditor\",function(){if(E)return!1},!0),w.events.on(\"keydown\",function(){w.$el.find(\"span.fr-video:empty\").remove()}),w.$wp&&(L(),w.events.on(\"contentChanged\",L)),n(!0),G(!0)},showInsertPopup:function ie(){var e=w.$tb.find('.fr-command[data-cmd=\"insertVideo\"]'),t=w.popups.get(\"video.insert\");if(t||(t=n()),d(),!t.hasClass(\"fr-active\"))if(w.popups.refresh(\"video.insert\"),w.popups.setContainer(\"video.insert\",w.$tb),e.isVisible()){var o=w.button.getPosition(e),i=o.left,a=o.top;w.popups.show(\"video.insert\",i,a,e.outerHeight())}else w.position.forSelection(t),w.popups.show(\"video.insert\")},showLayer:function ae(e){var t,o,i=w.popups.get(\"video.insert\");if(!E&&!w.opts.toolbarInline){var a=w.$tb.find('.fr-command[data-cmd=\"insertVideo\"]');t=a.offset().left,o=a.offset().top+(w.opts.toolbarBottom?10:a.outerHeight()-10)}w.opts.toolbarInline&&(o=i.offset().top-w.helpers.getPX(i.css(\"margin-top\")),i.hasClass(\"fr-above\")&&(o+=i.outerHeight())),i.find(\".fr-layer\").removeClass(\"fr-active\"),i.find(\".fr-\".concat(e,\"-layer\")).addClass(\"fr-active\"),w.popups.show(\"video.insert\",t,o,0),w.accessibility.focusPopup(i)},refreshByURLButton:function re(e){var t=w.popups.get(\"video.insert\");t&&t.find(\".fr-video-by-url-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},refreshEmbedButton:function ne(e){var t=w.popups.get(\"video.insert\");t&&t.find(\".fr-video-embed-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},refreshUploadButton:function se(e){var t=w.popups.get(\"video.insert\");t&&t.find(\".fr-video-upload-layer\").hasClass(\"fr-active\")&&e.addClass(\"fr-active\").attr(\"aria-pressed\",!0)},upload:K,insertByURL:function de(e){var t=!!document.getElementById(\"videoPluginAutoplay\")&&document.getElementById(\"videoPluginAutoplay\").checked;if(void 0===e){var o=(e=(w.popups.get(\"video.insert\").find('.fr-video-by-url-layer input[type=\"text\"]').val()||\"\").trim()).match(/(https?:\\/\\/)?(www\\.)?(player\\.)?vimeo\\.com\\/?(showcase\\/)*([0-9))([a-z]*\\/)*([0-9]{6,11})[?]?.*/);if(o&&7==o.length){var i=o[6],a=e.substring(0,e.lastIndexOf(\"/\")),r=e.substring(e.lastIndexOf(\"/\")+1,e.length);e=r.includes(\"?h=\")||r.includes(\"?v=\")||i===r?(\"\".concat(a,\"/\").concat(r)||\"\").trim():(\"\".concat(a,\"?h=\").concat(r)||\"\").trim()}}var n=null;if(/^http/.test(e)||(e=\"https://\".concat(e)),w.helpers.isURL(e))for(var s=0;s<we.VIDEO_PROVIDERS.length;s++){var d=we.VIDEO_PROVIDERS[s],l=\"autoplay=1&mute=1\";if(d.html.includes(\"autoplay=1\")&&document.getElementById(\"videoPluginAutoplay\").checked)d.html=d.html,document.getElementById(\"videoPluginAutoplay\").checked=!1;else if(t){var p=d.html.indexOf(\"{url}\")+5;d.html=[d.html.slice(0,p),l,d.html.slice(p)].join(\"\"),t=!1,document.getElementById(\"videoPluginAutoplay\").checked=!1}else(d=we.VIDEO_PROVIDERS[s]).html=d.html.replace(l,\"\");if(d.test_regex.test(e)&&new RegExp(w.opts.videoAllowedProviders.join(\"|\")).test(d.provider)){n=e.replace(d.url_regex,d.url_text),n=d.html.replace(/\\{url\\}/,n);break}}n?h(n):(y(w.language.translate(\"Something went wrong. Please try again.\")),w.events.trigger(\"video.linkError\",[e]))},insertEmbed:function le(e){void 0===e&&(e=w.popups.get(\"video.insert\").find(\".fr-video-embed-layer textarea\").val()||\"\"),0!==e.length&&we.VIDEO_EMBED_REGEX.test(e)?h(e):(y(w.language.translate(\"Something went wrong. Please try again.\")),w.events.trigger(\"video.codeError\",[e]))},insert:h,align:function pe(e){E.removeClass(\"fr-fvr fr-fvl\"),!w.opts.htmlUntouched&&w.opts.useClasses?\"left\"==e?E.addClass(\"fr-fvl\"):\"right\"==e&&E.addClass(\"fr-fvr\"):Z(E,W(),e),te(),M(),r(),w.selection.clear()},refreshAlign:function fe(e){if(!E)return!1;e.find(\">*\").first().replaceWith(w.icon.create(\"video-align-\".concat(j())))},refreshAlignOnShow:function ce(e,t){E&&t.find('.fr-command[data-param1=\"'.concat(j(),'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},display:function ve(e){E.removeClass(\"fr-dvi fr-dvb\"),!w.opts.htmlUntouched&&w.opts.useClasses?\"inline\"==e?E.addClass(\"fr-dvi\"):\"block\"==e&&E.addClass(\"fr-dvb\"):Z(E,e,j()),te(),M(),r(),w.selection.clear()},refreshDisplayOnShow:function ue(e,t){E&&t.find('.fr-command[data-param1=\"'.concat(W(),'\"]')).addClass(\"fr-active\").attr(\"aria-selected\",!0)},remove:q,hideProgressBar:d,showSizePopup:function ge(){var e=w.popups.get(\"video.size\");e||(e=G()),d(),w.popups.refresh(\"video.size\"),w.popups.setContainer(\"video.size\",w.$sc);var t=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\")),o=t.offset().left+t.outerWidth()/2,i=t.offset().top+t.height();w.popups.show(\"video.size\",o,i,t.height(),!0)},replace:function he(){var e=w.popups.get(\"video.insert\");e||(e=n()),w.popups.isVisible(\"video.insert\")||(d(),w.popups.refresh(\"video.insert\"),w.popups.setContainer(\"video.insert\",w.$sc));var t=E.offset().left+E.outerWidth()/2,o=E.offset().top+E.height();w.popups.show(\"video.insert\",t,o,E.outerHeight(),!0)},back:function e(){E?(w.events.disableBlur(),E[0].click()):(w.events.disableBlur(),w.selection.restore(),w.events.enableBlur(),w.popups.hide(\"video.insert\"),w.toolbar.showInline())},setSize:function me(e,t){if(E){var o=w.popups.get(\"video.size\"),i=E.find(\"iframe, embed, \".concat(E.find(\"iframe, embed, audio\").get(0)?\"audio\":\"video\"));i.css(\"width\",e||o.find('input[name=\"width\"]').val()),i.css(\"height\",t||o.find('input[name=\"height\"]').val()),i.get(0).style.width&&i.removeAttr(\"width\"),i.get(0).style.height&&i.removeAttr(\"height\"),o.find(\"input:focus\").blur(),setTimeout(function(){E.trigger(\"click\")},w.helpers.isAndroid()?50:0)}},get:function be(){return E},showProgressBar:R,_editVideo:l,setAutoplay:function ye(){var e;if(E.find(\"iframe, embed, audio\").get(0))(e=E.find(\"iframe, embed, audio\")).get(0).src.includes(\"autoplay=1\")?(ee(\"#FFFFFF\"),e.get(0).src=e.get(0).src.replace(\"&autoplay=1\",\"\")):(ee(\"#D6D6D6\"),e.get(0).src=e.get(0).src+\"&autoplay=1\");else if((e=E.find(\"iframe, embed, video\")).get(0).outerHTML.includes(\"autoplay\"))ee(\"#FFFFFF\"),e.get(0).outerHTML=e.get(0).outerHTML.replace(\"autoplay\",\"\");else{ee(\"#D6D6D6\");var t=e.get(0).outerHTML.indexOf(\"class\")-1;e.get(0).outerHTML=[e.get(0).outerHTML.slice(0,t),\"autoplay\",e.get(0).outerHTML.slice(t)].join(\"\")}}}},we.RegisterCommand(\"insertVideo\",{title:\"Insert Video\",undo:!1,focus:!0,refreshAfterCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"video.insert\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"video.insert\")):this.video.showInsertPopup()},plugin:\"video\"}),we.DefineIcon(\"insertVideo\",{NAME:\"video-camera\",FA5NAME:\"camera\",SVG_KEY:\"insertVideo\"}),we.DefineIcon(\"videoByURL\",{NAME:\"link\",SVG_KEY:\"insertLink\"}),we.RegisterCommand(\"videoByURL\",{title:\"By URL\",undo:!1,focus:!1,toggle:!0,callback:function(){this.video.showLayer(\"video-by-url\")},refresh:function(e){this.video.refreshByURLButton(e)}}),we.DefineIcon(\"videoEmbed\",{NAME:\"code\",SVG_KEY:\"codeView\"}),we.RegisterCommand(\"videoEmbed\",{title:\"Embedded Code\",undo:!1,focus:!1,toggle:!0,callback:function(){this.video.showLayer(\"video-embed\")},refresh:function(e){this.video.refreshEmbedButton(e)}}),we.DefineIcon(\"videoUpload\",{NAME:\"upload\",SVG_KEY:\"upload\"}),we.RegisterCommand(\"videoUpload\",{title:\"Upload Video\",undo:!1,focus:!1,toggle:!0,callback:function(){this.video.showLayer(\"video-upload\")},refresh:function(e){this.video.refreshUploadButton(e)}}),we.RegisterCommand(\"videoInsertByURL\",{undo:!0,focus:!0,callback:function(){this.video.insertByURL()}}),we.RegisterCommand(\"videoInsertEmbed\",{undo:!0,focus:!0,callback:function(){this.video.insertEmbed()}}),we.DefineIcon(\"videoDisplay\",{NAME:\"star\",SVG_KEY:\"star\"}),we.RegisterCommand(\"videoDisplay\",{title:\"Display\",type:\"dropdown\",options:{inline:\"Inline\",block:\"Break Text\"},callback:function(e,t){this.video.display(t)},refresh:function(e){this.opts.videoTextNear||e.addClass(\"fr-hidden\")},refreshOnShow:function(e,t){this.video.refreshDisplayOnShow(e,t)}}),we.DefineIcon(\"video-align\",{NAME:\"align-left\",SVG_KEY:\"align Left\"}),we.DefineIcon(\"video-align-left\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),we.DefineIcon(\"video-align-right\",{NAME:\"align-right\",SVG_KEY:\"alignRight\"}),we.DefineIcon(\"video-align-center\",{NAME:\"align-justify\",SVG_KEY:\"alignJustify\"}),we.DefineIcon(\"videoAlign\",{NAME:\"align-center\",SVG_KEY:\"alignCenter\"}),we.RegisterCommand(\"videoAlign\",{type:\"dropdown\",title:\"Align\",options:{left:\"Align Left\",center:\"None\",right:\"Align Right\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=we.COMMANDS.videoAlign.options;for(var o in t)t.hasOwnProperty(o)&&(e+='<li role=\"presentation\"><a class=\"fr-command fr-title\" tabIndex=\"-1\" role=\"option\" data-cmd=\"videoAlign\" data-param1=\"'.concat(o,'\" title=\"').concat(this.language.translate(t[o]),'\">').concat(this.icon.create(\"video-align-\".concat(o)),'<span class=\"fr-sr-only\">').concat(this.language.translate(t[o]),\"</span></a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.video.align(t)},refresh:function(e){this.video.refreshAlign(e)},refreshOnShow:function(e,t){this.video.refreshAlignOnShow(e,t)}}),we.DefineIcon(\"videoReplace\",{NAME:\"exchange\",FA5NAME:\"exchange-alt\",SVG_KEY:\"replaceImage\"}),we.RegisterCommand(\"videoReplace\",{title:\"Replace\",undo:!1,focus:!1,popup:!0,refreshAfterCallback:!1,callback:function(){this.video.replace()}}),we.DefineIcon(\"videoRemove\",{NAME:\"trash\",SVG_KEY:\"remove\"}),we.RegisterCommand(\"videoRemove\",{title:\"Remove\",callback:function(){this.video.remove()}}),we.DefineIcon(\"autoplay\",{NAME:\"autoplay\",SVG_KEY:\"autoplay\"}),we.RegisterCommand(\"autoplay\",{undo:!1,focus:!1,popup:!0,title:\"Autoplay\",callback:function(){this.video.setAutoplay()}}),we.DefineIcon(\"videoSize\",{NAME:\"arrows-alt\",SVG_KEY:\"imageSize\"}),we.RegisterCommand(\"videoSize\",{undo:!1,focus:!1,popup:!0,title:\"Change Size\",callback:function(){this.video.showSizePopup()}}),we.DefineIcon(\"videoBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),we.RegisterCommand(\"videoBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,callback:function(){this.video.back()},refresh:function(e){this.video.get()||this.opts.toolbarInline?(e.removeClass(\"fr-hidden\"),e.next().hasClass(\"fr-separator\")&&e.next().removeClass(\"fr-hidden\")):(e.addClass(\"fr-hidden\"),e.next().hasClass(\"fr-separator\")&&e.next().addClass(\"fr-hidden\"))}}),we.RegisterCommand(\"videoDismissError\",{title:\"OK\",undo:!1,callback:function(){this.video.hideProgressBar(!0)}}),we.RegisterCommand(\"videoSetSize\",{undo:!0,focus:!1,title:\"Update\",refreshAfterCallback:!1,callback:function(){this.video.setSize()}})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(Ce){\"use strict\";Ce=Ce&&Ce.hasOwnProperty(\"default\")?Ce[\"default\"]:Ce,Object.assign(Ce.POPUP_TEMPLATES,{\"table.insert\":\"[_BUTTONS_][_ROWS_COLUMNS_]\",\"table.edit\":\"[_BUTTONS_]\",\"table.colors\":\"[_BUTTONS_][_COLORS_][_CUSTOM_COLOR_]\"}),Object.assign(Ce.DEFAULTS,{tableInsertMaxSize:10,tableEditButtons:[\"tableHeader\",\"tableFooter\",\"tableRemove\",\"tableRows\",\"tableColumns\",\"tableStyle\",\"-\",\"tableCells\",\"tableCellBackground\",\"tableCellVerticalAlign\",\"tableCellHorizontalAlign\",\"tableCellStyle\"],tableInsertButtons:[\"tableBack\",\"|\"],tableResizer:!0,tableDefaultWidth:\"100%\",tableResizerOffset:5,tableResizingLimit:30,tableColorsButtons:[\"tableBack\",\"|\"],tableColors:[\"#61BD6D\",\"#1ABC9C\",\"#54ACD2\",\"#2C82C9\",\"#9365B8\",\"#475577\",\"#CCCCCC\",\"#41A85F\",\"#00A885\",\"#3D8EB9\",\"#2969B0\",\"#553982\",\"#28324E\",\"#000000\",\"#F7DA64\",\"#FBA026\",\"#EB6B56\",\"#E25041\",\"#A38F84\",\"#EFEFEF\",\"#FFFFFF\",\"#FAC51C\",\"#F37934\",\"#D14841\",\"#B8312F\",\"#7C706B\",\"#D1D5D8\",\"REMOVE\"],tableColorsStep:7,tableCellStyles:{\"fr-highlighted\":\"Highlighted\",\"fr-thick\":\"Thick\"},tableStyles:{\"fr-dashed-borders\":\"Dashed Borders\",\"fr-alternate-rows\":\"Alternate Rows\"},tableCellMultipleStyles:!0,tableMultipleStyles:!0,tableInsertHelper:!0,tableInsertHelperOffset:15}),Ce.PLUGINS.table=function(R){var A,f,n,r,l,o,O,y=R.$;function u(){var e=$();if(e){var t=R.popups.get(\"table.edit\");if(t||(t=p()),t){R.popups.setContainer(\"table.edit\",R.$sc);var a=S(e),l=a.left+(a.right-a.left)/2,n=a.bottom;R.popups.show(\"table.edit\",l,n,a.bottom-a.top,!0),R.edit.isDisabled()&&(R.$el.removeClass(\"fr-no-selection\"),R.edit.on(),R.button.bulkRefresh(),R.selection.setAtEnd(R.$el.find(\".fr-selected-cell\").last().get(0)),R.selection.restore())}}}function s(){var e=$();if(e){var t=R.popups.get(\"table.colors\");t||(t=function o(){var e=\"\";0<R.opts.tableColorsButtons.length&&(e='<div class=\"fr-buttons fr-tabs\">'.concat(R.button.buildList(R.opts.tableColorsButtons),\"</div>\"));var t=\"\";R.opts.colorsHEXInput&&(t='<div class=\"fr-color-hex-layer fr-table-colors-hex-layer fr-active fr-layer\" id=\"fr-table-colors-hex-layer-'.concat(R.id,'\"><div class=\"fr-input-line\"><input maxlength=\"7\" id=\"fr-table-colors-hex-layer-text-').concat(R.id,'\" type=\"text\" placeholder=\"').concat(R.language.translate(\"HEX Color\"),'\" tabIndex=\"1\" aria-required=\"true\"></div><div class=\"fr-action-buttons\"><button type=\"button\" class=\"fr-command fr-submit\" data-cmd=\"tableCellBackgroundCustomColor\" tabIndex=\"2\" role=\"button\">').concat(R.language.translate(\"OK\"),\"</button></div></div>\"));var a={buttons:e,colors:function n(){for(var e='<div class=\"fr-color-set fr-table-colors\">',t=0;t<R.opts.tableColors.length;t++)0!==t&&t%R.opts.tableColorsStep==0&&(e+=\"<br>\"),\"REMOVE\"!=R.opts.tableColors[t]?e+='<span class=\"fr-command\" style=\"background: '.concat(R.opts.tableColors[t],';\" tabIndex=\"-1\" role=\"button\" data-cmd=\"tableCellBackgroundColor\" data-param1=\"').concat(R.opts.tableColors[t],'\"><span class=\"fr-sr-only\">').concat(R.language.translate(\"Color\"),\" \").concat(R.opts.tableColors[t],\"&nbsp;&nbsp;&nbsp;</span></span>\"):e+='<span class=\"fr-command\" data-cmd=\"tableCellBackgroundColor\" tabIndex=\"-1\" role=\"button\" data-param1=\"REMOVE\" title=\"'.concat(R.language.translate(\"Clear Formatting\"),'\">').concat(R.icon.create(\"tableColorRemove\"),'<span class=\"fr-sr-only\">').concat(R.language.translate(\"Clear Formatting\"),\"</span></span>\");return e+=\"</div>\"}(),custom_color:t},l=R.popups.create(\"table.colors\",a);return R.events.$on(R.$wp,\"scroll.table-colors\",function(){R.popups.isVisible(\"table.colors\")&&s()}),function r(u){R.events.on(\"popup.tab\",function(e){var t=y(e.currentTarget);if(!R.popups.isVisible(\"table.colors\")||!t.is(\"span\"))return!0;var a=e.which,l=!0;if(Ce.KEYCODE.TAB==a){var n=u.find(\".fr-buttons\");l=!R.accessibility.focusToolbar(n,!!e.shiftKey)}else if(Ce.KEYCODE.ARROW_UP==a||Ce.KEYCODE.ARROW_DOWN==a||Ce.KEYCODE.ARROW_LEFT==a||Ce.KEYCODE.ARROW_RIGHT==a){var r=t.parent().find(\"span.fr-command\"),o=r.index(t),s=R.opts.colorsStep,i=Math.floor(r.length/s),f=o%s,c=Math.floor(o/s),d=c*s+f,p=i*s;Ce.KEYCODE.ARROW_UP==a?d=((d-s)%p+p)%p:Ce.KEYCODE.ARROW_DOWN==a?d=(d+s)%p:Ce.KEYCODE.ARROW_LEFT==a?d=((d-1)%p+p)%p:Ce.KEYCODE.ARROW_RIGHT==a&&(d=(d+1)%p);var h=y(r.get(d));R.events.disableBlur(),h.focus(),l=!1}else Ce.KEYCODE.ENTER==a&&(R.button.exec(t),l=!1);return!1===l&&(e.preventDefault(),e.stopPropagation()),l},!0)}(l),l}()),R.popups.setContainer(\"table.colors\",R.$sc);var a=S(e),l=(a.left+a.right)/2,n=a.bottom;!function r(){var e=R.popups.get(\"table.colors\"),t=R.$el.find(\".fr-selected-cell\").first(),a=R.helpers.RGBToHex(t.css(\"background-color\")),l=e.find(\".fr-table-colors-hex-layer input\");e.find(\".fr-selected-color\").removeClass(\"fr-selected-color fr-active-item\"),e.find('span[data-param1=\"'.concat(a,'\"]')).addClass(\"fr-selected-color fr-active-item\"),l.val(a).trigger(\"change\")}(),R.popups.show(\"table.colors\",l,n,a.bottom-a.top,!0)}}function i(){0===Q().length&&R.toolbar.enable()}function c(e){if(e)return R.popups.onHide(\"table.insert\",function(){R.popups.get(\"table.insert\").find('.fr-table-size .fr-select-table-size > span[data-row=\"1\"][data-col=\"1\"]').trigger(\"mouseover\")}),!0;var t=\"\";0<R.opts.tableInsertButtons.length&&(t='<div class=\"fr-buttons fr-tabs\">'.concat(R.button.buildList(R.opts.tableInsertButtons),\"</div>\"));var a={buttons:t,rows_columns:function r(){for(var e='<div class=\"fr-table-size\"><div class=\"fr-table-size-info\">1 &times; 1</div><div class=\"fr-select-table-size\">',t=1;t<=R.opts.tableInsertMaxSize;t++){for(var a=1;a<=R.opts.tableInsertMaxSize;a++){var l=\"inline-block\";2<t&&!R.helpers.isMobile()&&(l=\"none\");var n=\"fr-table-cell \";1==t&&1==a&&(n+=\" hover\"),e+='<span class=\"fr-command '.concat(n,'\" tabIndex=\"-1\" data-cmd=\"tableInsert\" data-row=\"').concat(t,'\" data-col=\"').concat(a,'\" data-param1=\"').concat(t,'\" data-param2=\"').concat(a,'\" style=\"display: ').concat(l,';\" role=\"button\"><span></span><span class=\"fr-sr-only\">').concat(t,\" &times; \").concat(a,\"&nbsp;&nbsp;&nbsp;</span></span>\")}e+='<div class=\"new-line\"></div>'}return e+=\"</div></div>\"}()},l=R.popups.create(\"table.insert\",a);return R.events.$on(l,\"mouseover\",\".fr-table-size .fr-select-table-size .fr-table-cell\",function(e){d(y(e.currentTarget))},!0),function n(e){R.events.$on(e,\"focus\",\"[tabIndex]\",function(e){var t=y(e.currentTarget);d(t)}),R.events.on(\"popup.tab\",function(e){var t=y(e.currentTarget);if(!R.popups.isVisible(\"table.insert\")||!t.is(\"span, a\"))return!0;var a,l=e.which;if(Ce.KEYCODE.ARROW_UP==l||Ce.KEYCODE.ARROW_DOWN==l||Ce.KEYCODE.ARROW_LEFT==l||Ce.KEYCODE.ARROW_RIGHT==l){if(t.is(\"span.fr-table-cell\")){var n=t.parent().find(\"span.fr-table-cell\"),r=n.index(t),o=R.opts.tableInsertMaxSize,s=r%o,i=Math.floor(r/o);Ce.KEYCODE.ARROW_UP==l?i=Math.max(0,i-1):Ce.KEYCODE.ARROW_DOWN==l?i=Math.min(R.opts.tableInsertMaxSize-1,i+1):Ce.KEYCODE.ARROW_LEFT==l?s=Math.max(0,s-1):Ce.KEYCODE.ARROW_RIGHT==l&&(s=Math.min(R.opts.tableInsertMaxSize-1,s+1));var f=i*o+s,c=y(n.get(f));d(c),R.events.disableBlur(),c.focus(),a=!1}}else Ce.KEYCODE.ENTER==l&&(R.button.exec(t),a=!1);return!1===a&&(e.preventDefault(),e.stopPropagation()),a},!0)}(l),l}function d(e){var t=e.data(\"row\");null!==t&&(t=parseInt(t));var a=e.data(\"col\");null!==a&&(a=parseInt(a));var l=e.parent();l.siblings(\".fr-table-size-info\").html(\"\".concat(t,\" &times; \").concat(a)),l.find(\"> span\").removeClass(\"hover fr-active-item\");for(var n=1;n<=R.opts.tableInsertMaxSize;n++)for(var r=0;r<=R.opts.tableInsertMaxSize;r++){var o=l.find('> span[data-row=\"'.concat(n,'\"][data-col=\"').concat(r,'\"]'));n<=t&&r<=a?o.addClass(\"hover\"):n<=t+1||n<=2&&!R.helpers.isMobile()?o.css(\"display\",\"inline-block\"):2<n&&!R.helpers.isMobile()&&o.css(\"display\",\"none\")}e.addClass(\"fr-active-item\")}function p(e){if(e)return R.popups.onHide(\"table.edit\",i),!0;if(0<R.opts.tableEditButtons.length){var t={buttons:'<div class=\"fr-buttons\">'.concat(R.button.buildList(R.opts.tableEditButtons),\"</div>\")},a=R.popups.create(\"table.edit\",t);return R.events.$on(R.$wp,\"scroll.table-edit\",function(){R.popups.isVisible(\"table.edit\")&&u()}),a}return!1}function h(){if(0<Q().length){var e=ee();R.selection.setBefore(e.get(0))||R.selection.setAfter(e.get(0)),R.selection.restore(),R.popups.hide(\"table.edit\"),R.opts.trackChangesEnabled?(R.track_changes.removedTable(e),_()):e.remove(),R.toolbar.enable()}}function g(e){var t=ee();if(0<t.length){if(0<R.$el.find(\"thead .fr-selected-cell\").length&&\"above\"==e||0<R.$el.find(\"tfoot td.fr-selected-cell\").length&&\"below\"==e)return;var a,l,n,r=$(),o=M(r);if(null==o)return;l=\"above\"==e?o.min_i:o.max_i;var s=\"<tr>\";for(a=0;a<r[l].length;a++){if(\"below\"==e&&l<r.length-1&&r[l][a]==r[l+1][a]||\"above\"==e&&0<l&&r[l][a]==r[l-1][a]){if(0===a||0<a&&r[l][a]!=r[l][a-1]){var i=y(r[l][a]);i.attr(\"rowspan\",parseInt(i.attr(\"rowspan\"),10)+1)}}else s+='<td style=\"'+y(r[l][a]).attr(\"style\")+'\" ><br></td>'}s+=\"</tr>\",n=0<R.$el.find(\"thead .fr-selected-cell\").length&&\"below\"==e||0<R.$el.find(\"tfoot td.fr-selected-cell\").length&&\"above\"==e?y(t.find(\"tbody\").not(t.find(\"> table tbody\"))):y(t.find(\"tr\").not(t.find(\"> table tr\")).get(l)),\"below\"==e?\"TBODY\"==n.attr(\"tagName\")?n.prepend(s):n[0].parentNode&&n[0].insertAdjacentHTML(\"afterend\",s):\"above\"==e&&(\"TBODY\"==n.attr(\"tagName\")?n.append(s):n.before(s),R.popups.isVisible(\"table.edit\")&&u())}}function b(e,t,a){var l,n,r,o,s,i=0,f=$(a);if(e<(t=Math.min(t,f[0].length-1)))for(n=e;n<=t;n++)if(!(e<n&&f[0][n]==f[0][n-1])&&1<(o=Math.min(parseInt(f[0][n].getAttribute(\"colspan\"),10)||1,t-e+1))&&f[0][n]==f[0][n+1])for(i=o-1,l=1;l<f.length;l++)if(f[l][n]!=f[l-1][n]){for(r=n;r<n+o;r++)if(f[l][r]!==undefined)if(1<(s=parseInt(f[l][r].getAttribute(\"colspan\"),10)||1)&&f[l][r]==f[l][r+1])r+=i=Math.min(i,s-1);else if(!(i=Math.max(0,i-1)))break;if(!i)break}i&&v(f,i,\"colspan\",0,f.length-1,e,t)}function m(e,t,a){var l,n,r,o,s,i=0,f=$(a);if(e<(t=Math.min(t,f.length-1)))for(l=e;l<=t;l++)if(!(e<l&&f[l][0]==f[l-1][0])&&f[l][0]!==undefined&&1<(o=Math.min(parseInt(f[l][0].getAttribute(\"rowspan\"),10)||1,t-e+1))&&f[l][0]==f[l+1][0])for(i=o-1,n=1;n<f[0].length;n++)if(f[l][n]!=f[l][n-1]){for(r=l;r<l+o;r++)if(f[r][n]!==undefined)if(1<(s=parseInt(f[r][n].getAttribute(\"rowspan\"),10)||1)&&f[r][n]==f[r+1][n])r+=i=Math.min(i,s-1);else if(!(i=Math.max(0,i-1)))break;if(!i)break}i&&v(f,i,\"rowspan\",e,t,0,f[0].length-1)}function v(e,t,a,l,n,r,o){var s,i,f;for(s=l;s<=n;s++)for(i=r;i<=o;i++)l<s&&e[s][i]==e[s-1][i]||r<i&&e[s][i]==e[s][i-1]||e[s][i]!==undefined&&1<(f=parseInt(e[s][i].getAttribute(a),10)||1)&&(1<f-t?e[s][i].setAttribute(a,f-t):e[s][i].removeAttribute(a))}function w(e,t,a,l,n){m(e,t,n),b(a,l,n)}function t(e){var t=R.$el.find(\".fr-selected-cell\");\"REMOVE\"!=e?t.css(\"background-color\",R.helpers.HEXtoRGB(e)):t.css(\"background-color\",\"\"),u()}function C(e){e.style.removeProperty(\"border\"),e.style.removeProperty(\"border-top\"),e.style.removeProperty(\"border-bottom\"),e.style.removeProperty(\"border-left\"),e.style.removeProperty(\"border-right\")}function $(e){var f=[];if(null==(e=e||null)&&0<Q().length&&(e=ee()),e){if(!e.find(\"tr\").html().match(/xl[0-9]+/gi))for(var t=e.find(\"tr:empty\"),a=t.length-1;0<=a;a--)y(t[a]).remove();e.findVisible(\"tr\").not(e.find(\"> table tr\")).each(function(s,e){var t=y(e),i=0;t.find(\"> th, > td\").each(function(e,t){for(var a=y(t),l=parseInt(a.attr(\"colspan\"),10)||1,n=parseInt(a.attr(\"rowspan\"),10)||1,r=s;r<s+n;r++)for(var o=i;o<i+l;o++)f[r]||(f[r]=[]),f[r][o]?i++:f[r][o]=t;i+=l})})}return f}function D(e,t){for(var a=0;a<t.length;a++)for(var l=0;l<t[a].length;l++)if(t[a][l]==e)return{row:a,col:l}}function x(e,t,a){for(var l=e+1,n=t+1;l<a.length;){if(a[l][t]!=a[e][t]){l--;break}l++}for(l==a.length&&l--;n<a[e].length;){if(a[e][n]!=a[e][t]){n--;break}n++}return n==a[e].length&&n--,{row:l,col:n}}function E(){R.el.querySelector(\".fr-cell-fixed\")&&R.el.querySelector(\".fr-cell-fixed\").classList.remove(\"fr-cell-fixed\"),R.el.querySelector(\".fr-cell-handler\")&&R.el.querySelector(\".fr-cell-handler\").classList.remove(\"fr-cell-handler\")}function _(){var e=R.$el.find(\".fr-selected-cell\");0<e.length&&e.each(function(){var e=y(this);e.removeClass(\"fr-selected-cell\"),\"\"===e.attr(\"class\")&&e.removeAttr(\"class\")}),E()}function T(){R.events.disableBlur(),R.selection.clear(),R.$el.addClass(\"fr-no-selection\"),R.$el.blur(),R.events.enableBlur()}function M(e){var t=R.$el.find(\".fr-selected-cell\");if(0<t.length){var a,l=e.length,n=0,r=e[0].length,o=0;for(a=0;a<t.length;a++){var s=D(t[a],e),i=x(s.row,s.col,e);l=Math.min(s.row,l),n=Math.max(i.row,n),r=Math.min(s.col,r),o=Math.max(i.col,o)}return{min_i:l,max_i:n,min_j:r,max_j:o}}return null}function S(e){var t=M(e);if(null!=t){var a=y(e[t.min_i][t.min_j]),l=y(e[t.min_i][t.max_j]),n=y(e[t.max_i][t.min_j]);return{left:a.length&&a.offset().left,right:l.length&&l.offset().left+l.outerWidth(),top:a.length&&a.offset().top,bottom:n.length&&n.offset().top+n.outerHeight()}}}function N(e,t){if(y(e).is(t))_(),y(e).addClass(\"fr-selected-cell\");else{T(),R.edit.off();var a=$(),l=D(e,a),n=D(t,a);if(!l||!n)return;var r=function h(e,t,a,l,n){var r,o,s,i,f=e,c=t,d=a,p=l;for(r=f;r<=c;r++)(1<(parseInt(y(n[r][d]).attr(\"rowspan\"),10)||1)||1<(parseInt(y(n[r][d]).attr(\"colspan\"),10)||1))&&(i=x((s=D(n[r][d],n)).row,s.col,n),f=Math.min(s.row,f),c=Math.max(i.row,c),d=Math.min(s.col,d),p=Math.max(i.col,p)),(1<(parseInt(y(n[r][p]).attr(\"rowspan\"),10)||1)||1<(parseInt(y(n[r][p]).attr(\"colspan\"),10)||1))&&(i=x((s=D(n[r][p],n)).row,s.col,n),f=Math.min(s.row,f),c=Math.max(i.row,c),d=Math.min(s.col,d),p=Math.max(i.col,p));for(o=d;o<=p;o++)(1<(parseInt(y(n[f][o]).attr(\"rowspan\"),10)||1)||1<(parseInt(y(n[f][o]).attr(\"colspan\"),10)||1))&&(i=x((s=D(n[f][o],n)).row,s.col,n),f=Math.min(s.row,f),c=Math.max(i.row,c),d=Math.min(s.col,d),p=Math.max(i.col,p)),(1<(parseInt(y(n[c][o]).attr(\"rowspan\"),10)||1)||1<(parseInt(y(n[c][o]).attr(\"colspan\"),10)||1))&&(i=x((s=D(n[c][o],n)).row,s.col,n),f=Math.min(s.row,f),c=Math.max(i.row,c),d=Math.min(s.col,d),p=Math.max(i.col,p));return f==e&&c==t&&d==a&&p==l?{min_i:e,max_i:t,min_j:a,max_j:l}:h(f,c,d,p,n)}(Math.min(l.row,n.row),Math.max(l.row,n.row),Math.min(l.col,n.col),Math.max(l.col,n.col),a);_(),e.classList.add(\"fr-cell-fixed\"),t.classList.add(\"fr-cell-handler\");for(var o=r.min_i;o<=r.max_i;o++)for(var s=r.min_j;s<=r.max_j;s++)y(e).closest(\"table\").is(y(a[o][s]).closest(\"table\"))&&y(a[o][s]).addClass(\"fr-selected-cell\")}}function I(e){var t=null,a=y(e.target);return\"TD\"==e.target.tagName||\"TH\"==e.target.tagName?t=e.target:0<a.closest(\"th\",a.closest(\"thead\")[0]).length?t=a.closest(\"th\",a.closest(\"thead\")[0]).get(0):0<a.closest(\"td\",a.closest(\"tr\")[0]).length&&(t=a.closest(\"td\",a.closest(\"tr\")[0]).get(0)),-1===R.$el.html.toString().search(t)?null:t}function K(){_(),R.popups.hide(\"table.edit\")}function e(e){var t=I(e);if(\"false\"==y(t).parents(\"[contenteditable]\").not(\".fr-element\").not(\".fr-img-caption\").not(\"body\").first().attr(\"contenteditable\"))return!0;if(0<Q().length&&!t&&K(),!R.edit.isDisabled()||R.popups.isVisible(\"table.edit\"))if(1!=e.which||1==e.which&&R.helpers.isMac()&&e.ctrlKey)(3==e.which||1==e.which&&R.helpers.isMac()&&e.ctrlKey)&&t&&K();else if(r=!0,t){0<Q().length&&!e.shiftKey&&K(),e.stopPropagation(),R.events.trigger(\"image.hideResizer\"),R.events.trigger(\"video.hideResizer\"),n=!0;var a=t.tagName.toLowerCase();e.shiftKey&&0<R.$el.find(\"\".concat(a,\".fr-selected-cell\")).length?y(R.$el.find(\"\".concat(a,\".fr-selected-cell\")).closest(\"table\")).is(y(t).closest(\"table\"))?N(l,t):T():((R.keys.ctrlKey(e)||e.shiftKey)&&\"TD\"===e.currentTarget.tagName&&(1<Q().length||0===y(t).find(R.selection.element()).length&&!y(t).is(R.selection.element()))&&T(),l=t,0<R.opts.tableEditButtons.length&&N(l,l))}}function a(e){if(!R.edit.isDisabled()&&R.popups.areVisible())return!0;var t=I(e);if(1===Q().length&&null===t&&(R.toolbar.enable(),_()),(1===Q().length&&t&&\"TD\"!==t.tagName&&\"TH\"!==t.tagName||!n&&!R.$tb.is(e.target)&&!R.$tb.is(y(e.target).closest(\".fr-toolbar\")))&&(R.toolbar.enable(),_()),(\"BODY\"===e.target.tagName||\"HTML\"===e.target.tagName)&&!t&&0<Q().length&&R.toolbar.enable(),!(1!=e.which||1==e.which&&R.helpers.isMac()&&e.ctrlKey)){if(r=!1,n)n=!1,I(e)||1!=Q().length?0<Q().length?R.selection.isCollapsed()?(u(),R.toolbar.enable()):(_(),R.edit.on()):Q().length||(R.$el.removeClass(\"fr-no-selection\"),R.edit.on()):_();if(O){O=!1,A.removeClass(\"fr-moving\"),R.$el.removeClass(\"fr-no-selection\"),R.edit.on();var a=parseFloat(A.css(\"left\"))+R.opts.tableResizerOffset+R.$wp.offset().left;R.opts.iframe&&(a-=R.$iframe.offset().left),A.data(\"release-position\",a),A.removeData(\"max-left\"),A.removeData(\"max-right\"),function C(){var e=A.data(\"origin\"),t=A.data(\"release-position\");if(e!==t){var a=A.data(\"first\"),l=A.data(\"second\"),n=A.data(\"table\"),r=n.outerWidth();if(R.undo.canDo()||R.undo.saveStep(),null!=a&&null!=l){var o,s,i,f=$(n),c=[],d=[],p=[],h=[];for(o=0;o<f.length;o++)s=y(f[o][a]),i=y(f[o][l]),c[o]=s.outerWidth(),p[o]=i.outerWidth(),d[o]=c[o]/r*100,h[o]=p[o]/r*100;for(o=0;o<f.length;o++)if(s=y(f[o][a]),i=y(f[o][l]),f[o][a]!=f[o][l]){var u=(d[o]*(c[o]+t-e)/c[o]).toFixed(4);s.css(\"width\",u+\"%\"),i.css(\"width\",(d[o]+h[o]-u).toFixed(4)+\"%\")}}else{var g,b=n.parent(),m=r/b.width()*100,v=(parseInt(n.css(\"margin-left\"),10)||0)/b.width()*100,w=(parseInt(n.css(\"margin-right\"),10)||0)/b.width()*100;\"rtl\"==R.opts.direction&&0===l||\"rtl\"!=R.opts.direction&&0!==l?(g=(r+t-e)/r*m,n.css(\"margin-right\",\"calc(100% - \".concat(Math.round(g).toFixed(4),\"% - \").concat(Math.round(v).toFixed(4),\"%)\"))):(\"rtl\"==R.opts.direction&&0!==l||\"rtl\"!=R.opts.direction&&0===l)&&(g=(r-t+e)/r*m,n.css(\"margin-left\",\"calc(100% - \".concat(Math.round(g).toFixed(4),\"% - \").concat(Math.round(w).toFixed(4),\"%)\"))),n.css(\"width\",\"\".concat(Math.round(g).toFixed(4),\"%\"))}R.selection.restore(),R.undo.saveStep(),R.events.trigger(\"table.resized\",[n.get(0)])}A.removeData(\"origin\"),A.removeData(\"release-position\"),A.removeData(\"first\"),A.removeData(\"second\"),A.removeData(\"table\")}(),z()}}}function k(e){if(!(y(e.currentTarget).is(y(e.originalEvent.relatedTarget))||e.currentTarget.contains(e.originalEvent.relatedTarget)||e.originalEvent.relatedTarget&&e.originalEvent.relatedTarget.contains(e.currentTarget))&&(R.events.$on(y(\"input\"),\"click\",te),!0===n&&0<R.opts.tableEditButtons.length)){if(y(e.currentTarget).closest(\"table\").is(ee())){if(\"TBODY\"===e.currentTarget.parentElement.parentElement.tagName&&\"TD\"==e.currentTarget.tagName&&0===R.$el.find(\"th.fr-selected-cell\").length&&0===R.$el.find(\"tfoot td.fr-selected-cell\").length)return void N(l,e.currentTarget);if(\"TFOOT\"===e.currentTarget.parentElement.parentElement.tagName&&\"TD\"==e.currentTarget.tagName&&0===R.$el.find(\"tbody td.fr-selected-cell\").length)return void N(l,e.currentTarget);if(\"TH\"==e.currentTarget.tagName&&0===R.$el.find(\"td.fr-selected-cell\").length)return void N(l,e.currentTarget)}\"TD\"!==e.currentTarget.tagName&&\"TH\"!==e.currentTarget.tagName&&T()}}function B(e,t,a,l){for(var n,r=t;r!=R.el&&\"TD\"!=r.tagName&&\"TH\"!=r.tagName&&(\"up\"==l?n=r.previousElementSibling:\"down\"==l&&(n=r.nextElementSibling),!n);)r=r.parentNode;\"TD\"==r.tagName||\"TH\"==r.tagName?function o(e,t){for(var a=e;a&&\"TABLE\"!=a.tagName&&a.parentNode!=R.el;)a=a.parentNode;if(a&&\"TABLE\"==a.tagName){var l=$(y(a));\"up\"==t?Y(D(e,l),a,l):\"down\"==t&&F(D(e,l),a,l)}}(r,l):n&&(\"up\"==l&&R.selection.setAtEnd(n),\"down\"==l&&R.selection.setAtStart(n))}function Y(e,t,a){0<y(\".tribute-container\").length&&\"none\"!=y(\".tribute-container\").css(\"display\")||(0<e.row?R.selection.setAtEnd(a[e.row-1][e.col]):B(0,t,0,\"up\"))}function F(e,t,a){if(!(0<y(\".tribute-container\").length&&\"none\"!=y(\".tribute-container\").css(\"display\"))){var l=parseInt(a[e.row][e.col].getAttribute(\"rowspan\"),10)||1;e.row<a.length-l?R.selection.setAtStart(a[e.row+l][e.col]):B(0,t,0,\"down\")}}function z(){A&&(A.find(\"div\").css(\"opacity\",0),A.css(\"top\",0),A.css(\"left\",0),A.css(\"height\",0),A.find(\"div\").css(\"height\",0),A.hide())}function W(){f&&f.removeClass(\"fr-visible\").css(\"left\",\"-9999px\")}function L(e,t){var a=y(t),l=a.closest(\"table\"),n=l.parent();if(t&&\"TD\"!=t.tagName&&\"TH\"!=t.tagName&&(0<a.closest(\"td\").length?t=a.closest(\"td\"):0<a.closest(\"th\").length&&(t=a.closest(\"th\"))),!t||\"TD\"!=t.tagName&&\"TH\"!=t.tagName)A&&a.get(0)!=A.get(0)&&a.parent().get(0)!=A.get(0)&&R.core.sameInstance(A)&&z();else{if(a=y(t),0===R.$el.find(a).length)return!1;var r=a.offset().left-1,o=r+a.outerWidth();if(Math.abs(e.pageX-r)<=R.opts.tableResizerOffset||Math.abs(o-e.pageX)<=R.opts.tableResizerOffset){var s,i,f,c,d,p=$(l),h=D(t,p),u=x(h.row,h.col,p),g=l.offset().top,b=l.outerHeight()-1;\"rtl\"!=R.opts.direction?e.pageX-r<=R.opts.tableResizerOffset?(f=r,0<h.col?(c=r-G(h.col-1,p)+R.opts.tableResizingLimit,d=r+G(h.col,p)-R.opts.tableResizingLimit,s=h.col-1,i=h.col):(s=null,i=0,c=l.offset().left-1-parseInt(l.css(\"margin-left\"),10),d=l.offset().left-1+l.width()-p[0].length*R.opts.tableResizingLimit)):o-e.pageX<=R.opts.tableResizerOffset&&(f=o,u.col<p[u.row].length&&p[u.row][u.col+1]?(c=o-G(u.col,p)+R.opts.tableResizingLimit,d=o+G(u.col+1,p)-R.opts.tableResizingLimit,s=u.col,i=u.col+1):(s=u.col,i=null,c=l.offset().left-1+p[0].length*R.opts.tableResizingLimit,d=n.offset().left-1+n.width()+parseFloat(n.css(\"padding-left\")))):o-e.pageX<=R.opts.tableResizerOffset?(f=o,0<h.col?(c=o-G(h.col,p)+R.opts.tableResizingLimit,d=o+G(h.col-1,p)-R.opts.tableResizingLimit,s=h.col,i=h.col-1):(s=null,i=0,c=l.offset().left+p[0].length*R.opts.tableResizingLimit,d=n.offset().left-1+n.width()+parseFloat(n.css(\"padding-left\")))):e.pageX-r<=R.opts.tableResizerOffset&&(f=r,u.col<p[u.row].length&&p[u.row][u.col+1]?(c=r-G(u.col+1,p)+R.opts.tableResizingLimit,d=r+G(u.col,p)-R.opts.tableResizingLimit,s=u.col+1,i=u.col):(s=u.col,i=null,c=n.offset().left+parseFloat(n.css(\"padding-left\")),d=l.offset().left-1+l.width()-p[0].length*R.opts.tableResizingLimit)),A||function E(){R.shared.$table_resizer||(R.shared.$table_resizer=y(document.createElement(\"div\")).attr(\"class\",\"fr-table-resizer\").html(\"<div></div>\")),A=R.shared.$table_resizer,R.events.$on(A,\"mousedown\",function(e){return!R.core.sameInstance(A)||(0<Q().length&&K(),1==e.which?(R.selection.save(),O=!0,A.addClass(\"fr-moving\"),T(),R.edit.off(),A.find(\"div\").css(\"opacity\",1),!1):void 0)}),R.events.$on(A,\"mousemove\",function(e){if(!R.core.sameInstance(A))return!0;O&&(R.opts.iframe&&(e.pageX-=R.$iframe.offset().left),U(e))}),R.events.on(\"shared.destroy\",function(){A.html(\"\").removeData().remove(),A=null},!0),R.events.on(\"destroy\",function(){R.$el.find(\".fr-selected-cell\").removeClass(\"fr-selected-cell\"),y(\"body\").first().append(A.hide())},!0)}(),A.data(\"table\",l),A.data(\"first\",s),A.data(\"second\",i),A.data(\"instance\",R),R.$wp.append(A);var m=f-R.win.pageXOffset-R.opts.tableResizerOffset-R.$wp.offset().left,v=g-R.$wp.offset().top+R.$wp.scrollTop();if(R.opts.iframe){var w=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-top\")),C=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-left\"));m+=R.$iframe.offset().left+C,v+=R.$iframe.offset().top+w,c+=R.$iframe.offset().left,d+=R.$iframe.offset().left}A.data(\"max-left\",c),A.data(\"max-right\",d),A.data(\"origin\",f-R.win.pageXOffset),A.css(\"top\",v),A.css(\"left\",m),A.css(\"height\",b),A.find(\"div\").css(\"height\",b),A.css(\"padding-left\",R.opts.tableResizerOffset),A.css(\"padding-right\",R.opts.tableResizerOffset),A.show()}else R.core.sameInstance(A)&&z()}}function H(e,t){if(R.$box.find(\".fr-line-breaker\").isVisible())return!1;f||J(),R.$box.append(f),f.data(\"instance\",R);var a,l=y(t).find(\"tr\").first(),n=e.pageX,r=0,o=0;if(R.opts.iframe){var s=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-top\")),i=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-left\"));r+=R.$iframe.offset().left-R.helpers.scrollLeft()+i,o+=R.$iframe.offset().top-R.helpers.scrollTop()+s}l.find(\"th, td\").each(function(){var e=y(this);return e.offset().left<=n&&n<e.offset().left+e.outerWidth()/2?(a=parseInt(f.find(\"a\").css(\"width\"),10),f.css(\"top\",o+e.offset().top-R.$box.offset().top-a-5),f.css(\"left\",r+e.offset().left-R.$box.offset().left-a/2),f.data(\"selected-cell\",e),f.data(\"position\",\"before\"),f.addClass(\"fr-visible\"),!1):e.offset().left+e.outerWidth()/2<=n&&n<e.offset().left+e.outerWidth()?(a=parseInt(f.find(\"a\").css(\"width\"),10),f.css(\"top\",o+e.offset().top-R.$box.offset().top-a-5),f.css(\"left\",r+e.offset().left-R.$box.offset().left+e.outerWidth()-a/2),f.data(\"selected-cell\",e),f.data(\"position\",\"after\"),f.addClass(\"fr-visible\"),!1):void 0})}function P(e,t){if(R.$box.find(\".fr-line-breaker\").isVisible())return!1;f||J(),R.$box.append(f),f.data(\"instance\",R);var a,l=y(t),n=e.pageY,r=0,o=0;if(R.opts.iframe){var s=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-top\")),i=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-left\"));r+=R.$iframe.offset().left-R.helpers.scrollLeft()+i,o+=R.$iframe.offset().top-R.helpers.scrollTop()+s}l.find(\"tr\").each(function(){var e=y(this);a=parseInt(f.find(\"a\").css(\"width\"),10);var t=r+e.offset().left-R.$box.offset().left;return t=0!==R.$box.offset().left?t-a-5:t+a-5,e.offset().top<=n&&n<e.offset().top+e.outerHeight()/2?(f.css(\"top\",o+e.offset().top-R.$box.offset().top-a/2),f.css(\"left\",t),f.data(\"selected-cell\",e.find(\"td\").first()),f.data(\"position\",\"above\"),f.addClass(\"fr-visible\"),!1):e.offset().top+e.outerHeight()/2<=n&&n<e.offset().top+e.outerHeight()?(f.css(\"top\",o+e.offset().top-R.$box.offset().top+e.outerHeight()-a/2),f.css(\"left\",t),f.data(\"selected-cell\",e.find(\"td\").first()),f.data(\"position\",\"below\"),f.addClass(\"fr-visible\"),!1):void 0})}function V(e){o=null;var t=R.doc.elementFromPoint(e.pageX-R.win.pageXOffset,e.pageY-R.win.pageYOffset);R.opts.tableResizer&&(!R.popups.areVisible()||R.popups.areVisible()&&R.popups.isVisible(\"table.edit\"))&&L(e,t),!R.opts.tableInsertHelper||R.popups.areVisible()||R.$tb.hasClass(\"fr-inline\")&&R.$tb.isVisible()||function r(e,t){if(0===Q().length){var a,l,n;if(t&&(\"HTML\"==t.tagName||\"BODY\"==t.tagName||R.node.isElement(t)))for(a=1;a<=R.opts.tableInsertHelperOffset;a++){if(l=R.doc.elementFromPoint(e.pageX-R.win.pageXOffset,e.pageY-R.win.pageYOffset+a),y(l).hasClass(\"fr-tooltip\"))return!0;if(l&&(\"TH\"==l.tagName||\"TD\"==l.tagName||\"TABLE\"==l.tagName)&&(y(l).parents(\".fr-wrapper\").length||R.opts.iframe)&&\"false\"!=y(l).closest(\"table\").attr(\"contenteditable\"))return H(e,y(l).closest(\"table\")),!0;if(n=R.doc.elementFromPoint(e.pageX-R.win.pageXOffset+a,e.pageY-R.win.pageYOffset),y(n).hasClass(\"fr-tooltip\"))return!0;if(n&&(\"TH\"==n.tagName||\"TD\"==n.tagName||\"TABLE\"==n.tagName)&&(y(n).parents(\".fr-wrapper\").length||R.opts.iframe)&&\"false\"!=y(n).closest(\"table\").attr(\"contenteditable\"))return P(e,y(n).closest(\"table\")),!0}R.core.sameInstance(f)&&W()}}(e,t)}function j(){if(O){var e=A.data(\"table\").offset().top-R.win.pageYOffset;if(R.opts.iframe){var t=R.helpers.getPX(R.$wp.find(\".fr-iframe\").css(\"padding-top\"));e+=R.$iframe.offset().top-R.helpers.scrollTop()+t}A.css(\"top\",e)}}function G(e,t){var a,l=y(t[0][e]).outerWidth();for(a=1;a<t.length;a++)l=Math.min(l,y(t[a][e]).outerWidth());return l}function X(e,t,a){var l,n=0;for(l=e;l<=t;l++)n+=G(l,a);return n}function U(e){if(1<Q().length&&r&&T(),!1===r&&!1===n&&!1===O)o&&clearTimeout(o),R.edit.isDisabled()&&!R.popups.isVisible(\"table.edit\")||(o=setTimeout(V,30,e));else if(O){var t=e.pageX-R.win.pageXOffset;R.opts.iframe&&(t+=R.$iframe.offset().left);var a=A.data(\"max-left\"),l=A.data(\"max-right\");a<=t&&t<=l?A.css(\"left\",t-R.opts.tableResizerOffset-R.$wp.offset().left):t<a&&parseFloat(A.css(\"left\"),10)>a-R.opts.tableResizerOffset?A.css(\"left\",a-R.opts.tableResizerOffset-R.$wp.offset().left):l<t&&parseFloat(A.css(\"left\"),10)<l-R.opts.tableResizerOffset&&A.css(\"left\",l-R.opts.tableResizerOffset-R.$wp.offset().left)}else r&&W()}function q(e){R.node.isEmpty(e.get(0))?e.prepend(Ce.MARKERS):e.prepend(Ce.START_MARKER).append(Ce.END_MARKER)}function J(){R.shared.$ti_helper||(R.shared.$ti_helper=y(document.createElement(\"div\")).attr(\"class\",\"fr-insert-helper\").html('<a class=\"fr-floating-btn\" role=\"button\" tabIndex=\"-1\" title=\"'.concat(R.language.translate(\"Insert\"),'\"><svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22,16.75 L16.75,16.75 L16.75,22 L15.25,22.000 L15.25,16.75 L10,16.75 L10,15.25 L15.25,15.25 L15.25,10 L16.75,10 L16.75,15.25 L22,15.25 L22,16.75 Z\"/></svg></a>')),R.events.bindClick(R.shared.$ti_helper,\"a\",function(){var e=f.data(\"selected-cell\"),t=f.data(\"position\"),a=f.data(\"instance\")||R;\"before\"==t?(R.undo.saveStep(),e.addClass(\"fr-selected-cell\"),a.table.insertColumn(t),e.removeClass(\"fr-selected-cell\"),R.undo.saveStep()):\"after\"==t?(R.undo.saveStep(),e.addClass(\"fr-selected-cell\"),a.table.insertColumn(t),e.removeClass(\"fr-selected-cell\"),R.undo.saveStep()):\"above\"==t?(R.undo.saveStep(),e.addClass(\"fr-selected-cell\"),a.table.insertRow(t),e.removeClass(\"fr-selected-cell\"),R.undo.saveStep()):\"below\"==t&&(R.undo.saveStep(),e.addClass(\"fr-selected-cell\"),a.table.insertRow(t),e.removeClass(\"fr-selected-cell\"),R.undo.saveStep()),W()}),R.events.on(\"shared.destroy\",function(){R.shared.$ti_helper.html(\"\").removeData().remove(),R.shared.$ti_helper=null},!0),R.events.$on(R.shared.$ti_helper,\"mousemove\",function(e){e.stopPropagation()},!0),R.events.$on(y(R.o_win),\"scroll\",function(){W()},!0),R.events.$on(R.$wp,\"scroll\",function(){W()},!0)),f=R.shared.$ti_helper,R.events.on(\"destroy\",function(){f=null}),R.tooltip.bind(R.$box,\".fr-insert-helper > a.fr-floating-btn\")}function Z(){l=null,clearTimeout(o)}function Q(){return R.el.querySelectorAll(\".fr-selected-cell\")}function ee(){var e=Q();if(e.length){for(var t=e[0];t&&\"TABLE\"!=t.tagName&&t.parentNode!=R.el;)t=t.parentNode;return t&&\"TABLE\"==t.tagName?y(t):y([])}return y([])}function te(e){n=!1}return{_init:function ae(){if(!R.$wp)return!1;if(R.helpers.isMobile()&&(R.events.$on(R.$el,\"mousedown\",e),R.events.$on(R.$win,\"mouseup\",a)),!R.helpers.isMobile()){O=n=r=!1,R.events.$on(R.$el,\"mousedown\",e),R.popups.onShow(\"image.edit\",function(){_(),n=r=!1}),R.popups.onShow(\"link.edit\",function(){_(),n=r=!1}),R.events.on(\"commands.mousedown\",function(e){0<e.parents(\".fr-toolbar\").length&&_()}),R.events.$on(R.$el,\"mouseover\",\"th, td\",k),R.events.$on(R.$win,\"mouseup\",a),R.opts.iframe&&R.events.$on(y(R.o_win),\"mouseup\",a),R.events.$on(R.$win,\"mousemove\",U),R.events.$on(y(R.o_win),\"scroll\",j),R.events.on(\"contentChanged\",function(){0<Q().length&&(u(),R.$el.find(\"img\").on(\"load.selected-cells\",function(){y(this).off(\"load.selected-cells\"),0<Q().length&&u()}))}),R.events.$on(y(R.o_win),\"resize\",function(){_()}),R.events.on(\"toolbar.esc\",function(){if(0<Q().length)return R.events.disableBlur(),R.events.focus(),!1},!0),R.events.$on(y(R.o_win),\"keydown\",function(){r&&n&&(n=r=!1,R.$el.removeClass(\"fr-no-selection\"),R.edit.on(),R.selection.setAtEnd(R.$el.find(\".fr-selected-cell\").last().get(0)),R.selection.restore(),_())}),R.events.$on(R.$el,\"keydown\",function(e){e.shiftKey?!1===function o(e){var t=Q();if(null!=t&&0<t.length){var a,l=$(),n=e.which,r=D(1==t.length?a=t[0]:(a=R.el.querySelector(\".fr-cell-fixed\"),R.el.querySelector(\".fr-cell-handler\")),l);if(Ce.KEYCODE.ARROW_RIGHT==n){if(r.col<l[0].length-1)return N(a,l[r.row][r.col+1]),!1}else if(Ce.KEYCODE.ARROW_DOWN==n){if(r.row<l.length-1)return N(a,l[r.row+1][r.col]),!1}else if(Ce.KEYCODE.ARROW_LEFT==n){if(0<r.col)return N(a,l[r.row][r.col-1]),!1}else if(Ce.KEYCODE.ARROW_UP==n&&0<r.row)return N(a,l[r.row-1][r.col]),!1}}(e)&&setTimeout(function(){u()},0):function s(e){var t=e.which,a=R.selection.blocks();if(a.length&&(\"P\"!==(a=a[0]).tagName&&\"DIV\"!==a.tagName||(a=a.parentNode),\"TD\"==a.tagName||\"TH\"==a.tagName)){for(var l=a;l&&\"TABLE\"!=l.tagName&&l.parentNode!=R.el;)l=l.parentNode;if(l&&\"TABLE\"==l.tagName&&(Ce.KEYCODE.ARROW_LEFT==t||Ce.KEYCODE.ARROW_UP==t||Ce.KEYCODE.ARROW_RIGHT==t||Ce.KEYCODE.ARROW_DOWN==t)&&(0<Q().length&&K(),R.browser.webkit&&(Ce.KEYCODE.ARROW_UP==t||Ce.KEYCODE.ARROW_DOWN==t))){var n=R.selection.ranges(0).startContainer;if(n.nodeType==Node.TEXT_NODE&&(Ce.KEYCODE.ARROW_UP==t&&(n.previousSibling&&\"BR\"!==n.previousSibling.tagName||n.previousSibling&&\"BR\"===n.previousSibling.tagName&&n.previousSibling.previousSibling)||Ce.KEYCODE.ARROW_DOWN==t&&(n.nextSibling&&\"BR\"!==n.nextSibling.tagName||n.nextSibling&&\"BR\"===n.nextSibling.tagName&&n.nextSibling.nextSibling)))return;e.preventDefault(),e.stopPropagation();var r=$(y(l)),o=D(a,r);return Ce.KEYCODE.ARROW_UP==t?Y(o,l,r):Ce.KEYCODE.ARROW_DOWN==t&&F(o,l,r),R.selection.restore(),!1}}}(e)}),R.events.on(\"keydown\",function(e){if(!1===function l(e){if(e.which==Ce.KEYCODE.TAB){var t;if(0<Q().length)t=R.$el.find(\".fr-selected-cell\").last();else{var a=R.selection.element();\"TD\"==a.tagName||\"TH\"==a.tagName?t=y(a):a!=R.el&&(0<y(a).parentsUntil(R.$el,\"td\").length?t=y(a).parents(\"td\").first():0<y(a).parentsUntil(R.$el,\"th\").length&&(t=y(a).parents(\"th\").first()))}if(t)return e.preventDefault(),!!(0===R.selection.get().focusOffset&&0<y(R.selection.element()).parentsUntil(R.$el,\"ol, ul\").length&&(0<y(R.selection.element()).closest(\"li\").prev().length||y(R.selection.element()).is(\"li\")&&0<y(R.selection.element()).prev().length))||(K(),e.shiftKey?0<t.prev().length?q(t.prev()):0<t.closest(\"tr\").length&&0<t.closest(\"tr\").prev().length?q(t.closest(\"tr\").prev().find(\"td\").last()):0<t.closest(\"tbody\").length&&0<t.closest(\"table\").find(\"thead tr\").length&&q(t.closest(\"table\").find(\"thead tr th\").last()):0<t.next().length?q(t.next()):0<t.closest(\"tr\").length&&0<t.closest(\"tr\").next().length?q(t.closest(\"tr\").next().find(\"td\").first()):0<t.closest(\"thead\").length&&0<t.closest(\"table\").find(\"tbody tr\").length?q(t.closest(\"table\").find(\"tbody tr td\").first()):(t.addClass(\"fr-selected-cell\"),g(\"below\"),_(),q(t.closest(\"tr\").next().find(\"td\").first())),R.selection.restore(),!1)}}(e))return!1;var t=Q();if(0<t.length){if(0<t.length&&R.keys.ctrlKey(e)&&e.which==Ce.KEYCODE.A)return _(),R.popups.isVisible(\"table.edit\")&&R.popups.hide(\"table.edit\"),t=[],!0;if(e.which==Ce.KEYCODE.ESC&&R.popups.isVisible(\"table.edit\"))return _(),R.popups.hide(\"table.edit\"),e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!(t=[]);if(1<t.length&&(e.which==Ce.KEYCODE.BACKSPACE||e.which==Ce.KEYCODE.DELETE)){R.undo.saveStep();for(var a=0;a<t.length;a++)y(t[a]).html(\"<br>\"),a==t.length-1&&y(t[a]).prepend(Ce.MARKERS);return R.selection.restore(),R.undo.saveStep(),!(t=[])}if(1<t.length&&e.which!=Ce.KEYCODE.F10&&!R.keys.isBrowserAction(e))return e.preventDefault(),!(t=[])}else if(!(t=[])===function n(e){if(e.altKey&&e.which==Ce.KEYCODE.SPACE){var t,a=R.selection.element();if(\"TD\"==a.tagName||\"TH\"==a.tagName?t=a:0<y(a).closest(\"td\").length?t=y(a).closest(\"td\").get(0):0<y(a).closest(\"th\").length&&(t=y(a).closest(\"th\").get(0)),t)return e.preventDefault(),N(t,t),u(),!1}}(e))return!1},!0);var t=[];R.events.on(\"html.beforeGet\",function(){t=Q();for(var e=0;e<t.length;e++)t[e].className=(t[e].className||\"\").replace(/fr-selected-cell/g,\"\")}),R.events.on(\"html.afterGet\",function(){for(var e=0;e<t.length;e++)t[e].className=(t[e].className?t[e].className.trim()+\" \":\"\")+\"fr-selected-cell\";t=[]}),c(!0),p(!0)}R.events.on(\"destroy\",Z)},insert:function le(e,t){var a,l,n=\"<table \"+(R.opts.tableDefaultWidth?'style=\"width: '+R.opts.tableDefaultWidth+';\" ':\"\")+'class=\"fr-inserted-table\"><tbody>',r=100/t;for(a=0;a<e;a++){for(n+=\"<tr>\",l=0;l<t;l++)n+=\"<td\"+(R.opts.tableDefaultWidth?' style=\"width: '+r.toFixed(4)+'%;\"':\"\")+\">\",0===a&&0===l&&(n+=Ce.MARKERS),n+=\"<br></td>\";n+=\"</tr>\"}if(n+=\"</tbody></table>\",R.opts.trackChangesEnabled){R.edit.on(),R.events.focus(!0),R.selection.restore(),R.undo.saveStep(),R.markers.insert(),R.html.wrap();var o=R.$el.find(\".fr-marker\");R.node.isLastSibling(o)&&o.parent().hasClass(\"fr-deletable\")&&o.insertAfter(o.parent()),o.replaceWith(n),R.selection.clear()}else R.html.insert(n);R.selection.restore();var s=R.$el.find(\".fr-inserted-table\");s.removeClass(\"fr-inserted-table\"),R.events.trigger(\"table.inserted\",[s.get(0)])},remove:h,insertRow:g,deleteRow:function ne(){var e=ee();if(0<e.length){var t,a,l,n=$(),r=M(n);if(null==r)return;if(0===r.min_i&&r.max_i==n.length-1)h();else{for(t=r.max_i;t>=r.min_i;t--){for(l=y(e.find(\"tr\").not(e.find(\"> table tr\")).get(t)),a=0;a<n[t].length;a++)if(0===a||n[t][a]!=n[t][a-1]){var o=y(n[t][a]);if(1<parseInt(o.attr(\"rowspan\"),10)){var s=parseInt(o.attr(\"rowspan\"),10)-1;1==s?o.removeAttr(\"rowspan\"):o.attr(\"rowspan\",s)}if(t<n.length-1&&n[t][a]==n[t+1][a]&&(0===t||n[t][a]!=n[t-1][a])){for(var i=n[t][a],f=a;0<f&&n[t][f]==n[t][f-1];)f--;0===f?y(e.find(\"tr\").not(e.find(\"> table tr\")).get(t+1)).prepend(i):y(n[t+1][f-1])[0].parentNode&&y(n[t+1][f-1])[0].insertAdjacentElement(\"afterend\",i)}}var c=l.parent();l.remove(),0===c.find(\"tr\").length&&c.remove(),n=$(e)}w(0,n.length-1,0,n[0].length-1,e),0<r.min_i?R.selection.setAtEnd(n[r.min_i-1][0]):R.selection.setAtEnd(n[0][0]),R.selection.restore(),R.popups.hide(\"table.edit\")}}},insertColumn:function re(f){var e=ee();if(0<e.length){var c,d=$(),t=M(d);c=\"before\"==f?t.min_j:t.max_j;var a,p=100/d[0].length,h=100/(d[0].length+1);e.find(\"th, td\").each(function(){(a=y(this)).data(\"old-width\",a.outerWidth()/e.outerWidth()*100)}),e.find(\"tr\").not(e.find(\"> table tr\")).each(function(e){for(var t,a=y(this),l=0,n=0;l-1<c;){if(!(t=a.find(\"> th, > td\").get(n))){t=null;break}t==d[e][l]?(l+=parseInt(y(t).attr(\"colspan\"),10)||1,n++):(l+=parseInt(y(d[e][l]).attr(\"colspan\"),10)||1,\"after\"==f&&(t=0===n?-1:a.find(\"> th, > td\").get(n-1)))}var r=y(t);if(\"after\"==f&&c<l-1||\"before\"==f&&0<c&&d[e][c]==d[e][c-1]){if(0===e||0<e&&d[e][c]!=d[e-1][c]){var o=parseInt(r.attr(\"colspan\"),10)+1;r.attr(\"colspan\",o),r.css(\"width\",(r.data(\"old-width\")*h/p+h).toFixed(4)+\"%\"),r.removeData(\"old-width\")}}else{var s,i=(r.get(0)||\"\").tagName;s=0<a.find(\"th\").length&&\"TH\"===i?'<th style=\"width: '.concat(h.toFixed(4),'%;\"><br></th>'):'<td style=\"'.concat(r.attr(\"style\"),\";width: \").concat(h.toFixed(4),'%\"><br></td>'),-1==t?a.prepend(s):null==t?a.append(s):\"before\"==f?r.before(s):\"after\"==f&&r[0].parentNode&&r[0].insertAdjacentHTML(\"afterend\",s)}}),e.find(\"th, td\").each(function(){(a=y(this)).data(\"old-width\")&&(a.css(\"width\",(a.data(\"old-width\")*h/p).toFixed(4)+\"%\"),a.removeData(\"old-width\"))}),R.popups.isVisible(\"table.edit\")&&u()}},deleteColumn:function oe(){var e=ee();if(0<e.length){var t,a,l,n=$(),r=M(n);if(null==r)return;if(0===r.min_j&&r.max_j==n[0].length-1)h();else{var o=0;for(t=0;t<n.length;t++)for(a=0;a<n[0].length;a++)(l=y(n[t][a])).hasClass(\"fr-selected-cell\")||(l.data(\"old-width\",l.outerWidth()/e.outerWidth()*100),(a<r.min_j||a>r.max_j)&&(o+=l.outerWidth()/e.outerWidth()*100));for(o/=n.length,a=r.max_j;a>=r.min_j;a--)for(t=0;t<n.length;t++)if(0===t||n[t][a]!=n[t-1][a])if(l=y(n[t][a]),1<(parseInt(l.attr(\"colspan\"),10)||1)){var s=parseInt(l.attr(\"colspan\"),10)-1;1==s?l.removeAttr(\"colspan\"):l.attr(\"colspan\",s),l.css(\"width\",(100*(l.data(\"old-width\")-G(a,n))/o).toFixed(4)+\"%\"),l.removeData(\"old-width\")}else{var i=y(l.parent().get(0));l.remove(),0===i.find(\"> th, > td\").length&&(0===i.prev().length||0===i.next().length||i.prev().find(\"> th[rowspan], > td[rowspan]\").length<i.prev().find(\"> th, > td\").length)&&i.remove()}w(0,n.length-1,0,n[0].length-1,e),0<r.min_j?R.selection.setAtEnd(n[r.min_i][r.min_j-1]):R.selection.setAtEnd(n[r.min_i][0]),R.selection.restore(),R.popups.hide(\"table.edit\"),e.find(\"th, td\").each(function(){(l=y(this)).data(\"old-width\")&&(l.css(\"width\",(100*l.data(\"old-width\")/o).toFixed(4)+\"%\"),l.removeData(\"old-width\"))})}}},mergeCells:function se(){if(1<Q().length&&(0===R.$el.find(\"th.fr-selected-cell\").length||0===R.$el.find(\"td.fr-selected-cell\").length)){E();var e,t,a=M($());if(null==a)return;var l=R.$el.find(\".fr-selected-cell\"),n=y(l[0]),r=n.parent().find(\".fr-selected-cell\"),o=n.closest(\"table\"),s=n.html(),i=0;for(e=0;e<r.length;e++)i+=y(r[e]).outerWidth();for(n.css(\"width\",Math.min(100,i/o.outerWidth()*100).toFixed(4)+\"%\"),a.min_j<a.max_j&&n.attr(\"colspan\",a.max_j-a.min_j+1),a.min_i<a.max_i&&n.attr(\"rowspan\",a.max_i-a.min_i+1),e=1;e<l.length;e++)\"<br>\"!=(t=y(l[e])).html()&&\"\"!==t.html()&&(s+=\"<br>\".concat(t.html())),t.remove();n.html(s),R.selection.setAtEnd(n.get(0)),R.selection.restore(),R.toolbar.enable(),m(a.min_i,a.max_i,o);var f=o.find(\"tr:empty\");for(e=f.length-1;0<=e;e--)y(f[e]).remove();b(a.min_j,a.max_j,o),u()}},splitCellVertically:function ie(){if(1==Q().length){var e=R.$el.find(\".fr-selected-cell\"),t=parseInt(e.attr(\"colspan\"),10)||1,a=e.parent().outerWidth(),l=e.outerWidth(),n=e.clone().html(\"<br>\"),r=$(),o=D(e.get(0),r);if(1<t){var s=Math.ceil(t/2);l=X(o.col,o.col+s-1,r)/a*100;var i=X(o.col+s,o.col+t-1,r)/a*100;1<s?e.attr(\"colspan\",s):e.removeAttr(\"colspan\"),1<t-s?n.attr(\"colspan\",t-s):n.removeAttr(\"colspan\"),e.css(\"width\",l.toFixed(4)+\"%\"),n.css(\"width\",i.toFixed(4)+\"%\")}else{var f;for(f=0;f<r.length;f++)if(0===f||r[f][o.col]!=r[f-1][o.col]){var c=y(r[f][o.col]);if(!c.is(e)){var d=(parseInt(c.attr(\"colspan\"),10)||1)+1;c.attr(\"colspan\",d)}}l=l/a*100/2,e.css(\"width\",\"\".concat(l.toFixed(4),\"%\")),n.css(\"width\",\"\".concat(l.toFixed(4),\"%\"))}e[0].parentNode&&e[0].insertAdjacentElement(\"afterend\",n[0]),_(),R.popups.hide(\"table.edit\")}},splitCellHorizontally:function fe(){if(1==Q().length){var e=R.$el.find(\".fr-selected-cell\"),t=e.parent(),a=e.closest(\"table\"),l=parseInt(e.attr(\"rowspan\"),10),n=$(),r=D(e.get(0),n),o=e.clone().html(\"<br>\");if(1<l){var s=Math.ceil(l/2);1<s?e.attr(\"rowspan\",s):e.removeAttr(\"rowspan\"),1<l-s?o.attr(\"rowspan\",l-s):o.removeAttr(\"rowspan\");for(var i=r.row+s,f=0===r.col?r.col:r.col-1;0<=f&&(n[i][f]==n[i][f-1]||0<i&&n[i][f]==n[i-1][f]);)f--;-1==f?y(a.find(\"tr\").not(a.find(\"> table tr\")).get(i)).prepend(o):y(n[i][f])[0].parentNode&&y(n[i][f])[0].insertAdjacentElement(\"afterend\",o[0])}else{var c,d=y(document.createElement(\"tr\")).append(o);for(c=0;c<n[0].length;c++)if(0===c||n[r.row][c]!=n[r.row][c-1]){var p=y(n[r.row][c]);p.is(e)||p.attr(\"rowspan\",(parseInt(p.attr(\"rowspan\"),10)||1)+1)}t[0].parentNode&&t[0].insertAdjacentElement(\"afterend\",d[0])}_(),R.popups.hide(\"table.edit\")}},addHeader:function ce(){var e=ee();if(0<e.length&&0===e.find(\"> th\").length){var t,a=\"<thead><tr>\",l=0;for(l=e.find(\"tr\").first().find(\"> th\").length,e.find(\"tr\").first().find(\"> td\").each(function(){var e=y(this);l+=parseInt(e.attr(\"colspan\"),10)||1}),t=0;t<l;t++)a+=\"<th><br></th>\";a+=\"</tr></thead>\",e.prepend(a),u()}},addFooter:function de(){var e=ee();if(0<e.length&&0===e.find(\"tfoot\").length){var t,a=\"<tfoot><tr>\",l=0,n=\"> td\";for(0<e.find(\"thead\").length&&(n=\"> th\"),e.find(\"tr\").first().find(n).each(function(){var e=y(this);l+=parseInt(e.attr(\"colspan\"),10)||1}),t=0;t<l;t++)a+=\"<td><br></td>\";a+=\"</tr></tfoot>\",e.append(a),u()}},removeHeader:function pe(){var e=ee(),t=e.find(\"> thead\");if(0<(t=y(t)).length)if(0===e.find(\"tbody tr\").length)h();else if(t.remove(),0<Q().length)u();else{R.popups.hide(\"table.edit\");var a=e.find(\"tbody tr\").first().find(\"td\").first().get(0);a&&(R.selection.setAtEnd(a),R.selection.restore())}},removeFooter:function he(){var e=ee(),t=e.find(\"tfoot\");if(0<t.length)if(0===e.find(\"tbody tr\").length)h();else if(t.remove(),0<Q().length)u();else{R.popups.hide(\"table.edit\");var a=e.find(\"tbody tr\").first().find(\"td\").first().get(0);a&&(R.selection.setAtEnd(a),R.selection.restore())}},setBackground:t,showInsertPopup:function ue(){var e=R.$tb.find('.fr-command[data-cmd=\"insertTable\"]'),t=R.popups.get(\"table.insert\");if(t||(t=c()),!t.hasClass(\"fr-active\")){R.popups.refresh(\"table.insert\"),R.popups.setContainer(\"table.insert\",R.$tb);var a=R.button.getPosition(e),l=a.left,n=a.top;R.popups.show(\"table.insert\",l,n,e.outerHeight())}},showEditPopup:u,showColorsPopup:s,back:function ge(){0<Q().length?u():(R.popups.hide(\"table.insert\"),R.toolbar.showInline())},verticalAlign:function be(e){R.$el.find(\".fr-selected-cell\").css(\"vertical-align\",e)},horizontalAlign:function me(e){R.$el.find(\".fr-selected-cell\").css(\"text-align\",e)},applyStyle:function ve(e,t,a,l){if(0<t.length){if(R.opts.useClasses||(\"TABLE\"===t.get(0).tagName?function r(e,t){var a=e.childNodes;if(0<a.length)for(var l=0;l<a.length;l++)\"TD\"===a[l].tagName?\"fr-dashed-borders\"===t||\"fr-highlighted\"===t||\"fr-thick\"===t?C(a[l]):\"fr-alternate-rows\"===t&&a[l].style.removeProperty(\"background-color\"):r(a[l],t)}(t.get(0),e):C(t.get(0))),!a){var n=Object.keys(l);n.splice(n.indexOf(e),1),t.removeClass(n.join(\" \"))}t.toggleClass(e)}},selectedTable:ee,selectedCells:Q,customColor:function we(){var e=R.popups.get(\"table.colors\").find(\".fr-table-colors-hex-layer input\");e.length&&t(e.val())},selectCells:N}},Ce.DefineIcon(\"insertTable\",{NAME:\"table\",SVG_KEY:\"insertTable\"}),Ce.RegisterCommand(\"insertTable\",{title:\"Insert Table\",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible(\"table.insert\")?(this.$el.find(\".fr-marker\").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide(\"table.insert\")):this.table.showInsertPopup()},plugin:\"table\"}),Ce.RegisterCommand(\"tableInsert\",{callback:function(e,t,a){this.table.insert(t,a),this.popups.hide(\"table.insert\")}}),Ce.DefineIcon(\"tableHeader\",{NAME:\"header\",FA5NAME:\"heading\",SVG_KEY:\"tableHeader\"}),Ce.RegisterCommand(\"tableHeader\",{title:\"Table Header\",focus:!1,toggle:!0,callback:function(){this.popups.get(\"table.edit\").find('.fr-command[data-cmd=\"tableHeader\"]').hasClass(\"fr-active\")?this.table.removeHeader():this.table.addHeader()},refresh:function(e){var t=this.table.selectedTable();0<t.length&&(0===t.find(\"> thead\").length?e.removeClass(\"fr-active\").attr(\"aria-pressed\",!1):e.addClass(\"fr-active\").attr(\"aria-pressed\",!0))}}),Ce.DefineIcon(\"tableFooter\",{NAME:\"table\",FA5NAME:\"table\",SVG_KEY:\"tableFooter\"}),Ce.RegisterCommand(\"tableFooter\",{title:\"Table Footer\",focus:!1,toggle:!0,callback:function(){this.popups.get(\"table.edit\").find('.fr-command[data-cmd=\"tableFooter\"]').hasClass(\"fr-active\")?this.table.removeFooter():this.table.addFooter()},refresh:function(e){var t=this.table.selectedTable();0<t.length&&(0===t.find(\"tfoot\").length?e.removeClass(\"fr-active\").attr(\"aria-pressed\",!1):e.addClass(\"fr-active\").attr(\"aria-pressed\",!0))}}),Ce.DefineIcon(\"tableRows\",{NAME:\"bars\",SVG_KEY:\"row\"}),Ce.RegisterCommand(\"tableRows\",{type:\"dropdown\",focus:!1,title:\"Row\",options:{above:\"Insert row above\",below:\"Insert row below\",\"delete\":\"Delete row\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableRows.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableRows\" data-param1=\"'+a+'\" title=\"'+this.language.translate(t[a])+'\">'+this.language.translate(t[a])+\"</a></li>\");return e+=\"</ul>\"},callback:function(e,t){\"above\"==t||\"below\"==t?this.table.insertRow(t):this.table.deleteRow()}}),Ce.DefineIcon(\"tableColumns\",{NAME:\"bars fa-rotate-90\",SVG_KEY:\"columns\"}),Ce.RegisterCommand(\"tableColumns\",{type:\"dropdown\",focus:!1,title:\"Column\",options:{before:\"Insert column before\",after:\"Insert column after\",\"delete\":\"Delete column\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableColumns.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableColumns\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(t[a]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){\"before\"==t||\"after\"==t?this.table.insertColumn(t):this.table.deleteColumn()}}),Ce.DefineIcon(\"tableCells\",{NAME:\"square-o\",FA5NAME:\"square\",SVG_KEY:\"cellOptions\"}),Ce.RegisterCommand(\"tableCells\",{type:\"dropdown\",focus:!1,title:\"Cell\",options:{merge:\"Merge cells\",\"vertical-split\":\"Vertical split\",\"horizontal-split\":\"Horizontal split\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableCells.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableCells\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(t[a]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){\"merge\"==t?this.table.mergeCells():\"vertical-split\"==t?this.table.splitCellVertically():this.table.splitCellHorizontally()},refreshOnShow:function(e,t){1<this.$el.find(\".fr-selected-cell\").length?(t.find('a[data-param1=\"vertical-split\"]').addClass(\"fr-disabled\").attr(\"aria-disabled\",!0),t.find('a[data-param1=\"horizontal-split\"]').addClass(\"fr-disabled\").attr(\"aria-disabled\",!0),t.find('a[data-param1=\"merge\"]').removeClass(\"fr-disabled\").attr(\"aria-disabled\",!1)):(t.find('a[data-param1=\"merge\"]').addClass(\"fr-disabled\").attr(\"aria-disabled\",!0),t.find('a[data-param1=\"vertical-split\"]').removeClass(\"fr-disabled\").attr(\"aria-disabled\",!1),t.find('a[data-param1=\"horizontal-split\"]').removeClass(\"fr-disabled\").attr(\"aria-disabled\",!1))}}),Ce.DefineIcon(\"tableRemove\",{NAME:\"trash\",SVG_KEY:\"removeTable\"}),Ce.RegisterCommand(\"tableRemove\",{title:\"Remove Table\",focus:!1,callback:function(){this.table.remove()}}),Ce.DefineIcon(\"tableStyle\",{NAME:\"paint-brush\",SVG_KEY:\"tableStyle\"}),Ce.RegisterCommand(\"tableStyle\",{title:\"Table Style\",type:\"dropdown\",focus:!1,html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.tableStyles;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableStyle\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(t[a]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.table.applyStyle(t,this.$el.find(\".fr-selected-cell\").closest(\"table\"),this.opts.tableMultipleStyles,this.opts.tableStyles)},refreshOnShow:function(e,t){var a=this.$,l=this.$el.find(\".fr-selected-cell\").closest(\"table\");l&&t.find(\".fr-command\").each(function(){var e=a(this).data(\"param1\"),t=l.hasClass(e);a(this).toggleClass(\"fr-active\",t).attr(\"aria-selected\",t)})}}),Ce.DefineIcon(\"tableCellBackground\",{NAME:\"tint\",SVG_KEY:\"cellBackground\"}),Ce.RegisterCommand(\"tableCellBackground\",{title:\"Cell Background\",focus:!1,popup:!0,callback:function(){this.table.showColorsPopup()}}),Ce.RegisterCommand(\"tableCellBackgroundColor\",{undo:!0,focus:!1,callback:function(e,t){this.table.setBackground(t)}}),Ce.DefineIcon(\"tableBack\",{NAME:\"arrow-left\",SVG_KEY:\"back\"}),Ce.RegisterCommand(\"tableBack\",{title:\"Back\",undo:!1,focus:!1,back:!0,callback:function(){this.table.back()},refresh:function(e){0!==this.table.selectedCells().length||this.opts.toolbarInline?(e.removeClass(\"fr-hidden\"),e.next(\".fr-separator\").removeClass(\"fr-hidden\")):(e.addClass(\"fr-hidden\"),e.next(\".fr-separator\").addClass(\"fr-hidden\"))}}),Ce.DefineIcon(\"tableCellVerticalAlign\",{NAME:\"arrows-v\",FA5NAME:\"arrows-alt-v\",SVG_KEY:\"verticalAlignMiddle\"}),Ce.RegisterCommand(\"tableCellVerticalAlign\",{type:\"dropdown\",focus:!1,title:\"Vertical Align\",options:{Top:\"Align Top\",Middle:\"Align Middle\",Bottom:\"Align Bottom\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableCellVerticalAlign.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableCellVerticalAlign\" data-param1=\"'.concat(a.toLowerCase(),'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(a),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.table.verticalAlign(t)},refreshOnShow:function(e,t){t.find('.fr-command[data-param1=\"'+this.$el.find(\".fr-selected-cell\").css(\"vertical-align\")+'\"]').addClass(\"fr-active\").attr(\"aria-selected\",!0)}}),Ce.DefineIcon(\"tableCellHorizontalAlign\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),Ce.DefineIcon(\"align-left\",{NAME:\"align-left\",SVG_KEY:\"alignLeft\"}),Ce.DefineIcon(\"align-right\",{NAME:\"align-right\",SVG_KEY:\"alignRight\"}),Ce.DefineIcon(\"align-center\",{NAME:\"align-center\",SVG_KEY:\"alignCenter\"}),Ce.DefineIcon(\"align-justify\",{NAME:\"align-justify\",SVG_KEY:\"alignJustify\"}),Ce.RegisterCommand(\"tableCellHorizontalAlign\",{type:\"dropdown\",focus:!1,title:\"Horizontal Align\",options:{left:\"Align Left\",center:\"Align Center\",right:\"Align Right\",justify:\"Align Justify\"},html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=Ce.COMMANDS.tableCellHorizontalAlign.options;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command fr-title\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableCellHorizontalAlign\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.icon.create(\"align-\".concat(a)),'<span class=\"fr-sr-only\">').concat(this.language.translate(t[a]),\"</span></a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.table.horizontalAlign(t)},refresh:function(e){var t=this.table.selectedCells(),a=this.$;t.length&&e.find(\"> *\").first().replaceWith(this.icon.create(\"align-\".concat(this.helpers.getAlignment(a(t[0])))))},refreshOnShow:function(e,t){t.find('.fr-command[data-param1=\"'+this.helpers.getAlignment(this.$el.find(\".fr-selected-cell\").first())+'\"]').addClass(\"fr-active\").attr(\"aria-selected\",!0)}}),Ce.DefineIcon(\"tableCellStyle\",{NAME:\"magic\",SVG_KEY:\"cellStyle\"}),Ce.RegisterCommand(\"tableCellStyle\",{title:\"Cell Style\",type:\"dropdown\",focus:!1,html:function(){var e='<ul class=\"fr-dropdown-list\" role=\"presentation\">',t=this.opts.tableCellStyles;for(var a in t)t.hasOwnProperty(a)&&(e+='<li role=\"presentation\"><a class=\"fr-command\" tabIndex=\"-1\" role=\"option\" data-cmd=\"tableCellStyle\" data-param1=\"'.concat(a,'\" title=\"').concat(this.language.translate(t[a]),'\">').concat(this.language.translate(t[a]),\"</a></li>\"));return e+=\"</ul>\"},callback:function(e,t){this.table.applyStyle(t,this.$el.find(\".fr-selected-cell\"),this.opts.tableCellMultipleStyles,this.opts.tableCellStyles)},refreshOnShow:function(e,t){var a=this.$,l=this.$el.find(\".fr-selected-cell\").first();l&&t.find(\".fr-command\").each(function(){var e=a(this).data(\"param1\"),t=l.hasClass(e);a(this).toggleClass(\"fr-active\",t).attr(\"aria-selected\",t)})}}),Ce.RegisterCommand(\"tableCellBackgroundCustomColor\",{title:\"OK\",undo:!0,callback:function(){this.table.customColor()}}),Ce.DefineIcon(\"tableColorRemove\",{NAME:\"eraser\",SVG_KEY:\"remove\"})});", "/*!\n * froala_editor v4.0.19 (https://www.froala.com/wysiwyg-editor)\n * License https://froala.com/wysiwyg-editor/terms/\n * Copyright 2014-2023 Froala Labs\n */\n\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(require(\"froala-editor\")):\"function\"==typeof define&&define.amd?define([\"froala-editor\"],t):t(e.FroalaEditor)}(this,function(r){\"use strict\";(r=r&&r.hasOwnProperty(\"default\")?r[\"default\"]:r).URLRegEx=\"(^| |\\\\u00A0)(\".concat(r.LinkRegEx,\"|([a-z0-9+-_.]{1,}@[a-z0-9+-_.]{1,}\\\\.[a-z0-9+-_]{1,}))$\"),r.PLUGINS.url=function(f){var s=f.$,o=null;function t(e,t,n){for(var r=\"\";n.length&&\".\"==n[n.length-1];)r+=\".\",n=n.substring(0,n.length-1);var a=n;if(f.opts.linkConvertEmailAddress)f.helpers.isEmail(a)&&!/^mailto:.*/i.test(a)&&(a=\"mailto:\".concat(a));else if(f.helpers.isEmail(a))return t+n;return/^((http|https|ftp|ftps|mailto|tel|sms|notes|data)\\:)/i.test(a)||(a=\"//\".concat(a)),(t||\"\")+\"<a\".concat(f.opts.linkAlwaysBlank?' target=\"_blank\"':\"\").concat(o?' rel=\"'.concat(o,'\"'):\"\",' data-fr-linked=\"true\" href=\"').concat(a,'\">').concat(n.replace(/&amp;/g,\"&\").replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\"),\"</a>\").concat(r)}var p=function p(){return new RegExp(r.URLRegEx,\"gi\")};function u(e){return f.opts.linkAlwaysNoFollow&&(o=\"nofollow\"),f.opts.linkAlwaysBlank&&(f.opts.linkNoOpener&&(o?o+=\" noopener\":o=\"noopener\"),f.opts.linkNoReferrer&&(o?o+=\" noreferrer\":o=\"noreferrer\")),e.replace(p(),t)}function c(e){var t=e.split(\" \");return t[t.length-1]}function n(){var e=f.selection.ranges(0),t=e.startContainer;if(t.nodeType!==Node.TEXT_NODE)return!1;if(!t||e.startOffset!==(t.textContent||\"\").length){f.markers.insert();var n=f.$el.find(\".fr-marker\"),r=t.textContent.match(/(^| |\\u00A0)(((([a-z\\u0080-\\u009f\\u00a1-\\uffff0-9-_\\.]{1,})(\\.(com|net|org|edu|mil|gov|co|biz|info|me|dev)))|((ftp|http|https):\\/\\/[a-z\\u0080-\\u009f\\u00a1-\\uffff0-9-_\\.]{1,})|(www\\.[a-z\\u0080-\\u009f\\u00a1-\\uffff0-9-_\\.]{1,}\\.[a-z0-9-]{2,24})|((ftp|http|https):\\/\\/[\\u0021-\\uffff]{1,}@[a-z\\u0080-\\u009f\\u00a1-\\uffff0-9-_\\.]{1,}))((:[0-9]{1,5})|)(((\\/|\\?|#)[a-z\\u00a1-\\uffff0-9@?\\|!^=%&amp;\\/~+#-\\'*-_{}]*)|())|([a-z0-9+-_.]{1,}@[a-z0-9+-_.]{1,}\\.[a-z0-9+-_]{1,}))$/gi);if(n.remove(),!r)return!1}if(function l(e){return!!e&&(\"A\"===e.tagName||!(!e.parentNode||e.parentNode==f.el)&&l(e.parentNode))}(t))return!1;if(p().test(c(t.textContent))){s(t).before(u(t.textContent));var a=s(t.parentNode).find(\"a[data-fr-linked]\");a.removeAttr(\"data-fr-linked\"),t.parentNode.removeChild(t),f.events.trigger(\"url.linked\",[a.get(0)])}else if(t.textContent.split(\" \").length<=2&&t.previousSibling&&\"A\"===t.previousSibling.tagName){var o=t.previousSibling.innerText+t.textContent;if(p().test(c(o))){var i=(new DOMParser).parseFromString(u(o),\"text/html\").body.childNodes;t.parentNode.replaceChild(i[0],t.previousSibling),i.length&&s(t).before(i[0]),t.parentNode.removeChild(t)}}}return{_init:function e(){f.events.on(\"keypress\",function(e){!f.selection.isCollapsed()||\")\"!=e.key&&\"(\"!=e.key||n()},!0),f.events.on(\"keydown\",function(e){var t=e.which;!f.selection.isCollapsed()||t!=r.KEYCODE.ENTER&&t!=r.KEYCODE.SPACE||n()},!0),f.events.on(\"paste.beforeCleanup\",function(e){if(f.helpers.isURL(e)&&!f.$el[0].getAttribute(\"plainpaste\")){var t=null;return f.opts.linkAlwaysBlank&&(f.opts.linkNoOpener&&(t?t+=\" noopener\":t=\"noopener\"),f.opts.linkNoReferrer&&(t?t+=\" noreferrer\":t=\"noreferrer\")),\"<a\".concat(f.opts.linkAlwaysBlank?' target=\"_blank\"':\"\").concat(t?' rel=\"'.concat(t,'\"'):\"\",' href=\"').concat(e,'\" >').concat(e,\"</a>\")}if(f.$el[0].getAttribute(\"plainpaste\"))return function n(e){if(\"string\"==typeof e)return e.replace(/(?:(?:https?|ftp|file):\\/\\/|www\\.|ftp\\.)(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#\\/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#\\/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#\\/%=~_|$])/gim,u).replace(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)/gim,u)}(e)})}}}});", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {preact.ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor == undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tcommitQueue = [],\n\t\trefQueue = [];\n\n\tif (component._parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {Component} a\n * @param {Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/i, '$1'));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (\n\t\t\tname.toLowerCase() in dom ||\n\t\t\tname === 'onFocusOut' ||\n\t\t\tname === 'onFocusIn'\n\t\t)\n\t\t\tname = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue._attached = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == 'http://www.w3.org/2000/svg') {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e._dispatched == null) {\n\t\t\t\te._dispatched = eventClock++;\n\n\t\t\t\t// When `e._dispatched` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e._dispatched < eventHandler._attached) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {Set<Component> | null} */\n\t\t\t\tlet subs = new Set();\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\t\tsubs = null;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.add(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tif (subs) {\n\t\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR, INSERT_VNODE, MATCHED } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\tnewParentVNode._nextDom = oldDom;\n\tconstructNewChildrenArray(newParentVNode, renderResult, oldChildren);\n\toldDom = newParentVNode._nextDom;\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (childVNode == null) continue;\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == null && newDom != null) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (\n\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\tchildVNode._nextDom !== undefined\n\t\t) {\n\t\t\t// Since Fragments or components that return Fragment like VNodes can\n\t\t\t// contain multiple DOM nodes as the same level, continue the diff from\n\t\t\t// the sibling of last DOM child of this child VNode\n\t\t\toldDom = childVNode._nextDom;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because it\n\t\t// is only used by `diffChildren` to determine where to resume the diff\n\t\t// after diffing Components and Fragments. Once we store it the nextDOM\n\t\t// local var, we can clean up the property. Also prevents us hanging on to\n\t\t// DOM nodes that may have been unmounted.\n\t\tchildVNode._nextDom = undefined;\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\t// TODO: With new child diffing algo, consider alt ways to diff Fragments.\n\t// Such as dropping oldDom and moving fragments in place\n\t//\n\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t// _nextDom property to the nextSibling of its last child DOM node.\n\t//\n\t// `oldDom` contains the correct value here because if the last child\n\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t// node's nextSibling.\n\tnewParentVNode._nextDom = oldDom;\n\tnewParentVNode._dom = firstChildDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(newParentVNode, renderResult, oldChildren) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tconst newChildrenLength = renderResult.length;\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t\tcontinue;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode.constructor === undefined && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tconst matchingIndex = (childVNode._index = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t));\n\n\t\toldVNode = null;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == null || oldVNode._original === null;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\t// When we move elements around i.e. [0, 1, 2] --> [1, 0, 2]\n\t\t\t// --> we diff 1, we find it at position 1 while our skewed index is 0 and our skew is 0\n\t\t\t//     we set the skew to 1 as we found an offset.\n\t\t\t// --> we diff 0, we find it at position 0 while our skewed index is at 2 and our skew is 1\n\t\t\t//     this makes us increase the skew again.\n\t\t\t// --> we diff 2, we find it at position 2 while our skewed index is at 4 and our skew is 2\n\t\t\t//\n\t\t\t// this becomes an optimization question where currently we see a 1 element offset as an insertion\n\t\t\t// or deletion i.e. we optimize for [0, 1, 2] --> [9, 0, 1, 2]\n\t\t\t// while a more than 1 offset we see as a swap.\n\t\t\t// We could probably build heuristics for having an optimized course of action here as well, but\n\t\t\t// might go at the cost of some bytes.\n\t\t\t//\n\t\t\t// If we wanted to optimize for i.e. only swaps we'd just do the last two code-branches and have\n\t\t\t// only the first item be a re-scouting and all the others fall in their skewed counter-part.\n\t\t\t// We could also further optimize for swaps\n\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\tskew--;\n\t\t\t} else if (matchingIndex == skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else {\n\t\t\t\tif (matchingIndex > skewedIndex) {\n\t\t\t\t\tskew--;\n\t\t\t\t} else {\n\t\t\t\t\tskew++;\n\t\t\t\t}\n\n\t\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t\t// match the new skew index (i + new skew)\n\t\t\t\t// In the former two branches we know that it matches after skewing\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != null && (oldVNode._flags & MATCHED) === 0) {\n\t\t\t\tif (oldVNode._dom == newParentVNode._nextDom) {\n\t\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tif (oldDom && parentVNode.type && !parentDom.contains(oldDom)) {\n\t\t\toldDom = getDomSibling(parentVNode);\n\t\t}\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || null);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != null && oldDom.nodeType === 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\tlet shouldSearch =\n\t\tremainingOldChildren >\n\t\t(oldVNode != null && (oldVNode._flags & MATCHED) === 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) === 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n", "import {\n\tEMPTY_OBJ,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tRESET_MODE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\t\t\tconst isClassComponent =\n\t\t\t\t'prototype' in newType && newType.prototype.render;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif (isClassComponent) {\n\t\t\t\t\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (isClassComponent && c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (isClassComponent && newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tisClassComponent &&\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\t((c.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.some(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (isClassComponent && c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif (isClassComponent) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (isClassComponent && !isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnamespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t: MODE_SUSPENDED;\n\n\t\t\t\twhile (oldDom && oldDom.nodeType === 8 && oldDom.nextSibling) {\n\t\t\t\t\toldDom = oldDom.nextSibling;\n\t\t\t\t}\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tnamespace,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\troot._nextDom = undefined;\n\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {string} namespace Current namespace of the DOM node (HTML, SVG, or MathML)\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tnamespace,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting namespaces when descending through the tree.\n\tif (nodeType === 'svg') namespace = 'http://www.w3.org/2000/svg';\n\telse if (nodeType === 'math')\n\t\tnamespace = 'http://www.w3.org/1998/Math/MathML';\n\telse if (!namespace) namespace = 'http://www.w3.org/1999/xhtml';\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tvalue &&\n\t\t\t\t'setAttribute' in value === !!nodeType &&\n\t\t\t\t(nodeType ? value.localName === nodeType : value.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = value;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = document.createElementNS(\n\t\t\tnamespace,\n\t\t\tnodeType,\n\t\t\tnewProps.is && newProps\n\t\t);\n\n\t\t// we are creating a new node, so we can assume this is a new subtree (in\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tif (isHydrating) {\n\t\t\tif (options._hydrationMismatch)\n\t\t\t\toptions._hydrationMismatch(newVNode, excessDomChildren);\n\t\t\tisHydrating = false;\n\t\t}\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != null) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (!(i in newProps)) {\n\t\t\t\tif (\n\t\t\t\t\t(i == 'value' && 'defaultValue' in newProps) ||\n\t\t\t\t\t(i == 'checked' && 'defaultChecked' in newProps)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsetProperty(dom, i, null, value, namespace);\n\t\t\t}\n\t\t}\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i == 'value') {\n\t\t\t\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnodeType === 'foreignObject'\n\t\t\t\t\t? 'http://www.w3.org/1999/xhtml'\n\t\t\t\t\t: namespace,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tremoveNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// As above, don't diff props during hydration\n\t\tif (!isHydrating) {\n\t\t\ti = 'value';\n\t\t\tif (nodeType === 'progress' && inputValue == null) {\n\t\t\t\tdom.removeAttribute('value');\n\t\t\t} else if (\n\t\t\t\tinputValue !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType === 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && inputValue !== oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], namespace);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked !== undefined && checked !== dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], namespace);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {Ref<any> & { _unmount?: unknown }} ref\n * @param {any} value\n * @param {VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') {\n\t\t\tlet hasRefUnmount = typeof ref._unmount == 'function';\n\t\t\tif (hasRefUnmount) {\n\t\t\t\t// @ts-ignore TS doesn't like moving narrowing checks into variables\n\t\t\t\tref._unmount();\n\t\t\t}\n\n\t\t\tif (!hasRefUnmount || value != null) {\n\t\t\t\t// Store the cleanup function on the function\n\t\t\t\t// instance object itself to avoid shape\n\t\t\t\t// transitioning vnode\n\t\t\t\tref._unmount = ref(value);\n\t\t\t}\n\t\t} else ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type != 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._component = vnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {ComponentChild} vnode The virtual node to render\n * @param {PreactElement} parentDom The DOM element to render into\n * @param {PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.namespaceURI,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t\t? null\n\t\t\t\t: parentDom.firstChild\n\t\t\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t\t? oldVNode._dom\n\t\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {ComponentChild} vnode The virtual node to render\n * @param {PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<ComponentChildren>} rest Any additional arguments will be used\n * as replacement children.\n * @returns {VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {VNode} [oldVNode]\n * @param {ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {Component} */\n\tlet component,\n\t\t/** @type {ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "import { options as _options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\n// Cast to use internal Options type\nconst options = /** @type {import('./internal').Options} */ (_options);\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\nlet oldRoot = options._root;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._root = (vnode, parentDom) => {\n\tif (vnode && parentDom._children && parentDom._children._mask) {\n\t\tvnode._mask = parentDom._children._mask;\n\t}\n\n\tif (oldRoot) oldRoot(vnode, parentDom);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingArgs = hookItem._nextValue = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentIndex = 0;\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\n// TODO: Improve typing of commitQueue parameter\n/** @type {(vnode: import('./internal').VNode, commitQueue: any) => void} */\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\n\treturn hooks._list[index];\n}\n\n/**\n * @template {unknown} S\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} [initialState]\n * @returns {[S, (state: S) => void]}\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @template {unknown} S\n * @template {unknown} A\n * @param {import('./index').Reducer<S, A>} reducer\n * @param {import('./index').Dispatch<import('./index').StateUpdater<S>>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ S, (state: S) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tlet prevScu = currentComponent.shouldComponentUpdate;\n\t\t\tconst prevCWU = currentComponent.componentWillUpdate;\n\n\t\t\t// If we're dealing with a forced update `shouldComponentUpdate` will\n\t\t\t// not be called. But we use that to update the hook values, so we\n\t\t\t// need to call it.\n\t\t\tcurrentComponent.componentWillUpdate = function (p, s, c) {\n\t\t\t\tif (this._force) {\n\t\t\t\t\tlet tmp = prevScu;\n\t\t\t\t\t// Clear to avoid other sCU hooks from being called\n\t\t\t\t\tprevScu = undefined;\n\t\t\t\t\tupdateHookState(p, s, c);\n\t\t\t\t\tprevScu = tmp;\n\t\t\t\t}\n\n\t\t\t\tif (prevCWU) prevCWU.call(this, p, s, c);\n\t\t\t};\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\t/**\n\t\t\t *\n\t\t\t * @type {import('./internal').Component[\"shouldComponentUpdate\"]}\n\t\t\t */\n\t\t\t// @ts-ignore - We don't use TS to downtranspile\n\t\t\t// eslint-disable-next-line no-inner-declarations\n\t\t\tfunction updateHookState(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\t/** @type {(x: import('./internal').HookState) => x is import('./internal').ReducerHookState} */\n\t\t\t\tconst isStateHook = x => !!x._component;\n\t\t\t\tconst stateHooks =\n\t\t\t\t\thookState._component.__hooks._list.filter(isStateHook);\n\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t}\n\n\t\t\tcurrentComponent.shouldComponentUpdate = updateHookState;\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\n/** @type {(initialValue: unknown) => unknown} */\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {unknown[]} args\n * @returns {void}\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @template {unknown} T\n * @param {() => T} factory\n * @param {unknown[]} args\n * @returns {T}\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState<T>} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._value = factory();\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {unknown[]} args\n * @returns {() => void}\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(\n\t\t\tformatter ? formatter(value) : /** @type {any}*/ (value)\n\t\t);\n\t}\n}\n\n/**\n * @param {(error: unknown, errorInfo: import('preact').ErrorInfo) => void} cb\n * @returns {[unknown, () => void]}\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/** @type {() => string} */\nexport function useId() {\n\t/** @type {import('./internal').IdHookState} */\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n * @returns {void}\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').HookState} hook\n * @returns {void}\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n * @returns {void}\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {unknown[]} oldArgs\n * @param {unknown[]} newArgs\n * @returns {boolean}\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\n/**\n * @template Arg\n * @param {Arg} arg\n * @param {(arg: Arg) => any} f\n * @returns {any}\n */\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n", "/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n\n/**\n * Check if two values are the same value\n * @param {*} x\n * @param {*} y\n * @returns {boolean}\n */\nexport function is(x, y) {\n\treturn (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\n", "import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p, c) {\n\tthis.props = p;\n\tthis.context = c;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function (props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n", "import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n", "import { options } from 'preact';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tif (!('ref' in props)) return fn(props, null);\n\n\t\tlet ref = props.ref;\n\t\tdelete props.ref;\n\t\tconst result = fn(props, ref);\n\t\tprops.ref = ref;\n\t\treturn result;\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n", "import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n", "import { Component, createElement, options, Fragment } from 'preact';\nimport { MODE_HYDRATE } from '../../src/constants';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function (error, newVNode, oldVNode, errorInfo) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode, errorInfo);\n};\n\nconst oldUnmount = options.unmount;\noptions.unmount = function (vnode) {\n\t/** @type {import('./internal').Component} */\n\tconst component = vnode._component;\n\tif (component && component._onResolve) {\n\t\tcomponent._onResolve();\n\t}\n\n\t// if the component is still hydrating\n\t// most likely it is because the component is suspended\n\t// we set the vnode.type as `null` so that it is not a typeof function\n\t// so the unmount will remove the vnode._dom\n\tif (component && vnode._flags & MODE_HYDRATE) {\n\t\tvnode.type = null;\n\t}\n\n\tif (oldUnmount) oldUnmount(vnode);\n};\n\nfunction detachedClone(vnode, detachedParent, parentDom) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tif (vnode._component != null) {\n\t\t\tif (vnode._component._parentDom === parentDom) {\n\t\t\t\tvnode._component._parentDom = detachedParent;\n\t\t\t}\n\t\t\tvnode._component = null;\n\t\t}\n\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tdetachedClone(child, detachedParent, parentDom)\n\t\t\t);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode, detachedParent, originalParent) {\n\tif (vnode && originalParent) {\n\t\tvnode._original = null;\n\t\tvnode._children =\n\t\t\tvnode._children &&\n\t\t\tvnode._children.map(child =>\n\t\t\t\tremoveOriginal(child, detachedParent, originalParent)\n\t\t\t);\n\n\t\tif (vnode._component) {\n\t\t\tif (vnode._component._parentDom === detachedParent) {\n\t\t\t\tif (vnode._dom) {\n\t\t\t\t\toriginalParent.appendChild(vnode._dom);\n\t\t\t\t}\n\t\t\t\tvnode._component._force = true;\n\t\t\t\tvnode._component._parentDom = originalParent;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode<any, any>} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function (promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent._onResolve = null;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._onResolve = onResolved;\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\t// If the suspension was during hydration we don't need to restore the\n\t\t\t// suspended children into the _children array\n\t\t\tif (c.state._suspended) {\n\t\t\t\tconst suspendedVNode = c.state._suspended;\n\t\t\t\tc._vnode._children[0] = removeOriginal(\n\t\t\t\t\tsuspendedVNode,\n\t\t\t\t\tsuspendedVNode._component._parentDom,\n\t\t\t\t\tsuspendedVNode._component._originalParentDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tif (\n\t\t!c._pendingSuspensionCount++ &&\n\t\t!(suspendingVNode._flags & MODE_HYDRATE)\n\t) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function () {\n\tthis._suspenders = [];\n};\n\n/**\n * @this {import('./internal').SuspenseComponent}\n * @param {import('./internal').SuspenseComponent[\"props\"]} props\n * @param {import('./internal').SuspenseState} state\n */\nSuspense.prototype.render = function (props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children) {\n\t\t\tconst detachedParent = document.createElement('div');\n\t\t\tconst detachedComponent = this._vnode._children[0]._component;\n\t\t\tthis._vnode._children[0] = detachedClone(\n\t\t\t\tthis._detachOnNextRender,\n\t\t\t\tdetachedParent,\n\t\t\t\t(detachedComponent._originalParentDom = detachedComponent._parentDom)\n\t\t\t);\n\t\t}\n\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._flags &= ~MODE_HYDRATE;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n", "import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function (child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function (props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate =\n\tSuspenseList.prototype.componentDidMount = function () {\n\t\t// Iterate through all children after mounting for two reasons:\n\t\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t\t//    each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t\t//    The nodes can now be completely consumed from the linked list.\n\t\t// 2. Handle nodes that might have gotten resolved between render and\n\t\t//    componentDidMount.\n\t\tthis._map.forEach((node, child) => {\n\t\t\tresolve(this, child, node);\n\t\t});\n\t};\n", "/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { createElement, render } from 'preact';\n\n/**\n * @param {import('../../src/index').RenderableProps<{ context: any }>} props\n */\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @this {import('./internal').Component}\n * @param {object | null | undefined} props\n *\n * TODO: use createRoot() instead of fake root\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\n\t_this.componentWillUnmount = function () {\n\t\trender(null, _this._temp);\n\t\t_this._temp = null;\n\t\t_this._container = null;\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t}\n\n\tif (!_this._temp) {\n\t\t_this._container = container;\n\n\t\t// Create a fake DOM parent node that manages a subset of `container`'s children:\n\t\t_this._temp = {\n\t\t\tnodeType: 1,\n\t\t\tparentNode: container,\n\t\t\tchildNodes: [],\n\t\t\tcontains: () => true,\n\t\t\tappendChild(child) {\n\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t_this._container.appendChild(child);\n\t\t\t},\n\t\t\tinsertBefore(child, before) {\n\t\t\t\tthis.childNodes.push(child);\n\t\t\t\t_this._container.appendChild(child);\n\t\t\t},\n\t\t\tremoveChild(child) {\n\t\t\t\tthis.childNodes.splice(this.childNodes.indexOf(child) >>> 1, 1);\n\t\t\t\t_this._container.removeChild(child);\n\t\t\t}\n\t\t};\n\t}\n\n\t// Render our wrapping element into temp.\n\trender(\n\t\tcreateElement(ContextProvider, { context: _this.context }, props._vnode),\n\t\t_this._temp\n\t);\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\tconst el = createElement(Portal, { _vnode: vnode, _container: container });\n\tel.containerInfo = container;\n\treturn el;\n}\n", "import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport {\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tuseEffect,\n\tuseId,\n\tuseImperativeHandle,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseReducer,\n\tuseRef,\n\tuseState\n} from 'preact/hooks';\nimport {\n\tuseDeferredValue,\n\tuseInsertionEffect,\n\tuseSyncExternalStore,\n\tuseTransition\n} from './index';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS =\n\t/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\nconst ON_ANI = /^on(Ani|Tra|Tou|BeforeInp|Compo)/;\nconst CAMEL_REPLACE = /[A-Z0-9]/g;\nconst IS_DOM = typeof document !== 'undefined';\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst onChangeInputType = type =>\n\t(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'\n\t\t? /fil|che|rad/\n\t\t: /fil|che|ra/\n\t).test(type);\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nconst classNameDescriptorNonEnumberable = {\n\tenumerable: false,\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nfunction handleDomVNode(vnode) {\n\tlet props = vnode.props,\n\t\ttype = vnode.type,\n\t\tnormalizedProps = {};\n\n\tlet isNonDashedType = type.indexOf('-') === -1;\n\tfor (let i in props) {\n\t\tlet value = props[i];\n\n\t\tif (\n\t\t\t(i === 'value' && 'defaultValue' in props && value == null) ||\n\t\t\t// Emulate React's behavior of not rendering the contents of noscript tags on the client.\n\t\t\t(IS_DOM && i === 'children' && type === 'noscript') ||\n\t\t\ti === 'class' ||\n\t\t\ti === 'className'\n\t\t) {\n\t\t\t// Skip applying value if it is null/undefined and we already set\n\t\t\t// a default value\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet lowerCased = i.toLowerCase();\n\t\tif (i === 'defaultValue' && 'value' in props && props.value == null) {\n\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\ti = 'value';\n\t\t} else if (i === 'download' && value === true) {\n\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t// value will be used as the file name and the file will be called\n\t\t\t// \"true\" upon downloading it.\n\t\t\tvalue = '';\n\t\t} else if (lowerCased === 'translate' && value === 'no') {\n\t\t\tvalue = false;\n\t\t} else if (lowerCased[0] === 'o' && lowerCased[1] === 'n') {\n\t\t\tif (lowerCased === 'ondoubleclick') {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\tlowerCased === 'onchange' &&\n\t\t\t\t(type === 'input' || type === 'textarea') &&\n\t\t\t\t!onChangeInputType(props.type)\n\t\t\t) {\n\t\t\t\tlowerCased = i = 'oninput';\n\t\t\t} else if (lowerCased === 'onfocus') {\n\t\t\t\ti = 'onfocusin';\n\t\t\t} else if (lowerCased === 'onblur') {\n\t\t\t\ti = 'onfocusout';\n\t\t\t} else if (ON_ANI.test(i)) {\n\t\t\t\ti = lowerCased;\n\t\t\t}\n\t\t} else if (isNonDashedType && CAMEL_PROPS.test(i)) {\n\t\t\ti = i.replace(CAMEL_REPLACE, '-$&').toLowerCase();\n\t\t} else if (value === null) {\n\t\t\tvalue = undefined;\n\t\t}\n\n\t\t// Add support for onInput and onChange, see #3561\n\t\t// if we have an oninput prop already change it to oninputCapture\n\t\tif (lowerCased === 'oninput') {\n\t\t\ti = lowerCased;\n\t\t\tif (normalizedProps[i]) {\n\t\t\t\ti = 'oninputCapture';\n\t\t\t}\n\t\t}\n\n\t\tnormalizedProps[i] = value;\n\t}\n\n\t// Add support for array select values: <select multiple value={[]} />\n\tif (\n\t\ttype == 'select' &&\n\t\tnormalizedProps.multiple &&\n\t\tArray.isArray(normalizedProps.value)\n\t) {\n\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tchild.props.selected =\n\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t});\n\t}\n\n\t// Adding support for defaultValue in select tag\n\tif (type == 'select' && normalizedProps.defaultValue != null) {\n\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\tif (normalizedProps.multiple) {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue.indexOf(child.props.value) != -1;\n\t\t\t} else {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.defaultValue == child.props.value;\n\t\t\t}\n\t\t});\n\t}\n\n\tif (props.class && !props.className) {\n\t\tnormalizedProps.class = props.class;\n\t\tObject.defineProperty(\n\t\t\tnormalizedProps,\n\t\t\t'className',\n\t\t\tclassNameDescriptorNonEnumberable\n\t\t);\n\t} else if (props.className && !props.class) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t} else if (props.class && props.className) {\n\t\tnormalizedProps.class = normalizedProps.className = props.className;\n\t}\n\n\tvnode.props = normalizedProps;\n}\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\t// only normalize props on Element nodes\n\tif (typeof vnode.type === 'string') {\n\t\thandleDomVNode(vnode);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function (vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\nconst oldDiffed = options.diffed;\n/** @type {(vnode: import('./internal').VNode) => void} */\noptions.diffed = function (vnode) {\n\tif (oldDiffed) {\n\t\toldDiffed(vnode);\n\t}\n\n\tconst props = vnode.props;\n\tconst dom = vnode._dom;\n\n\tif (\n\t\tdom != null &&\n\t\tvnode.type === 'textarea' &&\n\t\t'value' in props &&\n\t\tprops.value !== dom.value\n\t) {\n\t\tdom.value = props.value == null ? '' : props.value;\n\t}\n\n\tcurrentComponent = null;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t},\n\t\t\tuseCallback,\n\t\t\tuseContext,\n\t\t\tuseDebugValue,\n\t\t\tuseDeferredValue,\n\t\t\tuseEffect,\n\t\t\tuseId,\n\t\t\tuseImperativeHandle,\n\t\t\tuseInsertionEffect,\n\t\t\tuseLayoutEffect,\n\t\t\tuseMemo,\n\t\t\t// useMutableSource, // experimental-only and replaced by uSES, likely not worth supporting\n\t\t\tuseReducer,\n\t\t\tuseRef,\n\t\t\tuseState,\n\t\t\tuseSyncExternalStore,\n\t\t\tuseTransition\n\t\t}\n\t}\n};\n", "import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport { is } from './util';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '18.3.1'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Check if the passed element is a Fragment node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isFragment(element) {\n\treturn isValidElement(element) && element.type === Fragment;\n}\n\n/**\n * Check if the passed element is a Memo node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isMemo(element) {\n\treturn (\n\t\t!!element &&\n\t\t!!element.displayName &&\n\t\t(typeof element.displayName === 'string' ||\n\t\t\telement.displayName instanceof String) &&\n\t\telement.displayName.startsWith('Memo(')\n\t);\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * In React, `flushSync` flushes the entire tree and forces a rerender. It's\n * implmented here as a no-op.\n * @template Arg\n * @template Result\n * @param {(arg: Arg) => Result} callback function that runs before the flush\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n * @returns\n */\nconst flushSync = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport function startTransition(cb) {\n\tcb();\n}\n\nexport function useDeferredValue(val) {\n\treturn val;\n}\n\nexport function useTransition() {\n\treturn [false, startTransition];\n}\n\n// TODO: in theory this should be done after a VNode is diffed as we want to insert\n// styles/... before it attaches\nexport const useInsertionEffect = useLayoutEffect;\n\n// compat to react-is\nexport const isElement = isValidElement;\n\n/**\n * This is taken from https://github.com/facebook/react/blob/main/packages/use-sync-external-store/src/useSyncExternalStoreShimClient.js#L84\n * on a high level this cuts out the warnings, ... and attempts a smaller implementation\n * @typedef {{ _value: any; _getSnapshot: () => any }} Store\n */\nexport function useSyncExternalStore(subscribe, getSnapshot) {\n\tconst value = getSnapshot();\n\n\t/**\n\t * @typedef {{ _instance: Store }} StoreRef\n\t * @type {[StoreRef, (store: StoreRef) => void]}\n\t */\n\tconst [{ _instance }, forceUpdate] = useState({\n\t\t_instance: { _value: value, _getSnapshot: getSnapshot }\n\t});\n\n\tuseLayoutEffect(() => {\n\t\t_instance._value = value;\n\t\t_instance._getSnapshot = getSnapshot;\n\n\t\tif (didSnapshotChange(_instance)) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\t}, [subscribe, value, getSnapshot]);\n\n\tuseEffect(() => {\n\t\tif (didSnapshotChange(_instance)) {\n\t\t\tforceUpdate({ _instance });\n\t\t}\n\n\t\treturn subscribe(() => {\n\t\t\tif (didSnapshotChange(_instance)) {\n\t\t\t\tforceUpdate({ _instance });\n\t\t\t}\n\t\t});\n\t}, [subscribe]);\n\n\treturn value;\n}\n\n/** @type {(inst: Store) => boolean} */\nfunction didSnapshotChange(inst) {\n\tconst latestGetSnapshot = inst._getSnapshot;\n\tconst prevValue = inst._value;\n\ttry {\n\t\tconst nextValue = latestGetSnapshot();\n\t\treturn !is(prevValue, nextValue);\n\t} catch (error) {\n\t\treturn true;\n\t}\n}\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tisFragment,\n\tisMemo,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseId,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseInsertionEffect,\n\tuseTransition,\n\tuseDeferredValue,\n\tuseSyncExternalStore,\n\tstartTransition,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tisElement,\n\tisFragment,\n\tisMemo,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tflushSync,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "module.exports = require('preact/compat');\r\n\r\n", "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ReactStripe = {}, global.React));\n})(this, (function (exports, React) { 'use strict';\n\n  function ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n\n    if (Object.getOwnPropertySymbols) {\n      var symbols = Object.getOwnPropertySymbols(object);\n\n      if (enumerableOnly) {\n        symbols = symbols.filter(function (sym) {\n          return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        });\n      }\n\n      keys.push.apply(keys, symbols);\n    }\n\n    return keys;\n  }\n\n  function _objectSpread2(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n\n      if (i % 2) {\n        ownKeys(Object(source), true).forEach(function (key) {\n          _defineProperty(target, key, source[key]);\n        });\n      } else if (Object.getOwnPropertyDescriptors) {\n        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n      } else {\n        ownKeys(Object(source)).forEach(function (key) {\n          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n      }\n    }\n\n    return target;\n  }\n\n  function _typeof(obj) {\n    \"@babel/helpers - typeof\";\n\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n      _typeof = function (obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function (obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n      };\n    }\n\n    return _typeof(obj);\n  }\n\n  function _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function _objectWithoutPropertiesLoose(source, excluded) {\n    if (source == null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n\n    for (i = 0; i < sourceKeys.length; i++) {\n      key = sourceKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      target[key] = source[key];\n    }\n\n    return target;\n  }\n\n  function _objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n\n    var target = _objectWithoutPropertiesLoose(source, excluded);\n\n    var key, i;\n\n    if (Object.getOwnPropertySymbols) {\n      var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n      for (i = 0; i < sourceSymbolKeys.length; i++) {\n        key = sourceSymbolKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n        target[key] = source[key];\n      }\n    }\n\n    return target;\n  }\n\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n  }\n\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) return arr;\n  }\n\n  function _iterableToArrayLimit(arr, i) {\n    var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n    if (_i == null) return;\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n\n    var _s, _e;\n\n    try {\n      for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _nonIterableRest() {\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  function getDefaultExportFromCjs (x) {\n  \treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n  }\n\n  var propTypes = {exports: {}};\n\n  /**\n   * Copyright (c) 2013-present, Facebook, Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   */\n  var ReactPropTypesSecret_1;\n  var hasRequiredReactPropTypesSecret;\n\n  function requireReactPropTypesSecret() {\n    if (hasRequiredReactPropTypesSecret) return ReactPropTypesSecret_1;\n    hasRequiredReactPropTypesSecret = 1;\n\n    var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n    ReactPropTypesSecret_1 = ReactPropTypesSecret;\n    return ReactPropTypesSecret_1;\n  }\n\n  /**\n   * Copyright (c) 2013-present, Facebook, Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   */\n  var factoryWithThrowingShims;\n  var hasRequiredFactoryWithThrowingShims;\n\n  function requireFactoryWithThrowingShims() {\n    if (hasRequiredFactoryWithThrowingShims) return factoryWithThrowingShims;\n    hasRequiredFactoryWithThrowingShims = 1;\n\n    var ReactPropTypesSecret = requireReactPropTypesSecret();\n\n    function emptyFunction() {}\n\n    function emptyFunctionWithReset() {}\n\n    emptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n    factoryWithThrowingShims = function () {\n      function shim(props, propName, componentName, location, propFullName, secret) {\n        if (secret === ReactPropTypesSecret) {\n          // It is still safe when called from React.\n          return;\n        }\n\n        var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n        err.name = 'Invariant Violation';\n        throw err;\n      }\n      shim.isRequired = shim;\n\n      function getShim() {\n        return shim;\n      }\n      // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n      var ReactPropTypes = {\n        array: shim,\n        bool: shim,\n        func: shim,\n        number: shim,\n        object: shim,\n        string: shim,\n        symbol: shim,\n        any: shim,\n        arrayOf: getShim,\n        element: shim,\n        elementType: shim,\n        instanceOf: getShim,\n        node: shim,\n        objectOf: getShim,\n        oneOf: getShim,\n        oneOfType: getShim,\n        shape: getShim,\n        exact: getShim,\n        checkPropTypes: emptyFunctionWithReset,\n        resetWarningCache: emptyFunction\n      };\n      ReactPropTypes.PropTypes = ReactPropTypes;\n      return ReactPropTypes;\n    };\n\n    return factoryWithThrowingShims;\n  }\n\n  /**\n   * Copyright (c) 2013-present, Facebook, Inc.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   */\n\n  {\n    // By explicitly using `prop-types` you are opting into new production behavior.\n    // http://fb.me/prop-types-in-prod\n    propTypes.exports = requireFactoryWithThrowingShims()();\n  }\n\n  var propTypesExports = propTypes.exports;\n  var PropTypes = /*@__PURE__*/getDefaultExportFromCjs(propTypesExports);\n\n  var useAttachEvent = function useAttachEvent(element, event, cb) {\n    var cbDefined = !!cb;\n    var cbRef = React.useRef(cb); // In many integrations the callback prop changes on each render.\n    // Using a ref saves us from calling element.on/.off every render.\n\n    React.useEffect(function () {\n      cbRef.current = cb;\n    }, [cb]);\n    React.useEffect(function () {\n      if (!cbDefined || !element) {\n        return function () {};\n      }\n\n      var decoratedCb = function decoratedCb() {\n        if (cbRef.current) {\n          cbRef.current.apply(cbRef, arguments);\n        }\n      };\n\n      element.on(event, decoratedCb);\n      return function () {\n        element.off(event, decoratedCb);\n      };\n    }, [cbDefined, event, element, cbRef]);\n  };\n\n  var usePrevious = function usePrevious(value) {\n    var ref = React.useRef(value);\n    React.useEffect(function () {\n      ref.current = value;\n    }, [value]);\n    return ref.current;\n  };\n\n  var isUnknownObject = function isUnknownObject(raw) {\n    return raw !== null && _typeof(raw) === 'object';\n  };\n  var isPromise = function isPromise(raw) {\n    return isUnknownObject(raw) && typeof raw.then === 'function';\n  }; // We are using types to enforce the `stripe` prop in this lib,\n  // but in an untyped integration `stripe` could be anything, so we need\n  // to do some sanity validation to prevent type errors.\n\n  var isStripe = function isStripe(raw) {\n    return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n  };\n\n  var PLAIN_OBJECT_STR = '[object Object]';\n  var isEqual = function isEqual(left, right) {\n    if (!isUnknownObject(left) || !isUnknownObject(right)) {\n      return left === right;\n    }\n\n    var leftArray = Array.isArray(left);\n    var rightArray = Array.isArray(right);\n    if (leftArray !== rightArray) return false;\n    var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n    var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n    if (leftPlainObject !== rightPlainObject) return false; // not sure what sort of special object this is (regexp is one option), so\n    // fallback to reference check.\n\n    if (!leftPlainObject && !leftArray) return left === right;\n    var leftKeys = Object.keys(left);\n    var rightKeys = Object.keys(right);\n    if (leftKeys.length !== rightKeys.length) return false;\n    var keySet = {};\n\n    for (var i = 0; i < leftKeys.length; i += 1) {\n      keySet[leftKeys[i]] = true;\n    }\n\n    for (var _i = 0; _i < rightKeys.length; _i += 1) {\n      keySet[rightKeys[_i]] = true;\n    }\n\n    var allKeys = Object.keys(keySet);\n\n    if (allKeys.length !== leftKeys.length) {\n      return false;\n    }\n\n    var l = left;\n    var r = right;\n\n    var pred = function pred(key) {\n      return isEqual(l[key], r[key]);\n    };\n\n    return allKeys.every(pred);\n  };\n\n  var extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n    if (!isUnknownObject(options)) {\n      return null;\n    }\n\n    return Object.keys(options).reduce(function (newOptions, key) {\n      var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n\n      if (immutableKeys.includes(key)) {\n        if (isUpdated) {\n          console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n        }\n\n        return newOptions;\n      }\n\n      if (!isUpdated) {\n        return newOptions;\n      }\n\n      return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n    }, null);\n  };\n\n  var INVALID_STRIPE_ERROR$2 = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n  // integration `stripe` could be anything, so we need to do some sanity\n  // validation to prevent type errors.\n\n  var validateStripe = function validateStripe(maybeStripe) {\n    var errorMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : INVALID_STRIPE_ERROR$2;\n\n    if (maybeStripe === null || isStripe(maybeStripe)) {\n      return maybeStripe;\n    }\n\n    throw new Error(errorMsg);\n  };\n\n  var parseStripeProp = function parseStripeProp(raw) {\n    var errorMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : INVALID_STRIPE_ERROR$2;\n\n    if (isPromise(raw)) {\n      return {\n        tag: 'async',\n        stripePromise: Promise.resolve(raw).then(function (result) {\n          return validateStripe(result, errorMsg);\n        })\n      };\n    }\n\n    var stripe = validateStripe(raw, errorMsg);\n\n    if (stripe === null) {\n      return {\n        tag: 'empty'\n      };\n    }\n\n    return {\n      tag: 'sync',\n      stripe: stripe\n    };\n  };\n\n  var registerWithStripeJs = function registerWithStripeJs(stripe) {\n    if (!stripe || !stripe._registerWrapper || !stripe.registerAppInfo) {\n      return;\n    }\n\n    stripe._registerWrapper({\n      name: 'react-stripe-js',\n      version: \"3.1.0\"\n    });\n\n    stripe.registerAppInfo({\n      name: 'react-stripe-js',\n      version: \"3.1.0\",\n      url: 'https://stripe.com/docs/stripe-js/react'\n    });\n  };\n\n  var ElementsContext = /*#__PURE__*/React.createContext(null);\n  ElementsContext.displayName = 'ElementsContext';\n  var parseElementsContext = function parseElementsContext(ctx, useCase) {\n    if (!ctx) {\n      throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an <Elements> provider.\"));\n    }\n\n    return ctx;\n  };\n  /**\n   * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n   * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n   *\n   * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n   * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n   * Pass the returned `Promise` to `Elements`.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n   */\n\n  var Elements = function Elements(_ref) {\n    var rawStripeProp = _ref.stripe,\n        options = _ref.options,\n        children = _ref.children;\n    var parsed = React.useMemo(function () {\n      return parseStripeProp(rawStripeProp);\n    }, [rawStripeProp]); // For a sync stripe instance, initialize into context\n\n    var _React$useState = React.useState(function () {\n      return {\n        stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n        elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n      };\n    }),\n        _React$useState2 = _slicedToArray(_React$useState, 2),\n        ctx = _React$useState2[0],\n        setContext = _React$useState2[1];\n\n    React.useEffect(function () {\n      var isMounted = true;\n\n      var safeSetContext = function safeSetContext(stripe) {\n        setContext(function (ctx) {\n          // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n          if (ctx.stripe) return ctx;\n          return {\n            stripe: stripe,\n            elements: stripe.elements(options)\n          };\n        });\n      }; // For an async stripePromise, store it in context once resolved\n\n\n      if (parsed.tag === 'async' && !ctx.stripe) {\n        parsed.stripePromise.then(function (stripe) {\n          if (stripe && isMounted) {\n            // Only update Elements context if the component is still mounted\n            // and stripe is not null. We allow stripe to be null to make\n            // handling SSR easier.\n            safeSetContext(stripe);\n          }\n        });\n      } else if (parsed.tag === 'sync' && !ctx.stripe) {\n        // Or, handle a sync stripe instance going from null -> populated\n        safeSetContext(parsed.stripe);\n      }\n\n      return function () {\n        isMounted = false;\n      };\n    }, [parsed, ctx, options]); // Warn on changes to stripe prop\n\n    var prevStripe = usePrevious(rawStripeProp);\n    React.useEffect(function () {\n      if (prevStripe !== null && prevStripe !== rawStripeProp) {\n        console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n      }\n    }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n    var prevOptions = usePrevious(options);\n    React.useEffect(function () {\n      if (!ctx.elements) {\n        return;\n      }\n\n      var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n\n      if (updates) {\n        ctx.elements.update(updates);\n      }\n    }, [options, prevOptions, ctx.elements]); // Attach react-stripe-js version to stripe.js instance\n\n    React.useEffect(function () {\n      registerWithStripeJs(ctx.stripe);\n    }, [ctx.stripe]);\n    return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n      value: ctx\n    }, children);\n  };\n  Elements.propTypes = {\n    stripe: PropTypes.any,\n    options: PropTypes.object\n  };\n  var useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n    var ctx = React.useContext(ElementsContext);\n    return parseElementsContext(ctx, useCaseMessage);\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n   */\n\n  var useElements = function useElements() {\n    var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n        elements = _useElementsContextWi.elements;\n\n    return elements;\n  };\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n   */\n\n  var ElementsConsumer = function ElementsConsumer(_ref2) {\n    var children = _ref2.children;\n    var ctx = useElementsContextWithUseCase('mounts <ElementsConsumer>'); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n    return children(ctx);\n  };\n  ElementsConsumer.propTypes = {\n    children: PropTypes.func.isRequired\n  };\n\n  var _excluded = [\"on\", \"session\"];\n  var CheckoutSdkContext = /*#__PURE__*/React.createContext(null);\n  CheckoutSdkContext.displayName = 'CheckoutSdkContext';\n  var parseCheckoutSdkContext = function parseCheckoutSdkContext(ctx, useCase) {\n    if (!ctx) {\n      throw new Error(\"Could not find CheckoutProvider context; You need to wrap the part of your app that \".concat(useCase, \" in an <CheckoutProvider> provider.\"));\n    }\n\n    return ctx;\n  };\n  var CheckoutContext = /*#__PURE__*/React.createContext(null);\n  CheckoutContext.displayName = 'CheckoutContext';\n  var extractCheckoutContextValue = function extractCheckoutContextValue(checkoutSdk, sessionState) {\n    if (!checkoutSdk) {\n      return null;\n    }\n\n    checkoutSdk.on;\n        checkoutSdk.session;\n        var actions = _objectWithoutProperties(checkoutSdk, _excluded);\n\n    if (!sessionState) {\n      return _objectSpread2(_objectSpread2({}, actions), checkoutSdk.session());\n    }\n\n    return _objectSpread2(_objectSpread2({}, actions), sessionState);\n  };\n  var INVALID_STRIPE_ERROR$1 = 'Invalid prop `stripe` supplied to `CheckoutProvider`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.';\n  var CheckoutProvider = function CheckoutProvider(_ref) {\n    var rawStripeProp = _ref.stripe,\n        options = _ref.options,\n        children = _ref.children;\n    var parsed = React.useMemo(function () {\n      return parseStripeProp(rawStripeProp, INVALID_STRIPE_ERROR$1);\n    }, [rawStripeProp]); // State used to trigger a re-render when sdk.session is updated\n\n    var _React$useState = React.useState(null),\n        _React$useState2 = _slicedToArray(_React$useState, 2),\n        session = _React$useState2[0],\n        setSession = _React$useState2[1];\n\n    var _React$useState3 = React.useState(function () {\n      return {\n        stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n        checkoutSdk: null\n      };\n    }),\n        _React$useState4 = _slicedToArray(_React$useState3, 2),\n        ctx = _React$useState4[0],\n        setContext = _React$useState4[1];\n\n    var safeSetContext = function safeSetContext(stripe, checkoutSdk) {\n      setContext(function (ctx) {\n        if (ctx.stripe && ctx.checkoutSdk) {\n          return ctx;\n        }\n\n        return {\n          stripe: stripe,\n          checkoutSdk: checkoutSdk\n        };\n      });\n    }; // Ref used to avoid calling initCheckout multiple times when options changes\n\n\n    var initCheckoutCalledRef = React.useRef(false);\n    React.useEffect(function () {\n      var isMounted = true;\n\n      if (parsed.tag === 'async' && !ctx.stripe) {\n        parsed.stripePromise.then(function (stripe) {\n          if (stripe && isMounted && !initCheckoutCalledRef.current) {\n            // Only update context if the component is still mounted\n            // and stripe is not null. We allow stripe to be null to make\n            // handling SSR easier.\n            initCheckoutCalledRef.current = true;\n            stripe.initCheckout(options).then(function (checkoutSdk) {\n              if (checkoutSdk) {\n                safeSetContext(stripe, checkoutSdk);\n                checkoutSdk.on('change', setSession);\n              }\n            });\n          }\n        });\n      } else if (parsed.tag === 'sync' && parsed.stripe && !initCheckoutCalledRef.current) {\n        initCheckoutCalledRef.current = true;\n        parsed.stripe.initCheckout(options).then(function (checkoutSdk) {\n          if (checkoutSdk) {\n            safeSetContext(parsed.stripe, checkoutSdk);\n            checkoutSdk.on('change', setSession);\n          }\n        });\n      }\n\n      return function () {\n        isMounted = false;\n      };\n    }, [parsed, ctx, options, setSession]); // Warn on changes to stripe prop\n\n    var prevStripe = usePrevious(rawStripeProp);\n    React.useEffect(function () {\n      if (prevStripe !== null && prevStripe !== rawStripeProp) {\n        console.warn('Unsupported prop change on CheckoutProvider: You cannot change the `stripe` prop after setting it.');\n      }\n    }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n    var prevOptions = usePrevious(options);\n    React.useEffect(function () {\n      var _prevOptions$elements, _options$elementsOpti;\n\n      if (!ctx.checkoutSdk) {\n        return;\n      }\n\n      if (options.clientSecret && !isUnknownObject(prevOptions) && !isEqual(options.clientSecret, prevOptions.clientSecret)) {\n        console.warn('Unsupported prop change: options.clientSecret is not a mutable property.');\n      }\n\n      var previousAppearance = prevOptions === null || prevOptions === void 0 ? void 0 : (_prevOptions$elements = prevOptions.elementsOptions) === null || _prevOptions$elements === void 0 ? void 0 : _prevOptions$elements.appearance;\n      var currentAppearance = options === null || options === void 0 ? void 0 : (_options$elementsOpti = options.elementsOptions) === null || _options$elementsOpti === void 0 ? void 0 : _options$elementsOpti.appearance;\n\n      if (currentAppearance && !isEqual(currentAppearance, previousAppearance)) {\n        ctx.checkoutSdk.changeAppearance(currentAppearance);\n      }\n    }, [options, prevOptions, ctx.checkoutSdk]); // Attach react-stripe-js version to stripe.js instance\n\n    React.useEffect(function () {\n      registerWithStripeJs(ctx.stripe);\n    }, [ctx.stripe]);\n    var checkoutContextValue = React.useMemo(function () {\n      return extractCheckoutContextValue(ctx.checkoutSdk, session);\n    }, [ctx.checkoutSdk, session]);\n\n    if (!ctx.checkoutSdk) {\n      return null;\n    }\n\n    return /*#__PURE__*/React.createElement(CheckoutSdkContext.Provider, {\n      value: ctx\n    }, /*#__PURE__*/React.createElement(CheckoutContext.Provider, {\n      value: checkoutContextValue\n    }, children));\n  };\n  CheckoutProvider.propTypes = {\n    stripe: PropTypes.any,\n    options: PropTypes.shape({\n      clientSecret: PropTypes.string.isRequired,\n      elementsOptions: PropTypes.object\n    }).isRequired\n  };\n  var useCheckoutSdkContextWithUseCase = function useCheckoutSdkContextWithUseCase(useCaseString) {\n    var ctx = React.useContext(CheckoutSdkContext);\n    return parseCheckoutSdkContext(ctx, useCaseString);\n  };\n  var useElementsOrCheckoutSdkContextWithUseCase = function useElementsOrCheckoutSdkContextWithUseCase(useCaseString) {\n    var checkoutSdkContext = React.useContext(CheckoutSdkContext);\n    var elementsContext = React.useContext(ElementsContext);\n\n    if (checkoutSdkContext && elementsContext) {\n      throw new Error(\"You cannot wrap the part of your app that \".concat(useCaseString, \" in both <CheckoutProvider> and <Elements> providers.\"));\n    }\n\n    if (checkoutSdkContext) {\n      return parseCheckoutSdkContext(checkoutSdkContext, useCaseString);\n    }\n\n    return parseElementsContext(elementsContext, useCaseString);\n  };\n  var useCheckout = function useCheckout() {\n    // ensure it's in CheckoutProvider\n    useCheckoutSdkContextWithUseCase('calls useCheckout()');\n    var ctx = React.useContext(CheckoutContext);\n\n    if (!ctx) {\n      throw new Error('Could not find Checkout Context; You need to wrap the part of your app that calls useCheckout() in an <CheckoutProvider> provider.');\n    }\n\n    return ctx;\n  };\n\n  var capitalized = function capitalized(str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n  };\n\n  var createElementComponent = function createElementComponent(type, isServer) {\n    var displayName = \"\".concat(capitalized(type), \"Element\");\n\n    var ClientElement = function ClientElement(_ref) {\n      var id = _ref.id,\n          className = _ref.className,\n          _ref$options = _ref.options,\n          options = _ref$options === void 0 ? {} : _ref$options,\n          onBlur = _ref.onBlur,\n          onFocus = _ref.onFocus,\n          onReady = _ref.onReady,\n          onChange = _ref.onChange,\n          onEscape = _ref.onEscape,\n          onClick = _ref.onClick,\n          onLoadError = _ref.onLoadError,\n          onLoaderStart = _ref.onLoaderStart,\n          onNetworksChange = _ref.onNetworksChange,\n          onConfirm = _ref.onConfirm,\n          onCancel = _ref.onCancel,\n          onShippingAddressChange = _ref.onShippingAddressChange,\n          onShippingRateChange = _ref.onShippingRateChange;\n      var ctx = useElementsOrCheckoutSdkContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n      var elements = 'elements' in ctx ? ctx.elements : null;\n      var checkoutSdk = 'checkoutSdk' in ctx ? ctx.checkoutSdk : null;\n\n      var _React$useState = React.useState(null),\n          _React$useState2 = _slicedToArray(_React$useState, 2),\n          element = _React$useState2[0],\n          setElement = _React$useState2[1];\n\n      var elementRef = React.useRef(null);\n      var domNode = React.useRef(null); // For every event where the merchant provides a callback, call element.on\n      // with that callback. If the merchant ever changes the callback, removes\n      // the old callback with element.off and then call element.on with the new one.\n\n      useAttachEvent(element, 'blur', onBlur);\n      useAttachEvent(element, 'focus', onFocus);\n      useAttachEvent(element, 'escape', onEscape);\n      useAttachEvent(element, 'click', onClick);\n      useAttachEvent(element, 'loaderror', onLoadError);\n      useAttachEvent(element, 'loaderstart', onLoaderStart);\n      useAttachEvent(element, 'networkschange', onNetworksChange);\n      useAttachEvent(element, 'confirm', onConfirm);\n      useAttachEvent(element, 'cancel', onCancel);\n      useAttachEvent(element, 'shippingaddresschange', onShippingAddressChange);\n      useAttachEvent(element, 'shippingratechange', onShippingRateChange);\n      useAttachEvent(element, 'change', onChange);\n      var readyCallback;\n\n      if (onReady) {\n        if (type === 'expressCheckout') {\n          // Passes through the event, which includes visible PM types\n          readyCallback = onReady;\n        } else {\n          // For other Elements, pass through the Element itself.\n          readyCallback = function readyCallback() {\n            onReady(element);\n          };\n        }\n      }\n\n      useAttachEvent(element, 'ready', readyCallback);\n      React.useLayoutEffect(function () {\n        if (elementRef.current === null && domNode.current !== null && (elements || checkoutSdk)) {\n          var newElement = null;\n\n          if (checkoutSdk) {\n            newElement = checkoutSdk.createElement(type, options);\n          } else if (elements) {\n            newElement = elements.create(type, options);\n          } // Store element in a ref to ensure it's _immediately_ available in cleanup hooks in StrictMode\n\n\n          elementRef.current = newElement; // Store element in state to facilitate event listener attachment\n\n          setElement(newElement);\n\n          if (newElement) {\n            newElement.mount(domNode.current);\n          }\n        }\n      }, [elements, checkoutSdk, options]);\n      var prevOptions = usePrevious(options);\n      React.useEffect(function () {\n        if (!elementRef.current) {\n          return;\n        }\n\n        var updates = extractAllowedOptionsUpdates(options, prevOptions, ['paymentRequest']);\n\n        if (updates && 'update' in elementRef.current) {\n          elementRef.current.update(updates);\n        }\n      }, [options, prevOptions]);\n      React.useLayoutEffect(function () {\n        return function () {\n          if (elementRef.current && typeof elementRef.current.destroy === 'function') {\n            try {\n              elementRef.current.destroy();\n              elementRef.current = null;\n            } catch (error) {// Do nothing\n            }\n          }\n        };\n      }, []);\n      return /*#__PURE__*/React.createElement(\"div\", {\n        id: id,\n        className: className,\n        ref: domNode\n      });\n    }; // Only render the Element wrapper in a server environment.\n\n\n    var ServerElement = function ServerElement(props) {\n      useElementsOrCheckoutSdkContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n      var id = props.id,\n          className = props.className;\n      return /*#__PURE__*/React.createElement(\"div\", {\n        id: id,\n        className: className\n      });\n    };\n\n    var Element = isServer ? ServerElement : ClientElement;\n    Element.propTypes = {\n      id: PropTypes.string,\n      className: PropTypes.string,\n      onChange: PropTypes.func,\n      onBlur: PropTypes.func,\n      onFocus: PropTypes.func,\n      onReady: PropTypes.func,\n      onEscape: PropTypes.func,\n      onClick: PropTypes.func,\n      onLoadError: PropTypes.func,\n      onLoaderStart: PropTypes.func,\n      onNetworksChange: PropTypes.func,\n      onConfirm: PropTypes.func,\n      onCancel: PropTypes.func,\n      onShippingAddressChange: PropTypes.func,\n      onShippingRateChange: PropTypes.func,\n      options: PropTypes.object\n    };\n    Element.displayName = displayName;\n    Element.__elementType = type;\n    return Element;\n  };\n\n  var isServer = typeof window === 'undefined';\n\n  var EmbeddedCheckoutContext = /*#__PURE__*/React.createContext(null);\n  EmbeddedCheckoutContext.displayName = 'EmbeddedCheckoutProviderContext';\n  var useEmbeddedCheckoutContext = function useEmbeddedCheckoutContext() {\n    var ctx = React.useContext(EmbeddedCheckoutContext);\n\n    if (!ctx) {\n      throw new Error('<EmbeddedCheckout> must be used within <EmbeddedCheckoutProvider>');\n    }\n\n    return ctx;\n  };\n  var INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `EmbeddedCheckoutProvider`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.';\n  var EmbeddedCheckoutProvider = function EmbeddedCheckoutProvider(_ref) {\n    var rawStripeProp = _ref.stripe,\n        options = _ref.options,\n        children = _ref.children;\n    var parsed = React.useMemo(function () {\n      return parseStripeProp(rawStripeProp, INVALID_STRIPE_ERROR);\n    }, [rawStripeProp]);\n    var embeddedCheckoutPromise = React.useRef(null);\n    var loadedStripe = React.useRef(null);\n\n    var _React$useState = React.useState({\n      embeddedCheckout: null\n    }),\n        _React$useState2 = _slicedToArray(_React$useState, 2),\n        ctx = _React$useState2[0],\n        setContext = _React$useState2[1];\n\n    React.useEffect(function () {\n      // Don't support any ctx updates once embeddedCheckout or stripe is set.\n      if (loadedStripe.current || embeddedCheckoutPromise.current) {\n        return;\n      }\n\n      var setStripeAndInitEmbeddedCheckout = function setStripeAndInitEmbeddedCheckout(stripe) {\n        if (loadedStripe.current || embeddedCheckoutPromise.current) return;\n        loadedStripe.current = stripe;\n        embeddedCheckoutPromise.current = loadedStripe.current.initEmbeddedCheckout(options).then(function (embeddedCheckout) {\n          setContext({\n            embeddedCheckout: embeddedCheckout\n          });\n        });\n      }; // For an async stripePromise, store it once resolved\n\n\n      if (parsed.tag === 'async' && !loadedStripe.current && (options.clientSecret || options.fetchClientSecret)) {\n        parsed.stripePromise.then(function (stripe) {\n          if (stripe) {\n            setStripeAndInitEmbeddedCheckout(stripe);\n          }\n        });\n      } else if (parsed.tag === 'sync' && !loadedStripe.current && (options.clientSecret || options.fetchClientSecret)) {\n        // Or, handle a sync stripe instance going from null -> populated\n        setStripeAndInitEmbeddedCheckout(parsed.stripe);\n      }\n    }, [parsed, options, ctx, loadedStripe]);\n    React.useEffect(function () {\n      // cleanup on unmount\n      return function () {\n        // If embedded checkout is fully initialized, destroy it.\n        if (ctx.embeddedCheckout) {\n          embeddedCheckoutPromise.current = null;\n          ctx.embeddedCheckout.destroy();\n        } else if (embeddedCheckoutPromise.current) {\n          // If embedded checkout is still initializing, destroy it once\n          // it's done. This could be caused by unmounting very quickly\n          // after mounting.\n          embeddedCheckoutPromise.current.then(function () {\n            embeddedCheckoutPromise.current = null;\n\n            if (ctx.embeddedCheckout) {\n              ctx.embeddedCheckout.destroy();\n            }\n          });\n        }\n      };\n    }, [ctx.embeddedCheckout]); // Attach react-stripe-js version to stripe.js instance\n\n    React.useEffect(function () {\n      registerWithStripeJs(loadedStripe);\n    }, [loadedStripe]); // Warn on changes to stripe prop.\n    // The stripe prop value can only go from null to non-null once and\n    // can't be changed after that.\n\n    var prevStripe = usePrevious(rawStripeProp);\n    React.useEffect(function () {\n      if (prevStripe !== null && prevStripe !== rawStripeProp) {\n        console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the `stripe` prop after setting it.');\n      }\n    }, [prevStripe, rawStripeProp]); // Warn on changes to options.\n\n    var prevOptions = usePrevious(options);\n    React.useEffect(function () {\n      if (prevOptions == null) {\n        return;\n      }\n\n      if (options == null) {\n        console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot unset options after setting them.');\n        return;\n      }\n\n      if (options.clientSecret === undefined && options.fetchClientSecret === undefined) {\n        console.warn('Invalid props passed to EmbeddedCheckoutProvider: You must provide one of either `options.fetchClientSecret` or `options.clientSecret`.');\n      }\n\n      if (prevOptions.clientSecret != null && options.clientSecret !== prevOptions.clientSecret) {\n        console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the client secret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead.');\n      }\n\n      if (prevOptions.fetchClientSecret != null && options.fetchClientSecret !== prevOptions.fetchClientSecret) {\n        console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change fetchClientSecret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead.');\n      }\n\n      if (prevOptions.onComplete != null && options.onComplete !== prevOptions.onComplete) {\n        console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onComplete option after setting it.');\n      }\n\n      if (prevOptions.onShippingDetailsChange != null && options.onShippingDetailsChange !== prevOptions.onShippingDetailsChange) {\n        console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onShippingDetailsChange option after setting it.');\n      }\n\n      if (prevOptions.onLineItemsChange != null && options.onLineItemsChange !== prevOptions.onLineItemsChange) {\n        console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onLineItemsChange option after setting it.');\n      }\n    }, [prevOptions, options]);\n    return /*#__PURE__*/React.createElement(EmbeddedCheckoutContext.Provider, {\n      value: ctx\n    }, children);\n  };\n\n  var EmbeddedCheckoutClientElement = function EmbeddedCheckoutClientElement(_ref) {\n    var id = _ref.id,\n        className = _ref.className;\n\n    var _useEmbeddedCheckoutC = useEmbeddedCheckoutContext(),\n        embeddedCheckout = _useEmbeddedCheckoutC.embeddedCheckout;\n\n    var isMounted = React.useRef(false);\n    var domNode = React.useRef(null);\n    React.useLayoutEffect(function () {\n      if (!isMounted.current && embeddedCheckout && domNode.current !== null) {\n        embeddedCheckout.mount(domNode.current);\n        isMounted.current = true;\n      } // Clean up on unmount\n\n\n      return function () {\n        if (isMounted.current && embeddedCheckout) {\n          try {\n            embeddedCheckout.unmount();\n            isMounted.current = false;\n          } catch (e) {// Do nothing.\n            // Parent effects are destroyed before child effects, so\n            // in cases where both the EmbeddedCheckoutProvider and\n            // the EmbeddedCheckout component are removed at the same\n            // time, the embeddedCheckout instance will be destroyed,\n            // which causes an error when calling unmount.\n          }\n        }\n      };\n    }, [embeddedCheckout]);\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: domNode,\n      id: id,\n      className: className\n    });\n  }; // Only render the wrapper in a server environment.\n\n\n  var EmbeddedCheckoutServerElement = function EmbeddedCheckoutServerElement(_ref2) {\n    var id = _ref2.id,\n        className = _ref2.className;\n    // Validate that we are in the right context by calling useEmbeddedCheckoutContext.\n    useEmbeddedCheckoutContext();\n    return /*#__PURE__*/React.createElement(\"div\", {\n      id: id,\n      className: className\n    });\n  };\n\n  var EmbeddedCheckout = isServer ? EmbeddedCheckoutServerElement : EmbeddedCheckoutClientElement;\n\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n   */\n\n  var useStripe = function useStripe() {\n    var _useElementsOrCheckou = useElementsOrCheckoutSdkContextWithUseCase('calls useStripe()'),\n        stripe = _useElementsOrCheckou.stripe;\n\n    return stripe;\n  };\n\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardElement = createElementComponent('card', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardNumberElement = createElementComponent('cardNumber', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardExpiryElement = createElementComponent('cardExpiry', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var CardCvcElement = createElementComponent('cardCvc', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var FpxBankElement = createElementComponent('fpxBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var IbanElement = createElementComponent('iban', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var IdealBankElement = createElementComponent('idealBank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var P24BankElement = createElementComponent('p24Bank', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var EpsBankElement = createElementComponent('epsBank', isServer);\n  var PaymentElement = createElementComponent('payment', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var ExpressCheckoutElement = createElementComponent('expressCheckout', isServer);\n  /**\n   * Requires beta access:\n   * Contact [Stripe support](https://support.stripe.com/) for more information.\n   */\n\n  var CurrencySelectorElement = createElementComponent('currencySelector', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AddressElement = createElementComponent('address', isServer);\n  /**\n   * @deprecated\n   * Use `AddressElement` instead.\n   *\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AffirmMessageElement = createElementComponent('affirmMessage', isServer);\n  /**\n   * @docs https://stripe.com/docs/stripe-js/react#element-components\n   */\n\n  var AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\n  exports.AddressElement = AddressElement;\n  exports.AffirmMessageElement = AffirmMessageElement;\n  exports.AfterpayClearpayMessageElement = AfterpayClearpayMessageElement;\n  exports.AuBankAccountElement = AuBankAccountElement;\n  exports.CardCvcElement = CardCvcElement;\n  exports.CardElement = CardElement;\n  exports.CardExpiryElement = CardExpiryElement;\n  exports.CardNumberElement = CardNumberElement;\n  exports.CheckoutProvider = CheckoutProvider;\n  exports.CurrencySelectorElement = CurrencySelectorElement;\n  exports.Elements = Elements;\n  exports.ElementsConsumer = ElementsConsumer;\n  exports.EmbeddedCheckout = EmbeddedCheckout;\n  exports.EmbeddedCheckoutProvider = EmbeddedCheckoutProvider;\n  exports.EpsBankElement = EpsBankElement;\n  exports.ExpressCheckoutElement = ExpressCheckoutElement;\n  exports.FpxBankElement = FpxBankElement;\n  exports.IbanElement = IbanElement;\n  exports.IdealBankElement = IdealBankElement;\n  exports.LinkAuthenticationElement = LinkAuthenticationElement;\n  exports.P24BankElement = P24BankElement;\n  exports.PaymentElement = PaymentElement;\n  exports.PaymentMethodMessagingElement = PaymentMethodMessagingElement;\n  exports.PaymentRequestButtonElement = PaymentRequestButtonElement;\n  exports.ShippingAddressElement = ShippingAddressElement;\n  exports.useCheckout = useCheckout;\n  exports.useElements = useElements;\n  exports.useStripe = useStripe;\n\n}));\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `rails generate channel` command.\n/* global App */\n/* eslint no-unused-expressions: 0 */\n\nimport { createConsumer } from '@rails/actioncable'\n;(function () {\n  'use strict'\n  this.App || (this.App = {})\n  window.App = this.App\n\n  App.cable = createConsumer()\n}.call(this))\n", "(function (root) {/*global exports, Intl*/\n/**\n * This script gives you the zone info key representing your device's time zone setting.\n *\n * @name jsTimezoneDetect\n * @version 1.0.6\n * @author Jon Nylander\n * @license MIT License - https://bitbucket.org/pellepim/jstimezonedetect/src/default/LICENCE.txt\n *\n * For usage and examples, visit:\n * http://pellepim.bitbucket.org/jstz/\n *\n * Copyright (c) Jon Nylander\n */\n\n\n/**\n * Namespace to hold all the code for timezone detection.\n */\nvar jstz = (function () {\n    'use strict';\n    var HEMISPHERE_SOUTH = 's',\n\n        consts = {\n            DAY: 86400000,\n            HOUR: 3600000,\n            MINUTE: 60000,\n            SECOND: 1000,\n            BASELINE_YEAR: 2014,\n            MAX_SCORE: 864000000, // 10 days\n            AMBIGUITIES: {\n                'America/Denver':       ['America/Mazatlan'],\n                'Europe/London':        ['Africa/Casablanca'],\n                'America/Chicago':      ['America/Mexico_City'],\n                'America/Asuncion':     ['America/Campo_Grande', 'America/Santiago'],\n                'America/Montevideo':   ['America/Sao_Paulo', 'America/Santiago'],\n                // Europe/Minsk should not be in this list... but Windows.\n                'Asia/Beirut':          ['Asia/Amman', 'Asia/Jerusalem', 'Europe/Helsinki', 'Asia/Damascus', 'Africa/Cairo', 'Asia/Gaza', 'Europe/Minsk'],\n                'Pacific/Auckland':     ['Pacific/Fiji'],\n                'America/Los_Angeles':  ['America/Santa_Isabel'],\n                'America/New_York':     ['America/Havana'],\n                'America/Halifax':      ['America/Goose_Bay'],\n                'America/Godthab':      ['America/Miquelon'],\n                'Asia/Dubai':           ['Asia/Yerevan'],\n                'Asia/Jakarta':         ['Asia/Krasnoyarsk'],\n                'Asia/Shanghai':        ['Asia/Irkutsk', 'Australia/Perth'],\n                'Australia/Sydney':     ['Australia/Lord_Howe'],\n                'Asia/Tokyo':           ['Asia/Yakutsk'],\n                'Asia/Dhaka':           ['Asia/Omsk'],\n                // In the real world Yerevan is not ambigous for Baku... but Windows.\n                'Asia/Baku':            ['Asia/Yerevan'],\n                'Australia/Brisbane':   ['Asia/Vladivostok'],\n                'Pacific/Noumea':       ['Asia/Vladivostok'],\n                'Pacific/Majuro':       ['Asia/Kamchatka', 'Pacific/Fiji'],\n                'Pacific/Tongatapu':    ['Pacific/Apia'],\n                'Asia/Baghdad':         ['Europe/Minsk', 'Europe/Moscow'],\n                'Asia/Karachi':         ['Asia/Yekaterinburg'],\n                'Africa/Johannesburg':  ['Asia/Gaza', 'Africa/Cairo']\n            }\n        },\n\n        /**\n         * Gets the offset in minutes from UTC for a certain date.\n         * @param {Date} date\n         * @returns {Number}\n         */\n        get_date_offset = function get_date_offset(date) {\n            var offset = -date.getTimezoneOffset();\n            return (offset !== null ? offset : 0);\n        },\n\n        /**\n         * This function does some basic calculations to create information about\n         * the user's timezone. It uses REFERENCE_YEAR as a solid year for which\n         * the script has been tested rather than depend on the year set by the\n         * client device.\n         *\n         * Returns a key that can be used to do lookups in jstz.olson.timezones.\n         * eg: \"720,1,2\".\n         *\n         * @returns {String}\n         */\n        lookup_key = function lookup_key() {\n            var january_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 0, 2)),\n                june_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 5, 2)),\n                diff = january_offset - june_offset;\n\n            if (diff < 0) {\n                return january_offset + \",1\";\n            } else if (diff > 0) {\n                return june_offset + \",1,\" + HEMISPHERE_SOUTH;\n            }\n\n            return january_offset + \",0\";\n        },\n\n\n        /**\n         * Tries to get the time zone key directly from the operating system for those\n         * environments that support the ECMAScript Internationalization API.\n         */\n        get_from_internationalization_api = function get_from_internationalization_api() {\n            var format, timezone;\n            if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n                return;\n            }\n            format = Intl.DateTimeFormat();\n            if (typeof format === \"undefined\" || typeof format.resolvedOptions === \"undefined\") {\n                return;\n            }\n            timezone = format.resolvedOptions().timeZone;\n            if (timezone && (timezone.indexOf(\"/\") > -1 || timezone === 'UTC') && timezone.indexOf(\"Etc\") != 0) {\n                return timezone;\n            }\n        },\n\n        /**\n         * Starting point for getting all the DST rules for a specific year\n         * for the current timezone (as described by the client system).\n         *\n         * Returns an object with start and end attributes, or false if no\n         * DST rules were found for the year.\n         *\n         * @param year\n         * @returns {Object} || {Boolean}\n         */\n        dst_dates = function dst_dates(year) {\n            var yearstart = new Date(year, 0, 1, 0, 0, 1, 0).getTime();\n            var yearend = new Date(year, 12, 31, 23, 59, 59).getTime();\n            var current = yearstart;\n            var offset = (new Date(current)).getTimezoneOffset();\n            var dst_start = null;\n            var dst_end = null;\n\n            while (current < yearend - 86400000) {\n                var dateToCheck = new Date(current);\n                var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n                if (dateToCheckOffset !== offset) {\n                    if (dateToCheckOffset < offset) {\n                        dst_start = dateToCheck;\n                    }\n                    if (dateToCheckOffset > offset) {\n                        dst_end = dateToCheck;\n                    }\n                    offset = dateToCheckOffset;\n                }\n\n                current += 86400000;\n            }\n\n            if (dst_start && dst_end) {\n                return {\n                    s: find_dst_fold(dst_start).getTime(),\n                    e: find_dst_fold(dst_end).getTime()\n                };\n            }\n\n            return false;\n        },\n\n        /**\n         * Probably completely unnecessary function that recursively finds the\n         * exact (to the second) time when a DST rule was changed.\n         *\n         * @param a_date - The candidate Date.\n         * @param padding - integer specifying the padding to allow around the candidate\n         *                  date for finding the fold.\n         * @param iterator - integer specifying how many milliseconds to iterate while\n         *                   searching for the fold.\n         *\n         * @returns {Date}\n         */\n        find_dst_fold = function find_dst_fold(a_date, padding, iterator) {\n            if (typeof padding === 'undefined') {\n                padding = consts.DAY;\n                iterator = consts.HOUR;\n            }\n\n            var date_start = new Date(a_date.getTime() - padding).getTime();\n            var date_end = a_date.getTime() + padding;\n            var offset = new Date(date_start).getTimezoneOffset();\n\n            var current = date_start;\n\n            var dst_change = null;\n            while (current < date_end - iterator) {\n                var dateToCheck = new Date(current);\n                var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n                if (dateToCheckOffset !== offset) {\n                    dst_change = dateToCheck;\n                    break;\n                }\n                current += iterator;\n            }\n\n            if (padding === consts.DAY) {\n                return find_dst_fold(dst_change, consts.HOUR, consts.MINUTE);\n            }\n\n            if (padding === consts.HOUR) {\n                return find_dst_fold(dst_change, consts.MINUTE, consts.SECOND);\n            }\n\n            return dst_change;\n        },\n\n        windows7_adaptations = function windows7_adaptions(rule_list, preliminary_timezone, score, sample) {\n            if (score !== 'N/A') {\n                return score;\n            }\n            if (preliminary_timezone === 'Asia/Beirut') {\n                if (sample.name === 'Africa/Cairo') {\n                    if (rule_list[6].s === 1398376800000 && rule_list[6].e === 1411678800000) {\n                        return 0;\n                    }\n                }\n                if (sample.name === 'Asia/Jerusalem') {\n                    if (rule_list[6].s === 1395964800000 && rule_list[6].e === 1411858800000) {\n                        return 0;\n                }\n            }\n            } else if (preliminary_timezone === 'America/Santiago') {\n                if (sample.name === 'America/Asuncion') {\n                    if (rule_list[6].s === 1412481600000 && rule_list[6].e === 1397358000000) {\n                        return 0;\n                    }\n                }\n                if (sample.name === 'America/Campo_Grande') {\n                    if (rule_list[6].s === 1413691200000 && rule_list[6].e === 1392519600000) {\n                        return 0;\n                    }\n                }\n            } else if (preliminary_timezone === 'America/Montevideo') {\n                if (sample.name === 'America/Sao_Paulo') {\n                    if (rule_list[6].s === 1413687600000 && rule_list[6].e === 1392516000000) {\n                        return 0;\n                    }\n                }\n            } else if (preliminary_timezone === 'Pacific/Auckland') {\n                if (sample.name === 'Pacific/Fiji') {\n                    if (rule_list[6].s === 1414245600000 && rule_list[6].e === 1396101600000) {\n                        return 0;\n                    }\n                }\n            }\n\n            return score;\n        },\n\n        /**\n         * Takes the DST rules for the current timezone, and proceeds to find matches\n         * in the jstz.olson.dst_rules.zones array.\n         *\n         * Compares samples to the current timezone on a scoring basis.\n         *\n         * Candidates are ruled immediately if either the candidate or the current zone\n         * has a DST rule where the other does not.\n         *\n         * Candidates are ruled out immediately if the current zone has a rule that is\n         * outside the DST scope of the candidate.\n         *\n         * Candidates are included for scoring if the current zones rules fall within the\n         * span of the samples rules.\n         *\n         * Low score is best, the score is calculated by summing up the differences in DST\n         * rules and if the consts.MAX_SCORE is overreached the candidate is ruled out.\n         *\n         * Yah follow? :)\n         *\n         * @param rule_list\n         * @param preliminary_timezone\n         * @returns {*}\n         */\n        best_dst_match = function best_dst_match(rule_list, preliminary_timezone) {\n            var score_sample = function score_sample(sample) {\n                var score = 0;\n\n                for (var j = 0; j < rule_list.length; j++) {\n\n                    // Both sample and current time zone report DST during the year.\n                    if (!!sample.rules[j] && !!rule_list[j]) {\n\n                        // The current time zone's DST rules are inside the sample's. Include.\n                        if (rule_list[j].s >= sample.rules[j].s && rule_list[j].e <= sample.rules[j].e) {\n                            score = 0;\n                            score += Math.abs(rule_list[j].s - sample.rules[j].s);\n                            score += Math.abs(sample.rules[j].e - rule_list[j].e);\n\n                        // The current time zone's DST rules are outside the sample's. Discard.\n                        } else {\n                            score = 'N/A';\n                            break;\n                        }\n\n                        // The max score has been reached. Discard.\n                        if (score > consts.MAX_SCORE) {\n                            score = 'N/A';\n                            break;\n                        }\n                    }\n                }\n\n                score = windows7_adaptations(rule_list, preliminary_timezone, score, sample);\n\n                return score;\n            };\n            var scoreboard = {};\n            var dst_zones = jstz.olson.dst_rules.zones;\n            var dst_zones_length = dst_zones.length;\n            var ambiguities = consts.AMBIGUITIES[preliminary_timezone];\n\n            for (var i = 0; i < dst_zones_length; i++) {\n                var sample = dst_zones[i];\n                var score = score_sample(dst_zones[i]);\n\n                if (score !== 'N/A') {\n                    scoreboard[sample.name] = score;\n                }\n            }\n\n            for (var tz in scoreboard) {\n                if (scoreboard.hasOwnProperty(tz)) {\n                    for (var j = 0; j < ambiguities.length; j++) {\n                        if (ambiguities[j] === tz) {\n                        return tz;\n                        }\n                    }\n                }\n            }\n\n            return preliminary_timezone;\n        },\n\n        /**\n         * Takes the preliminary_timezone as detected by lookup_key().\n         *\n         * Builds up the current timezones DST rules for the years defined\n         * in the jstz.olson.dst_rules.years array.\n         *\n         * If there are no DST occurences for those years, immediately returns\n         * the preliminary timezone. Otherwise proceeds and tries to solve\n         * ambiguities.\n         *\n         * @param preliminary_timezone\n         * @returns {String} timezone_name\n         */\n        get_by_dst = function get_by_dst(preliminary_timezone) {\n            var get_rules = function get_rules() {\n                var rule_list = [];\n                for (var i = 0; i < jstz.olson.dst_rules.years.length; i++) {\n                    var year_rules = dst_dates(jstz.olson.dst_rules.years[i]);\n                    rule_list.push(year_rules);\n                }\n                return rule_list;\n            };\n            var check_has_dst = function check_has_dst(rules) {\n                for (var i = 0; i < rules.length; i++) {\n                    if (rules[i] !== false) {\n                        return true;\n                    }\n                }\n                return false;\n            };\n            var rules = get_rules();\n            var has_dst = check_has_dst(rules);\n\n            if (has_dst) {\n                return best_dst_match(rules, preliminary_timezone);\n            }\n\n            return preliminary_timezone;\n        },\n\n        /**\n         * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.\n         *\n         * Returns an object with one function \".name()\"\n         *\n         * @returns Object\n         */\n        determine = function determine() {\n            var preliminary_tz = get_from_internationalization_api();\n\n            if (!preliminary_tz) {\n                preliminary_tz = jstz.olson.timezones[lookup_key()];\n\n                if (typeof consts.AMBIGUITIES[preliminary_tz] !== 'undefined') {\n                    preliminary_tz = get_by_dst(preliminary_tz);\n                }\n            }\n\n            return {\n                name: function () {\n                    return preliminary_tz;\n                },\n                stdTimezoneOffset : function () {\n                    // negative to match what (new Date).getTimezoneOffset() will return\n                    return -lookup_key().split(',')[0];\n                },\n                timezoneOffset : function () {\n                    // negative to match what (new Date).getTimezoneOffset() will return\n                    return -get_date_offset(new Date())\n                }\n            };\n        };\n\n    return {\n        determine: determine\n    };\n}());\n\n\njstz.olson = jstz.olson || {};\n\n/**\n * The keys in this dictionary are comma separated as such:\n *\n * First the offset compared to UTC time in minutes.\n *\n * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it\n * does.\n *\n * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,\n * only interesting for timezones with DST.\n *\n * The mapped arrays is used for constructing the jstz.TimeZone object from within\n * jstz.determine();\n */\njstz.olson.timezones = {\n    '-720,0': 'Etc/GMT+12',\n    '-660,0': 'Pacific/Pago_Pago',\n    '-660,1,s': 'Pacific/Apia', // Why? Because windows... cry!\n    '-600,1': 'America/Adak',\n    '-600,0': 'Pacific/Honolulu',\n    '-570,0': 'Pacific/Marquesas',\n    '-540,0': 'Pacific/Gambier',\n    '-540,1': 'America/Anchorage',\n    '-480,1': 'America/Los_Angeles',\n    '-480,0': 'Pacific/Pitcairn',\n    '-420,0': 'America/Phoenix',\n    '-420,1': 'America/Denver',\n    '-360,0': 'America/Guatemala',\n    '-360,1': 'America/Chicago',\n    '-360,1,s': 'Pacific/Easter',\n    '-300,0': 'America/Bogota',\n    '-300,1': 'America/New_York',\n    '-270,0': 'America/Caracas',\n    '-240,1': 'America/Halifax',\n    '-240,0': 'America/Santo_Domingo',\n    '-240,1,s': 'America/Asuncion',\n    '-210,1': 'America/St_Johns',\n    '-180,1': 'America/Godthab',\n    '-180,0': 'America/Argentina/Buenos_Aires',\n    '-180,1,s': 'America/Montevideo',\n    '-120,0': 'America/Noronha',\n    '-120,1': 'America/Noronha',\n    '-60,1': 'Atlantic/Azores',\n    '-60,0': 'Atlantic/Cape_Verde',\n    '0,0': 'UTC',\n    '0,1': 'Europe/London',\n    '60,1': 'Europe/Berlin',\n    '60,0': 'Africa/Lagos',\n    '60,1,s': 'Africa/Windhoek',\n    '120,1': 'Asia/Beirut',\n    '120,0': 'Africa/Johannesburg',\n    '180,0': 'Asia/Baghdad',\n    '180,1': 'Europe/Moscow',\n    '210,1': 'Asia/Tehran',\n    '240,0': 'Asia/Dubai',\n    '240,1': 'Asia/Baku',\n    '270,0': 'Asia/Kabul',\n    '300,1': 'Asia/Yekaterinburg',\n    '300,0': 'Asia/Karachi',\n    '330,0': 'Asia/Kolkata',\n    '345,0': 'Asia/Kathmandu',\n    '360,0': 'Asia/Dhaka',\n    '360,1': 'Asia/Omsk',\n    '390,0': 'Asia/Rangoon',\n    '420,1': 'Asia/Krasnoyarsk',\n    '420,0': 'Asia/Jakarta',\n    '480,0': 'Asia/Shanghai',\n    '480,1': 'Asia/Irkutsk',\n    '525,0': 'Australia/Eucla',\n    '525,1,s': 'Australia/Eucla',\n    '540,1': 'Asia/Yakutsk',\n    '540,0': 'Asia/Tokyo',\n    '570,0': 'Australia/Darwin',\n    '570,1,s': 'Australia/Adelaide',\n    '600,0': 'Australia/Brisbane',\n    '600,1': 'Asia/Vladivostok',\n    '600,1,s': 'Australia/Sydney',\n    '630,1,s': 'Australia/Lord_Howe',\n    '660,1': 'Asia/Kamchatka',\n    '660,0': 'Pacific/Noumea',\n    '690,0': 'Pacific/Norfolk',\n    '720,1,s': 'Pacific/Auckland',\n    '720,0': 'Pacific/Majuro',\n    '765,1,s': 'Pacific/Chatham',\n    '780,0': 'Pacific/Tongatapu',\n    '780,1,s': 'Pacific/Apia',\n    '840,0': 'Pacific/Kiritimati'\n};\n\n/* Build time: 2015-11-02 13:01:00Z Build by invoking python utilities/dst.py generate */\njstz.olson.dst_rules = {\n    \"years\": [\n        2008,\n        2009,\n        2010,\n        2011,\n        2012,\n        2013,\n        2014\n    ],\n    \"zones\": [\n        {\n            \"name\": \"Africa/Cairo\",\n            \"rules\": [\n                {\n                    \"e\": 1219957200000,\n                    \"s\": 1209074400000\n                },\n                {\n                    \"e\": 1250802000000,\n                    \"s\": 1240524000000\n                },\n                {\n                    \"e\": 1285880400000,\n                    \"s\": 1284069600000\n                },\n                false,\n                false,\n                false,\n                {\n                    \"e\": 1411678800000,\n                    \"s\": 1406844000000\n                }\n            ]\n        },\n        {\n            \"name\": \"Africa/Casablanca\",\n            \"rules\": [\n                {\n                    \"e\": 1220223600000,\n                    \"s\": 1212278400000\n                },\n                {\n                    \"e\": 1250809200000,\n                    \"s\": 1243814400000\n                },\n                {\n                    \"e\": 1281222000000,\n                    \"s\": 1272758400000\n                },\n                {\n                    \"e\": 1312066800000,\n                    \"s\": 1301788800000\n                },\n                {\n                    \"e\": 1348970400000,\n                    \"s\": 1345428000000\n                },\n                {\n                    \"e\": 1382839200000,\n                    \"s\": 1376100000000\n                },\n                {\n                    \"e\": 1414288800000,\n                    \"s\": 1406944800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Asuncion\",\n            \"rules\": [\n                {\n                    \"e\": 1205031600000,\n                    \"s\": 1224388800000\n                },\n                {\n                    \"e\": 1236481200000,\n                    \"s\": 1255838400000\n                },\n                {\n                    \"e\": 1270954800000,\n                    \"s\": 1286078400000\n                },\n                {\n                    \"e\": 1302404400000,\n                    \"s\": 1317528000000\n                },\n                {\n                    \"e\": 1333854000000,\n                    \"s\": 1349582400000\n                },\n                {\n                    \"e\": 1364094000000,\n                    \"s\": 1381032000000\n                },\n                {\n                    \"e\": 1395543600000,\n                    \"s\": 1412481600000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Campo_Grande\",\n            \"rules\": [\n                {\n                    \"e\": 1203217200000,\n                    \"s\": 1224388800000\n                },\n                {\n                    \"e\": 1234666800000,\n                    \"s\": 1255838400000\n                },\n                {\n                    \"e\": 1266721200000,\n                    \"s\": 1287288000000\n                },\n                {\n                    \"e\": 1298170800000,\n                    \"s\": 1318737600000\n                },\n                {\n                    \"e\": 1330225200000,\n                    \"s\": 1350792000000\n                },\n                {\n                    \"e\": 1361070000000,\n                    \"s\": 1382241600000\n                },\n                {\n                    \"e\": 1392519600000,\n                    \"s\": 1413691200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Goose_Bay\",\n            \"rules\": [\n                {\n                    \"e\": 1225594860000,\n                    \"s\": 1205035260000\n                },\n                {\n                    \"e\": 1257044460000,\n                    \"s\": 1236484860000\n                },\n                {\n                    \"e\": 1289098860000,\n                    \"s\": 1268539260000\n                },\n                {\n                    \"e\": 1320555600000,\n                    \"s\": 1299988860000\n                },\n                {\n                    \"e\": 1352005200000,\n                    \"s\": 1331445600000\n                },\n                {\n                    \"e\": 1383454800000,\n                    \"s\": 1362895200000\n                },\n                {\n                    \"e\": 1414904400000,\n                    \"s\": 1394344800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Havana\",\n            \"rules\": [\n                {\n                    \"e\": 1224997200000,\n                    \"s\": 1205643600000\n                },\n                {\n                    \"e\": 1256446800000,\n                    \"s\": 1236488400000\n                },\n                {\n                    \"e\": 1288501200000,\n                    \"s\": 1268542800000\n                },\n                {\n                    \"e\": 1321160400000,\n                    \"s\": 1300597200000\n                },\n                {\n                    \"e\": 1352005200000,\n                    \"s\": 1333256400000\n                },\n                {\n                    \"e\": 1383454800000,\n                    \"s\": 1362891600000\n                },\n                {\n                    \"e\": 1414904400000,\n                    \"s\": 1394341200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Mazatlan\",\n            \"rules\": [\n                {\n                    \"e\": 1225008000000,\n                    \"s\": 1207472400000\n                },\n                {\n                    \"e\": 1256457600000,\n                    \"s\": 1238922000000\n                },\n                {\n                    \"e\": 1288512000000,\n                    \"s\": 1270371600000\n                },\n                {\n                    \"e\": 1319961600000,\n                    \"s\": 1301821200000\n                },\n                {\n                    \"e\": 1351411200000,\n                    \"s\": 1333270800000\n                },\n                {\n                    \"e\": 1382860800000,\n                    \"s\": 1365325200000\n                },\n                {\n                    \"e\": 1414310400000,\n                    \"s\": 1396774800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Mexico_City\",\n            \"rules\": [\n                {\n                    \"e\": 1225004400000,\n                    \"s\": 1207468800000\n                },\n                {\n                    \"e\": 1256454000000,\n                    \"s\": 1238918400000\n                },\n                {\n                    \"e\": 1288508400000,\n                    \"s\": 1270368000000\n                },\n                {\n                    \"e\": 1319958000000,\n                    \"s\": 1301817600000\n                },\n                {\n                    \"e\": 1351407600000,\n                    \"s\": 1333267200000\n                },\n                {\n                    \"e\": 1382857200000,\n                    \"s\": 1365321600000\n                },\n                {\n                    \"e\": 1414306800000,\n                    \"s\": 1396771200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Miquelon\",\n            \"rules\": [\n                {\n                    \"e\": 1225598400000,\n                    \"s\": 1205038800000\n                },\n                {\n                    \"e\": 1257048000000,\n                    \"s\": 1236488400000\n                },\n                {\n                    \"e\": 1289102400000,\n                    \"s\": 1268542800000\n                },\n                {\n                    \"e\": 1320552000000,\n                    \"s\": 1299992400000\n                },\n                {\n                    \"e\": 1352001600000,\n                    \"s\": 1331442000000\n                },\n                {\n                    \"e\": 1383451200000,\n                    \"s\": 1362891600000\n                },\n                {\n                    \"e\": 1414900800000,\n                    \"s\": 1394341200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Santa_Isabel\",\n            \"rules\": [\n                {\n                    \"e\": 1225011600000,\n                    \"s\": 1207476000000\n                },\n                {\n                    \"e\": 1256461200000,\n                    \"s\": 1238925600000\n                },\n                {\n                    \"e\": 1288515600000,\n                    \"s\": 1270375200000\n                },\n                {\n                    \"e\": 1319965200000,\n                    \"s\": 1301824800000\n                },\n                {\n                    \"e\": 1351414800000,\n                    \"s\": 1333274400000\n                },\n                {\n                    \"e\": 1382864400000,\n                    \"s\": 1365328800000\n                },\n                {\n                    \"e\": 1414314000000,\n                    \"s\": 1396778400000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Santiago\",\n            \"rules\": [\n                {\n                    \"e\": 1206846000000,\n                    \"s\": 1223784000000\n                },\n                {\n                    \"e\": 1237086000000,\n                    \"s\": 1255233600000\n                },\n                {\n                    \"e\": 1270350000000,\n                    \"s\": 1286683200000\n                },\n                {\n                    \"e\": 1304823600000,\n                    \"s\": 1313899200000\n                },\n                {\n                    \"e\": 1335668400000,\n                    \"s\": 1346558400000\n                },\n                {\n                    \"e\": 1367118000000,\n                    \"s\": 1378612800000\n                },\n                {\n                    \"e\": 1398567600000,\n                    \"s\": 1410062400000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Sao_Paulo\",\n            \"rules\": [\n                {\n                    \"e\": 1203213600000,\n                    \"s\": 1224385200000\n                },\n                {\n                    \"e\": 1234663200000,\n                    \"s\": 1255834800000\n                },\n                {\n                    \"e\": 1266717600000,\n                    \"s\": 1287284400000\n                },\n                {\n                    \"e\": 1298167200000,\n                    \"s\": 1318734000000\n                },\n                {\n                    \"e\": 1330221600000,\n                    \"s\": 1350788400000\n                },\n                {\n                    \"e\": 1361066400000,\n                    \"s\": 1382238000000\n                },\n                {\n                    \"e\": 1392516000000,\n                    \"s\": 1413687600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Amman\",\n            \"rules\": [\n                {\n                    \"e\": 1225404000000,\n                    \"s\": 1206655200000\n                },\n                {\n                    \"e\": 1256853600000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1288303200000,\n                    \"s\": 1269554400000\n                },\n                {\n                    \"e\": 1319752800000,\n                    \"s\": 1301608800000\n                },\n                false,\n                false,\n                {\n                    \"e\": 1414706400000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Damascus\",\n            \"rules\": [\n                {\n                    \"e\": 1225486800000,\n                    \"s\": 1207260000000\n                },\n                {\n                    \"e\": 1256850000000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1288299600000,\n                    \"s\": 1270159200000\n                },\n                {\n                    \"e\": 1319749200000,\n                    \"s\": 1301608800000\n                },\n                {\n                    \"e\": 1351198800000,\n                    \"s\": 1333058400000\n                },\n                {\n                    \"e\": 1382648400000,\n                    \"s\": 1364508000000\n                },\n                {\n                    \"e\": 1414702800000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Dubai\",\n            \"rules\": [\n                false,\n                false,\n                false,\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Gaza\",\n            \"rules\": [\n                {\n                    \"e\": 1219957200000,\n                    \"s\": 1206655200000\n                },\n                {\n                    \"e\": 1252015200000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1281474000000,\n                    \"s\": 1269640860000\n                },\n                {\n                    \"e\": 1312146000000,\n                    \"s\": 1301608860000\n                },\n                {\n                    \"e\": 1348178400000,\n                    \"s\": 1333058400000\n                },\n                {\n                    \"e\": 1380229200000,\n                    \"s\": 1364508000000\n                },\n                {\n                    \"e\": 1414098000000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Irkutsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224957600000,\n                    \"s\": 1206813600000\n                },\n                {\n                    \"e\": 1256407200000,\n                    \"s\": 1238263200000\n                },\n                {\n                    \"e\": 1288461600000,\n                    \"s\": 1269712800000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Jerusalem\",\n            \"rules\": [\n                {\n                    \"e\": 1223161200000,\n                    \"s\": 1206662400000\n                },\n                {\n                    \"e\": 1254006000000,\n                    \"s\": 1238112000000\n                },\n                {\n                    \"e\": 1284246000000,\n                    \"s\": 1269561600000\n                },\n                {\n                    \"e\": 1317510000000,\n                    \"s\": 1301616000000\n                },\n                {\n                    \"e\": 1348354800000,\n                    \"s\": 1333065600000\n                },\n                {\n                    \"e\": 1382828400000,\n                    \"s\": 1364515200000\n                },\n                {\n                    \"e\": 1414278000000,\n                    \"s\": 1395964800000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Kamchatka\",\n            \"rules\": [\n                {\n                    \"e\": 1224943200000,\n                    \"s\": 1206799200000\n                },\n                {\n                    \"e\": 1256392800000,\n                    \"s\": 1238248800000\n                },\n                {\n                    \"e\": 1288450800000,\n                    \"s\": 1269698400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Krasnoyarsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224961200000,\n                    \"s\": 1206817200000\n                },\n                {\n                    \"e\": 1256410800000,\n                    \"s\": 1238266800000\n                },\n                {\n                    \"e\": 1288465200000,\n                    \"s\": 1269716400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Omsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224964800000,\n                    \"s\": 1206820800000\n                },\n                {\n                    \"e\": 1256414400000,\n                    \"s\": 1238270400000\n                },\n                {\n                    \"e\": 1288468800000,\n                    \"s\": 1269720000000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Vladivostok\",\n            \"rules\": [\n                {\n                    \"e\": 1224950400000,\n                    \"s\": 1206806400000\n                },\n                {\n                    \"e\": 1256400000000,\n                    \"s\": 1238256000000\n                },\n                {\n                    \"e\": 1288454400000,\n                    \"s\": 1269705600000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yakutsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224954000000,\n                    \"s\": 1206810000000\n                },\n                {\n                    \"e\": 1256403600000,\n                    \"s\": 1238259600000\n                },\n                {\n                    \"e\": 1288458000000,\n                    \"s\": 1269709200000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yekaterinburg\",\n            \"rules\": [\n                {\n                    \"e\": 1224968400000,\n                    \"s\": 1206824400000\n                },\n                {\n                    \"e\": 1256418000000,\n                    \"s\": 1238274000000\n                },\n                {\n                    \"e\": 1288472400000,\n                    \"s\": 1269723600000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yerevan\",\n            \"rules\": [\n                {\n                    \"e\": 1224972000000,\n                    \"s\": 1206828000000\n                },\n                {\n                    \"e\": 1256421600000,\n                    \"s\": 1238277600000\n                },\n                {\n                    \"e\": 1288476000000,\n                    \"s\": 1269727200000\n                },\n                {\n                    \"e\": 1319925600000,\n                    \"s\": 1301176800000\n                },\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Australia/Lord_Howe\",\n            \"rules\": [\n                {\n                    \"e\": 1207407600000,\n                    \"s\": 1223134200000\n                },\n                {\n                    \"e\": 1238857200000,\n                    \"s\": 1254583800000\n                },\n                {\n                    \"e\": 1270306800000,\n                    \"s\": 1286033400000\n                },\n                {\n                    \"e\": 1301756400000,\n                    \"s\": 1317483000000\n                },\n                {\n                    \"e\": 1333206000000,\n                    \"s\": 1349537400000\n                },\n                {\n                    \"e\": 1365260400000,\n                    \"s\": 1380987000000\n                },\n                {\n                    \"e\": 1396710000000,\n                    \"s\": 1412436600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Australia/Perth\",\n            \"rules\": [\n                {\n                    \"e\": 1206813600000,\n                    \"s\": 1224957600000\n                },\n                false,\n                false,\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Europe/Helsinki\",\n            \"rules\": [\n                {\n                    \"e\": 1224982800000,\n                    \"s\": 1206838800000\n                },\n                {\n                    \"e\": 1256432400000,\n                    \"s\": 1238288400000\n                },\n                {\n                    \"e\": 1288486800000,\n                    \"s\": 1269738000000\n                },\n                {\n                    \"e\": 1319936400000,\n                    \"s\": 1301187600000\n                },\n                {\n                    \"e\": 1351386000000,\n                    \"s\": 1332637200000\n                },\n                {\n                    \"e\": 1382835600000,\n                    \"s\": 1364691600000\n                },\n                {\n                    \"e\": 1414285200000,\n                    \"s\": 1396141200000\n                }\n            ]\n        },\n        {\n            \"name\": \"Europe/Minsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224979200000,\n                    \"s\": 1206835200000\n                },\n                {\n                    \"e\": 1256428800000,\n                    \"s\": 1238284800000\n                },\n                {\n                    \"e\": 1288483200000,\n                    \"s\": 1269734400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Europe/Moscow\",\n            \"rules\": [\n                {\n                    \"e\": 1224975600000,\n                    \"s\": 1206831600000\n                },\n                {\n                    \"e\": 1256425200000,\n                    \"s\": 1238281200000\n                },\n                {\n                    \"e\": 1288479600000,\n                    \"s\": 1269730800000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Pacific/Apia\",\n            \"rules\": [\n                false,\n                false,\n                false,\n                {\n                    \"e\": 1301752800000,\n                    \"s\": 1316872800000\n                },\n                {\n                    \"e\": 1333202400000,\n                    \"s\": 1348927200000\n                },\n                {\n                    \"e\": 1365256800000,\n                    \"s\": 1380376800000\n                },\n                {\n                    \"e\": 1396706400000,\n                    \"s\": 1411826400000\n                }\n            ]\n        },\n        {\n            \"name\": \"Pacific/Fiji\",\n            \"rules\": [\n                false,\n                false,\n                {\n                    \"e\": 1269698400000,\n                    \"s\": 1287842400000\n                },\n                {\n                    \"e\": 1327154400000,\n                    \"s\": 1319292000000\n                },\n                {\n                    \"e\": 1358604000000,\n                    \"s\": 1350741600000\n                },\n                {\n                    \"e\": 1390050000000,\n                    \"s\": 1382796000000\n                },\n                {\n                    \"e\": 1421503200000,\n                    \"s\": 1414850400000\n                }\n            ]\n        },\n        {\n            \"name\": \"Europe/London\",\n            \"rules\": [\n                {\n                    \"e\": 1224982800000,\n                    \"s\": 1206838800000\n                },\n                {\n                    \"e\": 1256432400000,\n                    \"s\": 1238288400000\n                },\n                {\n                    \"e\": 1288486800000,\n                    \"s\": 1269738000000\n                },\n                {\n                    \"e\": 1319936400000,\n                    \"s\": 1301187600000\n                },\n                {\n                    \"e\": 1351386000000,\n                    \"s\": 1332637200000\n                },\n                {\n                    \"e\": 1382835600000,\n                    \"s\": 1364691600000\n                },\n                {\n                    \"e\": 1414285200000,\n                    \"s\": 1396141200000\n                }\n            ]\n        }\n    ]\n};\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n    module.exports = jstz;\n} else if ((typeof define !== 'undefined' && define !== null) && (define.amd != null)) {\n    define([], function() {\n        return jstz;\n    });\n} else {\n    if (typeof root === 'undefined') {\n        window.jstz = jstz;\n    } else {\n        root.jstz = jstz;\n    }\n}\n}());\n", "module.exports = require('./dist/jstz.js');\n", "(function(){var t=this;(function(){(function(){var t=[].slice;this.LocalTime={config:{},run:function(){return this.getController().processElements()},process:function(){var e,n,r,a;for(n=1<=arguments.length?t.call(arguments,0):[],r=0,a=n.length;r<a;r++)e=n[r],this.getController().processElement(e);return n.length},getController:function(){return null!=this.controller?this.controller:this.controller=new e.Controller}}}).call(this)}).call(t);var e=t.LocalTime;(function(){(function(){e.config.i18n={en:{date:{dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],abbrDayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbrMonthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],yesterday:\"yesterday\",today:\"today\",tomorrow:\"tomorrow\",on:\"on {date}\",formats:{\"default\":\"%b %e, %Y\",thisYear:\"%b %e\"}},time:{am:\"am\",pm:\"pm\",singular:\"a {time}\",singularAn:\"an {time}\",elapsed:\"{time} ago\",second:\"second\",seconds:\"seconds\",minute:\"minute\",minutes:\"minutes\",hour:\"hour\",hours:\"hours\",formats:{\"default\":\"%l:%M%P\"}},datetime:{at:\"{date} at {time}\",formats:{\"default\":\"%B %e, %Y at %l:%M%P %Z\"}}}}}).call(this),function(){e.config.locale=\"en\",e.config.defaultLocale=\"en\"}.call(this),function(){e.config.timerInterval=6e4}.call(this),function(){var t,n,r;r=!isNaN(Date.parse(\"2011-01-01T12:00:00-05:00\")),e.parseDate=function(t){return t=t.toString(),r||(t=n(t)),new Date(Date.parse(t))},t=/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(Z|[-+]?[\\d:]+)$/,n=function(e){var n,r,a,i,o,s,u,c,l;if(a=e.match(t))return a[0],c=a[1],o=a[2],n=a[3],r=a[4],i=a[5],u=a[6],l=a[7],\"Z\"!==l&&(s=l.replace(\":\",\"\")),c+\"/\"+o+\"/\"+n+\" \"+r+\":\"+i+\":\"+u+\" GMT\"+[s]}}.call(this),function(){e.elementMatchesSelector=function(){var t,e,n,r,a,i;return t=document.documentElement,e=null!=(n=null!=(r=null!=(a=null!=(i=t.matches)?i:t.matchesSelector)?a:t.webkitMatchesSelector)?r:t.mozMatchesSelector)?n:t.msMatchesSelector,function(t,n){if((null!=t?t.nodeType:void 0)===Node.ELEMENT_NODE)return e.call(t,n)}}()}.call(this),function(){var t,n,r;t=e.config,r=t.i18n,e.getI18nValue=function(a,i){var o,s;return null==a&&(a=\"\"),o=(null!=i?i:{locale:t.locale}).locale,s=n(r[o],a),null!=s?s:o!==t.defaultLocale?e.getI18nValue(a,{locale:t.defaultLocale}):void 0},e.translate=function(t,n,r){var a,i,o;null==n&&(n={}),o=e.getI18nValue(t,r);for(a in n)i=n[a],o=o.replace(\"{\"+a+\"}\",i);return o},n=function(t,e){var n,r,a,i,o;for(o=t,i=e.split(\".\"),n=0,a=i.length;n<a;n++){if(r=i[n],null==o[r])return null;o=o[r]}return o}}.call(this),function(){var t,n,r,a,i;t=e.getI18nValue,i=e.translate,e.strftime=a=function(e,o){var s,u,c,l,d,h,f;return u=e.getDay(),s=e.getDate(),d=e.getMonth(),f=e.getFullYear(),c=e.getHours(),l=e.getMinutes(),h=e.getSeconds(),o.replace(/%(-?)([%aAbBcdeHIlmMpPSwyYZ])/g,function(o,m,p){switch(p){case\"%\":return\"%\";case\"a\":return t(\"date.abbrDayNames\")[u];case\"A\":return t(\"date.dayNames\")[u];case\"b\":return t(\"date.abbrMonthNames\")[d];case\"B\":return t(\"date.monthNames\")[d];case\"c\":return e.toString();case\"d\":return n(s,m);case\"e\":return s;case\"H\":return n(c,m);case\"I\":return n(a(e,\"%l\"),m);case\"l\":return 0===c||12===c?12:(c+12)%12;case\"m\":return n(d+1,m);case\"M\":return n(l,m);case\"p\":return i(\"time.\"+(c>11?\"pm\":\"am\")).toUpperCase();case\"P\":return i(\"time.\"+(c>11?\"pm\":\"am\"));case\"S\":return n(h,m);case\"w\":return u;case\"y\":return n(f%100,m);case\"Y\":return f;case\"Z\":return r(e)}})},n=function(t,e){switch(e){case\"-\":return t;default:return(\"0\"+t).slice(-2)}},r=function(t){var e,n,r,a,i;return i=t.toString(),(e=null!=(n=i.match(/\\(([\\w\\s]+)\\)$/))?n[1]:void 0)?/\\s/.test(e)?e.match(/\\b(\\w)/g).join(\"\"):e:(e=null!=(r=i.match(/(\\w{3,4})\\s\\d{4}$/))?r[1]:void 0)?e:(e=null!=(a=i.match(/(UTC[\\+\\-]\\d+)/))?a[1]:void 0)?e:\"\"}}.call(this),function(){e.CalendarDate=function(){function t(t,e,n){this.date=new Date(Date.UTC(t,e-1)),this.date.setUTCDate(n),this.year=this.date.getUTCFullYear(),this.month=this.date.getUTCMonth()+1,this.day=this.date.getUTCDate(),this.value=this.date.getTime()}return t.fromDate=function(t){return new this(t.getFullYear(),t.getMonth()+1,t.getDate())},t.today=function(){return this.fromDate(new Date)},t.prototype.equals=function(t){return(null!=t?t.value:void 0)===this.value},t.prototype.is=function(t){return this.equals(t)},t.prototype.isToday=function(){return this.is(this.constructor.today())},t.prototype.occursOnSameYearAs=function(t){return this.year===(null!=t?t.year:void 0)},t.prototype.occursThisYear=function(){return this.occursOnSameYearAs(this.constructor.today())},t.prototype.daysSince=function(t){if(t)return(this.date-t.date)/864e5},t.prototype.daysPassed=function(){return this.constructor.today().daysSince(this)},t}()}.call(this),function(){var t,n,r;n=e.strftime,r=e.translate,t=e.getI18nValue,e.RelativeTime=function(){function a(t){this.date=t,this.calendarDate=e.CalendarDate.fromDate(this.date)}return a.prototype.toString=function(){var t,e;return(e=this.toTimeElapsedString())?r(\"time.elapsed\",{time:e}):(t=this.toWeekdayString())?(e=this.toTimeString(),r(\"datetime.at\",{date:t,time:e})):r(\"date.on\",{date:this.toDateString()})},a.prototype.toTimeOrDateString=function(){return this.calendarDate.isToday()?this.toTimeString():this.toDateString()},a.prototype.toTimeElapsedString=function(){var t,e,n,a,i;return n=(new Date).getTime()-this.date.getTime(),a=Math.round(n/1e3),e=Math.round(a/60),t=Math.round(e/60),n<0?null:a<10?(i=r(\"time.second\"),r(\"time.singular\",{time:i})):a<45?a+\" \"+r(\"time.seconds\"):a<90?(i=r(\"time.minute\"),r(\"time.singular\",{time:i})):e<45?e+\" \"+r(\"time.minutes\"):e<90?(i=r(\"time.hour\"),r(\"time.singularAn\",{time:i})):t<24?t+\" \"+r(\"time.hours\"):\"\"},a.prototype.toWeekdayString=function(){switch(this.calendarDate.daysPassed()){case 0:return r(\"date.today\");case 1:return r(\"date.yesterday\");case-1:return r(\"date.tomorrow\");case 2:case 3:case 4:case 5:case 6:return n(this.date,\"%A\");default:return\"\"}},a.prototype.toDateString=function(){var e;return e=t(this.calendarDate.occursThisYear()?\"date.formats.thisYear\":\"date.formats.default\"),n(this.date,e)},a.prototype.toTimeString=function(){return n(this.date,t(\"time.formats.default\"))},a}()}.call(this),function(){var t,n=function(t,e){return function(){return t.apply(e,arguments)}};t=e.elementMatchesSelector,e.PageObserver=function(){function e(t,e){this.selector=t,this.callback=e,this.processInsertion=n(this.processInsertion,this),this.processMutations=n(this.processMutations,this)}return e.prototype.start=function(){if(!this.started)return this.observeWithMutationObserver()||this.observeWithMutationEvent(),this.started=!0},e.prototype.observeWithMutationObserver=function(){var t;if(\"undefined\"!=typeof MutationObserver&&null!==MutationObserver)return t=new MutationObserver(this.processMutations),t.observe(document.documentElement,{childList:!0,subtree:!0}),!0},e.prototype.observeWithMutationEvent=function(){return addEventListener(\"DOMNodeInserted\",this.processInsertion,!1),!0},e.prototype.findSignificantElements=function(e){var n;return n=[],(null!=e?e.nodeType:void 0)===Node.ELEMENT_NODE&&(t(e,this.selector)&&n.push(e),n.push.apply(n,e.querySelectorAll(this.selector))),n},e.prototype.processMutations=function(t){var e,n,r,a,i,o,s,u;for(e=[],n=0,a=t.length;n<a;n++)switch(o=t[n],o.type){case\"childList\":for(u=o.addedNodes,r=0,i=u.length;r<i;r++)s=u[r],e.push.apply(e,this.findSignificantElements(s))}return this.notify(e)},e.prototype.processInsertion=function(t){var e;return e=this.findSignificantElements(t.target),this.notify(e)},e.prototype.notify=function(t){if(null!=t?t.length:void 0)return\"function\"==typeof this.callback?this.callback(t):void 0},e}()}.call(this),function(){var t,n,r,a,i=function(t,e){return function(){return t.apply(e,arguments)}};r=e.parseDate,a=e.strftime,n=e.getI18nValue,t=e.config,e.Controller=function(){function o(){this.processElements=i(this.processElements,this),this.pageObserver=new e.PageObserver(s,this.processElements)}var s,u,c;return s=\"time[data-local]:not([data-localized])\",o.prototype.start=function(){if(!this.started)return this.processElements(),this.startTimer(),this.pageObserver.start(),this.started=!0},o.prototype.startTimer=function(){var e;if(e=t.timerInterval)return null!=this.timer?this.timer:this.timer=setInterval(this.processElements,e)},o.prototype.processElements=function(t){var e,n,r;for(null==t&&(t=document.querySelectorAll(s)),n=0,r=t.length;n<r;n++)e=t[n],this.processElement(e);return t.length},o.prototype.processElement=function(t){var e,i,o,s,l,d;if(i=t.getAttribute(\"datetime\"),o=t.getAttribute(\"data-format\"),s=t.getAttribute(\"data-local\"),l=r(i),!isNaN(l))return t.hasAttribute(\"title\")||(d=a(l,n(\"datetime.formats.default\")),t.setAttribute(\"title\",d)),t.textContent=e=function(){switch(s){case\"time\":return u(t),a(l,o);case\"date\":return u(t),c(l).toDateString();case\"time-ago\":return c(l).toString();case\"time-or-date\":return c(l).toTimeOrDateString();case\"weekday\":return c(l).toWeekdayString();case\"weekday-or-date\":return c(l).toWeekdayString()||c(l).toDateString()}}(),t.hasAttribute(\"aria-label\")?void 0:t.setAttribute(\"aria-label\",e)},u=function(t){return t.setAttribute(\"data-localized\",\"\")},c=function(t){return new e.RelativeTime(t)},o}()}.call(this),function(){var t,n,r,a;a=!1,t=function(){return document.attachEvent?\"complete\"===document.readyState:\"loading\"!==document.readyState},n=function(t){var e;return null!=(e=\"function\"==typeof requestAnimationFrame?requestAnimationFrame(t):void 0)?e:setTimeout(t,17)},r=function(){var t;return t=e.getController(),t.start()},e.start=function(){if(!a)return a=!0,\"undefined\"!=typeof MutationObserver&&null!==MutationObserver||t()?r():n(r)},window.LocalTime===e&&e.start()}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}).call(this);", "\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we\u2019re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don\u2019t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nmodule.exports = function stringify(passedObj, options) {\n  var indent, maxLength, replacer;\n\n  options = options || {};\n  indent = JSON.stringify(\n    [1],\n    undefined,\n    options.indent === undefined ? 2 : options.indent\n  ).slice(2, -3);\n  maxLength =\n    indent === \"\"\n      ? Infinity\n      : options.maxLength === undefined\n      ? 80\n      : options.maxLength;\n  replacer = options.replacer;\n\n  return (function _stringify(obj, currentIndent, reserved) {\n    // prettier-ignore\n    var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n    if (obj && typeof obj.toJSON === \"function\") {\n      obj = obj.toJSON();\n    }\n\n    string = JSON.stringify(obj, replacer);\n\n    if (string === undefined) {\n      return string;\n    }\n\n    length = maxLength - currentIndent.length - reserved;\n\n    if (string.length <= length) {\n      prettified = string.replace(\n        stringOrChar,\n        function (match, stringLiteral) {\n          return stringLiteral || match + \" \";\n        }\n      );\n      if (prettified.length <= length) {\n        return prettified;\n      }\n    }\n\n    if (replacer != null) {\n      obj = JSON.parse(string);\n      replacer = undefined;\n    }\n\n    if (typeof obj === \"object\" && obj !== null) {\n      nextIndent = currentIndent + indent;\n      items = [];\n      index = 0;\n\n      if (Array.isArray(obj)) {\n        start = \"[\";\n        end = \"]\";\n        length = obj.length;\n        for (; index < length; index++) {\n          items.push(\n            _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n              \"null\"\n          );\n        }\n      } else {\n        start = \"{\";\n        end = \"}\";\n        keys = Object.keys(obj);\n        length = keys.length;\n        for (; index < length; index++) {\n          key = keys[index];\n          keyPart = JSON.stringify(key) + \": \";\n          value = _stringify(\n            obj[key],\n            nextIndent,\n            keyPart.length + (index === length - 1 ? 0 : 1)\n          );\n          if (value !== undefined) {\n            items.push(keyPart + value);\n          }\n        }\n      }\n\n      if (items.length > 0) {\n        return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n          \"\\n\" + currentIndent\n        );\n      }\n    }\n\n    return string;\n  })(passedObj, \"\", 0);\n};\n", "/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id with a prefix.\n    // If an id already exists, it simply returns it with a prefix.\n\n    var select2Id = element.getAttribute('data-select2-id');\n\n    if (select2Id != null) {\n      return select2Id;\n    }\n\n    // If element has id, use it.\n    if (element.id) {\n      select2Id = 'select2-data-' + element.id;\n    } else {\n      select2Id = 'select2-data-' + (++id).toString() +\n        '-' + Utils.generateChars(4);\n    }\n\n    element.setAttribute('data-select2-id', select2Id);\n\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  Utils.copyNonInternalCssClasses = function (dest, src) {\n    var classes;\n\n    var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n    destinationClasses = destinationClasses.filter(function (clazz) {\n      // Save all Select2 classes\n      return clazz.indexOf('select2-') === 0;\n    });\n\n    var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n    sourceClasses = sourceClasses.filter(function (clazz) {\n      // Only copy non-Select2 classes\n      return clazz.indexOf('select2-') !== 0;\n    });\n\n    var replacements = destinationClasses.concat(sourceClasses);\n\n    dest.setAttribute('class', replacements.join(' '));\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option--selectable');\n\n    var $selected = $options.filter('.select2-results__option--selected');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = selected.map(function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option--selectable');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && selectedIds.indexOf(id) > -1)) {\n          this.classList.add('select2-results__option--selected');\n          $option.attr('aria-selected', 'true');\n        } else {\n          this.classList.remove('select2-results__option--selected');\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.classList.add('select2-results__option');\n    option.classList.add('select2-results__option--selectable');\n\n    var attrs = {\n      'role': 'option'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      attrs['aria-disabled'] = 'true';\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--disabled');\n    }\n\n    if (data.id == null) {\n      option.classList.remove('select2-results__option--selectable');\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n\n      option.classList.remove('select2-results__option--selectable');\n      option.classList.add('select2-results__option--group');\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested',\n        'role': 'none'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.hasClass('select2-results__option--selected')) {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('.select2-results__option--selectable');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element[0].classList.add('select2-results__option--highlighted');\n      params.element[0].setAttribute('aria-selected', 'true');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option--selectable',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.hasClass('select2-results__option--selected')) {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option--selectable',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted')\n          .attr('aria-selected', 'false');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('.select2-results__option--selectable');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n    this.$selection.attr('aria-controls', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection[0].classList.add('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n    this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n\n    this.$selection.on(\n      'keydown',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        evt.stopPropagation();\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n        'tabindex=\"-1\">' +\n          '<span aria-hidden=\"true\">&times;</span>' +\n        '</button>' +\n        '<span class=\"select2-selection__choice__display\"></span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n      .attr('id') + '-choice-';\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n      if (selection.id) {\n        selectionId += selection.id;\n      } else {\n        selectionId += Utils.generateChars(4);\n      }\n\n      $selection.find('.select2-selection__choice__display')\n        .append(formatted)\n        .attr('id', selectionId);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      var removeItem = this.options.get('translations').get('removeItem');\n\n      var $remove = $selection.find('.select2-selection__choice__remove');\n\n      $remove.attr('title', removeItem());\n      $remove.attr('aria-label', removeItem());\n      $remove.attr('aria-describedby', selectionId);\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    $rendered.append($selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder[0].classList.add('select2-selection__placeholder');\n    $placeholder[0].classList.remove('select2-selection__choice');\n\n    var placeholderTitle = placeholder.title ||\n      placeholder.text ||\n      $placeholder.text();\n\n    this.$selection.find('.select2-selection__rendered').attr(\n      'title',\n      placeholderTitle\n    );\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__clear').remove();\n    this.$selection[0].classList.remove('select2-selection--clearable');\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var selectionId = this.$selection.find('.select2-selection__rendered')\n      .attr('id');\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n        '<span aria-hidden=\"true\">&times;</span>' +\n      '</button>'\n    );\n    $remove.attr('title', removeAll());\n    $remove.attr('aria-label', removeAll());\n    $remove.attr('aria-describedby', selectionId);\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.prepend($remove);\n    this.$selection[0].classList.add('select2-selection--clearable');\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var searchLabel = this.options.get('translations').get('search');\n    var $search = $(\n      '<span class=\"select2-search select2-search--inline\">' +\n        '<textarea class=\"select2-search__field\"'+\n        ' type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' +\n        '</textarea>' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('textarea');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n    this.$search.attr('aria-label', searchLabel());\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n    $rendered.append(this.$searchContainer);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n    var selectionId = container.id + '-container';\n\n    decorated.call(this, container, $container);\n\n    self.$search.attr('aria-describedby', selectionId);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.resizeSearch();\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$selection\n          .find('.select2-selection__choice').last();\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '100%';\n\n    if (this.$search.attr('placeholder') === '') {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n  '../utils'\n], function (Utils) {\n  function SelectionCSS () { }\n\n  SelectionCSS.prototype.render = function (decorated) {\n    var $selection = decorated.call(this);\n\n    var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n    if (selectionCssClass.indexOf(':all:') !== -1) {\n      selectionCssClass = selectionCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n    }\n\n    $selection.addClass(selectionCssClass);\n\n    return $selection;\n  };\n\n  return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if (relayEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if (preventableEvents.indexOf(name) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var self = this;\n\n    var data = Array.prototype.map.call(\n      this.$element[0].querySelectorAll(':checked'),\n      function (selectedElement) {\n        return self.item($(selectedElement));\n      }\n    );\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if (\n      data.element != null && data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if (val.indexOf(id) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if (\n      data.element != null &&\n      data.element.tagName.toLowerCase() === 'option'\n    ) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && val.indexOf(id) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      if (\n        this.tagName.toLowerCase() !== 'option' &&\n        this.tagName.toLowerCase() !== 'optgroup'\n      ) {\n        return;\n      }\n\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    this.$element.append($options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $(option);\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    var option = $option[0];\n\n    if (option.tagName.toLowerCase() === 'option') {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if (option.tagName.toLowerCase() === 'optgroup') {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if (existingIds.indexOf(item.id) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        $option.append($children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if (typeof this._request.abort === 'function') {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !Array.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if (Array.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', 'true');\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    if (params.term == null) {\n      return null;\n    }\n\n    var term = params.term.trim();\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if (separators.indexOf(termChar) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery'\n], function ($) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n    var searchLabel = this.options.get('translations').get('search');\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    this.$search.prop('autocomplete', this.options.get('autocomplete'));\n    this.$search.attr('aria-label', searchLabel());\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer[0].classList.remove('select2-search--hide');\n        } else {\n          self.$searchContainer[0].classList.add('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown[0].classList.remove('select2');\n    $dropdown[0].classList.add('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown[0].classList\n      .contains('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown[0].classList\n      .contains('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown[0].classList.remove('select2-dropdown--below');\n      this.$dropdown[0].classList.remove('select2-dropdown--above');\n      this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n      this.$container[0].classList.remove('select2-container--below');\n      this.$container[0].classList.remove('select2-container--above');\n      this.$container[0].classList.add('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n  '../utils'\n], function (Utils) {\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n    }\n\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n  '../utils'\n], function (Utils) {\n  function TagsSearchHighlight () { }\n\n  TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n    var $options = this.$results\n    .find(\n      '.select2-results__option--selectable' +\n      ':not(.select2-results__option--selected)'\n    );\n\n    if ($options.length > 0) {\n      var $firstOption = $options.first();\n      var data = Utils.GetData($firstOption[0], 'data');\n      var firstElement = data.element;\n\n      if (firstElement && firstElement.getAttribute) {\n        if (firstElement.getAttribute('data-select2-tag') === 'true') {\n          $firstOption.trigger('mouseenter');\n\n          return;\n        }\n      }\n    }\n\n    decorated.call(this);\n  };\n\n  return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results\u2026';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching\u2026';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    },\n    removeItem: function () {\n      return 'Remove item';\n    },\n    search: function() {\n      return 'Search';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/selectionCss',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n  './dropdown/dropdownCss',\n  './dropdown/tagsSearchHighlight',\n\n  './i18n/en'\n], function ($,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, SelectionCSS, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n             DropdownCSS, TagsSearchHighlight,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n\n      if (options.tags) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          TagsSearchHighlight\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (options.dropdownCssClass != null) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (options.selectionCssClass != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if (params.term == null || params.term.trim() === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdLanguageBase: './i18n/',\n      autocomplete: 'off',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!Array.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'jquery',\n  './defaults',\n  './utils'\n], function ($, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n      this.options.autocomplete = $e.prop('autocomplete');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if (excludedData.indexOf(key) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element[0].classList.add('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    this._observer = new window.MutationObserver(function (mutations) {\n      self._syncA();\n      self._syncS(mutations);\n    });\n    this._observer.observe(this.$element[0], {\n      attributes: true,\n      childList: true,\n      subtree: false\n    });\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if (nonRelayEvents.indexOf(name) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container[0].classList.add('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container[0].classList.remove('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container[0].classList.remove('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container[0].classList.add('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container[0].classList.remove('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (mutations) {\n    var self = this;\n\n    if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          return true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      return true;\n    } else if (Array.isArray(mutations)) {\n      return mutations.some(function (mutation) {\n        return self._isChangeMutation(mutation);\n      });\n    }\n\n    return false;\n  };\n\n  Select2.prototype._syncSubtree = function (mutations) {\n    var changed = this._isChangeMutation(mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container[0].classList.contains('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container[0].classList.contains('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container[0].classList.add('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if (Array.isArray(newVal)) {\n      newVal = newVal.map(function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    Utils.RemoveData(this.$container[0]);\n    this.$container.remove();\n\n    this._observer.disconnect();\n    this._observer = null;\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element[0].classList.remove('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container[0].classList\n      .add('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n  'jquery'\n], function ($) {\n  // Used to shim jQuery.mousewheel for non-full builds.\n  return $;\n});\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if (thisMethods.indexOf(options) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n", "/*\nTurbo 7.2.4\nCopyright \u00A9 2022 37signals LLC\n */\n(function () {\n    if (window.Reflect === undefined ||\n        window.customElements === undefined ||\n        window.customElements.polyfillWrapFlushCallback) {\n        return;\n    }\n    const BuiltInHTMLElement = HTMLElement;\n    const wrapperForTheName = {\n        HTMLElement: function HTMLElement() {\n            return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n        },\n    };\n    window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n    HTMLElement.prototype = BuiltInHTMLElement.prototype;\n    HTMLElement.prototype.constructor = HTMLElement;\n    Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function(submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this);\n      submitter.click();\n    } else {\n      submitter = document.createElement(\"input\");\n      submitter.type = \"submit\";\n      submitter.hidden = true;\n      this.appendChild(submitter);\n      submitter.click();\n      this.removeChild(submitter);\n    }\n  };\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n    submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n    const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n    const candidate = element ? element.closest(\"input, button\") : null;\n    return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n    const submitter = findSubmitterFromClickTarget(event.target);\n    if (submitter && submitter.form) {\n        submittersByForm.set(submitter.form, submitter);\n    }\n}\n(function () {\n    if (\"submitter\" in Event.prototype)\n        return;\n    let prototype;\n    if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n        prototype = window.SubmitEvent.prototype;\n    }\n    else if (\"SubmitEvent\" in window) {\n        return;\n    }\n    else {\n        prototype = window.Event.prototype;\n    }\n    addEventListener(\"click\", clickCaptured, true);\n    Object.defineProperty(prototype, \"submitter\", {\n        get() {\n            if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n                return submittersByForm.get(this.target);\n            }\n        },\n    });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n    FrameLoadingStyle[\"eager\"] = \"eager\";\n    FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n    constructor() {\n        super();\n        this.loaded = Promise.resolve();\n        this.delegate = new FrameElement.delegateConstructor(this);\n    }\n    static get observedAttributes() {\n        return [\"disabled\", \"complete\", \"loading\", \"src\"];\n    }\n    connectedCallback() {\n        this.delegate.connect();\n    }\n    disconnectedCallback() {\n        this.delegate.disconnect();\n    }\n    reload() {\n        return this.delegate.sourceURLReloaded();\n    }\n    attributeChangedCallback(name) {\n        if (name == \"loading\") {\n            this.delegate.loadingStyleChanged();\n        }\n        else if (name == \"complete\") {\n            this.delegate.completeChanged();\n        }\n        else if (name == \"src\") {\n            this.delegate.sourceURLChanged();\n        }\n        else {\n            this.delegate.disabledChanged();\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\");\n    }\n    set src(value) {\n        if (value) {\n            this.setAttribute(\"src\", value);\n        }\n        else {\n            this.removeAttribute(\"src\");\n        }\n    }\n    get loading() {\n        return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n    }\n    set loading(value) {\n        if (value) {\n            this.setAttribute(\"loading\", value);\n        }\n        else {\n            this.removeAttribute(\"loading\");\n        }\n    }\n    get disabled() {\n        return this.hasAttribute(\"disabled\");\n    }\n    set disabled(value) {\n        if (value) {\n            this.setAttribute(\"disabled\", \"\");\n        }\n        else {\n            this.removeAttribute(\"disabled\");\n        }\n    }\n    get autoscroll() {\n        return this.hasAttribute(\"autoscroll\");\n    }\n    set autoscroll(value) {\n        if (value) {\n            this.setAttribute(\"autoscroll\", \"\");\n        }\n        else {\n            this.removeAttribute(\"autoscroll\");\n        }\n    }\n    get complete() {\n        return !this.delegate.isLoading;\n    }\n    get isActive() {\n        return this.ownerDocument === document && !this.isPreview;\n    }\n    get isPreview() {\n        var _a, _b;\n        return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n    }\n}\nfunction frameLoadingStyleFromString(style) {\n    switch (style.toLowerCase()) {\n        case \"lazy\":\n            return FrameLoadingStyle.lazy;\n        default:\n            return FrameLoadingStyle.eager;\n    }\n}\n\nfunction expandURL(locatable) {\n    return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n    let anchorMatch;\n    if (url.hash) {\n        return url.hash.slice(1);\n    }\n    else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n        return anchorMatch[1];\n    }\n}\nfunction getAction(form, submitter) {\n    const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n    return expandURL(action);\n}\nfunction getExtension(url) {\n    return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n    return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n    const prefix = getPrefix(url);\n    return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n    return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n    const anchor = getAnchor(url);\n    return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n    return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n    return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n    return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n    return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n    return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n    return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n    constructor(response) {\n        this.response = response;\n    }\n    get succeeded() {\n        return this.response.ok;\n    }\n    get failed() {\n        return !this.succeeded;\n    }\n    get clientError() {\n        return this.statusCode >= 400 && this.statusCode <= 499;\n    }\n    get serverError() {\n        return this.statusCode >= 500 && this.statusCode <= 599;\n    }\n    get redirected() {\n        return this.response.redirected;\n    }\n    get location() {\n        return expandURL(this.response.url);\n    }\n    get isHTML() {\n        return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n    }\n    get statusCode() {\n        return this.response.status;\n    }\n    get contentType() {\n        return this.header(\"Content-Type\");\n    }\n    get responseText() {\n        return this.response.clone().text();\n    }\n    get responseHTML() {\n        if (this.isHTML) {\n            return this.response.clone().text();\n        }\n        else {\n            return Promise.resolve(undefined);\n        }\n    }\n    header(name) {\n        return this.response.headers.get(name);\n    }\n}\n\nfunction isAction(action) {\n    return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\n\nfunction activateScriptElement(element) {\n    if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n        return element;\n    }\n    else {\n        const createdScriptElement = document.createElement(\"script\");\n        const cspNonce = getMetaContent(\"csp-nonce\");\n        if (cspNonce) {\n            createdScriptElement.nonce = cspNonce;\n        }\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n    }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n    for (const { name, value } of sourceElement.attributes) {\n        destinationElement.setAttribute(name, value);\n    }\n}\nfunction createDocumentFragment(html) {\n    const template = document.createElement(\"template\");\n    template.innerHTML = html;\n    return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n    const event = new CustomEvent(eventName, {\n        cancelable,\n        bubbles: true,\n        detail,\n    });\n    if (target && target.isConnected) {\n        target.dispatchEvent(event);\n    }\n    else {\n        document.documentElement.dispatchEvent(event);\n    }\n    return event;\n}\nfunction nextAnimationFrame() {\n    return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n    return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n    return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n    return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n    const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n    const match = lines[0].match(/^\\s+/);\n    const indent = match ? match[0].length : 0;\n    return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n    return strings.reduce((result, string, i) => {\n        const value = values[i] == undefined ? \"\" : values[i];\n        return result + string + value;\n    }, \"\");\n}\nfunction uuid() {\n    return Array.from({ length: 36 })\n        .map((_, i) => {\n        if (i == 8 || i == 13 || i == 18 || i == 23) {\n            return \"-\";\n        }\n        else if (i == 14) {\n            return \"4\";\n        }\n        else if (i == 19) {\n            return (Math.floor(Math.random() * 4) + 8).toString(16);\n        }\n        else {\n            return Math.floor(Math.random() * 15).toString(16);\n        }\n    })\n        .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n    for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n        if (typeof value == \"string\")\n            return value;\n    }\n    return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n    return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.setAttribute(\"busy\", \"\");\n        }\n        element.setAttribute(\"aria-busy\", \"true\");\n    }\n}\nfunction clearBusyState(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.removeAttribute(\"busy\");\n        }\n        element.removeAttribute(\"aria-busy\");\n    }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n    return new Promise((resolve) => {\n        const onComplete = () => {\n            element.removeEventListener(\"error\", onComplete);\n            element.removeEventListener(\"load\", onComplete);\n            resolve();\n        };\n        element.addEventListener(\"load\", onComplete, { once: true });\n        element.addEventListener(\"error\", onComplete, { once: true });\n        setTimeout(resolve, timeoutInMilliseconds);\n    });\n}\nfunction getHistoryMethodForAction(action) {\n    switch (action) {\n        case \"replace\":\n            return history.replaceState;\n        case \"advance\":\n        case \"restore\":\n            return history.pushState;\n    }\n}\nfunction getVisitAction(...elements) {\n    const action = getAttribute(\"data-turbo-action\", ...elements);\n    return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n    return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n    const element = getMetaElement(name);\n    return element && element.content;\n}\nfunction setMetaContent(name, content) {\n    let element = getMetaElement(name);\n    if (!element) {\n        element = document.createElement(\"meta\");\n        element.setAttribute(\"name\", name);\n        document.head.appendChild(element);\n    }\n    element.setAttribute(\"content\", content);\n    return element;\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n    FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n    FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n    FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n    FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n    FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n    switch (method.toLowerCase()) {\n        case \"get\":\n            return FetchMethod.get;\n        case \"post\":\n            return FetchMethod.post;\n        case \"put\":\n            return FetchMethod.put;\n        case \"patch\":\n            return FetchMethod.patch;\n        case \"delete\":\n            return FetchMethod.delete;\n    }\n}\nclass FetchRequest {\n    constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n        this.abortController = new AbortController();\n        this.resolveRequestPromise = (_value) => { };\n        this.delegate = delegate;\n        this.method = method;\n        this.headers = this.defaultHeaders;\n        this.body = body;\n        this.url = location;\n        this.target = target;\n    }\n    get location() {\n        return this.url;\n    }\n    get params() {\n        return this.url.searchParams;\n    }\n    get entries() {\n        return this.body ? Array.from(this.body.entries()) : [];\n    }\n    cancel() {\n        this.abortController.abort();\n    }\n    async perform() {\n        var _a, _b;\n        const { fetchOptions } = this;\n        (_b = (_a = this.delegate).prepareHeadersForRequest) === null || _b === void 0 ? void 0 : _b.call(_a, this.headers, this);\n        await this.allowRequestToBeIntercepted(fetchOptions);\n        try {\n            this.delegate.requestStarted(this);\n            const response = await fetch(this.url.href, fetchOptions);\n            return await this.receive(response);\n        }\n        catch (error) {\n            if (error.name !== \"AbortError\") {\n                if (this.willDelegateErrorHandling(error)) {\n                    this.delegate.requestErrored(this, error);\n                }\n                throw error;\n            }\n        }\n        finally {\n            this.delegate.requestFinished(this);\n        }\n    }\n    async receive(response) {\n        const fetchResponse = new FetchResponse(response);\n        const event = dispatch(\"turbo:before-fetch-response\", {\n            cancelable: true,\n            detail: { fetchResponse },\n            target: this.target,\n        });\n        if (event.defaultPrevented) {\n            this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n        }\n        else if (fetchResponse.succeeded) {\n            this.delegate.requestSucceededWithResponse(this, fetchResponse);\n        }\n        else {\n            this.delegate.requestFailedWithResponse(this, fetchResponse);\n        }\n        return fetchResponse;\n    }\n    get fetchOptions() {\n        var _a;\n        return {\n            method: FetchMethod[this.method].toUpperCase(),\n            credentials: \"same-origin\",\n            headers: this.headers,\n            redirect: \"follow\",\n            body: this.isIdempotent ? null : this.body,\n            signal: this.abortSignal,\n            referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n        };\n    }\n    get defaultHeaders() {\n        return {\n            Accept: \"text/html, application/xhtml+xml\",\n        };\n    }\n    get isIdempotent() {\n        return this.method == FetchMethod.get;\n    }\n    get abortSignal() {\n        return this.abortController.signal;\n    }\n    acceptResponseType(mimeType) {\n        this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n    }\n    async allowRequestToBeIntercepted(fetchOptions) {\n        const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n        const event = dispatch(\"turbo:before-fetch-request\", {\n            cancelable: true,\n            detail: {\n                fetchOptions,\n                url: this.url,\n                resume: this.resolveRequestPromise,\n            },\n            target: this.target,\n        });\n        if (event.defaultPrevented)\n            await requestInterception;\n    }\n    willDelegateErrorHandling(error) {\n        const event = dispatch(\"turbo:fetch-request-error\", {\n            target: this.target,\n            cancelable: true,\n            detail: { request: this, error: error },\n        });\n        return !event.defaultPrevented;\n    }\n}\n\nclass AppearanceObserver {\n    constructor(delegate, element) {\n        this.started = false;\n        this.intersect = (entries) => {\n            const lastEntry = entries.slice(-1)[0];\n            if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n                this.delegate.elementAppearedInViewport(this.element);\n            }\n        };\n        this.delegate = delegate;\n        this.element = element;\n        this.intersectionObserver = new IntersectionObserver(this.intersect);\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.intersectionObserver.observe(this.element);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.intersectionObserver.unobserve(this.element);\n        }\n    }\n}\n\nclass StreamMessage {\n    constructor(fragment) {\n        this.fragment = importStreamElements(fragment);\n    }\n    static wrap(message) {\n        if (typeof message == \"string\") {\n            return new this(createDocumentFragment(message));\n        }\n        else {\n            return message;\n        }\n    }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n    for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n        const streamElement = document.importNode(element, true);\n        for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n            inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n        }\n        element.replaceWith(streamElement);\n    }\n    return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n    FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n    FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n    FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n    FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n    FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n    FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n    FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n    FormEnctype[\"multipart\"] = \"multipart/form-data\";\n    FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n    switch (encoding.toLowerCase()) {\n        case FormEnctype.multipart:\n            return FormEnctype.multipart;\n        case FormEnctype.plain:\n            return FormEnctype.plain;\n        default:\n            return FormEnctype.urlEncoded;\n    }\n}\nclass FormSubmission {\n    constructor(delegate, formElement, submitter, mustRedirect = false) {\n        this.state = FormSubmissionState.initialized;\n        this.delegate = delegate;\n        this.formElement = formElement;\n        this.submitter = submitter;\n        this.formData = buildFormData(formElement, submitter);\n        this.location = expandURL(this.action);\n        if (this.method == FetchMethod.get) {\n            mergeFormDataEntries(this.location, [...this.body.entries()]);\n        }\n        this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n        this.mustRedirect = mustRedirect;\n    }\n    static confirmMethod(message, _element, _submitter) {\n        return Promise.resolve(confirm(message));\n    }\n    get method() {\n        var _a;\n        const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n        return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n    }\n    get action() {\n        var _a;\n        const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n        if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n            return this.submitter.getAttribute(\"formaction\") || \"\";\n        }\n        else {\n            return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n        }\n    }\n    get body() {\n        if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n            return new URLSearchParams(this.stringFormData);\n        }\n        else {\n            return this.formData;\n        }\n    }\n    get enctype() {\n        var _a;\n        return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n    }\n    get isIdempotent() {\n        return this.fetchRequest.isIdempotent;\n    }\n    get stringFormData() {\n        return [...this.formData].reduce((entries, [name, value]) => {\n            return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n        }, []);\n    }\n    async start() {\n        const { initialized, requesting } = FormSubmissionState;\n        const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n        if (typeof confirmationMessage === \"string\") {\n            const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n            if (!answer) {\n                return;\n            }\n        }\n        if (this.state == initialized) {\n            this.state = requesting;\n            return this.fetchRequest.perform();\n        }\n    }\n    stop() {\n        const { stopping, stopped } = FormSubmissionState;\n        if (this.state != stopping && this.state != stopped) {\n            this.state = stopping;\n            this.fetchRequest.cancel();\n            return true;\n        }\n    }\n    prepareHeadersForRequest(headers, request) {\n        if (!request.isIdempotent) {\n            const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n            if (token) {\n                headers[\"X-CSRF-Token\"] = token;\n            }\n        }\n        if (this.requestAcceptsTurboStreamResponse(request)) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        var _a;\n        this.state = FormSubmissionState.waiting;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n        dispatch(\"turbo:submit-start\", {\n            target: this.formElement,\n            detail: { formSubmission: this },\n        });\n        this.delegate.formSubmissionStarted(this);\n    }\n    requestPreventedHandlingResponse(request, response) {\n        this.result = { success: response.succeeded, fetchResponse: response };\n    }\n    requestSucceededWithResponse(request, response) {\n        if (response.clientError || response.serverError) {\n            this.delegate.formSubmissionFailedWithResponse(this, response);\n        }\n        else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n            const error = new Error(\"Form responses must redirect to another location\");\n            this.delegate.formSubmissionErrored(this, error);\n        }\n        else {\n            this.state = FormSubmissionState.receiving;\n            this.result = { success: true, fetchResponse: response };\n            this.delegate.formSubmissionSucceededWithResponse(this, response);\n        }\n    }\n    requestFailedWithResponse(request, response) {\n        this.result = { success: false, fetchResponse: response };\n        this.delegate.formSubmissionFailedWithResponse(this, response);\n    }\n    requestErrored(request, error) {\n        this.result = { success: false, error };\n        this.delegate.formSubmissionErrored(this, error);\n    }\n    requestFinished(_request) {\n        var _a;\n        this.state = FormSubmissionState.stopped;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n        dispatch(\"turbo:submit-end\", {\n            target: this.formElement,\n            detail: Object.assign({ formSubmission: this }, this.result),\n        });\n        this.delegate.formSubmissionFinished(this);\n    }\n    requestMustRedirect(request) {\n        return !request.isIdempotent && this.mustRedirect;\n    }\n    requestAcceptsTurboStreamResponse(request) {\n        return !request.isIdempotent || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n    }\n}\nfunction buildFormData(formElement, submitter) {\n    const formData = new FormData(formElement);\n    const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n    const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n    if (name) {\n        formData.append(name, value || \"\");\n    }\n    return formData;\n}\nfunction getCookieValue(cookieName) {\n    if (cookieName != null) {\n        const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n        const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n        if (cookie) {\n            const value = cookie.split(\"=\").slice(1).join(\"=\");\n            return value ? decodeURIComponent(value) : undefined;\n        }\n    }\n}\nfunction responseSucceededWithoutRedirect(response) {\n    return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n    const searchParams = new URLSearchParams();\n    for (const [name, value] of entries) {\n        if (value instanceof File)\n            continue;\n        searchParams.append(name, value);\n    }\n    url.search = searchParams.toString();\n    return url;\n}\n\nclass Snapshot {\n    constructor(element) {\n        this.element = element;\n    }\n    get activeElement() {\n        return this.element.ownerDocument.activeElement;\n    }\n    get children() {\n        return [...this.element.children];\n    }\n    hasAnchor(anchor) {\n        return this.getElementForAnchor(anchor) != null;\n    }\n    getElementForAnchor(anchor) {\n        return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n    }\n    get isConnected() {\n        return this.element.isConnected;\n    }\n    get firstAutofocusableElement() {\n        const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n        for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n            if (element.closest(inertDisabledOrHidden) == null)\n                return element;\n            else\n                continue;\n        }\n        return null;\n    }\n    get permanentElements() {\n        return queryPermanentElementsAll(this.element);\n    }\n    getPermanentElementById(id) {\n        return getPermanentElementById(this.element, id);\n    }\n    getPermanentElementMapForSnapshot(snapshot) {\n        const permanentElementMap = {};\n        for (const currentPermanentElement of this.permanentElements) {\n            const { id } = currentPermanentElement;\n            const newPermanentElement = snapshot.getPermanentElementById(id);\n            if (newPermanentElement) {\n                permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n            }\n        }\n        return permanentElementMap;\n    }\n}\nfunction getPermanentElementById(node, id) {\n    return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n    return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.submitCaptured = () => {\n            this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n            this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n        };\n        this.submitBubbled = ((event) => {\n            if (!event.defaultPrevented) {\n                const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n                const submitter = event.submitter || undefined;\n                if (form &&\n                    submissionDoesNotDismissDialog(form, submitter) &&\n                    submissionDoesNotTargetIFrame(form, submitter) &&\n                    this.delegate.willSubmitForm(form, submitter)) {\n                    event.preventDefault();\n                    event.stopImmediatePropagation();\n                    this.delegate.formSubmitted(form, submitter);\n                }\n            }\n        });\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n            this.started = false;\n        }\n    }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n    const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n    return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n    const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n    for (const element of document.getElementsByName(target)) {\n        if (element instanceof HTMLIFrameElement)\n            return false;\n    }\n    return true;\n}\n\nclass View {\n    constructor(delegate, element) {\n        this.resolveRenderPromise = (_value) => { };\n        this.resolveInterceptionPromise = (_value) => { };\n        this.delegate = delegate;\n        this.element = element;\n    }\n    scrollToAnchor(anchor) {\n        const element = this.snapshot.getElementForAnchor(anchor);\n        if (element) {\n            this.scrollToElement(element);\n            this.focusElement(element);\n        }\n        else {\n            this.scrollToPosition({ x: 0, y: 0 });\n        }\n    }\n    scrollToAnchorFromLocation(location) {\n        this.scrollToAnchor(getAnchor(location));\n    }\n    scrollToElement(element) {\n        element.scrollIntoView();\n    }\n    focusElement(element) {\n        if (element instanceof HTMLElement) {\n            if (element.hasAttribute(\"tabindex\")) {\n                element.focus();\n            }\n            else {\n                element.setAttribute(\"tabindex\", \"-1\");\n                element.focus();\n                element.removeAttribute(\"tabindex\");\n            }\n        }\n    }\n    scrollToPosition({ x, y }) {\n        this.scrollRoot.scrollTo(x, y);\n    }\n    scrollToTop() {\n        this.scrollToPosition({ x: 0, y: 0 });\n    }\n    get scrollRoot() {\n        return window;\n    }\n    async render(renderer) {\n        const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n        if (shouldRender) {\n            try {\n                this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n                this.renderer = renderer;\n                await this.prepareToRenderSnapshot(renderer);\n                const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n                const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n                const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n                if (!immediateRender)\n                    await renderInterception;\n                await this.renderSnapshot(renderer);\n                this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n                this.delegate.preloadOnLoadLinksForView(this.element);\n                this.finishRenderingSnapshot(renderer);\n            }\n            finally {\n                delete this.renderer;\n                this.resolveRenderPromise(undefined);\n                delete this.renderPromise;\n            }\n        }\n        else {\n            this.invalidate(renderer.reloadReason);\n        }\n    }\n    invalidate(reason) {\n        this.delegate.viewInvalidated(reason);\n    }\n    async prepareToRenderSnapshot(renderer) {\n        this.markAsPreview(renderer.isPreview);\n        await renderer.prepareToRender();\n    }\n    markAsPreview(isPreview) {\n        if (isPreview) {\n            this.element.setAttribute(\"data-turbo-preview\", \"\");\n        }\n        else {\n            this.element.removeAttribute(\"data-turbo-preview\");\n        }\n    }\n    async renderSnapshot(renderer) {\n        await renderer.render();\n    }\n    finishRenderingSnapshot(renderer) {\n        renderer.finishRendering();\n    }\n}\n\nclass FrameView extends View {\n    invalidate() {\n        this.element.innerHTML = \"\";\n    }\n    get snapshot() {\n        return new Snapshot(this.element);\n    }\n}\n\nclass LinkInterceptor {\n    constructor(delegate, element) {\n        this.clickBubbled = (event) => {\n            if (this.respondsToEventTarget(event.target)) {\n                this.clickEvent = event;\n            }\n            else {\n                delete this.clickEvent;\n            }\n        };\n        this.linkClicked = ((event) => {\n            if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n                if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n                    this.clickEvent.preventDefault();\n                    event.preventDefault();\n                    this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n                }\n            }\n            delete this.clickEvent;\n        });\n        this.willVisit = ((_event) => {\n            delete this.clickEvent;\n        });\n        this.delegate = delegate;\n        this.element = element;\n    }\n    start() {\n        this.element.addEventListener(\"click\", this.clickBubbled);\n        document.addEventListener(\"turbo:click\", this.linkClicked);\n        document.addEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    stop() {\n        this.element.removeEventListener(\"click\", this.clickBubbled);\n        document.removeEventListener(\"turbo:click\", this.linkClicked);\n        document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    respondsToEventTarget(target) {\n        const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n        return element && element.closest(\"turbo-frame, html\") == this.element;\n    }\n}\n\nclass LinkClickObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.clickCaptured = () => {\n            this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n            this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n        };\n        this.clickBubbled = (event) => {\n            if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n                const target = (event.composedPath && event.composedPath()[0]) || event.target;\n                const link = this.findLinkFromClickTarget(target);\n                if (link && doesNotTargetIFrame(link)) {\n                    const location = this.getLocationForLink(link);\n                    if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n                        event.preventDefault();\n                        this.delegate.followedLinkToLocation(link, location);\n                    }\n                }\n            }\n        };\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n            this.started = false;\n        }\n    }\n    clickEventIsSignificant(event) {\n        return !((event.target && event.target.isContentEditable) ||\n            event.defaultPrevented ||\n            event.which > 1 ||\n            event.altKey ||\n            event.ctrlKey ||\n            event.metaKey ||\n            event.shiftKey);\n    }\n    findLinkFromClickTarget(target) {\n        if (target instanceof Element) {\n            return target.closest(\"a[href]:not([target^=_]):not([download])\");\n        }\n    }\n    getLocationForLink(link) {\n        return expandURL(link.getAttribute(\"href\") || \"\");\n    }\n}\nfunction doesNotTargetIFrame(anchor) {\n    for (const element of document.getElementsByName(anchor.target)) {\n        if (element instanceof HTMLIFrameElement)\n            return false;\n    }\n    return true;\n}\n\nclass FormLinkClickObserver {\n    constructor(delegate, element) {\n        this.delegate = delegate;\n        this.linkInterceptor = new LinkClickObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n    }\n    willFollowLinkToLocation(link, location, originalEvent) {\n        return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n            link.hasAttribute(\"data-turbo-method\"));\n    }\n    followedLinkToLocation(link, location) {\n        const action = location.href;\n        const form = document.createElement(\"form\");\n        form.setAttribute(\"data-turbo\", \"true\");\n        form.setAttribute(\"action\", action);\n        form.setAttribute(\"hidden\", \"\");\n        const method = link.getAttribute(\"data-turbo-method\");\n        if (method)\n            form.setAttribute(\"method\", method);\n        const turboFrame = link.getAttribute(\"data-turbo-frame\");\n        if (turboFrame)\n            form.setAttribute(\"data-turbo-frame\", turboFrame);\n        const turboAction = link.getAttribute(\"data-turbo-action\");\n        if (turboAction)\n            form.setAttribute(\"data-turbo-action\", turboAction);\n        const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n        if (turboConfirm)\n            form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n        const turboStream = link.hasAttribute(\"data-turbo-stream\");\n        if (turboStream)\n            form.setAttribute(\"data-turbo-stream\", \"\");\n        this.delegate.submittedFormLinkToLocation(link, location, form);\n        document.body.appendChild(form);\n        form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n        requestAnimationFrame(() => form.requestSubmit());\n    }\n}\n\nclass Bardo {\n    constructor(delegate, permanentElementMap) {\n        this.delegate = delegate;\n        this.permanentElementMap = permanentElementMap;\n    }\n    static preservingPermanentElements(delegate, permanentElementMap, callback) {\n        const bardo = new this(delegate, permanentElementMap);\n        bardo.enter();\n        callback();\n        bardo.leave();\n    }\n    enter() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n            this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n            this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n        }\n    }\n    leave() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement] = this.permanentElementMap[id];\n            this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n            this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n            this.delegate.leavingBardo(currentPermanentElement);\n        }\n    }\n    replaceNewPermanentElementWithPlaceholder(permanentElement) {\n        const placeholder = createPlaceholderForPermanentElement(permanentElement);\n        permanentElement.replaceWith(placeholder);\n    }\n    replaceCurrentPermanentElementWithClone(permanentElement) {\n        const clone = permanentElement.cloneNode(true);\n        permanentElement.replaceWith(clone);\n    }\n    replacePlaceholderWithPermanentElement(permanentElement) {\n        const placeholder = this.getPlaceholderById(permanentElement.id);\n        placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n    }\n    getPlaceholderById(id) {\n        return this.placeholders.find((element) => element.content == id);\n    }\n    get placeholders() {\n        return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n    }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n    const element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n    element.setAttribute(\"content\", permanentElement.id);\n    return element;\n}\n\nclass Renderer {\n    constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        this.activeElement = null;\n        this.currentSnapshot = currentSnapshot;\n        this.newSnapshot = newSnapshot;\n        this.isPreview = isPreview;\n        this.willRender = willRender;\n        this.renderElement = renderElement;\n        this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n    }\n    get shouldRender() {\n        return true;\n    }\n    get reloadReason() {\n        return;\n    }\n    prepareToRender() {\n        return;\n    }\n    finishRendering() {\n        if (this.resolvingFunctions) {\n            this.resolvingFunctions.resolve();\n            delete this.resolvingFunctions;\n        }\n    }\n    preservingPermanentElements(callback) {\n        Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n    }\n    focusFirstAutofocusableElement() {\n        const element = this.connectedSnapshot.firstAutofocusableElement;\n        if (elementIsFocusable(element)) {\n            element.focus();\n        }\n    }\n    enteringBardo(currentPermanentElement) {\n        if (this.activeElement)\n            return;\n        if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n            this.activeElement = this.currentSnapshot.activeElement;\n        }\n    }\n    leavingBardo(currentPermanentElement) {\n        if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n            this.activeElement.focus();\n            this.activeElement = null;\n        }\n    }\n    get connectedSnapshot() {\n        return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n    }\n    get currentElement() {\n        return this.currentSnapshot.element;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    get permanentElementMap() {\n        return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n    }\n}\nfunction elementIsFocusable(element) {\n    return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n    constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n        this.delegate = delegate;\n    }\n    static renderElement(currentElement, newElement) {\n        var _a;\n        const destinationRange = document.createRange();\n        destinationRange.selectNodeContents(currentElement);\n        destinationRange.deleteContents();\n        const frameElement = newElement;\n        const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n        if (sourceRange) {\n            sourceRange.selectNodeContents(frameElement);\n            currentElement.appendChild(sourceRange.extractContents());\n        }\n    }\n    get shouldRender() {\n        return true;\n    }\n    async render() {\n        await nextAnimationFrame();\n        this.preservingPermanentElements(() => {\n            this.loadFrameElement();\n        });\n        this.scrollFrameIntoView();\n        await nextAnimationFrame();\n        this.focusFirstAutofocusableElement();\n        await nextAnimationFrame();\n        this.activateScriptElements();\n    }\n    loadFrameElement() {\n        this.delegate.willRenderFrame(this.currentElement, this.newElement);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    scrollFrameIntoView() {\n        if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n            const element = this.currentElement.firstElementChild;\n            const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n            const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n            if (element) {\n                element.scrollIntoView({ block, behavior });\n                return true;\n            }\n        }\n        return false;\n    }\n    activateScriptElements() {\n        for (const inertScriptElement of this.newScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    get newScriptElements() {\n        return this.currentElement.querySelectorAll(\"script\");\n    }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n    if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\nfunction readScrollBehavior(value, defaultValue) {\n    if (value == \"auto\" || value == \"smooth\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\n\nclass ProgressBar {\n    constructor() {\n        this.hiding = false;\n        this.value = 0;\n        this.visible = false;\n        this.trickle = () => {\n            this.setValue(this.value + Math.random() / 100);\n        };\n        this.stylesheetElement = this.createStylesheetElement();\n        this.progressElement = this.createProgressElement();\n        this.installStylesheetElement();\n        this.setValue(0);\n    }\n    static get defaultCSS() {\n        return unindent `\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `;\n    }\n    show() {\n        if (!this.visible) {\n            this.visible = true;\n            this.installProgressElement();\n            this.startTrickling();\n        }\n    }\n    hide() {\n        if (this.visible && !this.hiding) {\n            this.hiding = true;\n            this.fadeProgressElement(() => {\n                this.uninstallProgressElement();\n                this.stopTrickling();\n                this.visible = false;\n                this.hiding = false;\n            });\n        }\n    }\n    setValue(value) {\n        this.value = value;\n        this.refresh();\n    }\n    installStylesheetElement() {\n        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    }\n    installProgressElement() {\n        this.progressElement.style.width = \"0\";\n        this.progressElement.style.opacity = \"1\";\n        document.documentElement.insertBefore(this.progressElement, document.body);\n        this.refresh();\n    }\n    fadeProgressElement(callback) {\n        this.progressElement.style.opacity = \"0\";\n        setTimeout(callback, ProgressBar.animationDuration * 1.5);\n    }\n    uninstallProgressElement() {\n        if (this.progressElement.parentNode) {\n            document.documentElement.removeChild(this.progressElement);\n        }\n    }\n    startTrickling() {\n        if (!this.trickleInterval) {\n            this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n        }\n    }\n    stopTrickling() {\n        window.clearInterval(this.trickleInterval);\n        delete this.trickleInterval;\n    }\n    refresh() {\n        requestAnimationFrame(() => {\n            this.progressElement.style.width = `${10 + this.value * 90}%`;\n        });\n    }\n    createStylesheetElement() {\n        const element = document.createElement(\"style\");\n        element.type = \"text/css\";\n        element.textContent = ProgressBar.defaultCSS;\n        if (this.cspNonce) {\n            element.nonce = this.cspNonce;\n        }\n        return element;\n    }\n    createProgressElement() {\n        const element = document.createElement(\"div\");\n        element.className = \"turbo-progress-bar\";\n        return element;\n    }\n    get cspNonce() {\n        return getMetaContent(\"csp-nonce\");\n    }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n    constructor() {\n        super(...arguments);\n        this.detailsByOuterHTML = this.children\n            .filter((element) => !elementIsNoscript(element))\n            .map((element) => elementWithoutNonce(element))\n            .reduce((result, element) => {\n            const { outerHTML } = element;\n            const details = outerHTML in result\n                ? result[outerHTML]\n                : {\n                    type: elementType(element),\n                    tracked: elementIsTracked(element),\n                    elements: [],\n                };\n            return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n        }, {});\n    }\n    get trackedElementSignature() {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n            .join(\"\");\n    }\n    getScriptElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n    }\n    getStylesheetElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n    }\n    getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n            .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n            .filter(({ type }) => type == matchedType)\n            .map(({ elements: [element] }) => element);\n    }\n    get provisionalElements() {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n            if (type == null && !tracked) {\n                return [...result, ...elements];\n            }\n            else if (elements.length > 1) {\n                return [...result, ...elements.slice(1)];\n            }\n            else {\n                return result;\n            }\n        }, []);\n    }\n    getMetaValue(name) {\n        const element = this.findMetaElementByName(name);\n        return element ? element.getAttribute(\"content\") : null;\n    }\n    findMetaElementByName(name) {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n            return elementIsMetaElementWithName(element, name) ? element : result;\n        }, undefined);\n    }\n}\nfunction elementType(element) {\n    if (elementIsScript(element)) {\n        return \"script\";\n    }\n    else if (elementIsStylesheet(element)) {\n        return \"stylesheet\";\n    }\n}\nfunction elementIsTracked(element) {\n    return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n    const tagName = element.localName;\n    return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n    const tagName = element.localName;\n    return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n    const tagName = element.localName;\n    return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n    const tagName = element.localName;\n    return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n    if (element.hasAttribute(\"nonce\")) {\n        element.setAttribute(\"nonce\", \"\");\n    }\n    return element;\n}\n\nclass PageSnapshot extends Snapshot {\n    constructor(element, headSnapshot) {\n        super(element);\n        this.headSnapshot = headSnapshot;\n    }\n    static fromHTMLString(html = \"\") {\n        return this.fromDocument(parseHTMLDocument(html));\n    }\n    static fromElement(element) {\n        return this.fromDocument(element.ownerDocument);\n    }\n    static fromDocument({ head, body }) {\n        return new this(body, new HeadSnapshot(head));\n    }\n    clone() {\n        const clonedElement = this.element.cloneNode(true);\n        const selectElements = this.element.querySelectorAll(\"select\");\n        const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n        for (const [index, source] of selectElements.entries()) {\n            const clone = clonedSelectElements[index];\n            for (const option of clone.selectedOptions)\n                option.selected = false;\n            for (const option of source.selectedOptions)\n                clone.options[option.index].selected = true;\n        }\n        for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n            clonedPasswordInput.value = \"\";\n        }\n        return new PageSnapshot(clonedElement, this.headSnapshot);\n    }\n    get headElement() {\n        return this.headSnapshot.element;\n    }\n    get rootLocation() {\n        var _a;\n        const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    get cacheControlValue() {\n        return this.getSetting(\"cache-control\");\n    }\n    get isPreviewable() {\n        return this.cacheControlValue != \"no-preview\";\n    }\n    get isCacheable() {\n        return this.cacheControlValue != \"no-cache\";\n    }\n    get isVisitable() {\n        return this.getSetting(\"visit-control\") != \"reload\";\n    }\n    getSetting(name) {\n        return this.headSnapshot.getMetaValue(`turbo-${name}`);\n    }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n    TimingMetric[\"visitStart\"] = \"visitStart\";\n    TimingMetric[\"requestStart\"] = \"requestStart\";\n    TimingMetric[\"requestEnd\"] = \"requestEnd\";\n    TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n    VisitState[\"initialized\"] = \"initialized\";\n    VisitState[\"started\"] = \"started\";\n    VisitState[\"canceled\"] = \"canceled\";\n    VisitState[\"failed\"] = \"failed\";\n    VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n    action: \"advance\",\n    historyChanged: false,\n    visitCachedSnapshot: () => { },\n    willRender: true,\n    updateHistory: true,\n    shouldCacheSnapshot: true,\n    acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n    SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n    SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n    SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n    constructor(delegate, location, restorationIdentifier, options = {}) {\n        this.identifier = uuid();\n        this.timingMetrics = {};\n        this.followedRedirect = false;\n        this.historyChanged = false;\n        this.scrolled = false;\n        this.shouldCacheSnapshot = true;\n        this.acceptsStreamResponse = false;\n        this.snapshotCached = false;\n        this.state = VisitState.initialized;\n        this.delegate = delegate;\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier || uuid();\n        const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n        this.action = action;\n        this.historyChanged = historyChanged;\n        this.referrer = referrer;\n        this.snapshot = snapshot;\n        this.snapshotHTML = snapshotHTML;\n        this.response = response;\n        this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n        this.visitCachedSnapshot = visitCachedSnapshot;\n        this.willRender = willRender;\n        this.updateHistory = updateHistory;\n        this.scrolled = !willRender;\n        this.shouldCacheSnapshot = shouldCacheSnapshot;\n        this.acceptsStreamResponse = acceptsStreamResponse;\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    get restorationData() {\n        return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n    }\n    get silent() {\n        return this.isSamePage;\n    }\n    start() {\n        if (this.state == VisitState.initialized) {\n            this.recordTimingMetric(TimingMetric.visitStart);\n            this.state = VisitState.started;\n            this.adapter.visitStarted(this);\n            this.delegate.visitStarted(this);\n        }\n    }\n    cancel() {\n        if (this.state == VisitState.started) {\n            if (this.request) {\n                this.request.cancel();\n            }\n            this.cancelRender();\n            this.state = VisitState.canceled;\n        }\n    }\n    complete() {\n        if (this.state == VisitState.started) {\n            this.recordTimingMetric(TimingMetric.visitEnd);\n            this.state = VisitState.completed;\n            this.followRedirect();\n            if (!this.followedRedirect) {\n                this.adapter.visitCompleted(this);\n                this.delegate.visitCompleted(this);\n            }\n        }\n    }\n    fail() {\n        if (this.state == VisitState.started) {\n            this.state = VisitState.failed;\n            this.adapter.visitFailed(this);\n        }\n    }\n    changeHistory() {\n        var _a;\n        if (!this.historyChanged && this.updateHistory) {\n            const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n            const method = getHistoryMethodForAction(actionForHistory);\n            this.history.update(method, this.location, this.restorationIdentifier);\n            this.historyChanged = true;\n        }\n    }\n    issueRequest() {\n        if (this.hasPreloadedResponse()) {\n            this.simulateRequest();\n        }\n        else if (this.shouldIssueRequest() && !this.request) {\n            this.request = new FetchRequest(this, FetchMethod.get, this.location);\n            this.request.perform();\n        }\n    }\n    simulateRequest() {\n        if (this.response) {\n            this.startRequest();\n            this.recordResponse();\n            this.finishRequest();\n        }\n    }\n    startRequest() {\n        this.recordTimingMetric(TimingMetric.requestStart);\n        this.adapter.visitRequestStarted(this);\n    }\n    recordResponse(response = this.response) {\n        this.response = response;\n        if (response) {\n            const { statusCode } = response;\n            if (isSuccessful(statusCode)) {\n                this.adapter.visitRequestCompleted(this);\n            }\n            else {\n                this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n            }\n        }\n    }\n    finishRequest() {\n        this.recordTimingMetric(TimingMetric.requestEnd);\n        this.adapter.visitRequestFinished(this);\n    }\n    loadResponse() {\n        if (this.response) {\n            const { statusCode, responseHTML } = this.response;\n            this.render(async () => {\n                if (this.shouldCacheSnapshot)\n                    this.cacheSnapshot();\n                if (this.view.renderPromise)\n                    await this.view.renderPromise;\n                if (isSuccessful(statusCode) && responseHTML != null) {\n                    await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    this.complete();\n                }\n                else {\n                    await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n                    this.adapter.visitRendered(this);\n                    this.fail();\n                }\n            });\n        }\n    }\n    getCachedSnapshot() {\n        const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n        if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n            if (this.action == \"restore\" || snapshot.isPreviewable) {\n                return snapshot;\n            }\n        }\n    }\n    getPreloadedSnapshot() {\n        if (this.snapshotHTML) {\n            return PageSnapshot.fromHTMLString(this.snapshotHTML);\n        }\n    }\n    hasCachedSnapshot() {\n        return this.getCachedSnapshot() != null;\n    }\n    loadCachedSnapshot() {\n        const snapshot = this.getCachedSnapshot();\n        if (snapshot) {\n            const isPreview = this.shouldIssueRequest();\n            this.render(async () => {\n                this.cacheSnapshot();\n                if (this.isSamePage) {\n                    this.adapter.visitRendered(this);\n                }\n                else {\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    if (!isPreview) {\n                        this.complete();\n                    }\n                }\n            });\n        }\n    }\n    followRedirect() {\n        var _a;\n        if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n            this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n                action: \"replace\",\n                response: this.response,\n            });\n            this.followedRedirect = true;\n        }\n    }\n    goToSamePageAnchor() {\n        if (this.isSamePage) {\n            this.render(async () => {\n                this.cacheSnapshot();\n                this.performScroll();\n                this.changeHistory();\n                this.adapter.visitRendered(this);\n            });\n        }\n    }\n    prepareHeadersForRequest(headers, request) {\n        if (this.acceptsStreamResponse) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted() {\n        this.startRequest();\n    }\n    requestPreventedHandlingResponse(_request, _response) { }\n    async requestSucceededWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.redirectedToLocation = response.redirected ? response.location : undefined;\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    async requestFailedWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    requestErrored(_request, _error) {\n        this.recordResponse({\n            statusCode: SystemStatusCode.networkFailure,\n            redirected: false,\n        });\n    }\n    requestFinished() {\n        this.finishRequest();\n    }\n    performScroll() {\n        if (!this.scrolled && !this.view.forceReloaded) {\n            if (this.action == \"restore\") {\n                this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            else {\n                this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            if (this.isSamePage) {\n                this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n            }\n            this.scrolled = true;\n        }\n    }\n    scrollToRestoredPosition() {\n        const { scrollPosition } = this.restorationData;\n        if (scrollPosition) {\n            this.view.scrollToPosition(scrollPosition);\n            return true;\n        }\n    }\n    scrollToAnchor() {\n        const anchor = getAnchor(this.location);\n        if (anchor != null) {\n            this.view.scrollToAnchor(anchor);\n            return true;\n        }\n    }\n    recordTimingMetric(metric) {\n        this.timingMetrics[metric] = new Date().getTime();\n    }\n    getTimingMetrics() {\n        return Object.assign({}, this.timingMetrics);\n    }\n    getHistoryMethodForAction(action) {\n        switch (action) {\n            case \"replace\":\n                return history.replaceState;\n            case \"advance\":\n            case \"restore\":\n                return history.pushState;\n        }\n    }\n    hasPreloadedResponse() {\n        return typeof this.response == \"object\";\n    }\n    shouldIssueRequest() {\n        if (this.isSamePage) {\n            return false;\n        }\n        else if (this.action == \"restore\") {\n            return !this.hasCachedSnapshot();\n        }\n        else {\n            return this.willRender;\n        }\n    }\n    cacheSnapshot() {\n        if (!this.snapshotCached) {\n            this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n            this.snapshotCached = true;\n        }\n    }\n    async render(callback) {\n        this.cancelRender();\n        await new Promise((resolve) => {\n            this.frame = requestAnimationFrame(() => resolve());\n        });\n        await callback();\n        delete this.frame;\n    }\n    cancelRender() {\n        if (this.frame) {\n            cancelAnimationFrame(this.frame);\n            delete this.frame;\n        }\n    }\n}\nfunction isSuccessful(statusCode) {\n    return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n    constructor(session) {\n        this.progressBar = new ProgressBar();\n        this.showProgressBar = () => {\n            this.progressBar.show();\n        };\n        this.session = session;\n    }\n    visitProposedToLocation(location, options) {\n        this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n    }\n    visitStarted(visit) {\n        this.location = visit.location;\n        visit.loadCachedSnapshot();\n        visit.issueRequest();\n        visit.goToSamePageAnchor();\n    }\n    visitRequestStarted(visit) {\n        this.progressBar.setValue(0);\n        if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n            this.showVisitProgressBarAfterDelay();\n        }\n        else {\n            this.showProgressBar();\n        }\n    }\n    visitRequestCompleted(visit) {\n        visit.loadResponse();\n    }\n    visitRequestFailedWithStatusCode(visit, statusCode) {\n        switch (statusCode) {\n            case SystemStatusCode.networkFailure:\n            case SystemStatusCode.timeoutFailure:\n            case SystemStatusCode.contentTypeMismatch:\n                return this.reload({\n                    reason: \"request_failed\",\n                    context: {\n                        statusCode,\n                    },\n                });\n            default:\n                return visit.loadResponse();\n        }\n    }\n    visitRequestFinished(_visit) {\n        this.progressBar.setValue(1);\n        this.hideVisitProgressBar();\n    }\n    visitCompleted(_visit) { }\n    pageInvalidated(reason) {\n        this.reload(reason);\n    }\n    visitFailed(_visit) { }\n    visitRendered(_visit) { }\n    formSubmissionStarted(_formSubmission) {\n        this.progressBar.setValue(0);\n        this.showFormProgressBarAfterDelay();\n    }\n    formSubmissionFinished(_formSubmission) {\n        this.progressBar.setValue(1);\n        this.hideFormProgressBar();\n    }\n    showVisitProgressBarAfterDelay() {\n        this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n    hideVisitProgressBar() {\n        this.progressBar.hide();\n        if (this.visitProgressBarTimeout != null) {\n            window.clearTimeout(this.visitProgressBarTimeout);\n            delete this.visitProgressBarTimeout;\n        }\n    }\n    showFormProgressBarAfterDelay() {\n        if (this.formProgressBarTimeout == null) {\n            this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n        }\n    }\n    hideFormProgressBar() {\n        this.progressBar.hide();\n        if (this.formProgressBarTimeout != null) {\n            window.clearTimeout(this.formProgressBarTimeout);\n            delete this.formProgressBarTimeout;\n        }\n    }\n    reload(reason) {\n        var _a;\n        dispatch(\"turbo:reload\", { detail: reason });\n        window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n    }\n    get navigator() {\n        return this.session.navigator;\n    }\n}\n\nclass CacheObserver {\n    constructor() {\n        this.started = false;\n        this.removeStaleElements = ((_event) => {\n            const staleElements = [...document.querySelectorAll('[data-turbo-cache=\"false\"]')];\n            for (const element of staleElements) {\n                element.remove();\n            }\n        });\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-cache\", this.removeStaleElements, false);\n        }\n    }\n}\n\nclass FrameRedirector {\n    constructor(session, element) {\n        this.session = session;\n        this.element = element;\n        this.linkInterceptor = new LinkInterceptor(this, element);\n        this.formSubmitObserver = new FormSubmitObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n        this.formSubmitObserver.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n        this.formSubmitObserver.stop();\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldRedirect(element);\n    }\n    linkClickIntercepted(element, url, event) {\n        const frame = this.findFrameElement(element);\n        if (frame) {\n            frame.delegate.linkClickIntercepted(element, url, event);\n        }\n    }\n    willSubmitForm(element, submitter) {\n        return (element.closest(\"turbo-frame\") == null &&\n            this.shouldSubmit(element, submitter) &&\n            this.shouldRedirect(element, submitter));\n    }\n    formSubmitted(element, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        if (frame) {\n            frame.delegate.formSubmitted(element, submitter);\n        }\n    }\n    shouldSubmit(form, submitter) {\n        var _a;\n        const action = getAction(form, submitter);\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n        return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n    }\n    shouldRedirect(element, submitter) {\n        const isNavigatable = element instanceof HTMLFormElement\n            ? this.session.submissionIsNavigatable(element, submitter)\n            : this.session.elementIsNavigatable(element);\n        if (isNavigatable) {\n            const frame = this.findFrameElement(element, submitter);\n            return frame ? frame != element.closest(\"turbo-frame\") : false;\n        }\n        else {\n            return false;\n        }\n    }\n    findFrameElement(element, submitter) {\n        const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n        if (id && id != \"_top\") {\n            const frame = this.element.querySelector(`#${id}:not([disabled])`);\n            if (frame instanceof FrameElement) {\n                return frame;\n            }\n        }\n    }\n}\n\nclass History {\n    constructor(delegate) {\n        this.restorationIdentifier = uuid();\n        this.restorationData = {};\n        this.started = false;\n        this.pageLoaded = false;\n        this.onPopState = (event) => {\n            if (this.shouldHandlePopState()) {\n                const { turbo } = event.state || {};\n                if (turbo) {\n                    this.location = new URL(window.location.href);\n                    const { restorationIdentifier } = turbo;\n                    this.restorationIdentifier = restorationIdentifier;\n                    this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n                }\n            }\n        };\n        this.onPageLoad = async (_event) => {\n            await nextMicrotask();\n            this.pageLoaded = true;\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"popstate\", this.onPopState, false);\n            addEventListener(\"load\", this.onPageLoad, false);\n            this.started = true;\n            this.replace(new URL(window.location.href));\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"popstate\", this.onPopState, false);\n            removeEventListener(\"load\", this.onPageLoad, false);\n            this.started = false;\n        }\n    }\n    push(location, restorationIdentifier) {\n        this.update(history.pushState, location, restorationIdentifier);\n    }\n    replace(location, restorationIdentifier) {\n        this.update(history.replaceState, location, restorationIdentifier);\n    }\n    update(method, location, restorationIdentifier = uuid()) {\n        const state = { turbo: { restorationIdentifier } };\n        method.call(history, state, \"\", location.href);\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier;\n    }\n    getRestorationDataForIdentifier(restorationIdentifier) {\n        return this.restorationData[restorationIdentifier] || {};\n    }\n    updateRestorationData(additionalData) {\n        const { restorationIdentifier } = this;\n        const restorationData = this.restorationData[restorationIdentifier];\n        this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n    }\n    assumeControlOfScrollRestoration() {\n        var _a;\n        if (!this.previousScrollRestoration) {\n            this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n            history.scrollRestoration = \"manual\";\n        }\n    }\n    relinquishControlOfScrollRestoration() {\n        if (this.previousScrollRestoration) {\n            history.scrollRestoration = this.previousScrollRestoration;\n            delete this.previousScrollRestoration;\n        }\n    }\n    shouldHandlePopState() {\n        return this.pageIsLoaded();\n    }\n    pageIsLoaded() {\n        return this.pageLoaded || document.readyState == \"complete\";\n    }\n}\n\nclass Navigator {\n    constructor(delegate) {\n        this.delegate = delegate;\n    }\n    proposeVisit(location, options = {}) {\n        if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n            if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n                this.delegate.visitProposedToLocation(location, options);\n            }\n            else {\n                window.location.href = location.toString();\n            }\n        }\n    }\n    startVisit(locatable, restorationIdentifier, options = {}) {\n        this.stop();\n        this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n        this.currentVisit.start();\n    }\n    submitForm(form, submitter) {\n        this.stop();\n        this.formSubmission = new FormSubmission(this, form, submitter, true);\n        this.formSubmission.start();\n    }\n    stop() {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n            delete this.formSubmission;\n        }\n        if (this.currentVisit) {\n            this.currentVisit.cancel();\n            delete this.currentVisit;\n        }\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    formSubmissionStarted(formSubmission) {\n        if (typeof this.adapter.formSubmissionStarted === \"function\") {\n            this.adapter.formSubmissionStarted(formSubmission);\n        }\n    }\n    async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n        if (formSubmission == this.formSubmission) {\n            const responseHTML = await fetchResponse.responseHTML;\n            if (responseHTML) {\n                const shouldCacheSnapshot = formSubmission.method == FetchMethod.get;\n                if (!shouldCacheSnapshot) {\n                    this.view.clearSnapshotCache();\n                }\n                const { statusCode, redirected } = fetchResponse;\n                const action = this.getActionForFormSubmission(formSubmission);\n                const visitOptions = {\n                    action,\n                    shouldCacheSnapshot,\n                    response: { statusCode, responseHTML, redirected },\n                };\n                this.proposeVisit(fetchResponse.location, visitOptions);\n            }\n        }\n    }\n    async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        const responseHTML = await fetchResponse.responseHTML;\n        if (responseHTML) {\n            const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n            if (fetchResponse.serverError) {\n                await this.view.renderError(snapshot, this.currentVisit);\n            }\n            else {\n                await this.view.renderPage(snapshot, false, true, this.currentVisit);\n            }\n            this.view.scrollToTop();\n            this.view.clearSnapshotCache();\n        }\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished(formSubmission) {\n        if (typeof this.adapter.formSubmissionFinished === \"function\") {\n            this.adapter.formSubmissionFinished(formSubmission);\n        }\n    }\n    visitStarted(visit) {\n        this.delegate.visitStarted(visit);\n    }\n    visitCompleted(visit) {\n        this.delegate.visitCompleted(visit);\n    }\n    locationWithActionIsSamePage(location, action) {\n        const anchor = getAnchor(location);\n        const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n        const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n        return (action !== \"replace\" &&\n            getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n            (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    getActionForFormSubmission(formSubmission) {\n        const { formElement, submitter } = formSubmission;\n        const action = getAttribute(\"data-turbo-action\", submitter, formElement);\n        return isAction(action) ? action : \"advance\";\n    }\n}\n\nvar PageStage;\n(function (PageStage) {\n    PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n    PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n    PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n    PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n    constructor(delegate) {\n        this.stage = PageStage.initial;\n        this.started = false;\n        this.interpretReadyState = () => {\n            const { readyState } = this;\n            if (readyState == \"interactive\") {\n                this.pageIsInteractive();\n            }\n            else if (readyState == \"complete\") {\n                this.pageIsComplete();\n            }\n        };\n        this.pageWillUnload = () => {\n            this.delegate.pageWillUnload();\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            if (this.stage == PageStage.initial) {\n                this.stage = PageStage.loading;\n            }\n            document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n            addEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n            removeEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = false;\n        }\n    }\n    pageIsInteractive() {\n        if (this.stage == PageStage.loading) {\n            this.stage = PageStage.interactive;\n            this.delegate.pageBecameInteractive();\n        }\n    }\n    pageIsComplete() {\n        this.pageIsInteractive();\n        if (this.stage == PageStage.interactive) {\n            this.stage = PageStage.complete;\n            this.delegate.pageLoaded();\n        }\n    }\n    get readyState() {\n        return document.readyState;\n    }\n}\n\nclass ScrollObserver {\n    constructor(delegate) {\n        this.started = false;\n        this.onScroll = () => {\n            this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"scroll\", this.onScroll, false);\n            this.onScroll();\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"scroll\", this.onScroll, false);\n            this.started = false;\n        }\n    }\n    updatePosition(position) {\n        this.delegate.scrollPositionChanged(position);\n    }\n}\n\nclass StreamMessageRenderer {\n    render({ fragment }) {\n        Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n    }\n    enteringBardo(currentPermanentElement, newPermanentElement) {\n        newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n    }\n    leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n    const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n    const permanentElementMap = {};\n    for (const permanentElementInDocument of permanentElementsInDocument) {\n        const { id } = permanentElementInDocument;\n        for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n            const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n            if (elementInStream) {\n                permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n            }\n        }\n    }\n    return permanentElementMap;\n}\n\nclass StreamObserver {\n    constructor(delegate) {\n        this.sources = new Set();\n        this.started = false;\n        this.inspectFetchResponse = ((event) => {\n            const response = fetchResponseFromEvent(event);\n            if (response && fetchResponseIsStream(response)) {\n                event.preventDefault();\n                this.receiveMessageResponse(response);\n            }\n        });\n        this.receiveMessageEvent = (event) => {\n            if (this.started && typeof event.data == \"string\") {\n                this.receiveMessageHTML(event.data);\n            }\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    connectStreamSource(source) {\n        if (!this.streamSourceIsConnected(source)) {\n            this.sources.add(source);\n            source.addEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    disconnectStreamSource(source) {\n        if (this.streamSourceIsConnected(source)) {\n            this.sources.delete(source);\n            source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    streamSourceIsConnected(source) {\n        return this.sources.has(source);\n    }\n    async receiveMessageResponse(response) {\n        const html = await response.responseHTML;\n        if (html) {\n            this.receiveMessageHTML(html);\n        }\n    }\n    receiveMessageHTML(html) {\n        this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n    }\n}\nfunction fetchResponseFromEvent(event) {\n    var _a;\n    const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n    if (fetchResponse instanceof FetchResponse) {\n        return fetchResponse;\n    }\n}\nfunction fetchResponseIsStream(response) {\n    var _a;\n    const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n    return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        const { documentElement, body } = document;\n        documentElement.replaceChild(newElement, body);\n    }\n    async render() {\n        this.replaceHeadAndBody();\n        this.activateScriptElements();\n    }\n    replaceHeadAndBody() {\n        const { documentElement, head } = document;\n        documentElement.replaceChild(this.newHead, head);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    activateScriptElements() {\n        for (const replaceableElement of this.scriptElements) {\n            const parentNode = replaceableElement.parentNode;\n            if (parentNode) {\n                const element = activateScriptElement(replaceableElement);\n                parentNode.replaceChild(element, replaceableElement);\n            }\n        }\n    }\n    get newHead() {\n        return this.newSnapshot.headSnapshot.element;\n    }\n    get scriptElements() {\n        return document.documentElement.querySelectorAll(\"script\");\n    }\n}\n\nclass PageRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        if (document.body && newElement instanceof HTMLBodyElement) {\n            document.body.replaceWith(newElement);\n        }\n        else {\n            document.documentElement.appendChild(newElement);\n        }\n    }\n    get shouldRender() {\n        return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n    }\n    get reloadReason() {\n        if (!this.newSnapshot.isVisitable) {\n            return {\n                reason: \"turbo_visit_control_is_reload\",\n            };\n        }\n        if (!this.trackedElementsAreIdentical) {\n            return {\n                reason: \"tracked_element_mismatch\",\n            };\n        }\n    }\n    async prepareToRender() {\n        await this.mergeHead();\n    }\n    async render() {\n        if (this.willRender) {\n            this.replaceBody();\n        }\n    }\n    finishRendering() {\n        super.finishRendering();\n        if (!this.isPreview) {\n            this.focusFirstAutofocusableElement();\n        }\n    }\n    get currentHeadSnapshot() {\n        return this.currentSnapshot.headSnapshot;\n    }\n    get newHeadSnapshot() {\n        return this.newSnapshot.headSnapshot;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    async mergeHead() {\n        const newStylesheetElements = this.copyNewHeadStylesheetElements();\n        this.copyNewHeadScriptElements();\n        this.removeCurrentHeadProvisionalElements();\n        this.copyNewHeadProvisionalElements();\n        await newStylesheetElements;\n    }\n    replaceBody() {\n        this.preservingPermanentElements(() => {\n            this.activateNewBody();\n            this.assignNewBody();\n        });\n    }\n    get trackedElementsAreIdentical() {\n        return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n    }\n    async copyNewHeadStylesheetElements() {\n        const loadingElements = [];\n        for (const element of this.newHeadStylesheetElements) {\n            loadingElements.push(waitForLoad(element));\n            document.head.appendChild(element);\n        }\n        await Promise.all(loadingElements);\n    }\n    copyNewHeadScriptElements() {\n        for (const element of this.newHeadScriptElements) {\n            document.head.appendChild(activateScriptElement(element));\n        }\n    }\n    removeCurrentHeadProvisionalElements() {\n        for (const element of this.currentHeadProvisionalElements) {\n            document.head.removeChild(element);\n        }\n    }\n    copyNewHeadProvisionalElements() {\n        for (const element of this.newHeadProvisionalElements) {\n            document.head.appendChild(element);\n        }\n    }\n    activateNewBody() {\n        document.adoptNode(this.newElement);\n        this.activateNewBodyScriptElements();\n    }\n    activateNewBodyScriptElements() {\n        for (const inertScriptElement of this.newBodyScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    assignNewBody() {\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    get newHeadStylesheetElements() {\n        return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get newHeadScriptElements() {\n        return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get currentHeadProvisionalElements() {\n        return this.currentHeadSnapshot.provisionalElements;\n    }\n    get newHeadProvisionalElements() {\n        return this.newHeadSnapshot.provisionalElements;\n    }\n    get newBodyScriptElements() {\n        return this.newElement.querySelectorAll(\"script\");\n    }\n}\n\nclass SnapshotCache {\n    constructor(size) {\n        this.keys = [];\n        this.snapshots = {};\n        this.size = size;\n    }\n    has(location) {\n        return toCacheKey(location) in this.snapshots;\n    }\n    get(location) {\n        if (this.has(location)) {\n            const snapshot = this.read(location);\n            this.touch(location);\n            return snapshot;\n        }\n    }\n    put(location, snapshot) {\n        this.write(location, snapshot);\n        this.touch(location);\n        return snapshot;\n    }\n    clear() {\n        this.snapshots = {};\n    }\n    read(location) {\n        return this.snapshots[toCacheKey(location)];\n    }\n    write(location, snapshot) {\n        this.snapshots[toCacheKey(location)] = snapshot;\n    }\n    touch(location) {\n        const key = toCacheKey(location);\n        const index = this.keys.indexOf(key);\n        if (index > -1)\n            this.keys.splice(index, 1);\n        this.keys.unshift(key);\n        this.trim();\n    }\n    trim() {\n        for (const key of this.keys.splice(this.size)) {\n            delete this.snapshots[key];\n        }\n    }\n}\n\nclass PageView extends View {\n    constructor() {\n        super(...arguments);\n        this.snapshotCache = new SnapshotCache(10);\n        this.lastRenderedLocation = new URL(location.href);\n        this.forceReloaded = false;\n    }\n    renderPage(snapshot, isPreview = false, willRender = true, visit) {\n        const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n        if (!renderer.shouldRender) {\n            this.forceReloaded = true;\n        }\n        else {\n            visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        }\n        return this.render(renderer);\n    }\n    renderError(snapshot, visit) {\n        visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n        return this.render(renderer);\n    }\n    clearSnapshotCache() {\n        this.snapshotCache.clear();\n    }\n    async cacheSnapshot(snapshot = this.snapshot) {\n        if (snapshot.isCacheable) {\n            this.delegate.viewWillCacheSnapshot();\n            const { lastRenderedLocation: location } = this;\n            await nextEventLoopTick();\n            const cachedSnapshot = snapshot.clone();\n            this.snapshotCache.put(location, cachedSnapshot);\n            return cachedSnapshot;\n        }\n    }\n    getCachedSnapshotForLocation(location) {\n        return this.snapshotCache.get(location);\n    }\n    get snapshot() {\n        return PageSnapshot.fromElement(this.element);\n    }\n}\n\nclass Preloader {\n    constructor(delegate) {\n        this.selector = \"a[data-turbo-preload]\";\n        this.delegate = delegate;\n    }\n    get snapshotCache() {\n        return this.delegate.navigator.view.snapshotCache;\n    }\n    start() {\n        if (document.readyState === \"loading\") {\n            return document.addEventListener(\"DOMContentLoaded\", () => {\n                this.preloadOnLoadLinksForView(document.body);\n            });\n        }\n        else {\n            this.preloadOnLoadLinksForView(document.body);\n        }\n    }\n    preloadOnLoadLinksForView(element) {\n        for (const link of element.querySelectorAll(this.selector)) {\n            this.preloadURL(link);\n        }\n    }\n    async preloadURL(link) {\n        const location = new URL(link.href);\n        if (this.snapshotCache.has(location)) {\n            return;\n        }\n        try {\n            const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n            const responseText = await response.text();\n            const snapshot = PageSnapshot.fromHTMLString(responseText);\n            this.snapshotCache.put(location, snapshot);\n        }\n        catch (_) {\n        }\n    }\n}\n\nclass Session {\n    constructor() {\n        this.navigator = new Navigator(this);\n        this.history = new History(this);\n        this.preloader = new Preloader(this);\n        this.view = new PageView(this, document.documentElement);\n        this.adapter = new BrowserAdapter(this);\n        this.pageObserver = new PageObserver(this);\n        this.cacheObserver = new CacheObserver();\n        this.linkClickObserver = new LinkClickObserver(this, window);\n        this.formSubmitObserver = new FormSubmitObserver(this, document);\n        this.scrollObserver = new ScrollObserver(this);\n        this.streamObserver = new StreamObserver(this);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n        this.frameRedirector = new FrameRedirector(this, document.documentElement);\n        this.streamMessageRenderer = new StreamMessageRenderer();\n        this.drive = true;\n        this.enabled = true;\n        this.progressBarDelay = 500;\n        this.started = false;\n        this.formMode = \"on\";\n    }\n    start() {\n        if (!this.started) {\n            this.pageObserver.start();\n            this.cacheObserver.start();\n            this.formLinkClickObserver.start();\n            this.linkClickObserver.start();\n            this.formSubmitObserver.start();\n            this.scrollObserver.start();\n            this.streamObserver.start();\n            this.frameRedirector.start();\n            this.history.start();\n            this.preloader.start();\n            this.started = true;\n            this.enabled = true;\n        }\n    }\n    disable() {\n        this.enabled = false;\n    }\n    stop() {\n        if (this.started) {\n            this.pageObserver.stop();\n            this.cacheObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkClickObserver.stop();\n            this.formSubmitObserver.stop();\n            this.scrollObserver.stop();\n            this.streamObserver.stop();\n            this.frameRedirector.stop();\n            this.history.stop();\n            this.started = false;\n        }\n    }\n    registerAdapter(adapter) {\n        this.adapter = adapter;\n    }\n    visit(location, options = {}) {\n        const frameElement = options.frame ? document.getElementById(options.frame) : null;\n        if (frameElement instanceof FrameElement) {\n            frameElement.src = location.toString();\n            frameElement.loaded;\n        }\n        else {\n            this.navigator.proposeVisit(expandURL(location), options);\n        }\n    }\n    connectStreamSource(source) {\n        this.streamObserver.connectStreamSource(source);\n    }\n    disconnectStreamSource(source) {\n        this.streamObserver.disconnectStreamSource(source);\n    }\n    renderStreamMessage(message) {\n        this.streamMessageRenderer.render(StreamMessage.wrap(message));\n    }\n    clearCache() {\n        this.view.clearSnapshotCache();\n    }\n    setProgressBarDelay(delay) {\n        this.progressBarDelay = delay;\n    }\n    setFormMode(mode) {\n        this.formMode = mode;\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n        if (this.enabled) {\n            this.navigator.startVisit(location, restorationIdentifier, {\n                action: \"restore\",\n                historyChanged: true,\n            });\n        }\n        else {\n            this.adapter.pageInvalidated({\n                reason: \"turbo_disabled\",\n            });\n        }\n    }\n    scrollPositionChanged(position) {\n        this.history.updateRestorationData({ scrollPosition: position });\n    }\n    willSubmitFormLinkToLocation(link, location) {\n        return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n    }\n    submittedFormLinkToLocation() { }\n    willFollowLinkToLocation(link, location, event) {\n        return (this.elementIsNavigatable(link) &&\n            locationIsVisitable(location, this.snapshot.rootLocation) &&\n            this.applicationAllowsFollowingLinkToLocation(link, location, event));\n    }\n    followedLinkToLocation(link, location) {\n        const action = this.getActionForLink(link);\n        const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n        this.visit(location.href, { action, acceptsStreamResponse });\n    }\n    allowsVisitingLocationWithAction(location, action) {\n        return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n    }\n    visitProposedToLocation(location, options) {\n        extendURLWithDeprecatedProperties(location);\n        this.adapter.visitProposedToLocation(location, options);\n    }\n    visitStarted(visit) {\n        if (!visit.acceptsStreamResponse) {\n            markAsBusy(document.documentElement);\n        }\n        extendURLWithDeprecatedProperties(visit.location);\n        if (!visit.silent) {\n            this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n        }\n    }\n    visitCompleted(visit) {\n        clearBusyState(document.documentElement);\n        this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    }\n    locationWithActionIsSamePage(location, action) {\n        return this.navigator.locationWithActionIsSamePage(location, action);\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n    }\n    willSubmitForm(form, submitter) {\n        const action = getAction(form, submitter);\n        return (this.submissionIsNavigatable(form, submitter) &&\n            locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n    }\n    formSubmitted(form, submitter) {\n        this.navigator.submitForm(form, submitter);\n    }\n    pageBecameInteractive() {\n        this.view.lastRenderedLocation = this.location;\n        this.notifyApplicationAfterPageLoad();\n    }\n    pageLoaded() {\n        this.history.assumeControlOfScrollRestoration();\n    }\n    pageWillUnload() {\n        this.history.relinquishControlOfScrollRestoration();\n    }\n    receivedMessageFromStream(message) {\n        this.renderStreamMessage(message);\n    }\n    viewWillCacheSnapshot() {\n        var _a;\n        if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n            this.notifyApplicationBeforeCachingSnapshot();\n        }\n    }\n    allowsImmediateRender({ element }, options) {\n        const event = this.notifyApplicationBeforeRender(element, options);\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) {\n        this.view.lastRenderedLocation = this.history.location;\n        this.notifyApplicationAfterRender();\n    }\n    preloadOnLoadLinksForView(element) {\n        this.preloader.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated(reason) {\n        this.adapter.pageInvalidated(reason);\n    }\n    frameLoaded(frame) {\n        this.notifyApplicationAfterFrameLoad(frame);\n    }\n    frameRendered(fetchResponse, frame) {\n        this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n    }\n    applicationAllowsFollowingLinkToLocation(link, location, ev) {\n        const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n        return !event.defaultPrevented;\n    }\n    applicationAllowsVisitingLocation(location) {\n        const event = this.notifyApplicationBeforeVisitingLocation(location);\n        return !event.defaultPrevented;\n    }\n    notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n        return dispatch(\"turbo:click\", {\n            target: link,\n            detail: { url: location.href, originalEvent: event },\n            cancelable: true,\n        });\n    }\n    notifyApplicationBeforeVisitingLocation(location) {\n        return dispatch(\"turbo:before-visit\", {\n            detail: { url: location.href },\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterVisitingLocation(location, action) {\n        return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n    }\n    notifyApplicationBeforeCachingSnapshot() {\n        return dispatch(\"turbo:before-cache\");\n    }\n    notifyApplicationBeforeRender(newBody, options) {\n        return dispatch(\"turbo:before-render\", {\n            detail: Object.assign({ newBody }, options),\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterRender() {\n        return dispatch(\"turbo:render\");\n    }\n    notifyApplicationAfterPageLoad(timing = {}) {\n        return dispatch(\"turbo:load\", {\n            detail: { url: this.location.href, timing },\n        });\n    }\n    notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n        dispatchEvent(new HashChangeEvent(\"hashchange\", {\n            oldURL: oldURL.toString(),\n            newURL: newURL.toString(),\n        }));\n    }\n    notifyApplicationAfterFrameLoad(frame) {\n        return dispatch(\"turbo:frame-load\", { target: frame });\n    }\n    notifyApplicationAfterFrameRender(fetchResponse, frame) {\n        return dispatch(\"turbo:frame-render\", {\n            detail: { fetchResponse },\n            target: frame,\n            cancelable: true,\n        });\n    }\n    submissionIsNavigatable(form, submitter) {\n        if (this.formMode == \"off\") {\n            return false;\n        }\n        else {\n            const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n            if (this.formMode == \"optin\") {\n                return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n            }\n            else {\n                return submitterIsNavigatable && this.elementIsNavigatable(form);\n            }\n        }\n    }\n    elementIsNavigatable(element) {\n        const container = element.closest(\"[data-turbo]\");\n        const withinFrame = element.closest(\"turbo-frame\");\n        if (this.drive || withinFrame) {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") != \"false\";\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") == \"true\";\n            }\n            else {\n                return false;\n            }\n        }\n    }\n    getActionForLink(link) {\n        const action = link.getAttribute(\"data-turbo-action\");\n        return isAction(action) ? action : \"advance\";\n    }\n    get snapshot() {\n        return this.view.snapshot;\n    }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n    Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n    absoluteURL: {\n        get() {\n            return this.toString();\n        },\n    },\n};\n\nclass Cache {\n    constructor(session) {\n        this.session = session;\n    }\n    clear() {\n        this.session.clearCache();\n    }\n    resetCacheControl() {\n        this.setCacheControl(\"\");\n    }\n    exemptPageFromCache() {\n        this.setCacheControl(\"no-cache\");\n    }\n    exemptPageFromPreview() {\n        this.setCacheControl(\"no-preview\");\n    }\n    setCacheControl(value) {\n        setMetaContent(\"turbo-cache-control\", value);\n    }\n}\n\nconst StreamActions = {\n    after() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n    },\n    append() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.append(this.templateContent));\n    },\n    before() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n    },\n    prepend() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.prepend(this.templateContent));\n    },\n    remove() {\n        this.targetElements.forEach((e) => e.remove());\n    },\n    replace() {\n        this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n    },\n    update() {\n        this.targetElements.forEach((e) => e.replaceChildren(this.templateContent));\n    },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n    session.start();\n}\nfunction registerAdapter(adapter) {\n    session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n    session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n    session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n    session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n    session.renderStreamMessage(message);\n}\nfunction clearCache() {\n    console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n    session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n    session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n    FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n    session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    navigator: navigator$1,\n    session: session,\n    cache: cache,\n    PageRenderer: PageRenderer,\n    PageSnapshot: PageSnapshot,\n    FrameRenderer: FrameRenderer,\n    start: start,\n    registerAdapter: registerAdapter,\n    visit: visit,\n    connectStreamSource: connectStreamSource,\n    disconnectStreamSource: disconnectStreamSource,\n    renderStreamMessage: renderStreamMessage,\n    clearCache: clearCache,\n    setProgressBarDelay: setProgressBarDelay,\n    setConfirmMethod: setConfirmMethod,\n    setFormMode: setFormMode,\n    StreamActions: StreamActions\n});\n\nclass FrameController {\n    constructor(element) {\n        this.fetchResponseLoaded = (_fetchResponse) => { };\n        this.currentFetchRequest = null;\n        this.resolveVisitPromise = () => { };\n        this.connected = false;\n        this.hasBeenLoaded = false;\n        this.ignoredAttributes = new Set();\n        this.action = null;\n        this.visitCachedSnapshot = ({ element }) => {\n            const frame = element.querySelector(\"#\" + this.element.id);\n            if (frame && this.previousFrameElement) {\n                frame.replaceChildren(...this.previousFrameElement.children);\n            }\n            delete this.previousFrameElement;\n        };\n        this.element = element;\n        this.view = new FrameView(this, this.element);\n        this.appearanceObserver = new AppearanceObserver(this, this.element);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n        this.linkInterceptor = new LinkInterceptor(this, this.element);\n        this.restorationIdentifier = uuid();\n        this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n    }\n    connect() {\n        if (!this.connected) {\n            this.connected = true;\n            if (this.loadingStyle == FrameLoadingStyle.lazy) {\n                this.appearanceObserver.start();\n            }\n            else {\n                this.loadSourceURL();\n            }\n            this.formLinkClickObserver.start();\n            this.linkInterceptor.start();\n            this.formSubmitObserver.start();\n        }\n    }\n    disconnect() {\n        if (this.connected) {\n            this.connected = false;\n            this.appearanceObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkInterceptor.stop();\n            this.formSubmitObserver.stop();\n        }\n    }\n    disabledChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.eager) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLChanged() {\n        if (this.isIgnoringChangesTo(\"src\"))\n            return;\n        if (this.element.isConnected) {\n            this.complete = false;\n        }\n        if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLReloaded() {\n        const { src } = this.element;\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            this.element.removeAttribute(\"complete\");\n        });\n        this.element.src = null;\n        this.element.src = src;\n        return this.element.loaded;\n    }\n    completeChanged() {\n        if (this.isIgnoringChangesTo(\"complete\"))\n            return;\n        this.loadSourceURL();\n    }\n    loadingStyleChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.lazy) {\n            this.appearanceObserver.start();\n        }\n        else {\n            this.appearanceObserver.stop();\n            this.loadSourceURL();\n        }\n    }\n    async loadSourceURL() {\n        if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n            this.element.loaded = this.visit(expandURL(this.sourceURL));\n            this.appearanceObserver.stop();\n            await this.element.loaded;\n            this.hasBeenLoaded = true;\n        }\n    }\n    async loadResponse(fetchResponse) {\n        if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n            this.sourceURL = fetchResponse.response.url;\n        }\n        try {\n            const html = await fetchResponse.responseHTML;\n            if (html) {\n                const { body } = parseHTMLDocument(html);\n                const newFrameElement = await this.extractForeignFrameElement(body);\n                if (newFrameElement) {\n                    const snapshot = new Snapshot(newFrameElement);\n                    const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    this.changeHistory();\n                    await this.view.render(renderer);\n                    this.complete = true;\n                    session.frameRendered(fetchResponse, this.element);\n                    session.frameLoaded(this.element);\n                    this.fetchResponseLoaded(fetchResponse);\n                }\n                else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n                    console.warn(`A matching frame for #${this.element.id} was missing from the response, transforming into full-page Visit.`);\n                    this.visitResponse(fetchResponse.response);\n                }\n            }\n        }\n        catch (error) {\n            console.error(error);\n            this.view.invalidate();\n        }\n        finally {\n            this.fetchResponseLoaded = () => { };\n        }\n    }\n    elementAppearedInViewport(_element) {\n        this.loadSourceURL();\n    }\n    willSubmitFormLinkToLocation(link) {\n        return this.shouldInterceptNavigation(link);\n    }\n    submittedFormLinkToLocation(link, _location, form) {\n        const frame = this.findFrameElement(link);\n        if (frame)\n            form.setAttribute(\"data-turbo-frame\", frame.id);\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldInterceptNavigation(element);\n    }\n    linkClickIntercepted(element, location) {\n        this.navigateFrame(element, location);\n    }\n    willSubmitForm(element, submitter) {\n        return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n    }\n    formSubmitted(element, submitter) {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n        }\n        this.formSubmission = new FormSubmission(this, element, submitter);\n        const { fetchRequest } = this.formSubmission;\n        this.prepareHeadersForRequest(fetchRequest.headers, fetchRequest);\n        this.formSubmission.start();\n    }\n    prepareHeadersForRequest(headers, request) {\n        var _a;\n        headers[\"Turbo-Frame\"] = this.id;\n        if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        markAsBusy(this.element);\n    }\n    requestPreventedHandlingResponse(_request, _response) {\n        this.resolveVisitPromise();\n    }\n    async requestSucceededWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    async requestFailedWithResponse(request, response) {\n        console.error(response);\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    requestErrored(request, error) {\n        console.error(error);\n        this.resolveVisitPromise();\n    }\n    requestFinished(_request) {\n        clearBusyState(this.element);\n    }\n    formSubmissionStarted({ formElement }) {\n        markAsBusy(formElement, this.findFrameElement(formElement));\n    }\n    formSubmissionSucceededWithResponse(formSubmission, response) {\n        const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.loadResponse(response);\n    }\n    formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        this.element.delegate.loadResponse(fetchResponse);\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished({ formElement }) {\n        clearBusyState(formElement, this.findFrameElement(formElement));\n    }\n    allowsImmediateRender({ element: newFrame }, options) {\n        const event = dispatch(\"turbo:before-frame-render\", {\n            target: this.element,\n            detail: Object.assign({ newFrame }, options),\n            cancelable: true,\n        });\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) { }\n    preloadOnLoadLinksForView(element) {\n        session.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated() { }\n    willRenderFrame(currentElement, _newElement) {\n        this.previousFrameElement = currentElement.cloneNode(true);\n    }\n    async visit(url) {\n        var _a;\n        const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n        (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n        this.currentFetchRequest = request;\n        return new Promise((resolve) => {\n            this.resolveVisitPromise = () => {\n                this.resolveVisitPromise = () => { };\n                this.currentFetchRequest = null;\n                resolve();\n            };\n            request.perform();\n        });\n    }\n    navigateFrame(element, url, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        this.pageSnapshot = PageSnapshot.fromElement(frame).clone();\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n        this.withCurrentNavigationElement(element, () => {\n            frame.src = url;\n        });\n    }\n    proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n        this.action = getVisitAction(submitter, element, frame);\n        if (isAction(this.action)) {\n            const { visitCachedSnapshot } = frame.delegate;\n            frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n                if (frame.src) {\n                    const { statusCode, redirected } = fetchResponse;\n                    const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n                    const response = { statusCode, redirected, responseHTML };\n                    const options = {\n                        response,\n                        visitCachedSnapshot,\n                        willRender: false,\n                        updateHistory: false,\n                        restorationIdentifier: this.restorationIdentifier,\n                        snapshot: this.pageSnapshot,\n                    };\n                    if (this.action)\n                        options.action = this.action;\n                    session.visit(frame.src, options);\n                }\n            };\n        }\n    }\n    changeHistory() {\n        if (this.action) {\n            const method = getHistoryMethodForAction(this.action);\n            session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n        }\n    }\n    willHandleFrameMissingFromResponse(fetchResponse) {\n        this.element.setAttribute(\"complete\", \"\");\n        const response = fetchResponse.response;\n        const visit = async (url, options = {}) => {\n            if (url instanceof Response) {\n                this.visitResponse(url);\n            }\n            else {\n                session.visit(url, options);\n            }\n        };\n        const event = dispatch(\"turbo:frame-missing\", {\n            target: this.element,\n            detail: { response, visit },\n            cancelable: true,\n        });\n        return !event.defaultPrevented;\n    }\n    async visitResponse(response) {\n        const wrapped = new FetchResponse(response);\n        const responseHTML = await wrapped.responseHTML;\n        const { location, redirected, statusCode } = wrapped;\n        return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n    }\n    findFrameElement(element, submitter) {\n        var _a;\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n    }\n    async extractForeignFrameElement(container) {\n        let element;\n        const id = CSS.escape(this.id);\n        try {\n            element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n            if (element) {\n                return element;\n            }\n            element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n            if (element) {\n                await element.loaded;\n                return await this.extractForeignFrameElement(element);\n            }\n        }\n        catch (error) {\n            console.error(error);\n            return new FrameElement();\n        }\n        return null;\n    }\n    formActionIsVisitable(form, submitter) {\n        const action = getAction(form, submitter);\n        return locationIsVisitable(expandURL(action), this.rootLocation);\n    }\n    shouldInterceptNavigation(element, submitter) {\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n            return false;\n        }\n        if (!this.enabled || id == \"_top\") {\n            return false;\n        }\n        if (id) {\n            const frameElement = getFrameElementById(id);\n            if (frameElement) {\n                return !frameElement.disabled;\n            }\n        }\n        if (!session.elementIsNavigatable(element)) {\n            return false;\n        }\n        if (submitter && !session.elementIsNavigatable(submitter)) {\n            return false;\n        }\n        return true;\n    }\n    get id() {\n        return this.element.id;\n    }\n    get enabled() {\n        return !this.element.disabled;\n    }\n    get sourceURL() {\n        if (this.element.src) {\n            return this.element.src;\n        }\n    }\n    set sourceURL(sourceURL) {\n        this.ignoringChangesToAttribute(\"src\", () => {\n            this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n        });\n    }\n    get loadingStyle() {\n        return this.element.loading;\n    }\n    get isLoading() {\n        return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n    }\n    get complete() {\n        return this.element.hasAttribute(\"complete\");\n    }\n    set complete(value) {\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            if (value) {\n                this.element.setAttribute(\"complete\", \"\");\n            }\n            else {\n                this.element.removeAttribute(\"complete\");\n            }\n        });\n    }\n    get isActive() {\n        return this.element.isActive && this.connected;\n    }\n    get rootLocation() {\n        var _a;\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    isIgnoringChangesTo(attributeName) {\n        return this.ignoredAttributes.has(attributeName);\n    }\n    ignoringChangesToAttribute(attributeName, callback) {\n        this.ignoredAttributes.add(attributeName);\n        callback();\n        this.ignoredAttributes.delete(attributeName);\n    }\n    withCurrentNavigationElement(element, callback) {\n        this.currentNavigationElement = element;\n        callback();\n        delete this.currentNavigationElement;\n    }\n}\nfunction getFrameElementById(id) {\n    if (id != null) {\n        const element = document.getElementById(id);\n        if (element instanceof FrameElement) {\n            return element;\n        }\n    }\n}\nfunction activateElement(element, currentURL) {\n    if (element) {\n        const src = element.getAttribute(\"src\");\n        if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n            throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n        }\n        if (element.ownerDocument !== document) {\n            element = document.importNode(element, true);\n        }\n        if (element instanceof FrameElement) {\n            element.connectedCallback();\n            element.disconnectedCallback();\n            return element;\n        }\n    }\n}\n\nclass StreamElement extends HTMLElement {\n    static async renderElement(newElement) {\n        await newElement.performAction();\n    }\n    async connectedCallback() {\n        try {\n            await this.render();\n        }\n        catch (error) {\n            console.error(error);\n        }\n        finally {\n            this.disconnect();\n        }\n    }\n    async render() {\n        var _a;\n        return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n            const event = this.beforeRenderEvent;\n            if (this.dispatchEvent(event)) {\n                await nextAnimationFrame();\n                await event.detail.render(this);\n            }\n        })()));\n    }\n    disconnect() {\n        try {\n            this.remove();\n        }\n        catch (_a) { }\n    }\n    removeDuplicateTargetChildren() {\n        this.duplicateChildren.forEach((c) => c.remove());\n    }\n    get duplicateChildren() {\n        var _a;\n        const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n        const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n        return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n    }\n    get performAction() {\n        if (this.action) {\n            const actionFunction = StreamActions[this.action];\n            if (actionFunction) {\n                return actionFunction;\n            }\n            this.raise(\"unknown action\");\n        }\n        this.raise(\"action attribute is missing\");\n    }\n    get targetElements() {\n        if (this.target) {\n            return this.targetElementsById;\n        }\n        else if (this.targets) {\n            return this.targetElementsByQuery;\n        }\n        else {\n            this.raise(\"target or targets attribute is missing\");\n        }\n    }\n    get templateContent() {\n        return this.templateElement.content.cloneNode(true);\n    }\n    get templateElement() {\n        if (this.firstElementChild === null) {\n            const template = this.ownerDocument.createElement(\"template\");\n            this.appendChild(template);\n            return template;\n        }\n        else if (this.firstElementChild instanceof HTMLTemplateElement) {\n            return this.firstElementChild;\n        }\n        this.raise(\"first child element must be a <template> element\");\n    }\n    get action() {\n        return this.getAttribute(\"action\");\n    }\n    get target() {\n        return this.getAttribute(\"target\");\n    }\n    get targets() {\n        return this.getAttribute(\"targets\");\n    }\n    raise(message) {\n        throw new Error(`${this.description}: ${message}`);\n    }\n    get description() {\n        var _a, _b;\n        return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n    }\n    get beforeRenderEvent() {\n        return new CustomEvent(\"turbo:before-stream-render\", {\n            bubbles: true,\n            cancelable: true,\n            detail: { newStream: this, render: StreamElement.renderElement },\n        });\n    }\n    get targetElementsById() {\n        var _a;\n        const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n        if (element !== null) {\n            return [element];\n        }\n        else {\n            return [];\n        }\n    }\n    get targetElementsByQuery() {\n        var _a;\n        const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n        if (elements.length !== 0) {\n            return Array.prototype.slice.call(elements);\n        }\n        else {\n            return [];\n        }\n    }\n}\n\nclass StreamSourceElement extends HTMLElement {\n    constructor() {\n        super(...arguments);\n        this.streamSource = null;\n    }\n    connectedCallback() {\n        this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n        connectStreamSource(this.streamSource);\n    }\n    disconnectedCallback() {\n        if (this.streamSource) {\n            disconnectStreamSource(this.streamSource);\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\") || \"\";\n    }\n}\n\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n    customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n    customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n    customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n    let element = document.currentScript;\n    if (!element)\n        return;\n    if (element.hasAttribute(\"data-turbo-suppress-warning\"))\n        return;\n    element = element.parentElement;\n    while (element) {\n        if (element == document.body) {\n            return console.warn(unindent `\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `, element.outerHTML);\n        }\n        element = element.parentElement;\n    }\n})();\n\nwindow.Turbo = Turbo;\nstart();\n\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, { received: this.dispatchMessageEvent.bind(this) })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\ncustomElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const method = (submitter && submitter.formMethod) || (fetchOptions.body && fetchOptions.body.get(\"_method\")) || form.getAttribute(\"method\")\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          fetchOptions.body.delete(\"_method\")\n        } else {\n          fetchOptions.body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "/*\n * TurboPower 0.6.0\n */\nvar DOCUMENT_FRAGMENT_NODE = 11;\n\nfunction morphAttrs(fromNode, toNode) {\n  var toNodeAttrs = toNode.attributes;\n  var attr;\n  var attrName;\n  var attrNamespaceURI;\n  var attrValue;\n  var fromValue;\n  // document-fragments dont have attributes so lets not do anything\n    if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE || fromNode.nodeType === DOCUMENT_FRAGMENT_NODE) {\n    return;\n  }\n  // update attributes on original DOM element\n    for (var i = toNodeAttrs.length - 1; i >= 0; i--) {\n    attr = toNodeAttrs[i];\n    attrName = attr.name;\n    attrNamespaceURI = attr.namespaceURI;\n    attrValue = attr.value;\n    if (attrNamespaceURI) {\n      attrName = attr.localName || attrName;\n      fromValue = fromNode.getAttributeNS(attrNamespaceURI, attrName);\n      if (fromValue !== attrValue) {\n        if (attr.prefix === \"xmlns\") {\n          attrName = attr.name;\n // It's not allowed to set an attribute with the XMLNS namespace without specifying the `xmlns` prefix\n                }\n        fromNode.setAttributeNS(attrNamespaceURI, attrName, attrValue);\n      }\n    } else {\n      fromValue = fromNode.getAttribute(attrName);\n      if (fromValue !== attrValue) {\n        fromNode.setAttribute(attrName, attrValue);\n      }\n    }\n  }\n  // Remove any extra attributes found on the original DOM element that\n  // weren't found on the target element.\n    var fromNodeAttrs = fromNode.attributes;\n  for (var d = fromNodeAttrs.length - 1; d >= 0; d--) {\n    attr = fromNodeAttrs[d];\n    attrName = attr.name;\n    attrNamespaceURI = attr.namespaceURI;\n    if (attrNamespaceURI) {\n      attrName = attr.localName || attrName;\n      if (!toNode.hasAttributeNS(attrNamespaceURI, attrName)) {\n        fromNode.removeAttributeNS(attrNamespaceURI, attrName);\n      }\n    } else {\n      if (!toNode.hasAttribute(attrName)) {\n        fromNode.removeAttribute(attrName);\n      }\n    }\n  }\n}\n\nvar range;\n\n // Create a range object for efficently rendering strings to elements.\nvar NS_XHTML = \"http://www.w3.org/1999/xhtml\";\n\nvar doc = typeof document === \"undefined\" ? undefined : document;\n\nvar HAS_TEMPLATE_SUPPORT = !!doc && \"content\" in doc.createElement(\"template\");\n\nvar HAS_RANGE_SUPPORT = !!doc && doc.createRange && \"createContextualFragment\" in doc.createRange();\n\nfunction createFragmentFromTemplate(str) {\n  var template = doc.createElement(\"template\");\n  template.innerHTML = str;\n  return template.content.childNodes[0];\n}\n\nfunction createFragmentFromRange(str) {\n  if (!range) {\n    range = doc.createRange();\n    range.selectNode(doc.body);\n  }\n  var fragment = range.createContextualFragment(str);\n  return fragment.childNodes[0];\n}\n\nfunction createFragmentFromWrap(str) {\n  var fragment = doc.createElement(\"body\");\n  fragment.innerHTML = str;\n  return fragment.childNodes[0];\n}\n\n/**\n * This is about the same\n * var html = new DOMParser().parseFromString(str, 'text/html');\n * return html.body.firstChild;\n *\n * @method toElement\n * @param {String} str\n */ function toElement(str) {\n  str = str.trim();\n  if (HAS_TEMPLATE_SUPPORT) {\n    // avoid restrictions on content for things like `<tr><th>Hi</th></tr>` which\n    // createContextualFragment doesn't support\n    // <template> support not available in IE\n    return createFragmentFromTemplate(str);\n  } else if (HAS_RANGE_SUPPORT) {\n    return createFragmentFromRange(str);\n  }\n  return createFragmentFromWrap(str);\n}\n\n/**\n * Returns true if two node's names are the same.\n *\n * NOTE: We don't bother checking `namespaceURI` because you will never find two HTML elements with the same\n *       nodeName and different namespace URIs.\n *\n * @param {Element} a\n * @param {Element} b The target element\n * @return {boolean}\n */ function compareNodeNames(fromEl, toEl) {\n  var fromNodeName = fromEl.nodeName;\n  var toNodeName = toEl.nodeName;\n  var fromCodeStart, toCodeStart;\n  if (fromNodeName === toNodeName) {\n    return true;\n  }\n  fromCodeStart = fromNodeName.charCodeAt(0);\n  toCodeStart = toNodeName.charCodeAt(0);\n  // If the target element is a virtual DOM node or SVG node then we may\n  // need to normalize the tag name before comparing. Normal HTML elements that are\n  // in the \"http://www.w3.org/1999/xhtml\"\n  // are converted to upper case\n    if (fromCodeStart <= 90 && toCodeStart >= 97) {\n    // from is upper and to is lower\n    return fromNodeName === toNodeName.toUpperCase();\n  } else if (toCodeStart <= 90 && fromCodeStart >= 97) {\n    // to is upper and from is lower\n    return toNodeName === fromNodeName.toUpperCase();\n  } else {\n    return false;\n  }\n}\n\n/**\n * Create an element, optionally with a known namespace URI.\n *\n * @param {string} name the element name, e.g. 'div' or 'svg'\n * @param {string} [namespaceURI] the element's namespace URI, i.e. the value of\n * its `xmlns` attribute or its inferred namespace.\n *\n * @return {Element}\n */ function createElementNS(name, namespaceURI) {\n  return !namespaceURI || namespaceURI === NS_XHTML ? doc.createElement(name) : doc.createElementNS(namespaceURI, name);\n}\n\n/**\n * Copies the children of one DOM element to another DOM element\n */ function moveChildren(fromEl, toEl) {\n  var curChild = fromEl.firstChild;\n  while (curChild) {\n    var nextChild = curChild.nextSibling;\n    toEl.appendChild(curChild);\n    curChild = nextChild;\n  }\n  return toEl;\n}\n\nfunction syncBooleanAttrProp(fromEl, toEl, name) {\n  if (fromEl[name] !== toEl[name]) {\n    fromEl[name] = toEl[name];\n    if (fromEl[name]) {\n      fromEl.setAttribute(name, \"\");\n    } else {\n      fromEl.removeAttribute(name);\n    }\n  }\n}\n\nvar specialElHandlers = {\n  OPTION: function(fromEl, toEl) {\n    var parentNode = fromEl.parentNode;\n    if (parentNode) {\n      var parentName = parentNode.nodeName.toUpperCase();\n      if (parentName === \"OPTGROUP\") {\n        parentNode = parentNode.parentNode;\n        parentName = parentNode && parentNode.nodeName.toUpperCase();\n      }\n      if (parentName === \"SELECT\" && !parentNode.hasAttribute(\"multiple\")) {\n        if (fromEl.hasAttribute(\"selected\") && !toEl.selected) {\n          // Workaround for MS Edge bug where the 'selected' attribute can only be\n          // removed if set to a non-empty value:\n          // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12087679/\n          fromEl.setAttribute(\"selected\", \"selected\");\n          fromEl.removeAttribute(\"selected\");\n        }\n        // We have to reset select element's selectedIndex to -1, otherwise setting\n        // fromEl.selected using the syncBooleanAttrProp below has no effect.\n        // The correct selectedIndex will be set in the SELECT special handler below.\n                parentNode.selectedIndex = -1;\n      }\n    }\n    syncBooleanAttrProp(fromEl, toEl, \"selected\");\n  },\n  /**\n     * The \"value\" attribute is special for the <input> element since it sets\n     * the initial value. Changing the \"value\" attribute without changing the\n     * \"value\" property will have no effect since it is only used to the set the\n     * initial value.  Similar for the \"checked\" attribute, and \"disabled\".\n     */\n  INPUT: function(fromEl, toEl) {\n    syncBooleanAttrProp(fromEl, toEl, \"checked\");\n    syncBooleanAttrProp(fromEl, toEl, \"disabled\");\n    if (fromEl.value !== toEl.value) {\n      fromEl.value = toEl.value;\n    }\n    if (!toEl.hasAttribute(\"value\")) {\n      fromEl.removeAttribute(\"value\");\n    }\n  },\n  TEXTAREA: function(fromEl, toEl) {\n    var newValue = toEl.value;\n    if (fromEl.value !== newValue) {\n      fromEl.value = newValue;\n    }\n    var firstChild = fromEl.firstChild;\n    if (firstChild) {\n      // Needed for IE. Apparently IE sets the placeholder as the\n      // node value and vise versa. This ignores an empty update.\n      var oldValue = firstChild.nodeValue;\n      if (oldValue == newValue || !newValue && oldValue == fromEl.placeholder) {\n        return;\n      }\n      firstChild.nodeValue = newValue;\n    }\n  },\n  SELECT: function(fromEl, toEl) {\n    if (!toEl.hasAttribute(\"multiple\")) {\n      var selectedIndex = -1;\n      var i = 0;\n      // We have to loop through children of fromEl, not toEl since nodes can be moved\n      // from toEl to fromEl directly when morphing.\n      // At the time this special handler is invoked, all children have already been morphed\n      // and appended to / removed from fromEl, so using fromEl here is safe and correct.\n            var curChild = fromEl.firstChild;\n      var optgroup;\n      var nodeName;\n      while (curChild) {\n        nodeName = curChild.nodeName && curChild.nodeName.toUpperCase();\n        if (nodeName === \"OPTGROUP\") {\n          optgroup = curChild;\n          curChild = optgroup.firstChild;\n        } else {\n          if (nodeName === \"OPTION\") {\n            if (curChild.hasAttribute(\"selected\")) {\n              selectedIndex = i;\n              break;\n            }\n            i++;\n          }\n          curChild = curChild.nextSibling;\n          if (!curChild && optgroup) {\n            curChild = optgroup.nextSibling;\n            optgroup = null;\n          }\n        }\n      }\n      fromEl.selectedIndex = selectedIndex;\n    }\n  }\n};\n\nvar ELEMENT_NODE = 1;\n\nvar DOCUMENT_FRAGMENT_NODE$1 = 11;\n\nvar TEXT_NODE = 3;\n\nvar COMMENT_NODE = 8;\n\nfunction noop() {}\n\nfunction defaultGetNodeKey(node) {\n  if (node) {\n    return node.getAttribute && node.getAttribute(\"id\") || node.id;\n  }\n}\n\nfunction morphdomFactory(morphAttrs) {\n  return function morphdom(fromNode, toNode, options) {\n    if (!options) {\n      options = {};\n    }\n    if (typeof toNode === \"string\") {\n      if (fromNode.nodeName === \"#document\" || fromNode.nodeName === \"HTML\" || fromNode.nodeName === \"BODY\") {\n        var toNodeHtml = toNode;\n        toNode = doc.createElement(\"html\");\n        toNode.innerHTML = toNodeHtml;\n      } else {\n        toNode = toElement(toNode);\n      }\n    } else if (toNode.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n      toNode = toNode.firstElementChild;\n    }\n    var getNodeKey = options.getNodeKey || defaultGetNodeKey;\n    var onBeforeNodeAdded = options.onBeforeNodeAdded || noop;\n    var onNodeAdded = options.onNodeAdded || noop;\n    var onBeforeElUpdated = options.onBeforeElUpdated || noop;\n    var onElUpdated = options.onElUpdated || noop;\n    var onBeforeNodeDiscarded = options.onBeforeNodeDiscarded || noop;\n    var onNodeDiscarded = options.onNodeDiscarded || noop;\n    var onBeforeElChildrenUpdated = options.onBeforeElChildrenUpdated || noop;\n    var skipFromChildren = options.skipFromChildren || noop;\n    var addChild = options.addChild || function(parent, child) {\n      return parent.appendChild(child);\n    };\n    var childrenOnly = options.childrenOnly === true;\n    // This object is used as a lookup to quickly find all keyed elements in the original DOM tree.\n        var fromNodesLookup = Object.create(null);\n    var keyedRemovalList = [];\n    function addKeyedRemoval(key) {\n      keyedRemovalList.push(key);\n    }\n    function walkDiscardedChildNodes(node, skipKeyedNodes) {\n      if (node.nodeType === ELEMENT_NODE) {\n        var curChild = node.firstChild;\n        while (curChild) {\n          var key = undefined;\n          if (skipKeyedNodes && (key = getNodeKey(curChild))) {\n            // If we are skipping keyed nodes then we add the key\n            // to a list so that it can be handled at the very end.\n            addKeyedRemoval(key);\n          } else {\n            // Only report the node as discarded if it is not keyed. We do this because\n            // at the end we loop through all keyed elements that were unmatched\n            // and then discard them in one final pass.\n            onNodeDiscarded(curChild);\n            if (curChild.firstChild) {\n              walkDiscardedChildNodes(curChild, skipKeyedNodes);\n            }\n          }\n          curChild = curChild.nextSibling;\n        }\n      }\n    }\n    /**\n    * Removes a DOM node out of the original DOM\n    *\n    * @param  {Node} node The node to remove\n    * @param  {Node} parentNode The nodes parent\n    * @param  {Boolean} skipKeyedNodes If true then elements with keys will be skipped and not discarded.\n    * @return {undefined}\n    */    function removeNode(node, parentNode, skipKeyedNodes) {\n      if (onBeforeNodeDiscarded(node) === false) {\n        return;\n      }\n      if (parentNode) {\n        parentNode.removeChild(node);\n      }\n      onNodeDiscarded(node);\n      walkDiscardedChildNodes(node, skipKeyedNodes);\n    }\n    // // TreeWalker implementation is no faster, but keeping this around in case this changes in the future\n    // function indexTree(root) {\n    //     var treeWalker = document.createTreeWalker(\n    //         root,\n    //         NodeFilter.SHOW_ELEMENT);\n    \n    //     var el;\n    //     while((el = treeWalker.nextNode())) {\n    //         var key = getNodeKey(el);\n    //         if (key) {\n    //             fromNodesLookup[key] = el;\n    //         }\n    //     }\n    // }\n    // // NodeIterator implementation is no faster, but keeping this around in case this changes in the future\n    \n    // function indexTree(node) {\n    //     var nodeIterator = document.createNodeIterator(node, NodeFilter.SHOW_ELEMENT);\n    //     var el;\n    //     while((el = nodeIterator.nextNode())) {\n    //         var key = getNodeKey(el);\n    //         if (key) {\n    //             fromNodesLookup[key] = el;\n    //         }\n    //     }\n    // }\n        function indexTree(node) {\n      if (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE$1) {\n        var curChild = node.firstChild;\n        while (curChild) {\n          var key = getNodeKey(curChild);\n          if (key) {\n            fromNodesLookup[key] = curChild;\n          }\n          // Walk recursively\n                    indexTree(curChild);\n          curChild = curChild.nextSibling;\n        }\n      }\n    }\n    indexTree(fromNode);\n    function handleNodeAdded(el) {\n      onNodeAdded(el);\n      var curChild = el.firstChild;\n      while (curChild) {\n        var nextSibling = curChild.nextSibling;\n        var key = getNodeKey(curChild);\n        if (key) {\n          var unmatchedFromEl = fromNodesLookup[key];\n          // if we find a duplicate #id node in cache, replace `el` with cache value\n          // and morph it to the child node.\n                    if (unmatchedFromEl && compareNodeNames(curChild, unmatchedFromEl)) {\n            curChild.parentNode.replaceChild(unmatchedFromEl, curChild);\n            morphEl(unmatchedFromEl, curChild);\n          } else {\n            handleNodeAdded(curChild);\n          }\n        } else {\n          // recursively call for curChild and it's children to see if we find something in\n          // fromNodesLookup\n          handleNodeAdded(curChild);\n        }\n        curChild = nextSibling;\n      }\n    }\n    function cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey) {\n      // We have processed all of the \"to nodes\". If curFromNodeChild is\n      // non-null then we still have some from nodes left over that need\n      // to be removed\n      while (curFromNodeChild) {\n        var fromNextSibling = curFromNodeChild.nextSibling;\n        if (curFromNodeKey = getNodeKey(curFromNodeChild)) {\n          // Since the node is keyed it might be matched up later so we defer\n          // the actual removal to later\n          addKeyedRemoval(curFromNodeKey);\n        } else {\n          // NOTE: we skip nested keyed nodes from being removed since there is\n          //       still a chance they will be matched up later\n          removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n        }\n        curFromNodeChild = fromNextSibling;\n      }\n    }\n    function morphEl(fromEl, toEl, childrenOnly) {\n      var toElKey = getNodeKey(toEl);\n      if (toElKey) {\n        // If an element with an ID is being morphed then it will be in the final\n        // DOM so clear it out of the saved elements collection\n        delete fromNodesLookup[toElKey];\n      }\n      if (!childrenOnly) {\n        // optional\n        if (onBeforeElUpdated(fromEl, toEl) === false) {\n          return;\n        }\n        // update attributes on original DOM element first\n                morphAttrs(fromEl, toEl);\n        // optional\n                onElUpdated(fromEl);\n        if (onBeforeElChildrenUpdated(fromEl, toEl) === false) {\n          return;\n        }\n      }\n      if (fromEl.nodeName !== \"TEXTAREA\") {\n        morphChildren(fromEl, toEl);\n      } else {\n        specialElHandlers.TEXTAREA(fromEl, toEl);\n      }\n    }\n    function morphChildren(fromEl, toEl) {\n      var skipFrom = skipFromChildren(fromEl);\n      var curToNodeChild = toEl.firstChild;\n      var curFromNodeChild = fromEl.firstChild;\n      var curToNodeKey;\n      var curFromNodeKey;\n      var fromNextSibling;\n      var toNextSibling;\n      var matchingFromEl;\n      // walk the children\n            outer: while (curToNodeChild) {\n        toNextSibling = curToNodeChild.nextSibling;\n        curToNodeKey = getNodeKey(curToNodeChild);\n        // walk the fromNode children all the way through\n                while (!skipFrom && curFromNodeChild) {\n          fromNextSibling = curFromNodeChild.nextSibling;\n          if (curToNodeChild.isSameNode && curToNodeChild.isSameNode(curFromNodeChild)) {\n            curToNodeChild = toNextSibling;\n            curFromNodeChild = fromNextSibling;\n            continue outer;\n          }\n          curFromNodeKey = getNodeKey(curFromNodeChild);\n          var curFromNodeType = curFromNodeChild.nodeType;\n          // this means if the curFromNodeChild doesnt have a match with the curToNodeChild\n                    var isCompatible = undefined;\n          if (curFromNodeType === curToNodeChild.nodeType) {\n            if (curFromNodeType === ELEMENT_NODE) {\n              // Both nodes being compared are Element nodes\n              if (curToNodeKey) {\n                // The target node has a key so we want to match it up with the correct element\n                // in the original DOM tree\n                if (curToNodeKey !== curFromNodeKey) {\n                  // The current element in the original DOM tree does not have a matching key so\n                  // let's check our lookup to see if there is a matching element in the original\n                  // DOM tree\n                  if (matchingFromEl = fromNodesLookup[curToNodeKey]) {\n                    if (fromNextSibling === matchingFromEl) {\n                      // Special case for single element removals. To avoid removing the original\n                      // DOM node out of the tree (since that can break CSS transitions, etc.),\n                      // we will instead discard the current node and wait until the next\n                      // iteration to properly match up the keyed target element with its matching\n                      // element in the original tree\n                      isCompatible = false;\n                    } else {\n                      // We found a matching keyed element somewhere in the original DOM tree.\n                      // Let's move the original DOM node into the current position and morph\n                      // it.\n                      // NOTE: We use insertBefore instead of replaceChild because we want to go through\n                      // the `removeNode()` function for the node that is being discarded so that\n                      // all lifecycle hooks are correctly invoked\n                      fromEl.insertBefore(matchingFromEl, curFromNodeChild);\n                      // fromNextSibling = curFromNodeChild.nextSibling;\n                                            if (curFromNodeKey) {\n                        // Since the node is keyed it might be matched up later so we defer\n                        // the actual removal to later\n                        addKeyedRemoval(curFromNodeKey);\n                      } else {\n                        // NOTE: we skip nested keyed nodes from being removed since there is\n                        //       still a chance they will be matched up later\n                        removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n                      }\n                      curFromNodeChild = matchingFromEl;\n                    }\n                  } else {\n                    // The nodes are not compatible since the \"to\" node has a key and there\n                    // is no matching keyed node in the source tree\n                    isCompatible = false;\n                  }\n                }\n              } else if (curFromNodeKey) {\n                // The original has a key\n                isCompatible = false;\n              }\n              isCompatible = isCompatible !== false && compareNodeNames(curFromNodeChild, curToNodeChild);\n              if (isCompatible) {\n                // We found compatible DOM elements so transform\n                // the current \"from\" node to match the current\n                // target DOM node.\n                // MORPH\n                morphEl(curFromNodeChild, curToNodeChild);\n              }\n            } else if (curFromNodeType === TEXT_NODE || curFromNodeType == COMMENT_NODE) {\n              // Both nodes being compared are Text or Comment nodes\n              isCompatible = true;\n              // Simply update nodeValue on the original node to\n              // change the text value\n                            if (curFromNodeChild.nodeValue !== curToNodeChild.nodeValue) {\n                curFromNodeChild.nodeValue = curToNodeChild.nodeValue;\n              }\n            }\n          }\n          if (isCompatible) {\n            // Advance both the \"to\" child and the \"from\" child since we found a match\n            // Nothing else to do as we already recursively called morphChildren above\n            curToNodeChild = toNextSibling;\n            curFromNodeChild = fromNextSibling;\n            continue outer;\n          }\n          // No compatible match so remove the old node from the DOM and continue trying to find a\n          // match in the original DOM. However, we only do this if the from node is not keyed\n          // since it is possible that a keyed node might match up with a node somewhere else in the\n          // target tree and we don't want to discard it just yet since it still might find a\n          // home in the final DOM tree. After everything is done we will remove any keyed nodes\n          // that didn't find a home\n                    if (curFromNodeKey) {\n            // Since the node is keyed it might be matched up later so we defer\n            // the actual removal to later\n            addKeyedRemoval(curFromNodeKey);\n          } else {\n            // NOTE: we skip nested keyed nodes from being removed since there is\n            //       still a chance they will be matched up later\n            removeNode(curFromNodeChild, fromEl, true /* skip keyed nodes */);\n          }\n          curFromNodeChild = fromNextSibling;\n        }\n // END: while(curFromNodeChild) {}\n        // If we got this far then we did not find a candidate match for\n        // our \"to node\" and we exhausted all of the children \"from\"\n        // nodes.\n                if (curToNodeKey && (matchingFromEl = fromNodesLookup[curToNodeKey]) && compareNodeNames(matchingFromEl, curToNodeChild)) {\n          // MORPH\n          addChild(fromEl, matchingFromEl);\n          morphEl(matchingFromEl, curToNodeChild);\n        } else {\n          var onBeforeNodeAddedResult = onBeforeNodeAdded(curToNodeChild);\n          if (onBeforeNodeAddedResult !== false) {\n            if (onBeforeNodeAddedResult) {\n              curToNodeChild = onBeforeNodeAddedResult;\n            }\n            if (curToNodeChild.actualize) {\n              curToNodeChild = curToNodeChild.actualize(fromEl.ownerDocument || doc);\n            }\n            addChild(fromEl, curToNodeChild);\n            handleNodeAdded(curToNodeChild);\n          }\n        }\n        curToNodeChild = toNextSibling;\n        curFromNodeChild = fromNextSibling;\n      }\n      cleanupFromEl(fromEl, curFromNodeChild, curFromNodeKey);\n      var specialElHandler = specialElHandlers[fromEl.nodeName];\n      if (specialElHandler) {\n        specialElHandler(fromEl, toEl);\n      }\n    }\n // END: morphChildren(...)\n        var morphedNode = fromNode;\n    var morphedNodeType = morphedNode.nodeType;\n    var toNodeType = toNode.nodeType;\n    if (!childrenOnly) {\n      // Handle the case where we are given two DOM nodes that are not\n      // compatible (e.g. <div> --> <span> or <div> --> TEXT)\n      if (morphedNodeType === ELEMENT_NODE) {\n        if (toNodeType === ELEMENT_NODE) {\n          if (!compareNodeNames(fromNode, toNode)) {\n            onNodeDiscarded(fromNode);\n            morphedNode = moveChildren(fromNode, createElementNS(toNode.nodeName, toNode.namespaceURI));\n          }\n        } else {\n          // Going from an element node to a text node\n          morphedNode = toNode;\n        }\n      } else if (morphedNodeType === TEXT_NODE || morphedNodeType === COMMENT_NODE) {\n        // Text or comment node\n        if (toNodeType === morphedNodeType) {\n          if (morphedNode.nodeValue !== toNode.nodeValue) {\n            morphedNode.nodeValue = toNode.nodeValue;\n          }\n          return morphedNode;\n        } else {\n          // Text node to something else\n          morphedNode = toNode;\n        }\n      }\n    }\n    if (morphedNode === toNode) {\n      // The \"to node\" was not compatible with the \"from node\" so we had to\n      // toss out the \"from node\" and use the \"to node\"\n      onNodeDiscarded(fromNode);\n    } else {\n      if (toNode.isSameNode && toNode.isSameNode(morphedNode)) {\n        return;\n      }\n      morphEl(morphedNode, toNode, childrenOnly);\n      // We now need to loop over any keyed nodes that might need to be\n      // removed. We only do the removal if we know that the keyed node\n      // never found a match. When a keyed node is matched up we remove\n      // it out of fromNodesLookup and we use fromNodesLookup to determine\n      // if a keyed node has been matched up or not\n            if (keyedRemovalList) {\n        for (var i = 0, len = keyedRemovalList.length; i < len; i++) {\n          var elToRemove = fromNodesLookup[keyedRemovalList[i]];\n          if (elToRemove) {\n            removeNode(elToRemove, elToRemove.parentNode, false);\n          }\n        }\n      }\n    }\n    if (!childrenOnly && morphedNode !== fromNode && fromNode.parentNode) {\n      if (morphedNode.actualize) {\n        morphedNode = morphedNode.actualize(fromNode.ownerDocument || doc);\n      }\n      // If we had to swap out the from node with a new node because the old\n      // node was not compatible with the target node then we need to\n      // replace the old DOM node in the original DOM tree. This is only\n      // possible if the original DOM node was part of a DOM tree which\n      // we know is the case if it has a parent node.\n            fromNode.parentNode.replaceChild(morphedNode, fromNode);\n    }\n    return morphedNode;\n  };\n}\n\nvar morphdom = morphdomFactory(morphAttrs);\n\n/*\n * TurboMorph 0.2.0\n */ function morph() {\n  const options = {\n    childrenOnly: this.hasAttribute(\"children-only\")\n  };\n  this.targetElements.forEach((element => {\n    morphdom(element, options.childrenOnly ? this.templateContent : this.templateElement.innerHTML, options);\n  }));\n}\n\nconst initialize$1 = streamActions => {\n  streamActions.morph = morph;\n};\n\nfunction camelize(value) {\n  return value.replace(/(?:[_-])([a-z0-9])/g, ((_, char) => char.toUpperCase()));\n}\n\nfunction capitalize(value) {\n  return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dasherize(value) {\n  return value.replace(/([A-Z])/g, ((_, char) => `-${char.toLowerCase()}`));\n}\n\nfunction tokenize(value) {\n  return value ? value.match(/[^\\s]+/g) || [] : [];\n}\n\nfunction typecast(value) {\n  try {\n    return JSON.parse(value);\n  } catch (e) {\n    return value;\n  }\n}\n\nvar Utils =  Object.freeze({\n  __proto__: null,\n  camelize: camelize,\n  capitalize: capitalize,\n  dasherize: dasherize,\n  tokenize: tokenize,\n  typecast: typecast\n});\n\nfunction add_css_class() {\n  const classes = tokenize(this.getAttribute(\"classes\"));\n  if (classes.length > 0) {\n    this.targetElements.forEach((element => element.classList.add(...classes)));\n  } else {\n    console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"add_css_class\"`);\n  }\n}\n\nfunction remove_attribute() {\n  const attribute = this.getAttribute(\"attribute\");\n  if (attribute) {\n    this.targetElements.forEach((element => element.removeAttribute(attribute)));\n  } else {\n    console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"remove_attribute\"`);\n  }\n}\n\nfunction remove_css_class() {\n  const classes = tokenize(this.getAttribute(\"classes\"));\n  if (classes.length > 0) {\n    this.targetElements.forEach((element => element.classList.remove(...classes)));\n  } else {\n    console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"remove_css_class\"`);\n  }\n}\n\nfunction set_attribute() {\n  const attribute = this.getAttribute(\"attribute\");\n  const value = this.getAttribute(\"value\") || \"\";\n  if (attribute) {\n    this.targetElements.forEach((element => element.setAttribute(attribute, value)));\n  } else {\n    console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"set_attribute\"`);\n  }\n}\n\nfunction set_dataset_attribute() {\n  const attribute = this.getAttribute(\"attribute\");\n  const value = this.getAttribute(\"value\") || \"\";\n  if (attribute) {\n    this.targetElements.forEach((element => element.dataset[camelize(attribute)] = value));\n  } else {\n    console.warn(`[TurboPower] no \"attribute\" provided for Turbo Streams operation \"set_dataset_attribute\"`);\n  }\n}\n\nfunction set_property() {\n  const name = this.getAttribute(\"name\");\n  const value = typecast(this.getAttribute(\"value\") || \"\");\n  if (name) {\n    this.targetElements.forEach((element => element[name] = value));\n  } else {\n    console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_property\"`);\n  }\n}\n\nfunction set_style() {\n  const name = this.getAttribute(\"name\");\n  const value = this.getAttribute(\"value\") || \"\";\n  if (name) {\n    this.targetElements.forEach((element => element.style[name] = value));\n  } else {\n    console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_style\"`);\n  }\n}\n\nfunction set_styles() {\n  const styles = this.getAttribute(\"styles\") || \"\";\n  this.targetElements.forEach((element => element.setAttribute(\"style\", styles)));\n}\n\nfunction set_value() {\n  const value = this.getAttribute(\"value\") || \"\";\n  this.targetElements.forEach((element => element.value = value));\n}\n\nfunction toggle_css_class() {\n  const classes = tokenize(this.getAttribute(\"classes\"));\n  if (classes.length > 0) {\n    this.targetElements.forEach((element => {\n      classes.forEach((className => element.classList.toggle(className)));\n    }));\n  } else {\n    console.warn(`[TurboPower] no \"classes\" provided for Turbo Streams operation \"toggle_css_class\"`);\n  }\n}\n\nfunction replace_css_class() {\n  const from = this.getAttribute(\"from\") || \"\";\n  const to = this.getAttribute(\"to\") || \"\";\n  if (from && to) {\n    this.targetElements.forEach((element => {\n      const wasReplaced = element.classList.replace(from, to);\n      if (!wasReplaced) {\n        console.warn(`[TurboPower] The \"${from}\" CSS class provided in the \"from\" attribute for the \"replace_css_class\" action was not found on the target element. No replacements made.`, element);\n      }\n    }));\n  } else {\n    console.warn(`[TurboPower] no \"from\" or \"to\" class provided for Turbo Streams operation \"replace_css_class\"`);\n  }\n}\n\nfunction registerAttributesActions(streamActions) {\n  streamActions.add_css_class = add_css_class;\n  streamActions.remove_css_class = remove_css_class;\n  streamActions.remove_attribute = remove_attribute;\n  streamActions.set_attribute = set_attribute;\n  streamActions.set_dataset_attribute = set_dataset_attribute;\n  streamActions.set_property = set_property;\n  streamActions.set_style = set_style;\n  streamActions.set_styles = set_styles;\n  streamActions.set_value = set_value;\n  streamActions.toggle_css_class = toggle_css_class;\n  streamActions.replace_css_class = replace_css_class;\n}\n\nfunction reload() {\n  window.location.reload();\n}\n\nfunction scroll_into_view() {\n  const alignToTop = this.getAttribute(\"align-to-top\");\n  const block = this.getAttribute(\"block\");\n  const inline = this.getAttribute(\"inline\");\n  const behavior = this.getAttribute(\"behavior\");\n  if (alignToTop) {\n    this.targetElements.forEach((element => element.scrollIntoView(alignToTop === \"true\")));\n  } else if (block || inline || behavior) {\n    const options = {};\n    if (block) options.block = block;\n    if (inline) options.inline = inline;\n    if (behavior) options.behavior = behavior;\n    this.targetElements.forEach((element => element.scrollIntoView(options)));\n  } else {\n    this.targetElements.forEach((element => element.scrollIntoView()));\n  }\n}\n\nfunction set_focus() {\n  this.targetElements.forEach((element => element.focus()));\n}\n\nfunction set_title() {\n  const title = this.getAttribute(\"title\") || \"\";\n  let titleElement = document.head.querySelector(\"title\");\n  if (!titleElement) {\n    titleElement = document.createElement(\"title\");\n    document.head.appendChild(titleElement);\n  }\n  titleElement.textContent = title;\n}\n\nfunction registerBrowserActions(streamActions) {\n  streamActions.reload = reload;\n  streamActions.scroll_into_view = scroll_into_view;\n  streamActions.set_focus = set_focus;\n  streamActions.set_title = set_title;\n}\n\nfunction console_log() {\n  const message = this.getAttribute(\"message\");\n  const level = this.getAttribute(\"level\") || \"log\";\n  console[level](message);\n}\n\nfunction console_table() {\n  const data = JSON.parse(this.getAttribute(\"data\") || \"[]\");\n  const columns = JSON.parse(this.getAttribute(\"columns\") || \"[]\");\n  console.table(data, columns);\n}\n\nfunction registerDebugActions(streamActions) {\n  streamActions.console_log = console_log;\n  streamActions.console_table = console_table;\n}\n\nfunction invoke() {\n  console.warn(\"[TurboPower] The `invoke` Turbo Stream Action was removed from TurboPower. If you'd like to continue using this action please use the successor library instead. Read more here: https://github.com/hopsoft/turbo_boost-streams\");\n}\n\nfunction registerDeprecatedActions(streamActions) {\n  if (!streamActions.invoke) {\n    streamActions.invoke = invoke;\n  }\n}\n\nclass CookieStringBuilder {\n  constructor(streamElement) {\n    this.ATTRIBUTE_TO_COOKIE_KEY_MAPPING = [ [ \"domain\", \"Domain\", false ], [ \"path\", \"Path\", false ], [ \"expires\", \"Expires\", false ], [ \"max-age\", \"Max-Age\", false ], [ \"http-only\", \"HttpOnly\", true ], [ \"secure\", \"Secure\", true ], [ \"same-site\", \"SameSite\", false ] ];\n    this.streamElement = streamElement;\n  }\n  build() {\n    let cookieString = `${this.streamElement.getAttribute(\"name\")}=${this.streamElement.getAttribute(\"value\")}`;\n    this.ATTRIBUTE_TO_COOKIE_KEY_MAPPING.forEach((([streamElementAttribute, cookieKey, isBooleanAttribute]) => {\n      const cookieValue = this.streamElement.getAttribute(streamElementAttribute);\n      if (cookieValue !== null) {\n        const cookieKeyPair = isBooleanAttribute ? cookieKey : `${cookieKey}=${cookieValue}`;\n        cookieString = `${cookieString}; ${cookieKeyPair}`;\n      }\n    }));\n    return cookieString;\n  }\n}\n\nfunction set_cookie() {\n  const cookie = this.getAttribute(\"cookie\") || \"\";\n  document.cookie = cookie;\n}\n\nfunction set_cookie_item() {\n  const cookieStringBuilder = new CookieStringBuilder(this);\n  document.cookie = cookieStringBuilder.build();\n}\n\nfunction registerDocumentActions(streamActions) {\n  streamActions.set_cookie = set_cookie;\n  streamActions.set_cookie_item = set_cookie_item;\n}\n\nfunction graft() {\n  const selector = this.getAttribute(\"parent\");\n  if (selector) {\n    const parent = document.querySelector(selector);\n    if (parent) {\n      this.targetElements.forEach((element => parent.appendChild(element)));\n    } else {\n      console.error(`[TurboPower] couldn't find parent element using selector \"${selector}\" for Turbo Streams operation \"graft\"`);\n    }\n  } else {\n    console.error(`[TurboPower] no \"parent\" selector provided for Turbo Streams operation \"graft\"`);\n  }\n}\n\nfunction inner_html() {\n  const html = this.templateContent.textContent || \"\";\n  this.targetElements.forEach((element => element.innerHTML = html));\n}\n\nfunction insert_adjacent_html() {\n  const position = this.getAttribute(\"position\") || \"beforebegin\";\n  const html = this.templateContent.textContent || \"\";\n  this.targetElements.forEach((element => element.insertAdjacentHTML(position, html)));\n}\n\nfunction insert_adjacent_text() {\n  const position = this.getAttribute(\"position\") || \"beforebegin\";\n  const message = this.getAttribute(\"text\") || \"\";\n  this.targetElements.forEach((element => element.insertAdjacentText(position, message)));\n}\n\nfunction outer_html() {\n  const html = this.templateContent.textContent || \"\";\n  this.targetElements.forEach((element => element.outerHTML = html));\n}\n\nfunction set_meta() {\n  const name = this.getAttribute(\"name\");\n  const content = this.getAttribute(\"content\") || \"\";\n  if (name) {\n    let meta = document.head.querySelector(`meta[name='${name}']`);\n    if (!meta) {\n      meta = document.createElement(\"meta\");\n      meta.name = name;\n      document.head.appendChild(meta);\n    }\n    meta.content = content;\n  } else {\n    console.error(`[TurboPower] no \"name\" provided for Turbo Streams operation \"set_meta\"`);\n  }\n}\n\nfunction text_content() {\n  const text = this.getAttribute(\"text\") || \"\";\n  this.targetElements.forEach((element => element.textContent = text));\n}\n\nfunction registerDOMActions(streamActions) {\n  streamActions.graft = graft;\n  streamActions.inner_html = inner_html;\n  streamActions.insert_adjacent_html = insert_adjacent_html;\n  streamActions.insert_adjacent_text = insert_adjacent_text;\n  streamActions.outer_html = outer_html;\n  streamActions.text_content = text_content;\n  streamActions.set_meta = set_meta;\n}\n\nfunction dispatch_event() {\n  const name = this.getAttribute(\"name\");\n  let template = null;\n  try {\n    template = this.templateContent.textContent;\n  } catch (e) {}\n  try {\n    const detail = template ? JSON.parse(template) : {};\n    if (name) {\n      const options = {\n        bubbles: true,\n        cancelable: true,\n        detail: detail\n      };\n      const event = new CustomEvent(name, options);\n      this.targetElements.forEach((element => element.dispatchEvent(event)));\n    } else {\n      console.warn(`[TurboPower] no \"name\" provided for Turbo Streams operation \"dispatch_event\"`);\n    }\n  } catch (error) {\n    console.error(`[TurboPower] error proccessing provided \"detail\" in \"<template>\" (\"${template}\") for Turbo Streams operation \"dispatch_event\".`, `Error: \"${error.message}\"`);\n  }\n}\n\nfunction registerEventsActions(streamActions) {\n  streamActions.dispatch_event = dispatch_event;\n}\n\nfunction reset_form() {\n  this.targetElements.forEach((form => form.reset()));\n}\n\nfunction registerFormActions(streamActions) {\n  streamActions.reset_form = reset_form;\n}\n\nfunction push_state() {\n  const url = this.getAttribute(\"url\");\n  const state = this.getAttribute(\"state\");\n  const title = this.getAttribute(\"title\") || \"\";\n  window.history.pushState(state, title, url);\n}\n\nfunction replace_state() {\n  const url = this.getAttribute(\"url\");\n  const state = this.getAttribute(\"state\");\n  const title = this.getAttribute(\"title\") || \"\";\n  window.history.replaceState(state, title, url);\n}\n\nfunction history_back() {\n  window.history.back();\n}\n\nfunction history_forward() {\n  window.history.forward();\n}\n\nfunction history_go() {\n  const delta = Number(this.getAttribute(\"delta\")) || 0;\n  window.history.go(delta);\n}\n\nfunction registerHistoryActions(streamActions) {\n  streamActions.push_state = push_state;\n  streamActions.replace_state = replace_state;\n  streamActions.history_back = history_back;\n  streamActions.history_go = history_go;\n}\n\nconst PERMITTED_ATTRIBUTES = [ \"dir\", \"lang\", \"badge\", \"body\", \"tag\", \"icon\", \"image\", \"data\", \"vibrate\", \"renotify\", \"require-interaction\", \"actions\", \"silent\" ];\n\nconst createNotification = streamElement => {\n  const title = streamElement.getAttribute(\"title\") || \"\";\n  const attributes = Array.from(streamElement.attributes).filter((attribute => PERMITTED_ATTRIBUTES.includes(attribute.name))).map((attribute => [ camelize(attribute.name), typecast(attribute.value) ]));\n  const options = Object.fromEntries(attributes);\n  new Notification(title, options);\n};\n\nfunction notification() {\n  if (!window.Notification) {\n    alert(\"This browser does not support desktop notification\");\n  } else if (Notification.permission === \"granted\") {\n    createNotification(this);\n  } else if (Notification.permission !== \"denied\") {\n    Notification.requestPermission().then((permission => {\n      if (permission === \"granted\") {\n        createNotification(this);\n      }\n    }));\n  }\n}\n\nfunction registerNotificationActions(streamActions) {\n  streamActions.notification = notification;\n}\n\nfunction storage(type) {\n  return type === \"session\" ? window.sessionStorage : window.localStorage;\n}\n\nfunction clear_storage() {\n  const type = this.getAttribute(\"type\");\n  storage(type).clear();\n}\n\nfunction set_storage_item() {\n  const key = this.getAttribute(\"key\");\n  const value = this.getAttribute(\"value\") || \"\";\n  const type = this.getAttribute(\"type\");\n  if (key) {\n    storage(type).setItem(key, value);\n  } else {\n    console.warn(`[TurboPower] no \"key\" provided for Turbo Streams operation \"set_storage_item\"`);\n  }\n}\n\nfunction remove_storage_item() {\n  const key = this.getAttribute(\"key\");\n  const type = this.getAttribute(\"type\");\n  if (key) {\n    storage(type).removeItem(key);\n  } else {\n    console.warn(`[TurboPower] no \"key\" provided for Turbo Streams operation \"remove_storage_item\"`);\n  }\n}\n\nfunction registerStorageActions(streamActions) {\n  streamActions.clear_storage = clear_storage;\n  streamActions.set_storage_item = set_storage_item;\n  streamActions.remove_storage_item = remove_storage_item;\n}\n\nvar Proxy = {\n  get location() {\n    return window.TurboPowerLocation || window.location;\n  }\n};\n\nfunction redirect_to() {\n  const url = this.getAttribute(\"url\") || \"/\";\n  const turboAction = this.getAttribute(\"turbo-action\") || \"advance\";\n  const turboFrame = this.getAttribute(\"turbo-frame\");\n  const turbo = this.getAttribute(\"turbo\") !== \"false\";\n  const options = {\n    action: turboAction\n  };\n  if (turboFrame) {\n    options.frame = turboFrame;\n  }\n  if (turbo && window.Turbo) {\n    window.Turbo.visit(url, options);\n  } else {\n    Proxy.location.assign(url);\n  }\n}\n\nfunction turbo_clear_cache() {\n  window.Turbo.cache.clear();\n}\n\nfunction registerTurboActions(streamActions) {\n  streamActions.redirect_to = redirect_to;\n  streamActions.turbo_clear_cache = turbo_clear_cache;\n}\n\nfunction turbo_progress_bar_set_value() {\n  const value = this.getAttribute(\"value\") || 0;\n  window.Turbo.navigator.adapter.progressBar.setValue(Number(value));\n}\n\nfunction turbo_progress_bar_show() {\n  window.Turbo.navigator.adapter.progressBar.show();\n}\n\nfunction turbo_progress_bar_hide() {\n  window.Turbo.navigator.adapter.progressBar.hide();\n}\n\nfunction registerTurboProgressBarActions(streamActions) {\n  streamActions.turbo_progress_bar_set_value = turbo_progress_bar_set_value;\n  streamActions.turbo_progress_bar_show = turbo_progress_bar_show;\n  streamActions.turbo_progress_bar_hide = turbo_progress_bar_hide;\n}\n\nfunction turbo_frame_reload() {\n  this.targetElements.forEach((element => element.reload()));\n}\n\nfunction turbo_frame_set_src() {\n  const src = this.getAttribute(\"src\");\n  this.targetElements.forEach((element => element.src = src));\n}\n\nfunction registerTurboFrameActions(streamActions) {\n  streamActions.turbo_frame_reload = turbo_frame_reload;\n  streamActions.turbo_frame_set_src = turbo_frame_set_src;\n}\n\nfunction register$1(streamActions) {\n  registerAttributesActions(streamActions);\n  registerBrowserActions(streamActions);\n  registerDebugActions(streamActions);\n  registerDeprecatedActions(streamActions);\n  registerDocumentActions(streamActions);\n  registerDOMActions(streamActions);\n  registerEventsActions(streamActions);\n  registerFormActions(streamActions);\n  registerHistoryActions(streamActions);\n  registerNotificationActions(streamActions);\n  registerStorageActions(streamActions);\n  registerTurboActions(streamActions);\n  registerTurboProgressBarActions(streamActions);\n  registerTurboFrameActions(streamActions);\n}\n\nvar Actions =  Object.freeze({\n  __proto__: null,\n  add_css_class: add_css_class,\n  clear_storage: clear_storage,\n  console_log: console_log,\n  console_table: console_table,\n  dispatch_event: dispatch_event,\n  graft: graft,\n  history_back: history_back,\n  history_forward: history_forward,\n  history_go: history_go,\n  inner_html: inner_html,\n  insert_adjacent_html: insert_adjacent_html,\n  insert_adjacent_text: insert_adjacent_text,\n  invoke: invoke,\n  notification: notification,\n  outer_html: outer_html,\n  push_state: push_state,\n  redirect_to: redirect_to,\n  register: register$1,\n  registerAttributesActions: registerAttributesActions,\n  registerBrowserActions: registerBrowserActions,\n  registerDOMActions: registerDOMActions,\n  registerDebugActions: registerDebugActions,\n  registerDeprecatedActions: registerDeprecatedActions,\n  registerDocumentActions: registerDocumentActions,\n  registerEventsActions: registerEventsActions,\n  registerFormActions: registerFormActions,\n  registerHistoryActions: registerHistoryActions,\n  registerNotificationActions: registerNotificationActions,\n  registerStorageActions: registerStorageActions,\n  registerTurboActions: registerTurboActions,\n  registerTurboFrameActions: registerTurboFrameActions,\n  registerTurboProgressBarActions: registerTurboProgressBarActions,\n  reload: reload,\n  remove_attribute: remove_attribute,\n  remove_css_class: remove_css_class,\n  remove_storage_item: remove_storage_item,\n  replace_css_class: replace_css_class,\n  replace_state: replace_state,\n  reset_form: reset_form,\n  scroll_into_view: scroll_into_view,\n  set_attribute: set_attribute,\n  set_cookie: set_cookie,\n  set_cookie_item: set_cookie_item,\n  set_dataset_attribute: set_dataset_attribute,\n  set_focus: set_focus,\n  set_meta: set_meta,\n  set_property: set_property,\n  set_storage_item: set_storage_item,\n  set_style: set_style,\n  set_styles: set_styles,\n  set_title: set_title,\n  set_value: set_value,\n  text_content: text_content,\n  toggle_css_class: toggle_css_class,\n  turbo_clear_cache: turbo_clear_cache,\n  turbo_frame_reload: turbo_frame_reload,\n  turbo_frame_set_src: turbo_frame_set_src,\n  turbo_progress_bar_hide: turbo_progress_bar_hide,\n  turbo_progress_bar_set_value: turbo_progress_bar_set_value,\n  turbo_progress_bar_show: turbo_progress_bar_show\n});\n\nfunction initialize(streamActions) {\n  initialize$1(streamActions);\n  register$1(streamActions);\n}\n\nfunction register(name, action, streamActions) {\n  streamActions[name] = action;\n}\n\nvar index = {\n  initialize: initialize,\n  register: register,\n  Actions: Actions,\n  Utils: Utils\n};\n\nexport { Actions, Utils, index as default, initialize, register };\n", "// Entry point for the build script in your package.json\nif (navigator.serviceWorker) {\n  navigator.serviceWorker.register('/serviceworker.js')\n}\n\nif (!navigator.cookieEnabled) {\n  window.location.replace('/cookies_required')\n}\n\nimport '@hotwired/turbo-rails'\nimport { StreamActions } from '@hotwired/turbo'\nimport TurboPower from 'turbo_power'\nTurboPower.initialize(StreamActions)\nimport '@rails/actioncable'\n\nimport './initializers'\n\nimport '../assets/javascripts/layout'\nimport 'bootstrap-sass'\nimport 'bootstrap-toggle'\nimport 'jquery-minicolors'\nrequire('select2')()\nimport '../../vendor/assets/javascripts/jquery.gauge'\nimport '../../vendor/assets/javascripts/intl-tel-input/utils'\nimport './controllers'\nimport '../assets/javascripts'\n\nimport LocalTime from 'local-time'\nLocalTime.start()\n\nimport { setupConfirmations } from '../components/confirm_button_to/component'\nsetupConfirmations()\n\nimport embed from 'vega-embed'\n\nwindow.vegaEmbed = embed\nwindow.dispatchEvent(new Event('vega:load'))\n\nimport * as ActiveStorage from '@rails/activestorage'\nActiveStorage.start()\n", "// This has to exist to make jquery work because of the way\n// that js hoists imports\n// I hate jquery!\nimport jquery from 'jquery'\nwindow.jQuery = jquery\nwindow.$ = jquery\n", "$(document).on('turbo:load', function () {\n  // Tooltips\n  initializeTooltips()\n\n  // Dropdowns as Tabs\n  initializeDropdownTabs()\n})\n\nexport function initializeTooltips(parent) {\n  var selector = '[data-toggle=\"tooltip\"]'\n  if (parent === undefined) {\n    var $elements = $(selector)\n  } else {\n    var $elements = $(parent).find(selector)\n  }\n\n  $elements.tooltip({ html: true, delay: { show: 250, hide: 100 } })\n}\n\nexport function initializeDropdownTabs(parent) {\n  var selector = '.dropdown-tabs'\n  if (parent === undefined) {\n    var $elements = $(selector)\n  } else {\n    var $elements = $(parent).find(selector)\n  }\n\n  $elements.each(function () {\n    var $this = $(this)\n    $this.fadeIn()\n    if ($this.find('.dropdown-tabs-menu li.active').length) {\n      var selText = $this.find('.dropdown-tabs-menu li.active').text()\n      $this.find('.dropdown-toggle').html(selText + ' <i class=\"fas fa-chevron-down\"></i>')\n    }\n\n    $(this)\n      .find('.dropdown-tabs-menu li a')\n      .click(function () {\n        if ($this.find('.dropdown-tabs-menu li.active').length) {\n          var selText = $(this).text()\n          $(this)\n            .parents('.dropdown-tabs')\n            .find('.dropdown-toggle')\n            .html(selText + ' <i class=\"fas fa-chevron-down\"></i>')\n          $(this).parents('.dropdown-tabs').find('.dropdown-tabs-menu li').removeClass('active')\n        }\n\n        $(this).trigger('voltage:dropdown-tabs:selected')\n      })\n  })\n}\n\nexport function initializeCounters(parent) {\n  var selector = '.counter-value'\n  if (parent === undefined) {\n    var $elements = $(selector)\n  } else {\n    var $elements = $(parent).find(selector)\n  }\n\n  $elements.each(function () {\n    var $this = $(this),\n      countTo = $this.attr('data-count')\n\n    $({ countNum: $this.text() }).animate(\n      {\n        countNum: countTo,\n      },\n      {\n        duration: 1000,\n        easing: 'linear',\n        step: function () {\n          $this.text(Math.floor(this.countNum))\n        },\n        complete: function () {\n          $this.text(this.countNum)\n        },\n      },\n    )\n  })\n}\n", "import {\n  initializeTooltips,\n  initializeDropdownTabs,\n  initializeCounters,\n} from '../../../vendor/assets/javascripts/voltage'\n\nwindow.initializeTooltips = initializeTooltips\nwindow.initializeDropdownTabs = initializeDropdownTabs\nwindow.initializeCounters = initializeCounters\n", "/* global Turbo */\n// TODO: Delete this file\n// eslint-disable-next-line no-unused-vars\nexport function initializeWidgetCollapseExpand($collapsiblePanel) {\n  $collapsiblePanel.on('hidden.bs.collapse', function () {\n    var $this = $(this)\n    var $toggler = $this.parent().find('.collapse-toggler')\n    $toggler.addClass('fa-chevron-down')\n    $toggler.removeClass('fa-chevron-up')\n    $this.removeClass('in')\n    $this.parent().addClass('collapsed')\n\n    var pref_update = {}\n    var $section = $(this).closest('.lazy-load')\n    var section_name = $section\n      .attr('id')\n      .replace(/-module$/, '')\n      .replace(/-/, '_')\n    pref_update[section_name] = 'collapsed'\n\n    updateDashboardCollapsePreferences(pref_update)\n  })\n\n  $collapsiblePanel.on('shown.bs.collapse', function () {\n    var $this = $(this)\n    var $toggler = $this.parent().find('.collapse-toggler')\n    $toggler.addClass('fa-chevron-up')\n    $toggler.removeClass('fa-chevron-down')\n    $this.addClass('in')\n    $this.parent().removeClass('collapsed')\n\n    var pref_update = {}\n    var $section = $(this).closest('.lazy-load')\n    var section_name = $section\n      .attr('id')\n      .replace(/-module$/, '')\n      .replace(/-/, '_')\n    pref_update[section_name] = 'expanded'\n\n    updateDashboardCollapsePreferences(pref_update)\n  })\n}\n\nfunction updateDashboardCollapsePreferences(preferences) {\n  var path = '/preferences/'\n  $.ajax({\n    type: 'PUT',\n    url: path,\n    data: {\n      key: 'dashboard_collapse',\n      preferences,\n    },\n    complete(data) {\n      if (data.status === 200) Turbo.cache.clear()\n      else $('#global-alerts').append(data.responseText)\n    },\n  })\n}\n", "import { initializeWidgetCollapseExpand } from '../../assets/javascripts/collapse_expand'\n\nwindow.initializeWidgetCollapseExpand = initializeWidgetCollapseExpand\n", "import Trix from 'trix'\n\n// TODO: make this not so terrible\nexport function initializeTrix() {\n  addHeadingAttributes()\n  addForegroundColorAttributes()\n  addBackgroundColorAttributes()\n\n  addEventListener('trix-initialize', function (event) {\n    new TrixExt(event.target)\n  })\n\n  addEventListener('trix-action-invoke', function (event) {\n    if (event.actionName.includes('x-token-')) {\n      insertToken()\n    }\n    if (event.actionName === 'x-horizontal-rule') {\n      insertHorizontalRule()\n    }\n\n    function insertToken() {\n      var editor = event.target.editor\n\n      // strip off 'x-token-'\n      var token = event.actionName.substring(8)\n\n      // I don't know what this is, but it's highlighting our text?\n      editor.composition.currentAttributes.frozen = false\n\n      // insert token\n      editor.insertString(`((${token}))`)\n    }\n\n    function insertHorizontalRule() {\n      event.target.editor.insertAttachment(buildHorizontalRule())\n    }\n\n    function buildHorizontalRule() {\n      return new Trix.Attachment({\n        content: '<hr>',\n        contentType: 'vnd.rubyonrails.horizontal-rule.html',\n      })\n    }\n  })\n}\n\n// This class should be its own file probably\nclass TrixExt {\n  constructor(element) {\n    this.element = element\n\n    var isAgreementEditor = element.classList.value.includes('agreement-trix')\n    if (isAgreementEditor) this.insertTokenElements()\n    this.insertDividerElements()\n    this.insertHeadingElements()\n    this.insertColorElements()\n  }\n\n  insertTokenElements() {\n    this.buttonGroupFileTools.insertAdjacentHTML('afterbegin', this.tokenButtonTemplate)\n    this.dialogsElement.insertAdjacentHTML('beforeend', this.tokenDialogTemplate)\n  }\n\n  insertDividerElements() {\n    this.quoteButton.insertAdjacentHTML('afterend', this.horizontalButtonTemplate)\n  }\n\n  insertHeadingElements() {\n    this.removeOriginalHeadingButton()\n    this.insertNewHeadingButton()\n    this.insertHeadingDialog()\n  }\n\n  removeOriginalHeadingButton() {\n    this.buttonGroupBlockTools.removeChild(this.originalHeadingButton)\n  }\n\n  insertNewHeadingButton() {\n    this.buttonGroupBlockTools.insertAdjacentHTML('afterbegin', this.headingButtonTemplate)\n  }\n\n  insertHeadingDialog() {\n    this.dialogsElement.insertAdjacentHTML('beforeend', this.dialogHeadingTemplate)\n  }\n\n  insertColorElements() {\n    this.insertColorButton()\n    this.insertDialogColor()\n  }\n\n  insertColorButton() {\n    this.buttonGroupTextTools.insertAdjacentHTML('beforeend', this.colorButtonTemplate)\n  }\n\n  insertDialogColor() {\n    this.dialogsElement.insertAdjacentHTML('beforeend', this.dialogColorTemplate)\n  }\n\n  get buttonGroupBlockTools() {\n    return this.toolbarElement.querySelector('[data-trix-button-group=block-tools]')\n  }\n\n  get buttonGroupFileTools() {\n    return this.toolbarElement.querySelector('[data-trix-button-group=file-tools]')\n  }\n\n  get buttonGroupTextTools() {\n    return this.toolbarElement.querySelector('[data-trix-button-group=text-tools]')\n  }\n\n  get dialogsElement() {\n    return this.toolbarElement.querySelector('[data-trix-dialogs]')\n  }\n\n  get originalHeadingButton() {\n    return this.toolbarElement.querySelector('[data-trix-attribute=heading1]')\n  }\n\n  get quoteButton() {\n    return this.toolbarElement.querySelector('[data-trix-attribute=quote]')\n  }\n\n  get uploadButton() {\n    return this.toolbarElement.querySelector('[data-trix-attribute=quote]')\n  }\n\n  get toolbarElement() {\n    return this.element.toolbarElement\n  }\n\n  /* eslint-disable max-len */\n  get horizontalButtonTemplate() {\n    return '<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-horizontal-rule\" data-trix-action=\"x-horizontal-rule\" tabindex=\"-1\" title=\"Divider\">Divider</button>'\n  }\n\n  get tokenButtonTemplate() {\n    return '<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-tokens\" data-trix-action=\"x-tokens\" tabindex=\"-1\" title=\"Tokens\">Tokens</button>'\n  }\n\n  get headingButtonTemplate() {\n    return '<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-action=\"x-heading\" title=\"Heading\" tabindex=\"-1\">Heading</button>'\n  }\n\n  get colorButtonTemplate() {\n    return '<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-color\" data-trix-action=\"x-color\" title=\"Color\" tabindex=\"-1\">Color</button>'\n  }\n\n  get tokenDialogTemplate() {\n    return `\n      <div class=\"trix-dialog trix-dialog--tokens\" data-trix-dialog=\"x-tokens\" data-trix-dialog-attribute=\"x-tokens\">\n        <div class=\"trix-dialog__link-fields\">\n          <input type=\"text\" name=\"x-tokens\" class=\"trix-dialog-hidden__input\" data-trix-input>\n          <div class=\"trix-button-group\">\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-signature_area\">Signature Area</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-first_name\">First Name</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-last_name\">Last Name</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-street\">Street Address</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-street_2\">Street Address 2</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-city\">City</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-state\">State</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-zip\">Zip Code</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-country\">Country</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-date_of_birth\">Date of Birth</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-method=\"hideDialog\" data-trix-action=\"x-token-memberships\">Memberships</button>\n          </div>\n        </div>\n      </div>\n    `\n  }\n\n  get dialogHeadingTemplate() {\n    return `\n      <div class=\"trix-dialog trix-dialog--heading\" data-trix-dialog=\"x-heading\" data-trix-dialog-attribute=\"x-heading\">\n        <div class=\"trix-dialog__link-fields\">\n          <input type=\"text\" name=\"x-heading\" class=\"trix-dialog-hidden__input\" data-trix-input>\n          <div class=\"trix-button-group\">\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading1\">H1</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading2\">H2</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading3\">H3</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading4\">H4</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading5\">H5</button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"heading6\">H6</button>\n          </div>\n        </div>\n      </div>\n    `\n  }\n\n  get dialogColorTemplate() {\n    return `\n      <div class=\"trix-dialog trix-dialog--color\" data-trix-dialog=\"x-color\" data-trix-dialog-attribute=\"x-color\">\n        <div class=\"trix-dialog__link-fields\">\n          <input type=\"text\" name=\"x-color\" class=\"trix-dialog-hidden__input\" data-trix-input>\n          <div class=\"trix-button-group\">\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor1\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor2\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor3\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor4\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor5\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor6\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor7\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor8\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"fgColor9\" data-trix-method=\"hideDialog\"></button>\n          </div>\n          <div class=\"trix-button-group\">\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor1\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor2\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor3\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor4\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor5\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor6\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor7\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor8\" data-trix-method=\"hideDialog\"></button>\n            <button type=\"button\" class=\"trix-button trix-button--dialog\" data-trix-attribute=\"bgColor9\" data-trix-method=\"hideDialog\"></button>\n          </div>\n        </div>\n      </div>\n    `\n  }\n}\n/* eslint-enable */\n\nfunction addHeadingAttributes() {\n  Array.from(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']).forEach((tagName, i) => {\n    Trix.config.blockAttributes[`heading${i + 1}`] = {\n      tagName,\n      terminal: true,\n      breakOnReturn: true,\n      group: false,\n    }\n  })\n}\n\nfunction addForegroundColorAttributes() {\n  Array.from([\n    'rgb(136, 118, 38)',\n    'rgb(185, 94, 6)',\n    'rgb(207, 0, 0)',\n    'rgb(216, 28, 170)',\n    'rgb(144, 19, 254)',\n    'rgb(5, 98, 185)',\n    'rgb(17, 138, 15)',\n    'rgb(148, 82, 22)',\n    'rgb(102, 102, 102)',\n  ]).forEach((color, i) => {\n    Trix.config.textAttributes[`fgColor${i + 1}`] = {\n      style: { color },\n      inheritable: true,\n      parser: (e) => e.style.color === color,\n    }\n  })\n}\n\nfunction addBackgroundColorAttributes() {\n  Array.from([\n    'rgb(250, 247, 133)',\n    'rgb(255, 240, 219)',\n    'rgb(255, 229, 229)',\n    'rgb(255, 228, 247)',\n    'rgb(242, 237, 255)',\n    'rgb(225, 239, 252)',\n    'rgb(228, 248, 226)',\n    'rgb(238, 226, 215)',\n    'rgb(242, 242, 242)',\n  ]).forEach((color, i) => {\n    Trix.config.textAttributes[`bgColor${i + 1}`] = {\n      style: { backgroundColor: color },\n      inheritable: true,\n      parser: (e) => e.style.backgroundColor === color,\n    }\n  })\n}\n\nTrix.config.attachments.preview.caption = {\n  name: false,\n  size: false,\n}\n\nTrix.config.css.attachment = 'img-fluid'\n\nfunction uploadAttachment(attachment) {\n  'use strict'\n\n  var file = attachment.file\n  var form = new FormData()\n  form.append('Content-Type', file.type)\n  form.append('file', file)\n\n  var xhr = new XMLHttpRequest()\n  xhr.open('POST', '/files.js', true)\n  xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n  xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\n  xhr.upload.onprogress = function (event) {\n    var progress = (event.loaded / event.total) * 100\n    attachment.setUploadProgress(progress)\n  }\n\n  xhr.onload = function () {\n    if (xhr.status === 201 || xhr.status === 200) {\n      var data = JSON.parse(xhr.responseText)\n      return attachment.setAttributes({\n        url: data.url,\n      })\n    }\n\n    $('#global-alerts').append(xhr.responseText)\n    return attachment.remove()\n  }\n\n  return xhr.send(form)\n}\n\ndocument.addEventListener('trix-attachment-add', function (event) {\n  'use strict'\n\n  var attachment = event.attachment\n\n  if (attachment.file) return uploadAttachment(attachment)\n\n  return false\n})\n", "import { initializeTrix } from '../helpers/trix_helper'\n\ninitializeTrix()\n", "/* eslint-disable no-unused-vars */\n/* global initializeProspectOffWarning */\n/* global initializeClipboardCopyButton */\n/* global initializeProgramSignup */\n/* global initializeSchedulerBehavior */\n/* global loadLazyPartial */\n/* global initializeInventoryItemCheckbox */\n/* global initializeProgramSignupBehavior */\n/* global initializeLandingPageModules */\n/* global initializeTrialMembershipBehavior */\n/* global intlTelInput */\n\n// TODO: Move all this stuff to a stimulus controller or something\nexport function enableApplyToPreviewButton() {\n  'use strict'\n\n  $('.apply-btn').addClass('btn-primary')\n}\n\nexport function removeDeletedElements() {\n  for (const d of document.querySelectorAll('.delete')) {\n    if (d.value === '1') {\n      d.closest('.selected-module.hidden').remove()\n    }\n  }\n}\n\nexport function initializeEmbedCodeModal() {\n  'use strict'\n\n  var $modal = $('#view-embed-code-modal')\n  $modal.on('show.bs.modal', function (e) {\n    var $this = $(this)\n    var $target = $this.find('pre.embed-code code')\n    var embedcode = $(e.relatedTarget).data('embedcode')\n    $target.text(embedcode)\n    $this.find('textarea.embed-code').val(embedcode)\n    initializeClipboardCopyButton($modal)\n  })\n}\n\nexport function initializeTemplateStartDatePicker() {\n  'use strict'\n\n  $('.start-date-field').change(function () {\n    const $checkboxField = $(this).closest('.table-row').find('.membership-template-check')\n    $checkboxField.trigger('click')\n    enableApplyToPreviewButton()\n  })\n}\n\nexport function initializeDeleteMembershipTemplateCheckboxes() {\n  $('.membership-template-check').click(function () {\n    const $this = $(this)\n    if ($this.hasClass('checked')) {\n      $this.siblings('.delete').val(0)\n    } else {\n      $this.siblings('.delete').val(1)\n    }\n  })\n}\n\nexport function initializeCollapsibleModule($module) {\n  'use strict'\n  $module.on('show.bs.collapse', function () {\n    const $selectedModule = $(this).closest('.selected-module.row')\n    $selectedModule.removeClass('collapsed')\n\n    $selectedModule.find('.expand-module').find('svg').toggleClass('chevron-rotate')\n  })\n\n  $module.on('hidden.bs.collapse', function () {\n    const $selectedModule = $(this).closest('.selected-module.row')\n    $selectedModule.addClass('collapsed')\n\n    $selectedModule.find('.expand-module').find('svg').toggleClass('chevron-rotate')\n  })\n}\n\nexport function initializeCollapsibleModules() {\n  'use-strict'\n  const moduleNames = [\n    'header',\n    'agreement',\n    'description',\n    'inventory',\n    'lcf',\n    'program',\n    'scheduler',\n    'trial-membership',\n  ]\n  for (const moduleName of moduleNames) {\n    initializeCollapsibleModule($(`#${moduleName}-module-content`))\n  }\n}\n\nexport function handleProspectCreationToggle() {\n  'use strict'\n\n  // Gather data on all of the form fields currently displayed\n  var formFieldInputs = $('.selected-form-field')\n  var formFieldInputsRequiredToCreateProspects = []\n  $.each(formFieldInputs, function (index, value) {\n    var key = $(value).find('.selected-form-field-label input:first-child').attr('value')\n    var requireness = $(value).find('.selected-form-field-requireness input').is(':checked')\n\n    if (key === 'email' && requireness === true) formFieldInputsRequiredToCreateProspects.push(key)\n\n    if (key === 'name' && requireness === true) formFieldInputsRequiredToCreateProspects.push(key)\n  })\n\n  // Check and see if the form fields necessary for creating a prospect exist\n  var requiredFieldsPresent =\n    jQuery.inArray('email', formFieldInputsRequiredToCreateProspects) !== -1 &&\n    jQuery.inArray('name', formFieldInputsRequiredToCreateProspects) !== -1\n\n  // Check and see if this form currently has \"prospect creation\" enabled.\n  var $prospectCreationToggle = $('#prospect-creation-toggle')\n  let profitItemOptions = document.querySelectorAll(\n    '.module-option-programs, .module-option-inventory_items, .module-option-trial_memberships',\n  )\n\n  if (\n    requiredFieldsPresent ||\n    $('.selected-module .lead-capture-form-item input:checked').data('canEnableProspecting')\n  ) {\n    // has the necessary fields\n    $prospectCreationToggle.bootstrapToggle('destroy')\n    $prospectCreationToggle.bootstrapToggle()\n    $prospectCreationToggle.bootstrapToggle('enable')\n    if ($prospectCreationToggle.hasClass('disabled')) {\n      $prospectCreationToggle.parent().addClass('disabled')\n    }\n\n    enableProfitItemOptions(profitItemOptions)\n\n    $('#name-warning').addClass('hidden')\n  } else {\n    // does not have the necessary fields required to permit \"prospect creation\"\n    if ($('#prospect-creation-toggle').length > 0 && $('#prospect-creation-toggle')[0].checked) {\n      $('#name-warning-modal').modal('show')\n    }\n\n    $('#name-warning').removeClass('hidden')\n\n    disableProfitItemOptions(profitItemOptions)\n\n    $prospectCreationToggle.bootstrapToggle('destroy')\n    $prospectCreationToggle.bootstrapToggle()\n    $prospectCreationToggle.bootstrapToggle('off')\n    $prospectCreationToggle.bootstrapToggle('disable')\n  }\n}\n\nexport function disableProfitItemOptions(options) {\n  for (const option of options) {\n    option.classList.add('disabled')\n  }\n}\n\nexport function enableProfitItemOptions(options) {\n  for (const option of options) {\n    let modName = option.dataset.moduleName\n    let selectedModule = document.querySelector(`.selected-module input[name=\"modules[${modName}][key]\"]`)\n\n    if (option.classList.contains('disabled') && !selectedModule) {\n      option.classList.remove('disabled')\n    }\n  }\n}\n\n// Reload Telephone Input\nexport function initializeTelephoneInputBehavior(element) {\n  const phoneInputs = element.contentWindow.document.querySelectorAll('.public input[type=tel]')\n\n  for (const phoneInput of phoneInputs) {\n    intlTelInput(phoneInput, {\n      utilsScript: '/assets/intl-tel-input/utils.js',\n      hiddenInput: phoneInput.dataset.inputname || '',\n      formatOnDisplay: true,\n      separateDialCode: true,\n      initialCountry: document.body.dataset.countryCode || 'us',\n    })\n  }\n}\n\nexport function reloadPreview() {\n  const preview = document.querySelector('#preview-container')\n  const oldFrame = preview.querySelector('iframe')\n  const newFrame = document.createElement('iframe')\n  newFrame.src = oldFrame.src\n  newFrame.classList.add('hidden')\n  preview.appendChild(newFrame)\n  newFrame.addEventListener('load', () => {\n    preview.removeChild(oldFrame)\n    preview.style['background-color'] = document\n      .querySelector('.third-color')\n      .querySelector('.minicolors-swatch-color').style['background-color']\n    newFrame.classList.remove('hidden')\n    initializeTelephoneInputBehavior(newFrame)\n  })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n  initializeTemplateStartDatePicker()\n  initializeDeleteMembershipTemplateCheckboxes()\n  initializeCollapsibleModules()\n  $('.apply-btn').click(function () {\n    if (!$(this).hasClass('btn-primary')) return\n\n    var $form = $('#lead-capture-form, #landing-page-form')\n    $.ajax({\n      type: $form.attr('method'),\n      url: $form.attr('action'),\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n      },\n      data: $form.serialize(),\n      complete(data) {\n        if (data.status === 200 || data.status === 204) {\n          reloadPreview()\n          $(document).trigger('lazy-load:complete')\n          $('.lazy-load#landing-pages').trigger('lazy-load:complete')\n          const leftSection = $('.reload-left-section')\n          let collapsdModules = {}\n          leftSection.find('.selected-module').each(function () {\n            const $module = $(this).find('.content')\n            const id = $module.attr('id').split('-')[0]\n            if ($module.hasClass('in')) {\n              collapsdModules[id] = false\n            } else {\n              collapsdModules[id] = true\n            }\n          })\n          const encodedCollapsedModules = encodeURIComponent(JSON.stringify(collapsdModules))\n          $.ajax({\n            type: 'GET',\n            url: `${leftSection.data('path')}?collapsed_modules=${encodedCollapsedModules}`,\n            dataType: 'json',\n            success(_data) {\n              leftSection.html(_data.partial)\n              initializeInventoryItemCheckbox()\n              initializeSchedulerBehavior()\n              initializeTemplateStartDatePicker()\n              initializeDeleteMembershipTemplateCheckboxes()\n              initializeProgramSignupBehavior()\n              initializeCollapsibleModules()\n              initializeLandingPageModules($('#additional-sidebar'))\n              removeDeletedElements()\n              initializeTrialMembershipBehavior()\n            },\n          })\n        } else {\n          $('#global-alerts').append(data.responseText)\n        }\n\n        return false\n      },\n    })\n\n    $('.apply-btn').removeClass('btn-primary')\n  })\n\n  $('input.color-picker').change(function () {\n    enableApplyToPreviewButton()\n  })\n\n  $('.settings-toggle').click(function (event) {\n    event.preventDefault()\n\n    const settings = $('#settings')\n    if (settings.hasClass('hidden')) {\n      handleProspectCreationToggle()\n\n      const membershipItemsWrapper = document.querySelector('.membership-items')\n      const checkboxes = membershipItemsWrapper\n        ? membershipItemsWrapper.querySelectorAll('input[type=\"checkbox\"]')\n        : []\n      const hasMemberships = [...checkboxes].some((checkbox) => checkbox.checked)\n      const toggleCreateProspectButton = document\n        .querySelector('.create-prospect-toggle-container')\n        .querySelector('.toggle.btn')\n\n      if (hasMemberships) {\n        if (toggleCreateProspectButton.classList.contains('off')) {\n          toggleCreateProspectButton.click()\n        }\n        toggleCreateProspectButton.classList.add('disabled')\n      }\n\n      settings.animate({ left: '0px' }, 'fast').removeClass('hidden')\n    } else {\n      settings.animate({ left: '-1000px' }, 'fast', function () {\n        settings.addClass('hidden')\n      })\n    }\n\n    initializeProspectOffWarning()\n    return false\n  })\n})\n/* eslint-enable no-unused-vars */\n", "import {\n  enableApplyToPreviewButton,\n  removeDeletedElements,\n  initializeEmbedCodeModal,\n  initializeTemplateStartDatePicker,\n  initializeDeleteMembershipTemplateCheckboxes,\n  initializeCollapsibleModule,\n  initializeCollapsibleModules,\n  handleProspectCreationToggle,\n  disableProfitItemOptions,\n  enableProfitItemOptions,\n  reloadPreview,\n} from '../../assets/javascripts/school/bizbuilders.js'\n\nwindow.enableApplyToPreviewButton = enableApplyToPreviewButton\nwindow.removeDeletedElements = removeDeletedElements\nwindow.initializeEmbedCodeModal = initializeEmbedCodeModal\nwindow.initializeTemplateStartDatePicker = initializeTemplateStartDatePicker\nwindow.initializeDeleteMembershipTemplateCheckboxes = initializeDeleteMembershipTemplateCheckboxes\nwindow.initializeCollapsibleModule = initializeCollapsibleModule\nwindow.initializeCollapsibleModules = initializeCollapsibleModules\nwindow.handleProspectCreationToggle = handleProspectCreationToggle\nwindow.disableProfitItemOptions = disableProfitItemOptions\nwindow.enableProfitItemOptions = enableProfitItemOptions\nwindow.reloadPreview = reloadPreview\n", "/* eslint-disable no-unused-vars */\n/* global enableApplyToPreviewButton */\n/* global initializeProgramSignupBehavior */\n/* global initializeSchedulerBehavior */\n\nimport { enableApplyToPreviewButton } from '../../bizbuilders'\n\nexport function addCountToCounter(inputName) {\n  'use strict'\n  var count = $(`.${inputName}-item-check:checked`).length\n  $(`.${inputName}-count`).text(count)\n}\n\nexport function enableApplyButtonOnNewMembershipSelection() {\n  $('#add-new-trial-membership').on('click', function () {\n    enableApplyToPreviewButton()\n  })\n}\n\nexport function activateApplyButtonWhenMembershipChecked() {\n  'use strict'\n  $('body').on('click', 'label[id^=membership]', function () {\n    enableApplyToPreviewButton()\n  })\n  $('label[id^=membership]').off()\n  $('label[id^=membership]').on('click', function () {\n    const inputId = $(this).siblings()[0].id\n    $(`#${inputId}`).prop('checked', !$(`#${inputId}`).prop('checked'))\n\n    enableApplyToPreviewButton()\n    addCountToCounter('membership')\n  })\n  enableApplyButtonOnNewMembershipSelection()\n}\n\nexport function initializeTrialMembershipBehavior() {\n  'use strict'\n\n  activateApplyButtonWhenMembershipChecked()\n}\n\nexport function initializeProspectOffWarning() {\n  'use strict'\n  $('.create-prospect-toggle-container .toggle').on('click', function () {\n    if ($('.membership-items-container').hasClass('active')) {\n      if ($(this).find('input').is(':checked')) {\n        $('#prospect-warning').show()\n      } else {\n        $('#prospect-warning').hide()\n      }\n    }\n  })\n\n  $('.membership-item').on('click', function () {\n    $('#prospect-warning').hide()\n  })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n  initializeTrialMembershipBehavior()\n  initializeProgramSignupBehavior()\n  initializeSchedulerBehavior()\n  initializeProspectOffWarning()\n})\n/* eslint-enable no-unused-vars */\n", "import {\n  addCountToCounter,\n  activateApplyButtonWhenMembershipChecked,\n  initializeTrialMembershipBehavior,\n  initializeProspectOffWarning,\n} from '../../assets/javascripts/school/bizbuilder/landing_pages/trial_memberships'\n\nwindow.addCountToCounter = addCountToCounter\nwindow.activateApplyButtonWhenMembershipChecked = activateApplyButtonWhenMembershipChecked\nwindow.initializeTrialMembershipBehavior = initializeTrialMembershipBehavior\nwindow.initializeProspectOffWarning = initializeProspectOffWarning\n", "/* global addCountToCounter */\n/* global enableApplyToPreviewButton */\n\nexport function activateApplyButtonWhenProgramChecked() {\n  'use strict'\n  $('.program-item-check').off()\n  $('.program-item-check').on('click', function () {\n    if ($(this).is(':checked')) {\n      $(this).siblings('.delete').attr('value', 0)\n    } else {\n      $(this).siblings('.delete').attr('value', 1)\n    }\n\n    enableApplyToPreviewButton()\n    addCountToCounter('program')\n  })\n}\n\n// eslint-disable-next-line no-unused-vars\nexport function initializeProgramSignupBehavior() {\n  'use strict'\n\n  activateApplyButtonWhenProgramChecked()\n}\n", "import {\n  activateApplyButtonWhenProgramChecked,\n  initializeProgramSignupBehavior,\n} from '../../assets/javascripts/school/bizbuilder/landing_pages/programs'\n\nwindow.activateApplyButtonWhenProgramChecked = activateApplyButtonWhenProgramChecked\nwindow.initializeProgramSignupBehavior = initializeProgramSignupBehavior\n", "/* global enableApplyToPreviewButton */\n\n// eslint-disable-next-line no-unused-vars\nexport function initializeSchedulerBehavior() {\n  'use strict'\n\n  $('#scheduler-required').change(function () {\n    enableApplyToPreviewButton()\n  })\n}\n", "import { initializeSchedulerBehavior } from '../../assets/javascripts/school/bizbuilder/landing_pages/scheduler'\n\nwindow.initializeSchedulerBehavior = initializeSchedulerBehavior\n", "window.moment = require('moment')\n", "const fc = require('../../../vendor/assets/javascripts/fullcalendar/main.min')\nwindow.FullCalendar = fc.FullCalendar\n", "/* eslint-env jquery */\n/* eslint no-unused-vars: 0 */\n\n/* global SignaturePad */\n/* global intlTelInput */\n\nvar SIGNATURE_PADS = []\n\nexport function formatSelect2Option(state) {\n  'use strict'\n\n  if (!state.id) return state.text\n\n  let $state = $(`<span class=\"flex items-center\">${state.text}</span>`)\n  if ($(state.element).data('image') !== undefined) {\n    const image_data = $(state.element).data('image')\n    $state = $(`<span class=\"flex items-center\">\n                  <img src=\"${image_data}\" class=\"employee-image\" />\n                  ${state.text}\n                </span>`)\n  }\n  if (state.image) {\n    $state = $(`<span class=\"flex items-center\">\n                  <img src=\"${state.image}\" class=\"employee-image\" />\n                  ${state.text}\n                </span>`)\n  }\n  return $state\n}\n\nexport function initializeSelect2Fields(parent) {\n  'use strict'\n\n  var fields = []\n  var tagFields = []\n  if (parent === undefined || parent === null) {\n    fields = $('select.select2:not([multiple=\"multiple\"]):not([data-controller=\"select2\"])')\n    tagFields = $('select.select2[multiple=\"multiple\"]:not([data-controller=\"select2\"])')\n  } else {\n    fields = $(parent).find('select.select2:not([multiple=\"multiple\"]):not([data-controller=\"select2\"])')\n    tagFields = $(parent).find('select.select2[multiple=\"multiple\"]:not([data-controller=\"select2\"])')\n  }\n\n  fields.select2({\n    theme: 'bootstrap',\n    templateSelection: formatSelect2Option,\n    templateResult: formatSelect2Option,\n    width: null,\n  })\n  tagFields.select2({\n    theme: 'bootstrap',\n    tags: true,\n    allowClear: false,\n    placeholder: '',\n    insertTag(data, tag) {\n      data.push({\n        id: tag.id,\n        text: `${tag.text} (New)`,\n      })\n    },\n    width: null,\n  })\n\n  $('select.select2.no-search').select2({\n    theme: 'bootstrap',\n    minimumResultsForSearch: Infinity,\n  })\n}\n\nexport function findCheckedCheckBoxes() {\n  'use strict'\n\n  var checkedCheckBoxes = $(\"input.select-all-item[type='checkbox']:checked\")\n  return checkedCheckBoxes\n}\n\nexport function initializeSelectAllCheckboxes(checkboxes, initializeAllCheckbox) {\n  'use strict'\n\n  if (initializeAllCheckbox) {\n    $('#select-all').on('click', function () {\n      var desiredState = $(this).prop('checked')\n      var checkBoxes = $(\"input.select-all-item[type='checkbox']\")\n      checkBoxes.prop('checked', desiredState)\n    })\n\n    $('#select-all').on('click', function () {\n      var checkedCheckBoxes = $(\"input.select-all-item[type='checkbox']:checked\")\n\n      if (checkedCheckBoxes.length > 0) $('#select-all-action').prop('disabled', false)\n      else $('#select-all-action').prop('disabled', true)\n    })\n  }\n\n  $(checkboxes).on('click', function () {\n    var totalCheckBoxes = $(\"input.select-all-item[type='checkbox']\").length\n    var totalCheckedCheckBoxes = $(\"input.select-all-item[type='checkbox']:checked\").length\n\n    if (totalCheckedCheckBoxes === totalCheckBoxes) $('#select-all').prop('checked', true)\n    else $('#select-all').prop('checked', false)\n  })\n\n  $(checkboxes).on('click', function () {\n    var checkedCheckBoxes = $(\"input.select-all-item[type='checkbox']:checked\")\n\n    if (checkedCheckBoxes.length > 0) $('#select-all-action').prop('disabled', false)\n    else $('#select-all-action').prop('disabled', true)\n  })\n}\n\nexport function initializeColorPickerFields() {\n  'use strict'\n\n  jQuery(function ($) {\n    $('.color-picker').minicolors({ theme: 'bootstrap' })\n  })\n}\n\nexport function initializeButtonToggleFormFields(parent) {\n  'use strict'\n\n  var fields = []\n  if (parent === undefined) fields = $('.btn-group.btn-group-toggle label.btn')\n  else fields = $(parent).find('.btn-group.btn-group-toggle label.btn')\n\n  fields.click(function () {\n    $(this).parent().find('input').removeAttr('checked')\n    $(this).find('input').attr('checked', '')\n  })\n}\n\nexport function autoexpandDefinedInputs() {\n  'use strict'\n\n  $('input.auto-expand').each(function () {\n    $(this).width($(this).val().length * 7)\n  })\n\n  $('input.auto-expand').keyup(function () {\n    $(this).width($(this).val().length * 7)\n  })\n}\n\nexport function clickedOutsideInPlaceEditableField(e, $target) {\n  'use strict'\n\n  return (\n    e.target !== $target[0] &&\n    $(e.target).closest('.form-field.editable')[0] !== $target[0] &&\n    !e.target.classList.contains('select2-selection__choice__remove')\n  )\n}\n\n// Discard the changes to a field by clicking the \"discard\" button\nexport function initializeDiscardButton($field) {\n  var path = $field.data('path')\n\n  $field.find('.discard').on('click', function () {\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n    $.ajax({\n      type: 'GET',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      complete(updatedData) {\n        if (updatedData.status === 200) {\n          $field.html(updatedData.responseText)\n          $field.removeClass('active')\n          $field.removeClass('processing')\n        } else {\n          $('#global-alerts').append(updatedData.responseText)\n          $.ajax({\n            type: 'GET',\n            url: path,\n            complete(errorData) {\n              $field.html(errorData.responseText)\n              $field.removeClass('active')\n              $field.removeClass('processing')\n            },\n          })\n        }\n\n        $('body').off('click')\n      },\n    })\n  })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  // NOTE: This is no longer used by landing_pages agreement signature, but\n  // might be in use by the public profile agreement signature code?\n  $('canvas.signature-pad').each(function () {\n    const signaturePad = new SignaturePad(this, { penColor: '#5d5c57' })\n    signaturePad.addEventListener(\n      'beginStroke',\n      () => {\n        this.closest('.signature-wrapper').querySelector('label').classList.add('hidden')\n      },\n      { once: true },\n    )\n\n    SIGNATURE_PADS.push(signaturePad)\n  })\n\n  // Add new profile modal\n  const phoneContainerInput = document.querySelector('.phone-toggle-container input[type=tel].fancy')\n  if (phoneContainerInput) {\n    intlTelInput(phoneContainerInput, {\n      utilsScript: '/assets/intl-tel-input/utils.js',\n      formatOnDisplay: true,\n      separateDialCode: true,\n      hiddenInput: 'full_number',\n      initialCountry: document.body.dataset.countryCode || 'us',\n    })\n  }\n\n  // Other phone fields\n  const phoneInputs = document.querySelectorAll('input[type=tel].fancy:not(.new-profile)')\n  for (const phoneInput of phoneInputs) {\n    if (window.intlTelInputGlobals.getInstance(phoneInput) === undefined) {\n      intlTelInput(phoneInput, {\n        utilsScript: '/assets/intl-tel-input/utils.js',\n        hiddenInput: phoneInput.dataset.inputname || '',\n        formatOnDisplay: true,\n        separateDialCode: true,\n        initialCountry: document.body.dataset.countryCode || 'us',\n      })\n    }\n  }\n\n  $(function () {\n    var requiredCheckboxes = $('.options :checkbox[required]')\n    requiredCheckboxes.change(function () {\n      if (requiredCheckboxes.is(':checked')) requiredCheckboxes.removeAttr('required')\n      else requiredCheckboxes.attr('required', 'required')\n    })\n  })\n\n  // Handle fancy styling when user is focused on a field\n  $('input, select, textarea').on('focus', function () {\n    $(this).prev('label').addClass('active')\n  })\n  $('input, select, textarea').on('focusout', function () {\n    if (!$(this).val()) $(this).prev('label').removeClass('active')\n  })\n\n  autoexpandDefinedInputs()\n\n  $(\"input[type='number']\").keypress(function (e) {\n    if (e.currentTarget.classList.contains('decimals')) return true\n\n    var regex\n    var str\n    regex = /^[0-9]+$/\n    str = String.fromCharCode(e.charCode ? e.charCode : e.which)\n    if (e.charCode === 0 || regex.test(str)) return true\n\n    e.preventDefault()\n    return false\n  })\n\n  initializeSelect2Fields(null)\n  initializeColorPickerFields()\n\n  initializeButtonToggleFormFields()\n\n  $('.form-field.editable, .form-field.editable svg.fa-pencil-alt').click(function (e) {\n    initializeFormFieldEdits($(this), e)\n  })\n})\n\nexport function initializeFormFieldEdits($this, e) {\n  if ($this.hasClass('fa-pencil-alt')) $this = $($this.closest('.form-field.editable'))\n\n  if ($this.hasClass('active')) return\n\n  if ($(e.target).is('a') || ($(e.target).is('i') && !$(e.target).hasClass('fa-pencil-alt'))) return\n\n  var path = $this.data('path')\n  var $target = $this\n\n  $.ajax({\n    type: 'GET',\n    url: `${path}/edit`,\n    complete(data) {\n      $target.addClass('active')\n      if (data.status === 200) {\n        $target.html(data.responseText)\n        $target.find('select.select2:not([multiple=\"multiple\"])').select2({\n          theme: 'bootstrap',\n          templateSelection: formatSelect2Option, // these will format data-image\n          templateResult: formatSelect2Option, // paths as images if provided\n        })\n        $target.find('select.select2.no-search').select2({\n          theme: 'bootstrap',\n          minimumResultsForSearch: Infinity,\n        })\n        $target.find('select.select2[multiple=\"multiple\"]').select2({\n          theme: 'bootstrap',\n          tags: true,\n          allowClear: false,\n          placeholder: '',\n          insertTag(insertData, tag) {\n            insertData.push({\n              id: tag.id,\n              text: `${tag.text} (New)`,\n            })\n          },\n        })\n        $target.find('select.select2').select2('open')\n        const targetPhoneInput = $target.find('input[type=tel].fancy').get(0)\n        if (\n          targetPhoneInput !== undefined &&\n          window.intlTelInputGlobals.getInstance(targetPhoneInput) === undefined\n        ) {\n          intlTelInput(targetPhoneInput, {\n            utilsScript: '/assets/intl-tel-input/utils.js',\n            formatOnDisplay: true,\n            separateDialCode: true,\n            initialCountry: document.body.dataset.countryCode || 'us',\n          })\n        }\n\n        initializeBootstrapToggle($target)\n\n        initializeDiscardButton($target)\n\n        // click out of body to update\n        $('body').on('click', function (error) {\n          if ($target.hasClass('processing')) return\n\n          if (clickedOutsideInPlaceEditableField(error, $target)) handleEditableFieldUpdate($target, path)\n        })\n\n        //  press enter to update\n        $target.keypress(function (_e) {\n          if ($target.hasClass('processing')) return\n\n          var keycode = _e.keyCode ? _e.keyCode : _e.which\n          if (keycode === '13') handleEditableFieldUpdate($target, path)\n        })\n      } else {\n        $('#global-alerts').append(data.responseText)\n      }\n    },\n  })\n}\n\nfunction initializeBootstrapToggle($target) {\n  let toggle = $target.find('.bootstrap-toggle')\n  toggle.bootstrapToggle({\n    size: 'mini',\n  })\n}\n\nfunction handleDiscardButton($target, tooltip) {\n  var btn = $('#dismiss-x')\n  if (tooltip) {\n    btn.tooltip('show')\n    setTimeout(function () {\n      btn.tooltip('hide')\n    }, 2000)\n  }\n  $target.find('.discardable .fas.fa-xmark').css({ color: 'red' })\n  initializeDiscardButton($target)\n}\n\n/* eslint-disable complexity */\n// This function has a cyclomatic complexity of 9 because of the giant\n// condition to find the targets value -- and I'm not feeling up to refactoring\n// it right now.\nfunction handleEditableFieldUpdate($target, path) {\n  $target.addClass('processing')\n\n  var token = $('meta[name=\"csrf-token\"]').attr('content')\n  var value\n\n  if ($target.find('select.select2').length) {\n    value = $target.find('select.select2').select2().val()\n  } else if ($target.find('.bootstrap-toggle').length) {\n    value = !$target.find('.bootstrap-toggle').parent().hasClass('off')\n  } else if ($target.find('input').is(':checkbox')) {\n    value = $target.find('input')[0].checked\n  } else if ($target.find('input').length) {\n    value = $target.find('input').val()\n    const targetInput = $target.find('input')\n    if (targetInput[0].type === 'tel') {\n      const targetTelInput = window.intlTelInputGlobals.getInstance(targetInput.get(0))\n      value = targetTelInput.getNumber()\n    }\n  } else if ($target.find('textarea').length) {\n    value = $target.find('textarea').val()\n  }\n\n  $.ajax({\n    type: 'PUT',\n    url: path,\n    beforeSend(xhr) {\n      xhr.setRequestHeader('X-CSRF-Token', token)\n    },\n    data: { value },\n    dataType: 'json',\n    success(updatedData) {\n      $target.html(updatedData.partial)\n      $target.removeClass('processing')\n      $target.removeClass('active')\n      $('body').off('click')\n    },\n    error(updatedData) {\n      var responseData = updatedData.responseJSON\n\n      if (\n        !responseData.additional_params ||\n        (responseData.additional_params && !responseData.additional_params.inline_error)\n      ) {\n        $('#global-alerts').append(responseData.partial)\n        $.ajax({\n          type: 'GET',\n          url: path,\n          complete(errorData) {\n            $target.html(errorData.responseText)\n            $target.removeClass('active')\n            $target.removeClass('processing')\n          },\n        })\n        $('body').off('click')\n      } else {\n        $target.html(responseData.partial)\n        $target.removeClass('processing')\n\n        if (responseData.additional_params.intl_phone_input) {\n          const phoneInput = $target.find('input[type=tel].fancy').get(0)\n\n          if (phoneInput !== undefined && window.intlTelInputGlobals.getInstance(phoneInput) === undefined) {\n            intlTelInput(phoneInput, {\n              utilsScript: '/assets/intl-tel-input/utils.js',\n              formatOnDisplay: true,\n              separateDialCode: true,\n              initialCountry: document.body.dataset.countryCode || 'us',\n            })\n          }\n        }\n\n        handleDiscardButton($target, responseData.additional_params.dismissal_tooltip)\n      }\n    },\n  })\n}\n/* eslint-enable complexity*/\n", "import {\n  formatSelect2Option,\n  initializeSelect2Fields,\n  findCheckedCheckBoxes,\n  initializeSelectAllCheckboxes,\n  initializeColorPickerFields,\n  initializeButtonToggleFormFields,\n  autoexpandDefinedInputs,\n  clickedOutsideInPlaceEditableField,\n  initializeDiscardButton,\n  initializeFormFieldEdits,\n} from '../../assets/javascripts/forms'\n\nwindow.formatSelect2Option = formatSelect2Option\nwindow.initializeSelect2Fields = initializeSelect2Fields\nwindow.findCheckedCheckBoxes = findCheckedCheckBoxes\nwindow.initializeSelectAllCheckboxes = initializeSelectAllCheckboxes\nwindow.initializeColorPickerFields = initializeColorPickerFields\nwindow.initializeButtonToggleFormFields = initializeButtonToggleFormFields\nwindow.autoexpandDefinedInputs = autoexpandDefinedInputs\nwindow.clickedOutsideInPlaceEditableField = clickedOutsideInPlaceEditableField\nwindow.initializeDiscardButton = initializeDiscardButton\nwindow.initializeFormFieldEdits = initializeFormFieldEdits\n", "/* global initializeSelect2Fields */\n/* global initializeButtonToggleFormFields */\n\n// eslint-disable-next-line no-unused-vars\nexport function initializeAdditionalInfoModalContent() {\n  'use strict'\n\n  $(function () {\n    initializeSelect2Fields()\n    initializeButtonToggleFormFields()\n  })\n}\n", "import { initializeAdditionalInfoModalContent } from '../../assets/javascripts/init_modal_content'\n\nwindow.initializeAdditionalInfoModalContent = initializeAdditionalInfoModalContent\n", "/* eslint-env jquery */\n\nfunction handleLazyLoadResponse(target, data) {\n  'use strict'\n\n  target.html(data.responseText)\n  if (data.status === 200) {\n    loadLazyPartials(target)\n    target.find('.more-results-footer .lazy-load-more-results').on('click', function () {\n      var path = $(this).data('path')\n      loadLazyPartial(path, $(this).closest('.more-results-footer'), false)\n    })\n    target.addClass('lazy-loaded')\n    target.removeClass('lazy-loading')\n    target.trigger('lazy-load:complete')\n  }\n}\n\nexport function loadLazyPartial(path, target, isReload, fadeIn) {\n  'use strict'\n\n  target.addClass('lazy-loading')\n\n  if (isReload === undefined) isReload = true\n\n  if (fadeIn === undefined) fadeIn = isReload\n\n  var request = $.ajax({\n    type: 'GET',\n    url: path,\n    dataType: 'html',\n    complete(data) {\n      if (fadeIn) {\n        target.fadeOut('fast', function () {\n          handleLazyLoadResponse(target, data)\n          target.fadeIn('fast')\n        })\n      } else {\n        handleLazyLoadResponse(target, data)\n      }\n    },\n  })\n\n  if (isReload && target.find('.loading-small').length > 0) {\n    setTimeout(function () {\n      if (request.readyState !== 0 && request.readyState !== 4) {\n        target.find('.loading-small').hide()\n        target.find('.loading-small').removeClass('hidden')\n        target.find('.loading-small').fadeIn('fast')\n      }\n    }, 2000)\n  }\n\n  return request\n}\n\nfunction loadLazyPartials(parent) {\n  'use strict'\n\n  var $containers = []\n  if (parent === undefined) $containers = $('.lazy-load:not(.lazy-loading):not(.lazy-loaded)')\n  else $containers = $(parent).find('.lazy-load:not(.lazy-loading):not(.lazy-loaded)')\n\n  $containers.each(function () {\n    var $this = $(this)\n    if ($this.find('.auto-results').length && $this.find('.auto-results').css('display') === 'none') {\n      // why would you have a noop branch...\n    } else {\n      var path = $this.data('path')\n      loadLazyPartial(path, $this, false)\n    }\n  })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  loadLazyPartials()\n\n  window.onscroll = function () {\n    loadLazyPartials()\n  }\n})\n", "import { loadLazyPartial } from '../../assets/javascripts/lazy_load'\n\nwindow.loadLazyPartial = loadLazyPartial\n", "/* eslint-env jquery */\n\n/* global initializeDropdownTabs */\n/* eslint no-use-before-define: 0 */\n/* global initializeAdditionalInfoModalContent */\n/* global initializeInfiniteViewAll */\n/* global initializeTooltips */\n/* global Turbo */\n/* global initializeSelectAllCheckboxes */\n\nfunction updateStudentStatus(container, path, button) {\n  'use strict'\n\n  button.attr('disabled', true)\n\n  var token = $('meta[name=\"csrf-token\"]').attr('content')\n  $.ajax({\n    type: 'PUT',\n    url: path,\n    beforeSend(xhr) {\n      xhr.setRequestHeader('X-CSRF-Token', token)\n    },\n    complete(data) {\n      if (data.status === 200) {\n        handleUpdateStudentStatusResponse(container, path, button, data)\n      } else if (data.status === 400) {\n        $('#update-student-modal').html('<div class=\"spinner spinner-grow center\" />')\n        $('#update-student-modal').modal('show')\n        $('#update-student-modal').on('hidden.bs.modal', function () {\n          $('#update-student-modal').unbind()\n        })\n        $('#update-student-modal').html(data.responseText)\n        $('#update-student-modal')\n          .find('form')\n          .on('ajax:complete', function (e) {\n            if (e.originalEvent.detail[0].status === 200) {\n              getStudentStatus(container, path, null)\n            } else {\n              $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n              $('#update-student-modal').modal('hide')\n            }\n          })\n        $('#update-student-modal')\n          .find(\"button:contains('Cancel'), button.close\")\n          .on('click', function () {\n            getStudentStatus(container, path, null)\n          })\n        return false\n      } else {\n        $('#global-alerts').append(data.responseText)\n        getStudentStatus(container, path, button)\n        return false\n      }\n      return false\n    },\n  })\n  return true\n}\n\nexport function initializeStudentStatusDropdowns(parent) {\n  'use strict'\n\n  initializeDropdownTabs($(parent))\n\n  $(parent)\n    .find('.status-modifier .dropdown-tabs-menu  li a')\n    .on('voltage:dropdown-tabs:selected', function () {\n      var $this = $(this)\n      var $target = $this.closest('.student-wrapper')\n      var path = $this.data('path')\n      var $parentButton = $this.closest('.dropdown-tabs').find('button')\n\n      return updateStudentStatus($target, path, $parentButton)\n    })\n}\n\nfunction handleAdditionalInfoNeededUpdateStudentResponse(container, path, button, data) {\n  'use strict'\n\n  $('#update-student-modal').html(data.responseText)\n  initializeAdditionalInfoModalContent()\n  $('#update-student-modal').modal('show')\n  $('#update-student-modal').on('hidden.bs.modal', function () {\n    $('#update-student-modal').unbind()\n    getStudentStatus(container, path, button)\n  })\n  $('#update-student-modal')\n    .find('form')\n    .on('ajax:complete', function (e) {\n      if (e.originalEvent.detail[0].status === 200) {\n        updateStudentStatus(container, path, button)\n      } else {\n        $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n        $('#update-student-modal').modal('hide')\n      }\n    })\n}\n\nfunction handleUpdateStudentStatusResponse(container, path, button, data) {\n  'use strict'\n\n  if (data.status === 200) {\n    if ($('.student-wrapper').length === 0) {\n      $('#update-student-modal').unbind()\n      $('#update-student-modal').modal('hide')\n      Turbo.visit(window.location.toString(), { action: 'replace' })\n    } else {\n      container.fadeOut('fast', function () {\n        $('#update-student-modal').unbind()\n        $('#update-student-modal').modal('hide')\n        container.html(data.responseText)\n        initializeTooltips(container)\n        initializeStudentStatusDropdowns(container)\n        initializeSelectAllCheckboxes(container.find(\"input.select-all-item[type='checkbox']\"), false)\n        initializeStudentAttendanceLog(container)\n        container.fadeIn('fast')\n      })\n    }\n  } else if (data.status === 400) {\n    handleAdditionalInfoNeededUpdateStudentResponse(container, path, button, data)\n  } else if (data.status === 401) {\n    $('#global-alerts').append(data.responseText)\n    return false\n  } else if (data.status === 404) {\n    $('#global-alerts').append(data.responseText)\n    return false\n  } else {\n    $('#global-alerts').append(data.responseText)\n    getStudentStatus(container, path, button)\n    return false\n  }\n\n  return true\n}\n\nfunction getStudentStatus(container, path, button) {\n  'use strict'\n\n  if (button !== null) button.attr('disabled', true)\n\n  $.ajax({\n    type: 'GET',\n    url: path,\n    complete(data) {\n      return handleUpdateStudentStatusResponse(container, path, button, data)\n    },\n  })\n}\n\nfunction populateProgramAttendances(path, programId) {\n  'use strict'\n\n  $.ajax({\n    type: 'GET',\n    url: path,\n    data: { programId },\n    complete(data) {\n      var $table = $('.attendance-base-container').find('table')\n      var $footer = $('.attendance-base-container').find('.footer')\n\n      $table.html(data.responseJSON.table_data)\n      $footer.html(data.responseJSON.footer)\n      initializeViewMoreAttendancesActionable($('.attendance-base-container a.view-more-results'))\n      initializeInfiniteViewAll($('.attendance-base-container a.view-all'), $('.attendance-base-container'))\n      initializeAttendanceDelete()\n      initializeSelectAllCheckboxes($(\".attendance-base-container input[type='checkbox']\"), true)\n    },\n  })\n}\n\nfunction initializeViewMoreAttendancesActionable(actionableElement) {\n  'use strict'\n\n  $(actionableElement).on('click', function () {\n    var $this = $(this)\n    var $table = $(this).closest('.attendance-base-container').find('table')\n    var $footer = $(this).closest('.attendance-base-container').find('.footer')\n    var path = $this.data('path')\n\n    $.ajax({\n      type: 'GET',\n      url: path,\n      complete(data) {\n        $table.append(data.responseJSON.table_data)\n        $footer.html(data.responseJSON.footer)\n        if (data.status === 200) {\n          initializeViewMoreAttendancesActionable($footer.find('.view-more-results'))\n          initializeAttendanceDelete()\n\n          $('.attendance-base-container input.select-all[type=checkbox]:checked').prop('checked', false)\n        } else {\n          $('#global-alerts').append(data.responseText)\n        }\n      },\n    })\n  })\n}\n\nexport function initializeAttendanceLogProgramSelector(selectedProgram) {\n  'use strict'\n\n  if ($('#student-programs-selector').length) {\n    var programAttendanceContainerPath = $('.program-attendance-container').data('path')\n    var initialSelectedProgram\n    if (selectedProgram === undefined) {\n      initialSelectedProgram = $('#student-programs-selector').find('.selected')[0].getAttribute('value')\n    } else {\n      initialSelectedProgram = selectedProgram\n    }\n\n    populateProgramAttendances(programAttendanceContainerPath, initialSelectedProgram)\n\n    $('#student-programs-selector .select-option').on('click', function (e) {\n      var target = e.target\n      var programId = target.getAttribute('value')\n      var isSelected = target.classList.contains('selected')\n\n      // No need to load again if it's already selected.\n      if (isSelected) return\n\n      programAttendanceContainerPath = $('.program-attendance-container').data('path')\n\n      // Remove any \"selected\" classes\n      $('#student-programs-selector .select-option').each(function () {\n        this.classList.remove('selected')\n      })\n\n      // Add \"selected\" back to just this element\n      target.classList.add('selected')\n\n      populateProgramAttendances(programAttendanceContainerPath, programId)\n    })\n  }\n}\n\nexport function initializeStudentAttendanceLog(parent) {\n  'use strict'\n\n  if ($('.person-profile').length) {\n    var $this = $(this)\n    var path = $this.data('path')\n    $.ajax({\n      type: 'GET',\n      url: path,\n      complete() {\n        initializeAttendanceLogProgramSelector()\n      },\n    })\n  }\n\n  $(parent)\n    .find('a.student-attendance-log')\n    .on('click', function () {\n      var urlPath = $(this).data('path')\n      $('#update-student-modal').html('<div class=\"spinner spinner-grow center\" />')\n      $('#update-student-modal').modal('show')\n      $('#update-student-modal').on('hidden.bs.modal', function () {\n        $('#update-student-modal').unbind()\n      })\n\n      $.ajax({\n        type: 'GET',\n        url: urlPath,\n        complete(data) {\n          $('#update-student-modal').html(data.responseText)\n          initializeAdditionalInfoModalContent()\n          initializeAttendanceLogProgramSelector()\n        },\n      })\n    })\n}\n\nfunction initializeAttendanceDelete() {\n  'use strict'\n\n  var deleteButtonElement = $('.btn.delete-attendances')\n  var path = $(deleteButtonElement).data('path')\n  var programId = $('.student-attendance-log-items #student-programs-selector .selected').attr('value')\n\n  $(deleteButtonElement).on('click', function () {\n    var checkedAttendanceCheckboxes = $(\n      '.program-attendance-container input.select-all-item[type=checkbox]:checked',\n    )\n    var selectedAttendanceIds = $(checkedAttendanceCheckboxes)\n      .map(function () {\n        return parseInt($(this).attr('id').replace('attendance_', ''))\n      })\n      .toArray()\n\n    $.ajax({\n      type: 'POST',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n      },\n      data: {\n        programId,\n        attendanceIds: selectedAttendanceIds,\n      },\n      complete(data) {\n        if (data.status !== 200) $('#global-alerts').append(data.responseText)\n\n        return false\n      },\n    })\n\n    return true\n  })\n}\n\nfunction initializeStudentDelete(element) {\n  'use strict'\n\n  $(element).on('click', function (e) {\n    e.preventDefault()\n    var path = element.data('path')\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n    $.ajax({\n      type: 'DELETE',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      complete(data) {\n        if (data.status === 400) {\n          $('#update-student-modal').html('<div class=\"spinner spinner-grow center\" />')\n          $('#update-student-modal').modal('show')\n          $('#update-student-modal').on('hidden.bs.modal', function () {\n            $('#update-student-modal').unbind()\n          })\n          $('#update-student-modal').html(data.responseText)\n          return false\n        }\n        $('#global-alerts').append(data.responseText)\n        return false\n      },\n    })\n    return true\n  })\n}\n\nexport function initializeStudentRestore(element) {\n  'use strict'\n\n  $(element).on('click', function (e) {\n    e.preventDefault()\n    var path = $(e.target).data('path')\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n    $.ajax({\n      type: 'PUT',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n    })\n    return true\n  })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  var cw = $('.profile-photo').width()\n  $('.profile-photo').css({ height: `${cw}px` })\n\n  $(window).resize(function () {\n    var width = $('.profile-photo').width()\n    $('.profile-photo').css({ height: `${width}px` })\n  })\n\n  initializeStudentStatusDropdowns($('#student-profile.panel.left-sidebar'))\n  initializeStudentDelete($('#student-delete'))\n})\n", "import {\n  initializeStudentStatusDropdowns,\n  initializeAttendanceLogProgramSelector,\n  initializeStudentAttendanceLog,\n} from '../../assets/javascripts/school/students'\n\nwindow.initializeStudentStatusDropdowns = initializeStudentStatusDropdowns\nwindow.initializeAttendanceLogProgramSelector = initializeAttendanceLogProgramSelector\nwindow.initializeStudentAttendanceLog = initializeStudentAttendanceLog\n", "/* eslint-env jquery */\n/* global Userback */\n/* eslint no-global-assign: 0 */\n/* eslint no-use-before-define: 0 */\n/* eslint camelcase: 0 */\n/* eslint no-unused-vars: 0 */\n/* eslint no-native-reassign: 0 */\n\nUserback = window.Userback || {}\n\nexport function initializeFeedback() {\n  'use strict'\n\n  Userback.open('capture')\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  if ($('body.has-feedback').length) {\n    var projectId = $('body').data('feedback-project')\n    Userback.access_token = `8566|${projectId}|BcbFm1QUKVNOwg4RcNBWdJ4xc5YRBRY7m1I47JAqsQ65v8B9Cq`\n    Userback.widget_settings = {\n      language: $('body').data('locale'),\n    }\n    Userback.email = $('body').data('user-email')\n    Userback.user_data = {\n      id: $('body').data('user-id'),\n      info: {\n        name: $('body').data('user-name'),\n        school_name: $('body').data('school-name'),\n        school_id: $('body').data('school-id'),\n      },\n    }\n    ;(function (id) {\n      var s = document.createElement('script')\n      s.async = 1\n      s.src = 'https://static.userback.io/widget/v1.js'\n      var parent_node = document.head || document.body\n      parent_node.appendChild(s)\n    })('userback-sdk')\n\n    // 15046 is the default project ID for General Feedback (production bugs/feature reqs/etc).\n    // 15048 is the Beta Feedback project -- we want it to be active but hidden so that we can\n    // manually render the button in sections that we care about.\n    var hide = projectId === 15048\n    Userback.widget_settings.autohide = hide\n\n    $('.feedback-initializer').click(function () {\n      Userback.open()\n    })\n  }\n})\n", "import { initializeFeedback } from '../../assets/javascripts/support'\n\nwindow.initializeFeedback = initializeFeedback\n", "/* global AdobeDC */\n\nexport const DEFAULT_TIMEOUT = 15000\n\n// eslint-disable-next-line no-unused-vars\nexport function addPDFPreview(target) {\n  const waitPromise = (ms) => new Promise((resolve) => setTimeout(resolve, ms))\n  const pdfTimeout = (pdfPromise, ms) =>\n    Promise.race([\n      pdfPromise,\n      waitPromise(ms).then(() => {\n        throw new Error(`PDF Viewer timeout after ${ms} ms`)\n      }),\n    ])\n\n  const adobeDCView = new AdobeDC.View({\n    clientId: target.dataset.adobeClientId,\n    divId: target.id,\n  })\n  const previewFilePromise = adobeDCView.previewFile(\n    {\n      content: { location: { url: target.dataset.path } },\n      metaData: { fileName: target.dataset.name },\n    },\n    {\n      embedMode: 'SIZED_CONTAINER',\n    },\n  )\n\n  pdfTimeout(previewFilePromise, DEFAULT_TIMEOUT).catch(() => {\n    // eslint-disable-next-line max-len\n    const objectElement = `<object data='${target.dataset.path}' class=\"h-full\" type: 'application/pdf' width=\"100%\" height:\"100%\"></object>`\n    target.innerHTML = objectElement\n  })\n}\n", "import { addPDFPreview } from '../../assets/javascripts/adobe_pdf'\n\nwindow.addPDFPreview = addPDFPreview\n", "// eslint-disable-next-line no-unused-vars\nexport function initializeClipboardCopyButton(parent) {\n  'use strict'\n\n  $(parent)\n    .find('.copy-btn')\n    .unbind()\n    .on('click', function () {\n      var btn = $(this)\n      btn.tooltip('show')\n      setTimeout(function () {\n        btn.tooltip('hide')\n      }, 1000)\n\n      $(parent).find('.copiable').removeClass('hidden')\n      $(parent).find('.copiable').select()\n      document.execCommand('copy')\n      $(parent).find('.copiable').addClass('hidden')\n    })\n}\n", "import { initializeClipboardCopyButton } from '../../assets/javascripts/clipboard'\n\nwindow.initializeClipboardCopyButton = initializeClipboardCopyButton\n", "/* global moment */\n/* eslint-disable no-unused-vars */\n\n// TODO: Refactor this to use components + hydration\nexport function buildListViewElement(segs, calendar) {\n  const content = document.createElement('div')\n  const scroller = document.createElement('div')\n  const list = document.createElement('div')\n  const days = dateRange(calendar.view.currentStart, calendar.view.currentEnd)\n  const segsByDay = sliceSegmentsByDay(segs, calendar)\n  const items = segsByDay.map((_segs, index) => buildListViewItem(_segs, calendar, moment.utc(days[index])))\n\n  content.classList.add('fc-list', 'fc-list-sticky', 'fc-customListView')\n  scroller.classList.add('fc-scroller', 'fc-scroller-liquid')\n  list.classList.add('fc-customListView-list')\n\n  for (const item of items) {\n    list.appendChild(item)\n  }\n\n  scroller.appendChild(list)\n  content.appendChild(scroller)\n\n  return content\n}\n\nfunction buildListViewItem(segs, calendar, date) {\n  const item = document.createElement('div')\n  const itemDate = buildListViewItemDateBit(date, calendar)\n\n  item.classList.add('fc-customListView-item')\n  item.appendChild(itemDate)\n\n  if (segs.length) {\n    const itemEvents = document.createElement('div')\n    const events = segs.map((seg) => buildListViewSegmentAnchor(seg, calendar, itemEvents))\n\n    for (const event of events) {\n      itemEvents.appendChild(event)\n    }\n\n    item.appendChild(itemEvents)\n  }\n\n  return item\n}\n\nexport function buildEventContent(info, showFormFields, calendar) {\n  const eventContent = info.event.extendedProps.eventContent\n  const mainDiv = document.createElement('div')\n  const timeDiv = document.createElement('div')\n  const subjectDiv = document.createElement('div')\n  const subjectLink = document.createElement('a')\n  const titleContainerDiv = document.createElement('div')\n  const titleDiv = document.createElement('div')\n\n  const iconMap = {\n    scheduled: 'fa-calendar-day',\n    rescheduled: 'fa-history',\n    confirmed: 'fa-check-square',\n    noshowed: 'fa-user-slash',\n    todo: 'fa-clipboard-list',\n    overdue: 'fa-exclamation-circle',\n  }\n\n  mainDiv.classList.add('fc-event-main-frame-state')\n  timeDiv.classList.add('fc-event-time')\n  titleContainerDiv.classList.add('fc-event-title-container')\n  titleDiv.classList.add('fc-event-title')\n  titleDiv.classList.add('fc-sticky')\n\n  if (!(info.event.id?.includes('class') || info.event._def?.ui?.classNames?.includes('completed'))) {\n    const htmlDiv = document.createElement('div')\n    const customIcon = document.createElement('i')\n\n    htmlDiv.classList.add('fc-event-custom-icon')\n    customIcon.classList.add('fas')\n    customIcon.classList.add(iconMap[info.event.extendedProps.eventContent])\n\n    htmlDiv.appendChild(customIcon)\n    mainDiv.appendChild(htmlDiv)\n  }\n\n  timeDiv.textContent = info.timeText\n  titleDiv.textContent = info.event.title\n  titleContainerDiv.appendChild(timeDiv)\n  titleContainerDiv.appendChild(titleDiv)\n\n  if (info.event.extendedProps.subject && info.event.extendedProps.subject.name) {\n    const linkIcon = document.createElement('i')\n    linkIcon.classList.add('fas', 'fa-arrow-up-right-from-square', 'pl-1')\n    subjectLink.textContent = info.event.extendedProps.subject.name\n    subjectLink.href = info.event.extendedProps.subject.path\n    subjectLink.target = '_blank'\n    subjectLink.appendChild(linkIcon)\n\n    subjectLink.classList.add('!text-white', '!underline')\n    subjectDiv.appendChild(subjectLink)\n    subjectDiv.classList.add('pt-1')\n    titleDiv.appendChild(subjectDiv)\n  }\n\n  mainDiv.appendChild(titleContainerDiv)\n\n  if (showFormFields && info.event.extendedProps.eventContent !== 'completed') {\n    const formFields = buildListViewFormFields(info, calendar)\n    mainDiv.appendChild(formFields)\n  }\n\n  return mainDiv\n}\n\nfunction buildListViewSegmentAnchor(seg, calendar, parent) {\n  const anchor = document.createElement('a')\n  const eventFrame = document.createElement('div')\n  const start = moment.utc(seg.range.start)\n  const end = moment.utc(seg.range.end)\n  const timeText = `${start.format('h:mm A')} - ${end.format('h:mm A')}`\n\n  anchor.classList.add('fc-event', 'fc-customlistView-event', ...seg.ui.classNames)\n  eventFrame.classList.add('fc-event-main')\n  eventFrame.appendChild(\n    buildEventContent(\n      {\n        timeText,\n        event: seg.def,\n        range: seg.range,\n      },\n      true,\n      calendar,\n    ),\n  )\n\n  parent.classList.add('fc-customListView-item-events')\n\n  anchor.appendChild(eventFrame)\n\n  anchor.addEventListener('click', (jsEvent) => {\n    if (jsEvent.target.href) return\n    if (jsEvent.target.closest('.dropdown')) return\n\n    calendar.trigger('eventClick', {\n      el: anchor,\n      event: seg.def,\n      jsEvent,\n      view: calendar.view,\n    })\n  })\n\n  return anchor\n}\n\nfunction buildListViewItemDateBit(date, calendar) {\n  const itemDate = document.createElement('div')\n  const itemDateMonthBit = document.createElement('div')\n  const itemDateDayBit = document.createElement('div')\n  const itemDateDayOfWeekBit = document.createElement('div')\n  const itemDateWrapper = document.createElement('a')\n  const itemDateMonthDayWrapper = document.createElement('div')\n\n  itemDate.classList.add('fc-customListView-item-date')\n  itemDateMonthBit.classList.add('fc-customListView-item-date-month-bit')\n  itemDateDayBit.classList.add('fc-customListView-item-date-day-bit')\n  itemDateDayOfWeekBit.classList.add('fc-customListView-item-date-day-of-week-bit')\n  itemDateWrapper.classList.add('fc-customListView-item-date-wrapper')\n\n  itemDateMonthBit.textContent = moment(date).format('MMM').toUpperCase()\n  itemDateDayBit.textContent = moment(date).format('D')\n  itemDateDayOfWeekBit.textContent = moment(date).format('ddd')\n\n  itemDateMonthDayWrapper.appendChild(itemDateMonthBit)\n  itemDateMonthDayWrapper.appendChild(itemDateDayOfWeekBit)\n  itemDateWrapper.appendChild(itemDateMonthDayWrapper)\n  itemDateWrapper.appendChild(itemDateDayBit)\n  itemDate.appendChild(itemDateWrapper)\n\n  itemDateWrapper.addEventListener('click', () => {\n    calendar.trigger('navLinkDayClick', date)\n  })\n\n  return itemDate\n}\n\nfunction buildListViewFormFields(info, calendar) {\n  const quickActionsWrapper = document.createElement('div')\n  const eventType = parseEventType(info)\n\n  let values = []\n  if (eventType === 'appointment') {\n    values = ['scheduled', 'rescheduled', 'confirmed', 'no showed', 'completed']\n  } else if (eventType === 'task') {\n    values = ['to do', 'completed']\n  }\n\n  const statusToggler = buildListViewStatusToggler(values, info, calendar)\n\n  quickActionsWrapper.classList.add('fc-customListView-form-fields')\n\n  if (statusToggler) {\n    const statusText = document.createElement('span')\n    statusText.classList.add('fc-customListView-form-status-text')\n    statusText.textContent = 'Status:'\n    quickActionsWrapper.appendChild(statusText)\n    quickActionsWrapper.appendChild(statusToggler)\n  }\n\n  return quickActionsWrapper\n}\n\nfunction buildListViewStatusToggler(values, info, calendar) {\n  const updateCallback = debounce(updateEvent, 500) // debounce to prevent rapid updates\n  if (!values.length) return\n\n  const statusDropdown = document.createElement('div')\n  const statusDropdownToggler = document.createElement('div')\n  const statusDropdownList = document.createElement('ul')\n  const path = info.event.extendedProps.dataPath.replace('/edit', '')\n  const eventType = parseEventType(info)\n\n  statusDropdown.classList.add('dropdown')\n  statusDropdownToggler.classList.add('dropdown-toggle')\n  statusDropdownToggler.setAttribute('data-toggle', 'dropdown')\n  statusDropdownToggler.setAttribute('aria-haspopup', 'true')\n  statusDropdownToggler.setAttribute('aria-expanded', 'false')\n  statusDropdownToggler.setAttribute('role', 'button')\n\n  statusDropdownList.classList.add('dropdown-menu')\n  statusDropdownToggler.textContent = values[0]\n  for (const value of values) {\n    if (value.replace(/\\s/g, '') === info.event.extendedProps.eventContent) {\n      statusDropdownToggler.textContent = value\n    }\n\n    const statusDropdownListItem = document.createElement('li')\n    const statusDropdownListItemLink = document.createElement('a')\n    statusDropdownListItemLink.textContent = value\n    statusDropdownListItemLink.addEventListener('click', () => {\n      statusDropdownToggler.textContent = value\n      updateCallback(path, { [`${eventType}[state]`]: value.replace(/\\s/g, '') }, calendar)\n    })\n    statusDropdownListItem.appendChild(statusDropdownListItemLink)\n    statusDropdownList.appendChild(statusDropdownListItem)\n  }\n\n  statusDropdown.appendChild(statusDropdownToggler)\n  statusDropdown.appendChild(statusDropdownList)\n\n  return statusDropdown\n}\n\nfunction sliceSegmentsByDay(segs, calendar) {\n  const days = dateRange(calendar.view.currentStart, calendar.view.currentEnd)\n\n  return days.map((day) => segs.filter((seg) => moment.utc(day).isSame(moment.utc(seg.range.start), 'day')))\n}\n\nfunction dateRange(start, end) {\n  let days = []\n  for (let day = start; day < end; day.setDate(day.getDate() + 1)) {\n    days.push(new Date(day))\n  }\n\n  return days\n}\n\nfunction updateEvent(path, value, calendar) {\n  path = path.replace('unpersisted_', '')\n\n  const [modifiedPath, oldQueryString] = path.split('?')\n  const queryString = new URLSearchParams(value)\n\n  if (oldQueryString) {\n    queryString.append(...oldQueryString.split('='))\n  }\n\n  fetch(`${modifiedPath}?${queryString}`, {\n    method: 'PUT',\n    headers: {\n      'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]').content,\n      'Content-Type': 'application/json',\n    },\n  }).then((response) => {\n    if (response.ok) {\n      calendar.shouldReloadView = true\n      calendar.refetchEvents()\n      return\n    }\n\n    return response.json()\n  })\n}\n\nfunction parseEventType(info) {\n  let type = info.event.publicId.split('_')[0]\n  if (type === 'class') type = 'class_event'\n  return type\n}\n\nfunction debounce(func, time, immediate) {\n  let timeout\n\n  return (...args) => {\n    const context = this\n    function later() {\n      timeout = null\n      if (!immediate) func.apply(context, args)\n    }\n\n    const callNow = immediate && !timeout\n    clearTimeout(timeout)\n    timeout = setTimeout(later, time)\n    if (callNow) func.apply(context, args)\n  }\n}\n", "import { buildListViewElement, buildEventContent } from '../../assets/javascripts/custom_list_view'\n\nwindow.buildListViewElement = buildListViewElement\nwindow.buildEventContent = buildEventContent\n", "$(document).on('turbo:load', onLoad)\n\nfunction onLoad() {\n  'use strict'\n\n  initializeTooltips()\n}\n\n/* eslint-disable no-unused-vars */\nexport function hideLoadingIndicator() {\n  $('.loading-indicator').addClass('hidden')\n  $('.dim-screen').addClass('hidden')\n}\n\nexport function showLoadingIndicator() {\n  $('.loading-indicator').removeClass('hidden')\n  $('.dim-screen').removeClass('hidden')\n}\n/* eslint-enable no-unused-vars */\n\n// Not actually sure if this actually enables any tooltips?\nfunction initializeTooltips(parent) {\n  var selector = '[data-toggle=\"tooltip\"]'\n  var $elements\n  if (parent === undefined) $elements = $(selector)\n  else $elements = $(parent).find(selector)\n\n  $elements.tooltip({\n    html: true,\n    delay: {\n      show: 250,\n      hide: 100,\n    },\n  })\n}\n", "import { hideLoadingIndicator, showLoadingIndicator } from '../../assets/javascripts/embedded'\n\nwindow.hideLoadingIndicator = hideLoadingIndicator\nwindow.showLoadingIndicator = showLoadingIndicator\n", "/* eslint-disable no-unused-vars */\n\nexport function isMobile() {\n  'use strict'\n  return navigator.userAgent.indexOf('Mob') >= 0\n}\n", "import { isMobile } from '../../assets/javascripts/is_mobile'\n\nwindow.isMobile = isMobile\n", "/**\n * Convert a base64 string in a Blob according to the data and contentType.\n *\n * @param b64Data {String} Pure base64 string without contentType\n * @param contentType {String} the content type of the file i.e (image/jpeg - image/png - text/plain)\n * @param sliceSize {Int} SliceSize to process the byteCharacters\n * @see http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript\n * @return Blob\n */\nexport function b64toBlob(b64Data, contentType, sliceSize) {\n  contentType = contentType || ''\n  sliceSize = sliceSize || 512\n\n  var byteCharacters = atob(b64Data)\n  var byteArrays = []\n\n  for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n    var slice = byteCharacters.slice(offset, offset + sliceSize)\n\n    var byteNumbers = new Array(slice.length)\n    for (var i = 0; i < slice.length; i++) byteNumbers[i] = slice.charCodeAt(i)\n\n    var byteArray = new Uint8Array(byteNumbers)\n\n    byteArrays.push(byteArray)\n  }\n\n  var blob = new Blob(byteArrays, { type: contentType })\n  return blob\n}\n", "import { b64toBlob } from '../../assets/javascripts/signature'\n\nwindow.b64toBlob = b64toBlob\n", "/* global loadLazyPartial */\n\n// TODO: Componentitize Me Captain\n\n// Takes a module by key (#memberships, #attendances)\n// and focuses the nav bar and the module\nexport function highlightModule(selectedModule) {\n  var name = selectedModule.substring(1)\n\n  // scroll back to the top since the default behavior when setting the anchor\n  // is to scroll to an id matching it and we don't want that.\n  // Unless we're mobile, in which case we have to be scrolled down to see the things.\n  if (window.innerWidth > 768) window.scrollTo({ top: 0 })\n\n  focusModules(name)\n  focusNav(name)\n}\n\nfunction showAll() {\n  window.location.hash = ''\n  unfocusModule()\n  unfocusNav()\n}\n\nfunction focusModules(selectedType) {\n  'use strict'\n\n  var $selectedModules = $(`.person-profile #${selectedType}, .dashboard-${selectedType}`)\n  $selectedModules.removeClass('hidden')\n\n  // hide others\n  var possibleModules = $.map($('.person-profile .nav-link, .dashboard .nav-link'), (div) =>\n    div.id.replace(/-nav$/, ''),\n  )\n  possibleModules.forEach(function (module) {\n    if (module !== selectedType) $(`.person-profile #${module}, .dashboard-${module}`).addClass('hidden')\n  })\n\n  // Lazy load if needed\n  var lazyLoad\n  if (selectedType === 'attendances') lazyLoad = $selectedModules.children().find('.lazy-load')\n  else lazyLoad = $selectedModules\n\n  $.each(lazyLoad, function (i, lazyLoadItem) {\n    var item = $(lazyLoadItem)\n    if (item.hasClass('lazy-load') && !item.hasClass('lazy-loaded')) loadLazyPartial(item.data('path'), item)\n  })\n}\n\nfunction focusNav(selectedName) {\n  $('.nav-link').each(function () {\n    $(this).removeClass('active')\n  })\n\n  $(`.nav-link#${selectedName}-nav`).addClass('active')\n}\n\nfunction unfocusModule() {\n  var possible_modules = $.map($('.person-profile .nav-link, .dashboard .nav-link'), (div) =>\n    div.id.replace(/-nav$/, ''),\n  )\n  possible_modules.forEach(function (module) {\n    $(`.person-profile #${module}, .dashboard-${module}`).each(function () {\n      if (this.hasAttribute('data-visible') && !$(this).data('visible')) $(this).addClass('hidden')\n      else $(this).removeClass('hidden')\n    })\n  })\n}\n\nfunction unfocusNav() {\n  $('.nav-link').each(function () {\n    $(this).removeClass('active')\n  })\n\n  $('#all-nav.nav-link').addClass('active')\n}\n\n//\n// Focuses a module that is selected from the nav bar\n//\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  // Mobile select dropdown\n  $('.module-nav-select .mobile-select-menu').on('change', function () {\n    var selectedModule = $(this.value)[0].id.replace(/-nav$/, '')\n    if (selectedModule === 'all') showAll()\n    else highlightModule(`#${selectedModule}`)\n  })\n\n  // Desktop & Tablet nav link\n  $('.nav-link').on('click', function () {\n    var wasActive = $(this).hasClass('active')\n\n    // Toggle shown module\n    var selectedModule = this.id.replace(/-nav$/, '')\n    if (wasActive || selectedModule === 'all') showAll()\n    else highlightModule(`#${selectedModule}`)\n  })\n})\n", "import { highlightModule } from '../../assets/javascripts/school/navbar_highlight'\n\nwindow.highlightModule = highlightModule\n", "/* eslint-disable no-unused-vars */\n/* global $globalAlerts, loadLazyPartial, */\n\nexport function initializeAccountFormSubmit() {\n  $('#student-account')\n    .find('form')\n    .submit(function (e) {\n      var btn = $(this).find(\"input[type='submit']\")\n      $(btn).val('Submitting')\n      $(btn).prop('disabled', true)\n\n      return true\n    })\n\n  $('#student-account')\n    .find('form')\n    .on('ajax:complete', function (e) {\n      var status = e.originalEvent.detail[0].status\n      if (status === 200 || status === 201) {\n        var $target = $(this).closest('.lazy-load')\n        var path = $target[0].dataset.path\n\n        loadLazyPartial(path, $target)\n        if (status === 201) $('#account-created-modal').modal('show')\n      } else {\n        $globalAlerts.append(e.originalEvent.detail[0].responseText)\n      }\n    })\n}\n\nexport function initializeCloseUserAccount() {\n  $('#close-student-account').on('click', function () {\n    $('#confirm-close-account-modal').modal('show')\n  })\n\n  $('#confirm-close-account').on('click', function (e) {\n    e.preventDefault()\n    $(this).addClass('disabled')\n    var path = $('#close-student-account').data('path')\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n    $.ajax({\n      type: 'DELETE',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      complete(data) {\n        $('#confirm-close-account-modal').modal('hide')\n        var $target = $('#student-account')\n        var loadPath = $target.data('path')\n\n        loadLazyPartial(loadPath, $target)\n      },\n    })\n  })\n}\n\nexport function initializeAccountRestrictionChecks() {\n  $('.restriction-check').unbind('click')\n\n  // TODO: Can we abstract this + inventory-item-check?\n  $('.restriction-check').on('click', function () {\n    if ($(this)[0].classList.contains('unchecked')) {\n      $(this).removeClass('unchecked')\n      $(this).addClass('checked')\n      $(this).prev().prop('checked', true)\n    } else {\n      $(this).removeClass('checked')\n      $(this).addClass('unchecked')\n      $(this).prev().prop('checked', false)\n    }\n  })\n}\n\nexport function initializeChangeUserAccountPassword() {\n  $('#student-account #change-password').on('click', function () {\n    var path = $(this).data('path')\n\n    const $modal = $('#change-password-modal')\n    $modal.modal('show')\n\n    $modal.on('click', '.toggle-vis', function () {\n      $(this).toggleClass('fa-eye')\n      $(this).toggleClass('fa-eye-slash')\n      var input = $(this).closest('.password-form').find('input')\n\n      if (input[0].type === 'password') input[0].type = 'text'\n      else input[0].type = 'password'\n    })\n\n    $(document).on('hidden.bs.modal', '#change-password-modal', function () {\n      $('#change-password-modal').find('#password').val('')\n      $('#change-password-modal').find('#password_confirmation').val('')\n      $('#confirm-change-password').attr('disabled', false)\n    })\n\n    $modal.on('click', '#confirm-change-password', function () {\n      var password = $modal.find('#password').val()\n      var confirmation = $modal.find('#password_confirmation').val()\n\n      // TODO: This logic (matching password confirmation and length) should really be\n      // pushed further down the stack, but our user password validation is currently\n      // almost completely non-existant, so that would be a bigger task that it\n      // should be. This can be a part of DEV-5384 maybe.\n      if (password !== confirmation) {\n        $modal.find('#password_confirmation').css({ 'border-bottom-color': '#d9433e' })\n        $modal.find('.no-matchy-error').removeClass('hidden')\n      } else if (password.length < 3) {\n        $modal.find('#password_confirmation').css({ 'border-bottom-color': '#d9433e' })\n        $modal.find('.too-short-error').removeClass('hidden')\n      } else {\n        $modal.find('.no-matchy-error').addClass('hidden')\n        $modal.find('.too-short-error').addClass('hidden')\n        $modal.find('#password_confirmation').css({ 'border-bottom-color': '' })\n        $(this).attr('disabled', true)\n\n        $.ajax({\n          url: path,\n          type: 'PUT',\n          data: { user: { password } },\n          success() {\n            $modal.modal('hide')\n            $('#password-updated-modal').modal('show')\n          },\n        })\n      }\n    })\n  })\n}\n", "import {\n  initializeAccountFormSubmit,\n  initializeCloseUserAccount,\n  initializeAccountRestrictionChecks,\n  initializeChangeUserAccountPassword,\n} from '../../assets/javascripts/school/people/profile/student_user_account'\n\nwindow.initializeAccountFormSubmit = initializeAccountFormSubmit\nwindow.initializeCloseUserAccount = initializeCloseUserAccount\nwindow.initializeAccountRestrictionChecks = initializeAccountRestrictionChecks\nwindow.initializeChangeUserAccountPassword = initializeChangeUserAccountPassword\n", "/* global initializeAttendanceLogProgramSelector */\n/* global initializeTooltips */\n/* global initializeDropdownTabs */\n/* global loadLazyPartial */\n/* global highlightModule */\n/* global initializeAccountFormSubmit */\n/* global initializeCloseUserAccount */\n/* global initializeAccountRestrictionChecks */\n/* global initializeChangeUserAccountPassword */\n/* global $updateEventModal */\n/* global initializeAdditionalInfoModalContent */\n/* global gon, filestack */\n\nexport function registerProfileModulesDropdownClickEvents(module) {\n  'use strict'\n  $(module)\n    .find('.dropdown-tabs .dropdown-tabs-menu li a')\n    .on('voltage:dropdown-tabs:selected', function () {\n      var $this = $(this)\n      var path = $this.data('path')\n\n      if (module.hasClass('.lazy-load')) {\n        var $target = $(this).closest('.lazy-load')\n        loadLazyPartial(path, $target)\n      } else {\n        module[0].src = path\n      }\n    })\n}\n\nexport function initializeViewAllProfileItemsActionable(actionableElement) {\n  'use strict'\n\n  $(actionableElement).on('click', function () {\n    var $this = $(this)\n    var $table = $(this).closest('.panel.module').find('table')\n    var $footer = $(this).closest('.panel.module').find('.footer')\n    var path = $this.data('path')\n    if (path === undefined) return\n\n    $.ajax({\n      type: 'GET',\n      url: path,\n      complete(data) {\n        $table.find('tbody').html(data.responseJSON.table_data)\n        $footer.html(data.responseJSON.footer)\n        if (data.status === 200) {\n          initializeTooltips($table)\n          initializeAgreementDeletes()\n        }\n      },\n    })\n  })\n}\n\nexport function initializeViewMoreProfileItemsActionable(actionableElement) {\n  'use strict'\n\n  $(actionableElement).on('click', function () {\n    var $this = $(this)\n    var $table = $(this).closest('.panel.module').find('table')\n    var $footer = $(this).closest('.panel.module').find('.footer')\n    var path = $this.data('path')\n\n    $.ajax({\n      type: 'GET',\n      url: path,\n      complete(data) {\n        $table.append(data.responseJSON.table_data)\n        $footer.html(data.responseJSON.footer)\n        if (data.status === 200) {\n          initializeTooltips($table)\n          initializeViewMoreProfileItemsActionable($footer.find('.view-more-results'))\n          initializeViewAllProfileItemsActionable($footer.find('.view-all'))\n          initializeInfiniteViewAll($footer.find('.view-all'))\n          initializeAgreementDeletes()\n          initializeHoverTooltips($table)\n          initializePaymentNotesModal($table)\n          initializeDocumentDeletes()\n        }\n      },\n    })\n  })\n}\n\nexport function initializeInfiniteViewAll(actionableElement, module) {\n  'use strict'\n\n  if (module === undefined) module = $(actionableElement).closest('.panel.module')\n\n  $(actionableElement).click(function () {\n    var $viewMoreResults = module.find('.view-more-results')\n    var $viewAllResults = module.find('.view-all')\n    var $infinityScrollable = module.find('.infinity-scroll')\n\n    $viewMoreResults.click()\n    $viewMoreResults.addClass('disabled')\n    $viewAllResults.addClass('disabled')\n\n    function onScroll() {\n      $infinityScrollable.scroll(function () {\n        var bottom = this.scrollTop >= this.scrollHeight - this.offsetHeight\n\n        if (bottom) {\n          $('.history-spinner').remove()\n          $(this).append(\"<span class='history-spinner fa fa-spinner fa-spin' <span/>\")\n\n          if ($(this).parent().find('.btn-group.at-bottom').length > 0) {\n            $('.history-spinner').remove()\n          } else {\n            $viewMoreResults = module.find('.view-more-results')\n            $viewMoreResults.click()\n            $(this).unbind('scroll')\n\n            if ($viewMoreResults.length <= 0) $('.history-spinner').remove()\n          }\n        }\n      })\n    }\n\n    onScroll()\n\n    $(document).ajaxComplete(function () {\n      module.find('.view-more-results').addClass('disabled')\n      module.find('.view-all').addClass('disabled')\n      $('.history-spinner').remove()\n      $('input.select-all[type=checkbox]:checked').prop('checked', false)\n      onScroll()\n    })\n  })\n}\n\nfunction initializeFileUpload() {\n  var post_url = $('#customer-document-upload').data('postUrl')\n  var options = {\n    maxFiles: 5,\n    fromSources: ['local_file_system', 'url'],\n    displayMode: 'inline',\n    container: '#document-upload-inline',\n    onUploadDone(files) {\n      store_filestack_data(files.filesUploaded, post_url)\n\n      $('#add-documents-modal').modal('hide')\n    },\n  }\n\n  var client = filestack.init(gon.filestack_api_key)\n  client.picker(options).open()\n\n  $('#customer-document-upload').click(function (e) {\n    e.preventDefault()\n\n    $('#add-documents-modal').modal('show')\n  })\n\n  function store_filestack_data(filesUploaded, url) {\n    jQuery.ajax({\n      type: 'POST',\n      url,\n      data: { filestack_attributes: JSON.stringify(filesUploaded) },\n      success() {\n        if ($('.lazy-load#documents').length) {\n          var target = $('.lazy-load#documents')\n          var path = target[0].dataset.path\n\n          loadLazyPartial(path, target)\n        } else {\n          let frame = document.querySelector('#documents')\n          if (frame) frame.reload()\n        }\n      },\n    })\n  }\n}\n\nfunction initializeDocumentDeletes() {\n  $('.delete-documents').on('click', function (e) {\n    e.preventDefault()\n\n    var document_ids = []\n    $('#documents')\n      .find('.documents-checkbox:checked')\n      .each(function (i, checkbox) {\n        document_ids.push(checkbox.id)\n      })\n\n    remove_filestack_data({ document_ids }, $('.delete-documents').data('path'))\n  })\n\n  function remove_filestack_data(data, path) {\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n    $.ajax({\n      type: 'DELETE',\n      url: path,\n      data,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      success() {\n        if ($('.lazy-load#documents').length) {\n          var target = $('.lazy-load#documents')\n          var docsPath = target[0].dataset.path\n\n          loadLazyPartial(docsPath, target)\n        } else {\n          let frame = document.querySelector('turbo-frame#documents')\n          if (frame) frame.reload()\n        }\n      },\n    })\n  }\n}\n\nexport function initializeAgreementDeletes() {\n  'use strict'\n\n  $('.student-agreement-delete, .prospect-agreement-delete').on('click', function (e) {\n    e.preventDefault()\n    var path = $(this).data('path')\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n    $.ajax({\n      type: 'DELETE',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      complete(data) {\n        if (data.status !== 200) $('#global-alerts').append(data.responseText)\n\n        var target = $('.lazy-load#agreements')\n        loadLazyPartial(target[0].dataset.path, target)\n        return false\n      },\n    })\n\n    return true\n  })\n}\n\nfunction initializeCommentDeletes() {\n  'use strict'\n\n  $('.person-comment-delete').on('click', function (e) {\n    e.preventDefault()\n    var path = $(this).data('path')\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n    $.ajax({\n      type: 'DELETE',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      complete(data) {\n        if (data.status !== 200) $('#global-alerts').append(data.responseText)\n        let frame = document.querySelector('turbo-frame#comments')\n        if (frame) frame.reload()\n        return false\n      },\n    })\n\n    return true\n  })\n}\n\nfunction initializeAddNewComment(actionableElement) {\n  actionableElement.find('.new-comment').on('click', function (e) {\n    e.preventDefault()\n\n    var $globalAlerts = $('#global-alerts')\n    var path = $(this)[0].dataset.path\n    var $modal = $('#comment-modal')\n\n    $modal.html('<div class=\"spinner spinner-grow center\" />')\n    $modal.modal('show')\n\n    $.get(path).done(function (data) {\n      $modal.html(data)\n      $modal.modal()\n\n      $modal.find('.btn-primary').attr('disabled', 'disabled')\n      $modal.find('textarea').on('input', function () {\n        if (this.value.match('^ *$')) $modal.find('.btn-primary').attr('disabled', 'disabled')\n        else $modal.find('.btn-primary').removeAttr('disabled')\n      })\n\n      $modal.find('form').on('ajax:complete', function (_e) {\n        if (_e.originalEvent.detail[0].status === 200) {\n          if ($(this.closest('.lazy-load')).length) {\n            var $target = $(this).closest('.lazy-load')\n            var loadPath = $target[0].dataset.path\n\n            loadLazyPartial(loadPath, $target)\n          } else {\n            let frame = document.querySelector('turbo-frame#comments')\n            if (frame) frame.reload()\n          }\n\n          $modal.modal('hide')\n        } else {\n          $globalAlerts.append(e.originalEvent.detail[0].responseText)\n          $updateEventModal.modal('hide')\n        }\n      })\n    })\n  })\n}\n\nfunction defaultProgressionLevelSuccess(data) {\n  $('.program-progression-level').html(data.responseText)\n  $('.program-progression-level').closest('.item').removeClass('hidden')\n}\n\nfunction getProgramProgressionLevels(student_program_progression_levels_path, onlyExisting, onComplete) {\n  'use strict'\n  onComplete = onComplete || defaultProgressionLevelSuccess\n  onlyExisting = onlyExisting || false\n  $.ajax({\n    type: 'GET',\n    data: { only_existing: onlyExisting },\n    url: student_program_progression_levels_path,\n    complete: onComplete,\n  })\n}\n\nfunction initializeAttendanceModuleActionSelector() {\n  'use strict'\n\n  $('#student #attendances ul li a').on('click', function (e) {\n    e.preventDefault()\n\n    var $this = $(this)\n    var path = $this.data('path')\n    var data = {}\n    var includeAttendances = $this.data('editable')\n\n    var checkedAttendanceCheckboxes = $(\n      '.program-attendance-container input.select-all-item[type=checkbox]:checked',\n    )\n    if (includeAttendances) {\n      if (checkedAttendanceCheckboxes.length > 0) {\n        data.attendance_ids = $(checkedAttendanceCheckboxes)\n          .map(function () {\n            return parseInt($(this).attr('id').replace('attendance_', ''))\n          })\n          .toArray()\n      }\n    }\n\n    initializeInfiniteViewAll($(this).find('a.view-all'))\n\n    $('#update-student-modal').html('<div class=\"spinner spinner-grow center\" />')\n    $('#update-student-modal').modal('show')\n    $('#update-student-modal').on('hidden.bs.modal', function () {\n      $('#update-student-modal').unbind()\n    })\n    $.ajax({\n      type: 'GET',\n      url: path,\n      data,\n      complete(_data) {\n        $('#update-student-modal').html(_data.responseText)\n        initializeAdditionalInfoModalContent()\n        var $modalSubmitButton = $('#update-student-modal').find(\"form button[type='submit']\")\n        if (!includeAttendances || (checkedAttendanceCheckboxes && checkedAttendanceCheckboxes.length === 0)) {\n          $modalSubmitButton.addClass('disabled')\n          $modalSubmitButton.prop('disabled', true)\n        }\n        $('#attendance-program').on('select2:select', function (_e) {\n          _e.preventDefault()\n\n          var program_progression_levels_path = $(this).select2('data')[0].element.dataset.path\n          getProgramProgressionLevels(program_progression_levels_path, true)\n\n          $modalSubmitButton.removeClass('disabled')\n          $modalSubmitButton.prop('disabled', false)\n        })\n        $('#update-student-modal')\n          .find('form')\n          .on('ajax:complete', function (_e) {\n            if (_e.originalEvent.detail[0].status === 200) {\n              $('#update-student-modal').unbind()\n              $('#update-student-modal').modal('hide')\n\n              var lazy_load_path = $('#student #attendances .lazy-load').data('path')\n              loadLazyPartial(lazy_load_path, $('#student #attendances .lazy-load'))\n            } else {\n              $('#global-alerts').append(_e.originalEvent.detail[0].responseText)\n              $('#update-student-modal').modal('hide')\n            }\n          })\n      },\n    })\n\n    return false\n  })\n}\n\nfunction initializeTabModule(clickableElements) {\n  clickableElements.on('click', function (e) {\n    e.preventDefault()\n    var path = $(this).data('path')\n\n    var $target = $(this).closest('.lazy-load')\n\n    // this sucks and refreshes the whole module\n    if (path && $target.length > 0) {\n      loadLazyPartial(path, $target)\n    } else if (path) {\n      let frame = $(this).closest('turbo-frame')\n      if (frame) frame[0].src = path\n    }\n  })\n}\n\nfunction initializeHoverTooltips($this) {\n  $this.find('.hover-tooltip').hover(\n    function () {\n      $(this).find('[data-toggle=\"tooltip\"]').tooltip('show')\n    },\n    function () {\n      $(this).find('[data-toggle=\"tooltip\"]').tooltip('hide')\n    },\n  )\n}\n\nfunction initializePaymentNotesModal($this) {\n  $this.find('.payment-notes').on('click', function () {\n    if ($(this).hasClass('disabled')) return\n\n    var $row = $(this)\n    var path = $(this).data('path')\n    var content = $(this).data('content')\n    var $modal = $('#add-payment-notes-modal')\n\n    $('#add-payment-notes-modal #add-notes-field').val(content)\n    $modal.find('form').attr('action', path)\n    $modal.modal('show')\n    $('#add-payment-notes-modal #add-notes-field').focus()\n\n    $('#add-payment-notes-modal')\n      .find('form')\n      .on('ajax:complete', function () {\n        content = $('#add-notes-field').val()\n        if (content === '') {\n          $row.removeClass('fa-edit-note')\n          $row.addClass('fa-add-note')\n          $row.data('content', content)\n        } else {\n          $row.removeClass('fa-add-note')\n          $row.addClass('fa-edit-note')\n          $row.data('content', content)\n        }\n\n        $('#add-payment-notes-modal').modal('hide')\n      })\n  })\n}\n\nfunction initializeDropToggleThing($toggleable) {\n  $toggleable.on('click', function (e) {\n    if ($(e.target).is('a')) return true\n\n    e.preventDefault()\n    const row_id = $(this).data('id') || ''\n    const el = document.getElementById(`drop-toggle-id-${row_id}`)\n\n    // flip the arrow thingy\n    const icon = $(this).find('svg')\n    if (icon.css('transform') === 'none') icon.css({ transform: 'rotate(180deg)' })\n    else icon.css({ transform: 'none' })\n\n    el.hidden = !el.hidden\n  })\n}\n\nexport function handleAttendanceModuleContextSwitching() {\n  $('#attendance-log-context, #attendance-award-context').on('click', function () {\n    var $this = $(this)\n    var $target = $(this).closest('.lazy-load')\n    var path = $this.data('path')\n    var $footer = $('.attendance-base-container').find('.footer')\n    $footer.html('')\n    if ($this[0].id === 'attendance-award-context') {\n      $('.attendances-header div.dropdown').addClass('hidden')\n    } else {\n      $('.attendances-header div.dropdown').removeClass('hidden')\n    }\n    loadLazyPartial(path, $target)\n  })\n}\n\nfunction initializeLeftPanelSelection() {\n  $('#profile-left-panel-selector .select-option').on('click', function () {\n    var $target = $(this).closest('.lazy-load')\n    var path = $(this).data('path')\n\n    loadLazyPartial(path, $target)\n  })\n  $('#profile-left-panel-selector select').on('change', function () {\n    var $target = $(this).closest('.lazy-load')\n    var path = $(this).find('option:selected').data('path')\n\n    loadLazyPartial(path, $target)\n  })\n}\n\n// Assumes the button element has a path value in it's data attributes,\n// will invoke the path provided with a PUT, then refresh the lazy load\n// partial if successful\nfunction handleButtonUpdate(parentElement, buttonElement) {\n  buttonElement.attr('disabled', true)\n  var path = buttonElement.data('path')\n  var modulePath = parentElement.data('path')\n  var $target = parentElement.closest('.lazy-load')\n  if (buttonElement.data('returnPath')) modulePath = buttonElement.data('returnPath')\n\n  var token = $('meta[name=\"csrf-token\"]').attr('content')\n  $.ajax({\n    type: 'PUT',\n    url: path,\n    beforeSend(xhr) {\n      xhr.setRequestHeader('X-CSRF-Token', token)\n    },\n    complete(data) {\n      if (data.status === 200) {\n        if ($target.length) loadLazyPartial(modulePath, $target)\n        else parentElement.closest('turbo-frame')[0].reload()\n      } else {\n        $('#global-alerts').append(data.responseText)\n        loadLazyPartial(modulePath, $target)\n        return false\n      }\n      return false\n    },\n  })\n  return true\n}\n\nfunction initializeMembershipActivationButtons(actionableElement) {\n  actionableElement.find('.activate-membership').on('click', function () {\n    handleButtonUpdate(actionableElement, $(this))\n  })\n  actionableElement.find('.deactivate-membership').on('click', function () {\n    handleButtonUpdate(actionableElement, $(this))\n  })\n}\n\nfunction initializeAttendanceAwardProgramSelector() {\n  'use strict'\n\n  if ($('.student-attendance-award-items').length) {\n    var path = $('.student-attendance-award-items').data('path')\n\n    $('#student-programs-selector .select-option').on('click', function (e) {\n      var target = e.target\n      var programId = target.getAttribute('value')\n\n      path = $('.student-attendance-award-items').data('path')\n\n      // Remove any \"selected\" classes\n      $('#student-programs-selector .select-option').each(function () {\n        this.classList.remove('selected')\n      })\n\n      // Add \"selected\" back to just this element\n      target.classList.add('selected')\n\n      populateAttendanceAwards(path, programId)\n    })\n  }\n}\n\nfunction populateAttendanceAwards(path, programId) {\n  'use strict'\n\n  $.ajax({\n    type: 'GET',\n    url: path,\n    data: { programId },\n    complete(data) {\n      $('.program-attendance-awards-container .content').html(data.responseText)\n      initializeTooltips($('.program-attendance-awards-container .content'))\n    },\n  })\n}\n\nfunction initializeSortingColumns(actionableElement) {\n  'use strict'\n\n  $(actionableElement)\n    .find('th.sortable-column')\n    .click(function () {\n      const $this = $(this)\n      const sortColumn = this.classList[1]\n      const sortAscending = !this.classList.contains('selected-up') && this.classList.contains('selected-down')\n\n      const $target = $this.closest('.lazy-load')\n      let path = $this.closest('table').data('path')\n\n      const separator = path.includes('?') ? '&' : '?'\n      path += `${separator}sort_by=${sortColumn}&sort_asc=${sortAscending}`\n\n      loadLazyPartial(path, $target)\n    })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  if (window.location.hash) highlightModule(window.location.hash)\n\n  //\n  // Modules\n  //\n  $('#student #attendances .lazy-load').on('lazy-load:complete', function () {\n    initializeAttendanceLogProgramSelector()\n    initializeAttendanceModuleActionSelector()\n    handleAttendanceModuleContextSwitching()\n    initializeAttendanceAwardProgramSelector()\n    initializeInfiniteViewAll($(this).find('a.view-all'))\n    initializeTooltips($(this))\n  })\n\n  $('#prospect .lazy-load#finances, #student .lazy-load#finances').on('lazy-load:complete', function () {\n    initializeTabModule($('#student #finances #finance-tab-toggle a'))\n    initializeTabModule($('#prospect #finances #finance-tab-toggle a'))\n    initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n    initializeInfiniteViewAll($(this).find('a.view-all'))\n    initializeLeftPanelSelection()\n    initializeTooltips($(this))\n    initializeHoverTooltips($(this))\n    initializeDropToggleThing($('#student #finances .report-year-toggle'))\n\n    initializePaymentNotesModal($(this))\n    initializeSortingColumns($(this))\n  })\n\n  $('#prospect .lazy-load#agreements, #student .lazy-load#agreements').on('lazy-load:complete', function () {\n    initializeDropdownTabs($(this))\n    registerProfileModulesDropdownClickEvents($(this))\n    initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n    initializeViewAllProfileItemsActionable($(this).find('a.view-all'))\n    initializeAgreementDeletes()\n    initializeTooltips($(this))\n  })\n\n  $('#student .lazy-load#documents, #student #documents').on('lazy-load:complete turbo:frame-load', function () {\n    initializeDropdownTabs($(this))\n    registerProfileModulesDropdownClickEvents($(this))\n    initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n    initializeInfiniteViewAll($(this).find('a.view-all'))\n    initializeTooltips($(this))\n    initializeFileUpload()\n    initializeDocumentDeletes()\n  })\n\n  let historySections =\n    '#prospect .lazy-load#history, #student .lazy-load#history, #prospect #history, #student #history'\n  $(historySections).on('lazy-load:complete turbo:frame-load', function () {\n    initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n    initializeInfiniteViewAll($(this).find('a.view-all'))\n    initializeTooltips($(this))\n  })\n\n  $('#prospect .lazy-load#memberships, #student .lazy-load#memberships').on('lazy-load:complete', function () {\n    initializeTooltips($(this))\n  })\n\n  $('#prospect .lazy-load#prospects-calendar, #student .lazy-load#students-calendar').on(\n    'lazy-load:complete',\n    function () {\n      initializeDropdownTabs($(this))\n\n      $(this)\n        .find('.dropdown-tabs .dropdown-tabs-menu li a')\n        .on('voltage:dropdown-tabs:selected', function () {\n          var $this = $(this)\n          var $target = $(this).closest('.lazy-load')\n          var path = $this.data('path')\n\n          loadLazyPartial(path, $target)\n        })\n    },\n  )\n\n  let commentSections =\n    '#prospect .lazy-load#comments, #student .lazy-load#comments, #prospect #comments, #student #comments'\n  $(commentSections).on('lazy-load:complete turbo:frame-load', function () {\n    initializeViewMoreProfileItemsActionable($(this).find('a.view-more-results'))\n    initializeInfiniteViewAll($(this).find('a.view-all'))\n    initializeAddNewComment($(this))\n    initializeCommentDeletes()\n  })\n\n  $('#prospect .lazy-load#memberships, #student .lazy-load#memberships').on('lazy-load:complete', function () {\n    initializeTabModule($('#student #memberships #memberships-tab-toggle a'))\n    initializeLeftPanelSelection()\n    initializeMembershipActivationButtons($(this))\n  })\n\n  $('#student .lazy-load#student-account').on('lazy-load:complete', function () {\n    initializeAccountFormSubmit()\n    initializeCloseUserAccount()\n    initializeAccountRestrictionChecks()\n    initializeChangeUserAccountPassword()\n  })\n\n  $('#student .lazy-load#student-family-info').on('lazy-load:complete', function () {\n    initializeTooltips($(this))\n  })\n})\n", "import {\n  registerProfileModulesDropdownClickEvents,\n  initializeViewAllProfileItemsActionable,\n  initializeViewMoreProfileItemsActionable,\n  initializeInfiniteViewAll,\n  initializeAgreementDeletes,\n  handleAttendanceModuleContextSwitching,\n} from '../../assets/javascripts/school/people/profile'\n\nwindow.registerProfileModulesDropdownClickEvents = registerProfileModulesDropdownClickEvents\nwindow.initializeViewAllProfileItemsActionable = initializeViewAllProfileItemsActionable\nwindow.initializeViewMoreProfileItemsActionable = initializeViewMoreProfileItemsActionable\nwindow.initializeInfiniteViewAll = initializeInfiniteViewAll\nwindow.initializeAgreementDeletes = initializeAgreementDeletes\nwindow.handleAttendanceModuleContextSwitching = handleAttendanceModuleContextSwitching\n", "/* eslint-env jquery */\n\n/* global enableApplyToPreviewButton */\n/* global addCountToCounter */\n\nexport function initializeInventoryItemCheckbox() {\n  'use strict'\n  $('.inventory-item-check').off()\n  $('.inventory-item-check').on('click', function () {\n    enableApplyToPreviewButton()\n    addCountToCounter('inventory')\n  })\n}\n\n$(document).on('turbo:load lazy-load:complete ready', function () {\n  'use strict'\n  addCountToCounter('inventory')\n  $('.inventory-item-check').unbind('click')\n  initializeInventoryItemCheckbox()\n})\n", "// eslint-disable-next-line max-len\nimport { initializeInventoryItemCheckbox } from '../../assets/javascripts/school/bizbuilder/landing_pages/inventory'\n\nwindow.initializeInventoryItemCheckbox = initializeInventoryItemCheckbox\n", "/* global initializeDropdownTabs */\n/* global initializeProgramSignupBehavior */\n/* global initializeSchedulerBehavior */\n/* global initializeTrialMembershipBehavior */\n/* global initializeProspectOffWarning */\n/* global enableApplyToPreviewButton */\n/* global initializeInventoryItemCheckbox */\n/* global handleProspectCreationToggle */\n/* global initializeEmbedCodeModal */\n/* global initializeCollapsibleModule */\n/* global enableCreateProspectToggle */\n\nexport function initializeLandingPageModules(parent) {\n  'use strict'\n  $(parent)\n    .find('.deselect-module')\n    .click(function () {\n      var $selectedModule = $(this).closest('.selected-module')\n      var $keyField = $selectedModule.find('.selected-module-label input')\n\n      var destroyFlag = $selectedModule.find('.delete')\n      if (destroyFlag.length === 0) {\n        $selectedModule.remove()\n      } else {\n        $selectedModule.addClass('hidden')\n        destroyFlag.attr('value', 1)\n      }\n\n      $selectedModule.find('input[type=checkbox]').removeAttr('checked')\n\n      // Could this not be $keyField.attr('value') ? value is header for the header, and they name is modules[header][key]\n      var splittedString = $keyField.attr('name').split('[')\n\n      if (splittedString.length > 1) {\n        var key = splittedString[1].split(']')[0]\n        const hasTrialMemberships = $selectedModule.find('#trial-membership-module-content').length > 0\n\n        if (key === 'programs') {\n          updateProgramModule($selectedModule)\n        } else if (key === 'trial_memberships' && !hasTrialMemberships) {\n          $('.module-options').find(`.module-option-programs`).removeClass('disabled')\n        } else if (key === 'lead_capture_form') {\n          if ($('#agreement-module-content').length > 0) {\n            $('#agreement-module').find('.deselect-module').trigger('click')\n          }\n          $('.module-options').find(`.module-option-agreement`).addClass('disabled')\n        }\n\n        $('.module-options').find(`.module-option-${key}`).removeClass('disabled')\n        enableApplyToPreviewButton()\n        handleProspectCreationToggle()\n      }\n    })\n\n  $('#landing-page-form input[type=radio]').click(function () {\n    enableApplyToPreviewButton()\n    handleProspectCreationToggle()\n  })\n\n  $('#landing-page-form input.landing-page-header-input').keyup(function () {\n    enableApplyToPreviewButton()\n  })\n\n  handleProspectCreationToggle()\n}\n\nfunction updateProgramModule(programModule) {\n  const hasScheduler = $('#scheduler-module').length > 0\n  const hasPrograms = programModule.find('#program-module-content').length > 0\n  if (hasScheduler) {\n    $('#scheduler-module').find('.deselect-module').trigger('click')\n  }\n  // NOTE: This has to happen after clicking deselect, since deselecting it removes the disabled class.\n  $('.module-options').find(`.module-option-scheduler`).addClass('disabled')\n\n  if (hasPrograms) {\n    $('.create-prospect-toggle-container .helper-text .either').addClass('hidden')\n    $('.create-prospect-toggle-container .helper-text .prospect').removeClass('hidden')\n    $('#prospect-creation-toggle').removeClass('disabled')\n  } else {\n    $('.module-options').find(`.module-option-trial_memberships`).removeClass('disabled')\n\n    $('.create-prospect-toggle-container .helper-text .prospect').addClass('hidden')\n    $('.create-prospect-toggle-container .helper-text .either').removeClass('hidden')\n    enableCreateProspectToggle()\n  }\n}\n\nfunction updateLandingPageStatus(container, path, button) {\n  'use strict'\n\n  button.attr('disabled', true)\n\n  var token = $('meta[name=\"csrf-token\"]').attr('content')\n  $.ajax({\n    type: 'PUT',\n    url: path,\n    beforeSend(xhr) {\n      xhr.setRequestHeader('X-CSRF-Token', token)\n    },\n    complete(data) {\n      if (data.status === 200) {\n        container.fadeOut('fast', function () {\n          container.html(data.responseText)\n          initializeDropdownTabs(container)\n          initializeLandingPageStatusDropdowns(container)\n\n          container.fadeIn('fast')\n        })\n      } else {\n        $('#global-alerts').append(data.responseText)\n      }\n    },\n  })\n}\n\nfunction initializeLandingPageStatusDropdowns(parent) {\n  'use strict'\n\n  $(parent)\n    .find('.landing-page-container .dropdown-tabs .dropdown-tabs-menu li a')\n    .on('voltage:dropdown-tabs:selected', function () {\n      var $this = $(this)\n      var $target = $this.closest('.landing-page-wrapper')\n      var path = $this.data('path')\n      var $parentButton = $this.closest('.dropdown-tabs').find('button')\n\n      return updateLandingPageStatus($target, path, $parentButton)\n    })\n}\n\nfunction loadModulePartial(targetElement, moduleElement) {\n  const path = moduleElement.data('path')\n  $.ajax({\n    type: 'GET',\n    url: path,\n    complete(data) {\n      if (data.status === 200) {\n        targetElement.append(data.responseText)\n        var $lastField = $('#additional-sidebar').find('.selected-module').last()\n        initializeLandingPageModules($lastField)\n        initializeCollapsibleModule($lastField.find('.content'))\n        enableApplyToPreviewButton()\n        initializeDropdownTabs()\n        initializeInventoryItemCheckbox()\n        initializeTrialMembershipBehavior()\n        initializeProgramSignupBehavior()\n        initializeSchedulerBehavior()\n        initializeProspectOffWarning()\n        $lastField[0].scrollIntoView({\n          behavior: 'smooth',\n          block: 'start',\n          inline: 'nearest',\n        })\n      } else {\n        $('#global-alerts').append(data.responseText)\n        moduleElement.removeClass('disabled')\n      }\n    },\n  })\n}\n\nfunction initializeProgramModule() {\n  $('.module-options').find(`.module-option-trial_memberships`).addClass('disabled')\n  $('.module-options').find(`.module-option-scheduler`).removeClass('disabled')\n\n  $('.create-prospect-toggle-container .helper-text .prospect').addClass('hidden')\n  $('.create-prospect-toggle-container .helper-text .either').removeClass('hidden')\n  enableCreateProspectToggle()\n}\n\nfunction initializeOtherModules(moduleName) {\n  $('.create-prospect-toggle-container .helper-text .prospect').removeClass('hidden')\n  $('.create-prospect-toggle-container .helper-text .either').addClass('hidden')\n  $('#prospect-creation-toggle').parent().removeClass('disabled')\n\n  if (moduleName === 'trial_memberships') {\n    $('.module-options').find(`.module-option-programs`).addClass('disabled')\n  } else if (moduleName === 'lead_capture_form') {\n    $('.module-options').find('.module-option-agreement').removeClass('disabled')\n  }\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('.lazy-load#landing-pages').on('lazy-load:complete', function () {\n    initializeDropdownTabs($(this))\n    initializeLandingPageStatusDropdowns($(this))\n    initializeEmbedCodeModal()\n  })\n\n  initializeLandingPageStatusDropdowns($(this))\n\n  initializeLandingPageModules($('#additional-sidebar'))\n\n  $('.profit-item-dropdown').on('click', function () {\n    initializeTrialMembershipBehavior()\n    initializeProgramSignupBehavior()\n    initializeSchedulerBehavior()\n    initializeInventoryItemCheckbox()\n  })\n\n  document.addEventListener('trix-change', function () {\n    if ($('#landing-page-form .apply-btn').length) enableApplyToPreviewButton()\n  })\n\n  $('.module-option').on('click', function () {\n    if (!$(this).hasClass('disabled')) {\n      var $this = $(this)\n      var $target = $('#landing-page-form > .content')\n      var moduleName = $(this).data('module-name')\n\n      $this.addClass('disabled')\n\n      if (moduleName === 'programs') {\n        initializeProgramModule()\n      } else {\n        initializeOtherModules(moduleName)\n      }\n\n      if (moduleName === 'agreement') {\n        if ($('#agreement-module').length > 0) {\n          $('#agreement-module').removeClass('hidden')\n        } else {\n          loadModulePartial($target, $this)\n        }\n      } else if (moduleName === 'lead_capture_form') {\n        if ($('#lead-capture-form-module').length > 0) {\n          $('#lead-capture-form-module').removeClass('hidden')\n        } else {\n          loadModulePartial($target, $this)\n        }\n      } else {\n        loadModulePartial($target, $this)\n      }\n    }\n  })\n})\n", "import { initializeLandingPageModules } from '../../assets/javascripts/school/bizbuilder/landing_pages'\n\nwindow.initializeLandingPageModules = initializeLandingPageModules\n", null, null, null, null, null, "import SignaturePad from 'signature_pad'\n\nwindow.SignaturePad = SignaturePad\n", "export const Pallette = {\n  primaryHighlight: '#f2a900',\n  secondaryDark: '#93928F',\n  secondaryDarker: '#717171',\n  secondaryDarkest: '#404040',\n  secondaryDarkerThanDarkest: '#333',\n  secondaryLight: '#e9e9e8',\n  secondaryLighter: '#f2f2f2',\n  white: '#fff',\n  black: '#5d5c57',\n  gray: '#808080',\n  red: '#d9433e',\n  blue: '#337ab7',\n  green: '#449d44',\n  purple: '#7653ad',\n  almostBlack: '#262626',\n  pureBlack: '#000',\n  lightOrange: '#fff0d2',\n  darkOrange: '#e8cd95',\n  notificationsRed: '#ab6868',\n  notificationsGreen: '#548054',\n  notificationsBlue: '#44637d',\n}\n\nexport const PalletteDark = {\n  white: '#d9d9d9',\n}\n", "import { Pallette, PalletteDark } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\n\nwindow.Pallette = Pallette\nwindow.PalleteDark = PalletteDark\n", "/* eslint-disable no-unused-vars */\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  let $createProspectToggle = $('#prospect-creation-toggle')\n\n  $createProspectToggle.bootstrapToggle('destroy')\n  $createProspectToggle.bootstrapToggle()\n  $createProspectToggle.bootstrapToggle('enable')\n\n  if ($createProspectToggle.hasClass('disabled')) {\n    $createProspectToggle.parent().addClass('disabled')\n  }\n\n  $createProspectToggle.change(function () {\n    if (this.checked) {\n      $('.create-prospect-toggle-container .helper-text').removeClass('hidden')\n    } else {\n      $('.create-prospect-toggle-container .helper-text').addClass('hidden')\n    }\n  })\n})\n\nexport function enableCreateProspectToggle() {\n  let $createProspectToggle = $('#prospect-creation-toggle')\n  $createProspectToggle.addClass('disabled')\n  $createProspectToggle.parent().addClass('disabled')\n\n  $createProspectToggle.bootstrapToggle('on')\n}\n/* eslint-disable no-unused-vars */\n", "// eslint-disable-next-line max-len\nimport { enableCreateProspectToggle } from '../../assets/javascripts/school/bizbuilder/landing_pages/create_prospect'\n\nwindow.enableCreateProspectToggle = enableCreateProspectToggle\n", "import Rails from '@rails/ujs'\nRails.start()\nwindow.Rails = Rails\n", "import intlTelInput from 'intl-tel-input'\n\nwindow.intlTelInput = intlTelInput\n", "$(document).on('turbo:load', function () {\n  'use strict'\n\n  jQuery.expr.filters.onscreen = function (el) {\n    if (navigator.webdriver) return true\n\n    if ($(el).css('display') === 'none') return false\n\n    var rect = el.getBoundingClientRect()\n    return !(\n      rect.x + rect.width < 0 ||\n      rect.y + rect.height < 0 ||\n      rect.x > window.innerWidth ||\n      rect.y > window.innerHeight\n    )\n  }\n})\n", "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // https://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.4.1'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    selector    = selector === '#' ? [] : selector\n    var $parent = $(document).find(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.4.1'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state += 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d).prop(d, true)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d).prop(d, false)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked')) changed = false\n        $parent.find('.active').removeClass('active')\n        this.$element.addClass('active')\n      } else if ($input.prop('type') == 'checkbox') {\n        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n        this.$element.toggleClass('active')\n      }\n      $input.prop('checked', this.$element.hasClass('active'))\n      if (changed) $input.trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n      this.$element.toggleClass('active')\n    }\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target).closest('.btn')\n      Plugin.call($btn, 'toggle')\n      if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n        e.preventDefault()\n        // The target component still receive the focus\n        if ($btn.is('input,button')) $btn.trigger('focus')\n        else $btn.find('input:visible,button:visible').first().trigger('focus')\n      }\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.4.1'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      if (typeof $next === 'object' && $next.length) {\n        $next[0].offsetWidth // force reflow\n      }\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    if (href) {\n      href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n    }\n\n    var target  = $this.attr('data-target') || href\n    var $target = $(document).find(target)\n\n    if (!$target.hasClass('carousel')) return\n\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.4.1'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(document).find(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(document).find(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.4.1'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector !== '#' ? $(document).find(selector) : null\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options = options\n    this.$body = $(document.body)\n    this.$element = $(element)\n    this.$dialog = this.$element.find('.modal-dialog')\n    this.$backdrop = null\n    this.isShown = null\n    this.originalBodyPad = null\n    this.scrollbarWidth = 0\n    this.ignoreBackdropClick = false\n    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION = '3.4.1'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n          this.$element[0] !== e.target &&\n          !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    var scrollbarWidth = this.scrollbarWidth\n    if (this.bodyIsOverflowing) {\n      this.$body.css('padding-right', bodyPad + scrollbarWidth)\n      $(this.fixedContent).each(function (index, element) {\n        var actualPadding = element.style.paddingRight\n        var calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n      })\n    }\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n    $(this.fixedContent).each(function (index, element) {\n      var padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this = $(this)\n      var data = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this = $(this)\n    var href = $this.attr('href')\n    var target = $this.attr('data-target') ||\n      (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n    var $target = $(document).find(target)\n    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ]\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  }\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase()\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n      }\n\n      return true\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp\n    })\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml)\n    }\n\n    // IE 8 and below don't support createHTMLDocument\n    if (!document.implementation || !document.implementation.createHTMLDocument) {\n      return unsafeHtml\n    }\n\n    var createdDocument = document.implementation.createHTMLDocument('sanitization')\n    createdDocument.body.innerHTML = unsafeHtml\n\n    var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n    var elements = $(createdDocument.body).find('*')\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var el = elements[i]\n      var elName = el.nodeName.toLowerCase()\n\n      if ($.inArray(elName, whitelistKeys) === -1) {\n        el.parentNode.removeChild(el)\n\n        continue\n      }\n\n      var attributeList = $.map(el.attributes, function (el) { return el })\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n      for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n          el.removeAttribute(attributeList[j].nodeName)\n        }\n      }\n    }\n\n    return createdDocument.body.innerHTML\n  }\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.4.1'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    },\n    sanitize : true,\n    sanitizeFn : null,\n    whiteList : DefaultWhitelist\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    var dataAttributes = this.$element.data()\n\n    for (var dataAttr in dataAttributes) {\n      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    if (options.sanitize) {\n      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    if (this.options.html) {\n      if (this.options.sanitize) {\n        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n      }\n\n      $tip.find('.tooltip-inner').html(title)\n    } else {\n      $tip.find('.tooltip-inner').text(title)\n    }\n\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n  }\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.4.1'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    if (this.options.html) {\n      var typeContent = typeof content\n\n      if (this.options.sanitize) {\n        title = this.sanitizeHtml(title)\n\n        if (typeContent === 'string') {\n          content = this.sanitizeHtml(content)\n        }\n      }\n\n      $tip.find('.popover-title').html(title)\n      $tip.find('.popover-content').children().detach().end()[\n        typeContent === 'string' ? 'html' : 'append'\n      ](content)\n    } else {\n      $tip.find('.popover-title').text(title)\n      $tip.find('.popover-content').children().detach().end().text(content)\n    }\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n        o.content.call($e[0]) :\n        o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.4.1'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.4.1'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(document).find(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n          .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n    this.$target = target\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.4.1'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n", "/*! ========================================================================\n * Bootstrap Toggle: bootstrap-toggle.js v2.2.0\n * http://www.bootstraptoggle.com\n * ========================================================================\n * Copyright 2014 Min Hur, The New York Times Company\n * Licensed under MIT\n * ======================================================================== */\n\n\n +function ($) {\n \t'use strict';\n\n\t// TOGGLE PUBLIC CLASS DEFINITION\n\t// ==============================\n\n\tvar Toggle = function (element, options) {\n\t\tthis.$element  = $(element)\n\t\tthis.options   = $.extend({}, this.defaults(), options)\n\t\tthis.render()\n\t}\n\n\tToggle.VERSION  = '2.2.0'\n\n\tToggle.DEFAULTS = {\n\t\ton: 'On',\n\t\toff: 'Off',\n\t\tonstyle: 'primary',\n\t\toffstyle: 'default',\n\t\tsize: 'normal',\n\t\tstyle: '',\n\t\twidth: null,\n\t\theight: null\n\t}\n\n\tToggle.prototype.defaults = function() {\n\t\treturn {\n\t\t\ton: this.$element.attr('data-on') || Toggle.DEFAULTS.on,\n\t\t\toff: this.$element.attr('data-off') || Toggle.DEFAULTS.off,\n\t\t\tonstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,\n\t\t\toffstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,\n\t\t\tsize: this.$element.attr('data-size') || Toggle.DEFAULTS.size,\n\t\t\tstyle: this.$element.attr('data-style') || Toggle.DEFAULTS.style,\n\t\t\twidth: this.$element.attr('data-width') || Toggle.DEFAULTS.width,\n\t\t\theight: this.$element.attr('data-height') || Toggle.DEFAULTS.height\n\t\t}\n\t}\n\n\tToggle.prototype.render = function () {\n\t\tthis._onstyle = 'btn-' + this.options.onstyle\n\t\tthis._offstyle = 'btn-' + this.options.offstyle\n\t\tvar size = this.options.size === 'large' ? 'btn-lg'\n\t\t\t: this.options.size === 'small' ? 'btn-sm'\n\t\t\t: this.options.size === 'mini' ? 'btn-xs'\n\t\t\t: ''\n\t\tvar $toggleOn = $('<label class=\"btn\">').html(this.options.on)\n\t\t\t.addClass(this._onstyle + ' ' + size)\n\t\tvar $toggleOff = $('<label class=\"btn\">').html(this.options.off)\n\t\t\t.addClass(this._offstyle + ' ' + size + ' active')\n\t\tvar $toggleHandle = $('<span class=\"toggle-handle btn btn-default\">')\n\t\t\t.addClass(size)\n\t\tvar $toggleGroup = $('<div class=\"toggle-group\">')\n\t\t\t.append($toggleOn, $toggleOff, $toggleHandle)\n\t\tvar $toggle = $('<div class=\"toggle btn\" data-toggle=\"toggle\">')\n\t\t\t.addClass( this.$element.prop('checked') ? this._onstyle : this._offstyle+' off' )\n\t\t\t.addClass(size).addClass(this.options.style)\n\n\t\tthis.$element.wrap($toggle)\n\t\t$.extend(this, {\n\t\t\t$toggle: this.$element.parent(),\n\t\t\t$toggleOn: $toggleOn,\n\t\t\t$toggleOff: $toggleOff,\n\t\t\t$toggleGroup: $toggleGroup\n\t\t})\n\t\tthis.$toggle.append($toggleGroup)\n\n\t\tvar width = this.options.width || Math.max($toggleOn.outerWidth(), $toggleOff.outerWidth())+($toggleHandle.outerWidth()/2)\n\t\tvar height = this.options.height || Math.max($toggleOn.outerHeight(), $toggleOff.outerHeight())\n\t\t$toggleOn.addClass('toggle-on')\n\t\t$toggleOff.addClass('toggle-off')\n\t\tthis.$toggle.css({ width: width, height: height })\n\t\tif (this.options.height) {\n\t\t\t$toggleOn.css('line-height', $toggleOn.height() + 'px')\n\t\t\t$toggleOff.css('line-height', $toggleOff.height() + 'px')\n\t\t}\n\t\tthis.update(true)\n\t\tthis.trigger(true)\n\t}\n\n\tToggle.prototype.toggle = function () {\n\t\tif (this.$element.prop('checked')) this.off()\n\t\telse this.on()\n\t}\n\n\tToggle.prototype.on = function (silent) {\n\t\tif (this.$element.prop('disabled')) return false\n\t\tthis.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle)\n\t\tthis.$element.prop('checked', true)\n\t\tif (!silent) this.trigger()\n\t}\n\n\tToggle.prototype.off = function (silent) {\n\t\tif (this.$element.prop('disabled')) return false\n\t\tthis.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off')\n\t\tthis.$element.prop('checked', false)\n\t\tif (!silent) this.trigger()\n\t}\n\n\tToggle.prototype.enable = function () {\n\t\tthis.$toggle.removeAttr('disabled')\n\t\tthis.$element.prop('disabled', false)\n\t}\n\n\tToggle.prototype.disable = function () {\n\t\tthis.$toggle.attr('disabled', 'disabled')\n\t\tthis.$element.prop('disabled', true)\n\t}\n\n\tToggle.prototype.update = function (silent) {\n\t\tif (this.$element.prop('disabled')) this.disable()\n\t\telse this.enable()\n\t\tif (this.$element.prop('checked')) this.on(silent)\n\t\telse this.off(silent)\n\t}\n\n\tToggle.prototype.trigger = function (silent) {\n\t\tthis.$element.off('change.bs.toggle')\n\t\tif (!silent) this.$element.change()\n\t\tthis.$element.on('change.bs.toggle', $.proxy(function() {\n\t\t\tthis.update()\n\t\t}, this))\n\t}\n\n\tToggle.prototype.destroy = function() {\n\t\tthis.$element.off('change.bs.toggle')\n\t\tthis.$toggleGroup.remove()\n\t\tthis.$element.removeData('bs.toggle')\n\t\tthis.$element.unwrap()\n\t}\n\n\t// TOGGLE PLUGIN DEFINITION\n\t// ========================\n\n\tfunction Plugin(option) {\n\t\treturn this.each(function () {\n\t\t\tvar $this   = $(this)\n\t\t\tvar data    = $this.data('bs.toggle')\n\t\t\tvar options = typeof option == 'object' && option\n\n\t\t\tif (!data) $this.data('bs.toggle', (data = new Toggle(this, options)))\n\t\t\tif (typeof option == 'string' && data[option]) data[option]()\n\t\t})\n\t}\n\n\tvar old = $.fn.bootstrapToggle\n\n\t$.fn.bootstrapToggle             = Plugin\n\t$.fn.bootstrapToggle.Constructor = Toggle\n\n\t// TOGGLE NO CONFLICT\n\t// ==================\n\n\t$.fn.toggle.noConflict = function () {\n\t\t$.fn.bootstrapToggle = old\n\t\treturn this\n\t}\n\n\t// TOGGLE DATA-API\n\t// ===============\n\n\t$(function() {\n\t\t$('input[type=checkbox][data-toggle^=toggle]').bootstrapToggle()\n\t})\n\n\t$(document).on('click.bs.toggle', 'div[data-toggle^=toggle]', function(e) {\n\t\tvar $checkbox = $(this).find('input[type=checkbox]')\n\t\t$checkbox.bootstrapToggle('toggle')\n\t\te.preventDefault()\n\t})\n\n}(jQuery);\n", "(function($) {\n  $.fn.gauge = function(value, options) {\n    return this.each(function() {\n\n      var settings = $.extend({\n        min: 0,\n        max: 100,\n        unit: \"%\",\n        color: \"black\",\n        colorAlpha: 1,\n        bgColor: \"#222\",\n        fgColor: \"lightgreen\",\n        fgSize: \"\",\n        bgSize: \"\",\n        fontSize: \"\",\n        fontFamily: \"\",\n        fontWeight: \"normal\",\n        showDial: true,\n        type: \"default\"\n      }, options);\n\n      settings.max = value > settings.max ? value : settings.max;\n\n      //canvas initialization\n      var ctx = this.getContext(\"2d\");\n\n      var W = this.width;\n      var H = this.height;\n      var centerW = (W/2);\n\n      var position = 0;\n      var new_position = 0;\n      var difference = 0;\n\n      var text;\n      var animation_loop, redraw_loop;\n\n      // Angle in radians = angle in degrees * PI / 180\n      function radians(degrees) {\n        return degrees * Math.PI / 180;\n      }\n\n      if (settings.type === \"default\") {\n        (function() {\n          function update() {\n            ctx.clearRect(0, 0, W, H);\n\n            // The gauge will be an arc\n            ctx.beginPath();\n            ctx.lineCap = \"round\";\n            ctx.strokeStyle = settings.bgColor;\n            ctx.lineWidth = parseInt(settings.bgSize) ? parseInt(settings.bgSize) : (W * 0.07);\n            ctx.arc(centerW, H - (centerW - ctx.lineWidth), (centerW) - ctx.lineWidth, radians(135), radians(45), false);\n            ctx.stroke();\n\n            ctx.beginPath();\n            ctx.lineCap = \"round\";\n            ctx.strokeStyle = settings.fgColor;\n            ctx.lineWidth = parseInt(settings.fgSize) ? parseInt(settings.fgSize) : (W * 0.07);\n\n            if (position > 0) {\n              ctx.globalAlpha = settings.colorAlpha;\n              ctx.arc(centerW, H - (centerW - ctx.lineWidth), (centerW) - ctx.lineWidth, radians(135), radians(135 + position), false);\n              ctx.stroke();\n            }\n\n            // Add the text\n            if (settings.showDial) {\n              ctx.fillStyle = settings.color;\n              var fontArgs = ctx.font.split(' ');\n              fontSize   = settings.fontSize.length ? settings.fontSize : (W*0.2);\n              fontFamily = settings.fontFamily.length ? settings.fontFamily : fontArgs[fontArgs.length - 1];\n              ctx.font   = \"bold \" + parseInt(fontSize) + 'px ' + fontFamily;\n              text = value + settings.unit;\n\n              // Center the text, deducting half of text width from position x\n              text_width = ctx.measureText(text).width;\n              ctx.fillText(text, centerW - text_width / 2, H - (centerW - ctx.lineWidth) + 15);\n            }\n          }\n\n          function draw() {\n            // Cancel any animation if a new chart is requested\n            if (typeof animation_loop !== undefined) clearInterval(animation_loop);\n\n            if (settings.noDraw)\n              new_position = 0;\n            else\n              new_position = Math.round((value / (settings.max - settings.min)) * 270);\n\n            if (settings.quickDraw)\n              position = new_position;\n\n            difference = new_position - position;\n            animation_loop = setInterval(animate_to, 100 / difference);\n          }\n\n          // Make the chart move to new degrees\n          function animate_to() {\n            // Clear animation loop if degrees reaches the new_degrees\n            if (position == new_position)\n              clearInterval(animation_loop);\n\n            if (position < new_position)\n              position++;\n            else\n              position--;\n\n            update();\n          }\n\n          draw();\n        })();\n      }\n\n      if (settings.type === \"halfcircle\") {\n        (function() {\n          function update() {\n            ctx.clearRect(0, 0, W, H);\n              capH = H * 0.07;\n\n            // The gauge will be an arc\n            ctx.beginPath();\n              ctx.lineCap = \"round\";\n            ctx.strokeStyle = settings.bgColor;\n            ctx.lineWidth = parseInt(settings.bgSize) ? parseInt(settings.bgSize) : (W * 0.07);\n            ctx.arc(centerW, H - capH, (centerW) - ctx.lineWidth - ((W * 0.07) - ctx.lineWidth), radians(180), radians(0), false);\n            ctx.stroke();\n\n            ctx.beginPath();\n            ctx.lineCap = \"round\";\n            ctx.strokeStyle = settings.fgColor;\n            ctx.lineWidth = parseInt(settings.fgSize) ? parseInt(settings.fgSize) : (W * 0.07);\n\n            if (position > 0) {\n              ctx.globalAlpha = settings.colorAlpha;\n              ctx.arc(centerW, H - capH, (centerW) - ctx.lineWidth - ((W * 0.07) - ctx.lineWidth), radians(180), radians(180 + position), false);\n              ctx.stroke();\n            }\n\n            // Add the text\n            if (settings.showDial) {\n              ctx.fillStyle = settings.color;\n              var fontArgs = ctx.font.split(' ');\n              fontSize   = settings.fontSize.length ? settings.fontSize : (W*0.2);\n              fontFamily = settings.fontFamily.length ? settings.fontFamily : fontArgs[fontArgs.length - 1];\n              ctx.font   = settings.fontWeight + \" \" + parseInt(fontSize) + 'px ' + fontFamily;\n              text = value + settings.unit;\n              // Center the text, deducting half of text width from position x\n              text_width = ctx.measureText(text).width;\n              ctx.fillText(text, centerW - text_width / 2, centerW/4*3 + 0.1*centerW );\n            }\n          }\n\n          function draw() {\n            // Cancel any animation if a new chart is requested\n            if (typeof animation_loop !== undefined) clearInterval(animation_loop);\n\n            if (settings.noDraw)\n              new_position = 0;\n            else\n              new_position = Math.round((value / (settings.max - settings.min)) * 180);\n\n            if (settings.quickDraw)\n              position = new_position;\n\n            difference = new_position - position;\n            animation_loop = setInterval(animate_to, 100 / difference);\n          }\n\n          // Make the chart move to new degrees\n          function animate_to() {\n            // Clear animation loop if degrees reaches the new_degrees\n            if (position == new_position)\n              clearInterval(animation_loop);\n\n            if (position < new_position)\n              position++;\n            else\n              position--;\n\n            update();\n          }\n          draw();\n        })();\n      }\n    });\n  };\n})(jQuery);\n", "(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar aa=this||self;function k(a,b){a=a.split(\".\");var c=aa;a[0]in c||\"undefined\"==typeof c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b}function m(a,b){function c(){}c.prototype=b.prototype;a.$=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.fa=function(d,e,g){for(var f=Array(arguments.length-2),h=2;h<arguments.length;h++)f[h-2]=arguments[h];return b.prototype[e].apply(d,f)}};function ba(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};function ca(a,b){a.sort(b||da)}function da(a,b){return a>b?1:a<b?-1:0};function ea(a,b){this.g=a;this.m=!!b.o;this.i=b.h;this.v=b.type;this.u=!1;switch(this.i){case fa:case ha:case ia:case ja:case ka:case la:case ma:this.u=!0}this.l=b.defaultValue}var ma=1,la=2,fa=3,ha=4,ia=6,ja=16,ka=18;function na(a,b){this.i=a;this.g={};for(a=0;a<b.length;a++){var c=b[a];this.g[c.g]=c}}function oa(a){a=ba(a.g);ca(a,function(b,c){return b.g-c.g});return a};function n(){this.g={};this.l=this.j().g;this.i=this.m=null}n.prototype.has=function(a){return null!=this.g[a.g]};n.prototype.get=function(a,b){return p(this,a.g,b)};n.prototype.set=function(a,b){q(this,a.g,b)};n.prototype.add=function(a,b){r(this,a.g,b)};\nfunction t(a,b){for(var c=oa(a.j()),d=0;d<c.length;d++){var e=c[d],g=e.g;if(null!=b.g[g]){a.i&&delete a.i[e.g];var f=11==e.i||10==e.i;if(e.m){e=u(b,g);for(var h=0;h<e.length;h++)r(a,g,f?e[h].clone():e[h])}else e=v(b,g),f?(f=v(a,g))?t(f,e):q(a,g,e.clone()):q(a,g,e)}}}n.prototype.clone=function(){var a=new this.constructor;a!=this&&(a.g={},a.i&&(a.i={}),t(a,this));return a};\nfunction v(a,b){var c=a.g[b];if(null==c)return null;if(a.m){if(!(b in a.i)){var d=a.m,e=a.l[b];if(null!=c)if(e.m){for(var g=[],f=0;f<c.length;f++)g[f]=d.i(e,c[f]);c=g}else c=d.i(e,c);return a.i[b]=c}return a.i[b]}return c}function p(a,b,c){var d=v(a,b);return a.l[b].m?d[c||0]:d}function w(a,b){if(null!=a.g[b])a=p(a,b,void 0);else a:{a=a.l[b];if(void 0===a.l)if(b=a.v,b===Boolean)a.l=!1;else if(b===Number)a.l=0;else if(b===String)a.l=a.u?\"0\":\"\";else{a=new b;break a}a=a.l}return a}\nfunction u(a,b){return v(a,b)||[]}function x(a,b){return a.l[b].m?null!=a.g[b]?a.g[b].length:0:null!=a.g[b]?1:0}function q(a,b,c){a.g[b]=c;a.i&&(a.i[b]=c)}function r(a,b,c){a.g[b]||(a.g[b]=[]);a.g[b].push(c);a.i&&delete a.i[b]}function y(a,b){var c=[],d;for(d in b)0!=d&&c.push(new ea(d,b[d]));return new na(a,c)};function A(){}A.prototype.g=function(a){new a.i;throw Error(\"Unimplemented\");};A.prototype.i=function(a,b){if(11==a.i||10==a.i)return b instanceof n?b:this.g(a.v.prototype.j(),b);if(14==a.i)return\"string\"===typeof b&&B.test(b)&&(a=Number(b),0<a)?a:b;if(!a.u)return b;a=a.v;if(a===String){if(\"number\"===typeof b)return String(b)}else if(a===Number&&\"string\"===typeof b&&(\"Infinity\"===b||\"-Infinity\"===b||\"NaN\"===b||B.test(b)))return Number(b);return b};var B=/^-?[0-9]+$/;function C(){}m(C,A);C.prototype.g=function(a,b){a=new a.i;a.m=this;a.g=b;a.i={};return a};function D(){}m(D,C);D.prototype.i=function(a,b){return 8==a.i?!!b:A.prototype.i.apply(this,arguments)};D.prototype.g=function(a,b){return D.$.g.call(this,a,b)};function E(a,b){null!=a&&this.g.apply(this,arguments)}E.prototype.i=\"\";E.prototype.set=function(a){this.i=\"\"+a};E.prototype.g=function(a,b,c){this.i+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.i+=arguments[d];return this};E.prototype.toString=function(){return this.i};/*\n\n Protocol Buffer 2 Copyright 2008 Google Inc.\n All other code copyright its respective owners.\n Copyright (C) 2010 The Libphonenumber Authors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nfunction F(){n.call(this)}m(F,n);var pa=null;function G(){n.call(this)}m(G,n);var qa=null;function H(){n.call(this)}m(H,n);var ra=null;\nF.prototype.j=function(){var a=pa;a||(pa=a=y(F,{0:{name:\"NumberFormat\",s:\"i18n.phonenumbers.NumberFormat\"},1:{name:\"pattern\",required:!0,h:9,type:String},2:{name:\"format\",required:!0,h:9,type:String},3:{name:\"leading_digits_pattern\",o:!0,h:9,type:String},4:{name:\"national_prefix_formatting_rule\",h:9,type:String},6:{name:\"national_prefix_optional_when_formatting\",h:8,defaultValue:!1,type:Boolean},5:{name:\"domestic_carrier_code_formatting_rule\",h:9,type:String}}));return a};F.j=F.prototype.j;\nG.prototype.j=function(){var a=qa;a||(qa=a=y(G,{0:{name:\"PhoneNumberDesc\",s:\"i18n.phonenumbers.PhoneNumberDesc\"},2:{name:\"national_number_pattern\",h:9,type:String},9:{name:\"possible_length\",o:!0,h:5,type:Number},10:{name:\"possible_length_local_only\",o:!0,h:5,type:Number},6:{name:\"example_number\",h:9,type:String}}));return a};G.j=G.prototype.j;\nH.prototype.j=function(){var a=ra;a||(ra=a=y(H,{0:{name:\"PhoneMetadata\",s:\"i18n.phonenumbers.PhoneMetadata\"},1:{name:\"general_desc\",h:11,type:G},2:{name:\"fixed_line\",h:11,type:G},3:{name:\"mobile\",h:11,type:G},4:{name:\"toll_free\",h:11,type:G},5:{name:\"premium_rate\",h:11,type:G},6:{name:\"shared_cost\",h:11,type:G},7:{name:\"personal_number\",h:11,type:G},8:{name:\"voip\",h:11,type:G},21:{name:\"pager\",h:11,type:G},25:{name:\"uan\",h:11,type:G},27:{name:\"emergency\",h:11,type:G},28:{name:\"voicemail\",h:11,type:G},\n29:{name:\"short_code\",h:11,type:G},30:{name:\"standard_rate\",h:11,type:G},31:{name:\"carrier_specific\",h:11,type:G},33:{name:\"sms_services\",h:11,type:G},24:{name:\"no_international_dialling\",h:11,type:G},9:{name:\"id\",required:!0,h:9,type:String},10:{name:\"country_code\",h:5,type:Number},11:{name:\"international_prefix\",h:9,type:String},17:{name:\"preferred_international_prefix\",h:9,type:String},12:{name:\"national_prefix\",h:9,type:String},13:{name:\"preferred_extn_prefix\",h:9,type:String},15:{name:\"national_prefix_for_parsing\",\nh:9,type:String},16:{name:\"national_prefix_transform_rule\",h:9,type:String},18:{name:\"same_mobile_and_fixed_line_pattern\",h:8,defaultValue:!1,type:Boolean},19:{name:\"number_format\",o:!0,h:11,type:F},20:{name:\"intl_number_format\",o:!0,h:11,type:F},22:{name:\"main_country_for_code\",h:8,defaultValue:!1,type:Boolean},23:{name:\"leading_digits\",h:9,type:String},26:{name:\"leading_zero_possible\",h:8,defaultValue:!1,type:Boolean}}));return a};H.j=H.prototype.j;function I(){n.call(this)}m(I,n);var sa=null,ta={ea:0,da:1,ca:5,ba:10,aa:20};\nI.prototype.j=function(){var a=sa;a||(sa=a=y(I,{0:{name:\"PhoneNumber\",s:\"i18n.phonenumbers.PhoneNumber\"},1:{name:\"country_code\",required:!0,h:5,type:Number},2:{name:\"national_number\",required:!0,h:4,type:Number},3:{name:\"extension\",h:9,type:String},4:{name:\"italian_leading_zero\",h:8,type:Boolean},8:{name:\"number_of_leading_zeros\",h:5,defaultValue:1,type:Number},5:{name:\"raw_input\",h:9,type:String},6:{name:\"country_code_source\",h:14,defaultValue:0,type:ta},7:{name:\"preferred_domestic_carrier_code\",\nh:9,type:String}}));return a};I.ctor=I;I.ctor.j=I.prototype.j;/*\n\n Copyright (C) 2010 The Libphonenumber Authors\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nvar J={1:\"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI\".split(\" \"),7:[\"RU\",\"KZ\"],20:[\"EG\"],27:[\"ZA\"],30:[\"GR\"],31:[\"NL\"],32:[\"BE\"],33:[\"FR\"],34:[\"ES\"],36:[\"HU\"],39:[\"IT\",\"VA\"],40:[\"RO\"],41:[\"CH\"],43:[\"AT\"],44:[\"GB\",\"GG\",\"IM\",\"JE\"],45:[\"DK\"],46:[\"SE\"],47:[\"NO\",\"SJ\"],48:[\"PL\"],49:[\"DE\"],51:[\"PE\"],52:[\"MX\"],53:[\"CU\"],54:[\"AR\"],55:[\"BR\"],56:[\"CL\"],57:[\"CO\"],58:[\"VE\"],60:[\"MY\"],61:[\"AU\",\"CC\",\"CX\"],62:[\"ID\"],63:[\"PH\"],64:[\"NZ\"],65:[\"SG\"],66:[\"TH\"],81:[\"JP\"],82:[\"KR\"],84:[\"VN\"],\n86:[\"CN\"],90:[\"TR\"],91:[\"IN\"],92:[\"PK\"],93:[\"AF\"],94:[\"LK\"],95:[\"MM\"],98:[\"IR\"],211:[\"SS\"],212:[\"MA\",\"EH\"],213:[\"DZ\"],216:[\"TN\"],218:[\"LY\"],220:[\"GM\"],221:[\"SN\"],222:[\"MR\"],223:[\"ML\"],224:[\"GN\"],225:[\"CI\"],226:[\"BF\"],227:[\"NE\"],228:[\"TG\"],229:[\"BJ\"],230:[\"MU\"],231:[\"LR\"],232:[\"SL\"],233:[\"GH\"],234:[\"NG\"],235:[\"TD\"],236:[\"CF\"],237:[\"CM\"],238:[\"CV\"],239:[\"ST\"],240:[\"GQ\"],241:[\"GA\"],242:[\"CG\"],243:[\"CD\"],244:[\"AO\"],245:[\"GW\"],246:[\"IO\"],247:[\"AC\"],248:[\"SC\"],249:[\"SD\"],250:[\"RW\"],251:[\"ET\"],252:[\"SO\"],\n253:[\"DJ\"],254:[\"KE\"],255:[\"TZ\"],256:[\"UG\"],257:[\"BI\"],258:[\"MZ\"],260:[\"ZM\"],261:[\"MG\"],262:[\"RE\",\"YT\"],263:[\"ZW\"],264:[\"NA\"],265:[\"MW\"],266:[\"LS\"],267:[\"BW\"],268:[\"SZ\"],269:[\"KM\"],290:[\"SH\",\"TA\"],291:[\"ER\"],297:[\"AW\"],298:[\"FO\"],299:[\"GL\"],350:[\"GI\"],351:[\"PT\"],352:[\"LU\"],353:[\"IE\"],354:[\"IS\"],355:[\"AL\"],356:[\"MT\"],357:[\"CY\"],358:[\"FI\",\"AX\"],359:[\"BG\"],370:[\"LT\"],371:[\"LV\"],372:[\"EE\"],373:[\"MD\"],374:[\"AM\"],375:[\"BY\"],376:[\"AD\"],377:[\"MC\"],378:[\"SM\"],380:[\"UA\"],381:[\"RS\"],382:[\"ME\"],383:[\"XK\"],385:[\"HR\"],\n386:[\"SI\"],387:[\"BA\"],389:[\"MK\"],420:[\"CZ\"],421:[\"SK\"],423:[\"LI\"],500:[\"FK\"],501:[\"BZ\"],502:[\"GT\"],503:[\"SV\"],504:[\"HN\"],505:[\"NI\"],506:[\"CR\"],507:[\"PA\"],508:[\"PM\"],509:[\"HT\"],590:[\"GP\",\"BL\",\"MF\"],591:[\"BO\"],592:[\"GY\"],593:[\"EC\"],594:[\"GF\"],595:[\"PY\"],596:[\"MQ\"],597:[\"SR\"],598:[\"UY\"],599:[\"CW\",\"BQ\"],670:[\"TL\"],672:[\"NF\"],673:[\"BN\"],674:[\"NR\"],675:[\"PG\"],676:[\"TO\"],677:[\"SB\"],678:[\"VU\"],679:[\"FJ\"],680:[\"PW\"],681:[\"WF\"],682:[\"CK\"],683:[\"NU\"],685:[\"WS\"],686:[\"KI\"],687:[\"NC\"],688:[\"TV\"],689:[\"PF\"],690:[\"TK\"],\n691:[\"FM\"],692:[\"MH\"],800:[\"001\"],808:[\"001\"],850:[\"KP\"],852:[\"HK\"],853:[\"MO\"],855:[\"KH\"],856:[\"LA\"],870:[\"001\"],878:[\"001\"],880:[\"BD\"],881:[\"001\"],882:[\"001\"],883:[\"001\"],886:[\"TW\"],888:[\"001\"],960:[\"MV\"],961:[\"LB\"],962:[\"JO\"],963:[\"SY\"],964:[\"IQ\"],965:[\"KW\"],966:[\"SA\"],967:[\"YE\"],968:[\"OM\"],970:[\"PS\"],971:[\"AE\"],972:[\"IL\"],973:[\"BH\"],974:[\"QA\"],975:[\"BT\"],976:[\"MN\"],977:[\"NP\"],979:[\"001\"],992:[\"TJ\"],993:[\"TM\"],994:[\"AZ\"],995:[\"GE\"],996:[\"KG\"],998:[\"UZ\"]},va={AC:[,[,,\"(?:[01589]\\\\d|[46])\\\\d{4}\",\n,,,,,,[5,6]],[,,\"6[2-467]\\\\d{3}\",,,,\"62889\",,,[5]],[,,\"4\\\\d{4}\",,,,\"40123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AC\",247,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:0[1-9]|[1589]\\\\d)\\\\d{4}\",,,,\"542011\",,,[6]],,,[,,,,,,,,,[-1]]],AD:[,[,,\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",,,,,,,[6,8,9]],[,,\"[78]\\\\d{5}\",,,,\"712345\",,,[6]],[,,\"690\\\\d{6}|[356]\\\\d{5}\",,,,\"312345\",,,[6,9]],[,,\"180[02]\\\\d{4}\",,,,\"18001234\",,,[8]],[,,\"[19]\\\\d{5}\",,,,\"912345\",,,[6]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AD\",376,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],,[,,,,,,,,,[-1]],,,[,,\"1800\\\\d{4}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AE:[,[,,\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"[2-4679][2-8]\\\\d{6}\",,,,\"22345678\",,,[8],[7]],[,,\"5[024-68]\\\\d{7}\",,,,\"501234567\",,,[9]],[,,\"400\\\\d{6}|800\\\\d{2,9}\",,,,\"800123456\"],\n[,,\"900[02]\\\\d{5}\",,,,\"900234567\",,,[9]],[,,\"700[05]\\\\d{5}\",,,,\"700012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AE\",971,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"600[25]\\\\d{5}\",,,,\"600212345\",,,[9]],,,[,,,,,,,,,[-1]]],AF:[,[,,\"[2-7]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\\\d{6}\",\n,,,\"234567890\",,,,[7]],[,,\"7\\\\d{8}\",,,,\"701234567\",,,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AF\",93,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AG:[,[,,\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"268(?:4(?:6[0-38]|84)|56[0-2])\\\\d{4}\",,,,\"2684601234\",\n,,,[7]],[,,\"268(?:464|7(?:1[3-9]|[28]\\\\d|3[0246]|64|7[0-689]))\\\\d{4}\",,,,\"2684641234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"26848[01]\\\\d{4}\",,,,\"2684801234\",,,,[7]],\n\"AG\",1,\"011\",\"1\",,,\"1|([457]\\\\d{6})$\",\"268$1\",,,,,[,,\"26840[69]\\\\d{4}\",,,,\"2684061234\",,,,[7]],,\"268\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AI:[,[,,\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"264(?:292|4(?:6[12]|9[78]))\\\\d{4}\",,,,\"2644612345\",,,,[7]],[,,\"264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\\\d{4}\",,,,\"2642351234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AI\",1,\"011\",\"1\",,,\"1|([2457]\\\\d{6})$\",\"264$1\",,,,,[,,\"264724\\\\d{4}\",,,,\"2647241234\",,,,[7]],,\"264\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AL:[,[,,\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",,,,,,,[6,7,8,9],[5]],[,,\"4505[0-2]\\\\d{3}|(?:[2358][16-9]\\\\d[2-9]|4410)\\\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\\\d))\\\\d{5}\",,,,\"22345678\",,,[8],[5,6,7]],[,,\"6(?:[78][2-9]|9\\\\d)\\\\d{6}\",,,,\"672123456\",,,[9]],[,,\"800\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"900[1-9]\\\\d\\\\d\",\n,,,\"900123\",,,[6]],[,,\"808[1-9]\\\\d\\\\d\",,,,\"808123\",,,[6]],[,,\"700[2-9]\\\\d{4}\",,,,\"70021234\",,,[8]],[,,,,,,,,,[-1]],\"AL\",355,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AM:[,[,,\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",\n,,,,,,[8],[5,6]],[,,\"(?:(?:1[0-25]|47)\\\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\\\d{5}\",,,,\"10123456\",,,,[5,6]],[,,\"(?:33|4[1349]|55|77|88|9[13-9])\\\\d{6}\",,,,\"77123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[016]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-4]\\\\d{5}\",,,,\"80112345\"],[,,,,,,,,,[-1]],[,,\"60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\\\d|9[01])\\\\d{4}\",,,,\"60271234\"],\"AM\",374,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\n\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AO:[,[,,\"[29]\\\\d{8}\",,,,,,,[9]],[,,\"2\\\\d(?:[0134][25-9]|[25-9]\\\\d)\\\\d{5}\",,,,\"222123456\"],[,,\"9[1-49]\\\\d{7}\",,,,\"923123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AO\",244,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]]],AR:[,[,,\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",,,,,,,[10,11],[6,7,8]],[,,\"3888[013-9]\\\\d{5}|(?:29(?:54|66)|3(?:777|865))[2-8]\\\\d{5}|3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|(?:2(?:284|302|657|920)|3(?:4(?:8[27]|92)|541|755|878))[2-7]\\\\d{5}|(?:2(?:(?:26|62)2|32[03]|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:(?:11[1-8]|670)\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-8]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:[03][45]|[17][2-6]|[58][3-6])))\\\\d{6}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\",\n,,,\"1123456789\",,,[10],[6,7,8]],[,,\"93888[013-9]\\\\d{5}|9(?:29(?:54|66)|3(?:777|865))[2-8]\\\\d{5}|93(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|473|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|9(?:2(?:284|302|657|920)|3(?:4(?:8[27]|92)|541|755|878))[2-7]\\\\d{5}|9(?:2(?:(?:26|62)2|32[03]|477|9(?:42|83))|3(?:329|4(?:[47]6|62|89)|564))[2-6]\\\\d{5}|(?:675\\\\d|9(?:11[1-8]\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-7]|[235][4-6]|84)|5(?:1[2-8]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:[03][45]|[17][2-6]|[58][3-6]))))\\\\d{6}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|475|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|9(?:2(?:2(?:57|81)|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|71)|5(?:25|37|4[347]|71)|7(?:18|5[17])))[3-6]\\\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[03-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[145]|4[13]|5[468]|7[2-5]|8[26])|8(?:2[5-7]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\",\n,,,\"91123456789\",,,,[6,7,8]],[,,\"800\\\\d{7,8}\",,,,\"8001234567\"],[,,\"60[04579]\\\\d{7}\",,,,\"6001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AR\",54,\"00\",\"0\",,,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\n\"9$1\",,,[[,\"(\\\\d{3})\",\"$1\",[\"0|1(?:0[0-35-7]|1[02-5]|2[015]|3[47]|4[478])|911\"]],[,\"(\\\\d{2})(\\\\d{4})\",\"$1-$2\",[\"[1-9]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[1-8]\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\n\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1],[,\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\n\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\"]],[[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\n\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\n\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",,1],[,\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\n\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"]],\n[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"91\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3-$4\",[\"9\"]]],[,,,,,,,,,[-1]],,,[,,\"810\\\\d{7}\",,,,,,,[10]],[,,\"810\\\\d{7}\",,,,\"8101234567\",,,[10]],,,[,,,,,,,,,[-1]]],AS:[,[,,\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"6846(?:22|33|44|55|77|88|9[19])\\\\d{4}\",,,,\"6846221234\",,,,[7]],[,,\"684(?:2(?:48|5[2468]|72)|7(?:3[13]|70|82))\\\\d{4}\",,,,\"6847331234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"AS\",1,\"011\",\"1\",,,\"1|([267]\\\\d{6})$\",\"684$1\",,,,,[,,,,,,,,,[-1]],,\"684\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AT:[,[,,\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",\n,,,,,,[4,5,6,7,8,9,10,11,12,13],[3]],[,,\"1(?:11\\\\d|[2-9]\\\\d{3,11})|(?:316|463|(?:51|66|73)2)\\\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-8]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\\\d{4,10}\",,,,\"1234567890\",,,,[3]],[,,\"6(?:5[0-3579]|6[013-9]|[7-9]\\\\d)\\\\d{4,10}\",,,,\"664123456\",,,[7,8,9,10,11,12,13]],[,,\"800\\\\d{6,10}\",\n,,,\"800123456\",,,[9,10,11,12,13]],[,,\"(?:8[69][2-68]|9(?:0[01]|3[019]))\\\\d{6,10}\",,,,\"900123456\",,,[9,10,11,12,13]],[,,\"8(?:10|2[018])\\\\d{6,10}|828\\\\d{5}\",,,,\"810123456\",,,[8,9,10,11,12,13]],[,,,,,,,,,[-1]],[,,\"5(?:0[1-9]|17|[79]\\\\d)\\\\d{2,10}|7[28]0\\\\d{6,10}\",,,,\"780123456\",,,[5,6,7,8,9,10,11,12,13]],\"AT\",43,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[,\"(\\\\d{6})\",\"$1\",[\"1\"]],\n[,\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],\n[,\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AU:[,[,,\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",,,,,,,[5,6,7,8,9,10,12]],[,,\"(?:(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8]))\\\\d{3}|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4]))|(?:6[0-8]|[78]\\\\d)\\\\d{3}|9(?:[02-9]\\\\d{3}|1(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79])))))\\\\d{3}\",\n,,,\"212345678\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"AU\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|(183[12])\",\n,\"0011\",,[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"13\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"19\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"180\",\"1802\"]],[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"19\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\",\"$CC ($1)\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",\n[\"130\"]]],[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\",\"$CC ($1)\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],[,,\"163\\\\d{2,6}\",,,,\"1631234\",,,[5,6,7,8,9]],1,,[,,\"1(?:3(?:00\\\\d{5}|45[0-4])|802)\\\\d{3}|1[38]00\\\\d{6}|13\\\\d{4}\",,,,,,,[6,7,8,10,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AW:[,[,,\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",\n,,,,,,[7]],[,,\"5(?:2\\\\d|8[1-9])\\\\d{4}\",,,,\"5212345\"],[,,\"(?:290|5[69]\\\\d|6(?:[03]0|22|4[0-2]|[69]\\\\d)|7(?:[34]\\\\d|7[07])|9(?:6[45]|9[4-8]))\\\\d{4}\",,,,\"5601234\"],[,,\"800\\\\d{4}\",,,,\"8001234\"],[,,\"900\\\\d{4}\",,,,\"9001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:28\\\\d|501)\\\\d{4}\",,,,\"5011234\"],\"AW\",297,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AX:[,[,,\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",\n,,,,,,[5,6,7,8,9,10,11,12]],[,,\"18[1-8]\\\\d{3,6}\",,,,\"181234567\",,,[6,7,8,9]],[,,\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",,,,\"412345678\",,,[6,7,8,9,10]],[,,\"800\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AX\",358,\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,,,[,,,,,,,,,[-1]],,\"18\",[,,,,,,,,,[-1]],[,,\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\",\n,,,\"10112345\"],,,[,,,,,,,,,[-1]]],AZ:[,[,,\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",,,,,,,[9],[7]],[,,\"(?:2[12]428|3655[02])\\\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\\\d{5}|(?:(?:1[28]|46)\\\\d|2(?:[014-6]2|[23]3))\\\\d{6}\",,,,\"123123456\",,,,[7]],[,,\"36554\\\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\\\d{7}\",,,,\"401234567\"],[,,\"88\\\\d{7}\",,,,\"881234567\"],[,,\"900200\\\\d{3}\",,,,\"900200123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"AZ\",994,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[1-9]\"]],[,\n\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[13-9]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BA:[,[,,\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",,,,,,,[8,9],[6]],[,,\"(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\\\d{5}\",,,,\"30212345\",,,[8],[6]],[,,\"6040\\\\d{5}|6(?:03|[1-356]|44|7\\\\d)\\\\d{6}\",,,,\"61123456\"],[,,\"8[08]\\\\d{6}\",,,,\"80123456\",,,[8]],[,,\"9[0246]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"8[12]\\\\d{6}\",,,,\"82123456\",,,[8]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BA\",387,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]],[,,\"703[235]0\\\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\\\d{4}\",,,,\"70341234\",,,[8]],,,[,,,,,,,,,[-1]]],BB:[,[,,\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\\\d|3[2-9])|5(?:20|[34]\\\\d|54|7[1-3])|6(?:2\\\\d|38)|7[35]7|9(?:1[89]|63))\\\\d{4}\",,,,\"2464123456\",,,,[7]],[,,\"246(?:2(?:[3568]\\\\d|4[0-57-9])|45\\\\d|69[5-7]|8(?:[2-5]\\\\d|83))\\\\d{4}\",,,,\"2462501234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"(?:246976|900[2-9]\\\\d\\\\d)\\\\d{4}\",\n,,,\"9002123456\",,,,[7]],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"24631\\\\d{5}\",,,,\"2463101234\",,,,[7]],\"BB\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"246$1\",,,,,[,,,,,,,,,[-1]],,\"246\",[,,,,,,,,,[-1]],[,,\"246(?:292|367|4(?:1[7-9]|3[01]|44|67)|7(?:36|53))\\\\d{4}\",,,,\"2464301234\",,,,\n[7]],,,[,,,,,,,,,[-1]]],BD:[,[,,\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",,,,,,,[6,7,8,9,10]],[,,\"(?:4(?:31\\\\d\\\\d|423)|5222)\\\\d{3}(?:\\\\d{2})?|8332[6-9]\\\\d\\\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\\\d{4}|(?:2(?:222|[45]\\\\d)\\\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\\\d{5}|[59]1\\\\d{5}\",\n,,,\"27111234\"],[,,\"(?:1[13-9]\\\\d|644)\\\\d{7}|(?:3[78]|44|66)[02-9]\\\\d{7}\",,,,\"1812345678\",,,[10]],[,,\"80[03]\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"96(?:0[469]|1[0-47]|3[389]|6[69]|7[78])\\\\d{6}\",,,,\"9604123456\",,,[10]],\"BD\",880,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\n\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|22\"],\"0$1\"],[,\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BE:[,[,,\"4\\\\d{8}|[1-9]\\\\d{7}\",,,,,,,[8,9]],[,,\"80[2-8]\\\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\\\d{6}\",,,,\"12345678\",,,[8]],[,,\"4[5-9]\\\\d{7}\",,,,\"470123456\",,,[9]],[,,\"800[1-9]\\\\d{4}\",,,,\"80012345\",,,[8]],[,,\"(?:70(?:2[0-57]|3[04-7]|44|69|7[0579])|90(?:0[0-8]|1[36]|2[0-3568]|3[013-689]|[47][2-68]|5[1-68]|6[0-378]|9[34679]))\\\\d{4}\",\n,,,\"90012345\",,,[8]],[,,\"7879\\\\d{4}\",,,,\"78791234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BE\",32,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"78(?:0[57]|1[0458]|2[25]|3[15-8]|48|[56]0|7[078]|9\\\\d)\\\\d{4}\",,,,\"78102345\",,,[8]],\n,,[,,,,,,,,,[-1]]],BF:[,[,,\"[025-7]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:0(?:49|5[23]|6[56]|9[016-9])|4(?:4[569]|5[4-6]|6[56]|7[0179])|5(?:[34]\\\\d|50|6[5-7]))\\\\d{4}\",,,,\"20491234\"],[,,\"(?:0[1267]|5[1-8]|[67]\\\\d)\\\\d{6}\",,,,\"70123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BF\",226,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BG:[,[,,\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",\n,,,,,,[6,7,8,9],[4,5]],[,,\"2\\\\d{5,7}|(?:43[1-6]|70[1-9])\\\\d{4,5}|(?:[36]\\\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\\\d{5,6}\",,,,\"2123456\",,,[6,7,8],[4,5]],[,,\"(?:43[07-9]|99[69]\\\\d)\\\\d{5}|(?:8[7-9]|98)\\\\d{7}\",,,,\"43012345\",,,[8,9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"700\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BG\",359,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{6})\",\"$1\",[\"1\"]],[,\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",\n[\"43[1-6]|70[1-9]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\n\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BH:[,[,,\"[136-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:3[1356]|6[0156]|7\\\\d)\\\\d|6(?:1[16]\\\\d|500|6(?:0\\\\d|3[12]|44|7[7-9]|88)|9[69][69])|7(?:1(?:11|78)|7\\\\d\\\\d))\\\\d{4}\",\n,,,\"17001234\"],[,,\"(?:3(?:[1-79]\\\\d|8[0-47-9])\\\\d|6(?:3(?:00|33|6[16])|6(?:3[03-9]|[69]\\\\d|7[0-6])))\\\\d{4}\",,,,\"36001234\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"(?:87|9[014578])\\\\d{6}\",,,,\"90123456\"],[,,\"84\\\\d{6}\",,,,\"84123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BH\",973,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BI:[,[,,\"(?:[267]\\\\d|31)\\\\d{6}\",,,,,,,[8]],[,,\"(?:22|31)\\\\d{6}\",,,,\"22201234\"],[,,\"(?:29|6[1257-9]|7[125-9])\\\\d{6}\",\n,,,\"79561234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BI\",257,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BJ:[,[,,\"[25689]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:02|1[037]|2[45]|3[68])\\\\d{5}\",,,,\"20211234\"],[,,\"(?:5[1-8]|6\\\\d|9[013-9])\\\\d{6}\",,,,\"90011234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"857[58]\\\\d{4}\",,,,\"85751234\"],\"BJ\",229,\"00\",\n,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[25689]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"81\\\\d{6}\",,,,\"81123456\"],,,[,,,,,,,,,[-1]]],BL:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:2[7-9]|5[12]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"BL\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BM:[,[,,\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"441(?:[46]\\\\d\\\\d|5(?:4\\\\d|60|89))\\\\d{4}\",,,,\"4414123456\",,,,[7]],[,,\"441(?:[2378]\\\\d|5[0-39])\\\\d{5}\",,,,\"4413701234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BM\",1,\"011\",\"1\",,,\"1|([2-8]\\\\d{6})$\",\"441$1\",,,,,[,,,,,,,,,[-1]],,\"441\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BN:[,[,,\"[2-578]\\\\d{6}\",,,,,,,[7]],[,,\"22[0-7]\\\\d{4}|(?:2[013-9]|[34]\\\\d|5[0-25-9])\\\\d{5}\",,,,\"2345678\"],[,,\"(?:22[89]|[78]\\\\d\\\\d)\\\\d{4}\",,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[34]\\\\d{5}\",,,,\"5345678\"],\"BN\",673,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BO:[,[,,\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",,,,,,,[8,9],[7]],[,,\"(?:2(?:2\\\\d\\\\d|5(?:11|[258]\\\\d|9[67])|6(?:12|2\\\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\\\d\\\\d|4(?:6\\\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\\\d\\\\d|6(?:11|[24689]\\\\d|72)))\\\\d{4}\",,,,\"22123456\",,,[8],[7]],[,,\"[67]\\\\d{7}\",,,,\"71234567\",,,[8]],[,,\"8001[07]\\\\d{4}\",,,,\"800171234\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BO\",591,\"00(?:1\\\\d)?\",\"0\",\n,,\"0(1\\\\d)?\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"],,\"0$CC $1\"],[,\"(\\\\d{8})\",\"$1\",[\"[67]\"],,\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],,\"0$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,\"8001[07]\\\\d{4}\",,,,,,,[9]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BQ:[,[,,\"(?:[34]1|7\\\\d)\\\\d{5}\",,,,,,,[7]],[,,\"(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\\\d)\\\\d{3}\",,,,\"7151234\"],[,,\"(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\\\d|9[056])\\\\d)\\\\d{3}\",,,,\"3181234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BQ\",599,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"[347]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BR:[,[,,\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",,,,,,,[8,9,10,11]],[,,\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\\\d{7}\",,,,\"1123456789\",,,[10],[8]],[,,\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\\\d)\\\\d{7}\",,,,\"11961234567\",,,[10,11],[8,9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\",,\n,[9,10]],[,,\"300\\\\d{6}|[59]00\\\\d{6,7}\",,,,\"300123456\",,,[9,10]],[,,\"300\\\\d{7}|[34]00\\\\d{5}|4(?:02|37)0\\\\d{4}\",,,,\"40041234\",,,[8,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BR\",55,\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"0\",,,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\",,,[[,\"(\\\\d{3,6})\",\"$1\",[\"1(?:1[25-8]|2[357-9]|3[02-68]|4[12568]|5|6[0-8]|8[015]|9[0-47-9])|321|610\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[2-57]\",\n\"[2357]|4(?:[0-24-9]|3(?:[0-689]|7[1-9]))\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"9\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\",\"0 $CC ($1)\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\",\"0 $CC ($1)\"]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\",\"0 $CC ($1)\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\",\"0 $CC ($1)\"]],[,,,,,,,,,[-1]],,,[,,\"4020\\\\d{4}|[34]00\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BS:[,[,,\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-4]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\\\d{4}\",,,,\"2423456789\",,,,[7]],[,,\"242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\\\d|[89]9))\\\\d{4}\",\n,,,\"2423591234\",,,,[7]],[,,\"242300\\\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\",,,,[7]],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"BS\",1,\"011\",\"1\",,,\"1|([3-8]\\\\d{6})$\",\"242$1\",,,,,[,,,,,,,,,[-1]],,\"242\",[,,,,\n,,,,,[-1]],[,,\"242225\\\\d{4}\",,,,\"2422250123\"],,,[,,,,,,,,,[-1]]],BT:[,[,,\"[17]\\\\d{7}|[2-8]\\\\d{6}\",,,,,,,[7,8],[6]],[,,\"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\\\d{5}\",,,,\"2345678\",,,[7],[6]],[,,\"(?:1[67]|77)\\\\d{6}\",,,,\"17123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BT\",975,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[2-7]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]],\n[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BW:[,[,,\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\\\d|7[013])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\\\d{4}\",,,,\"2401234\",,,[7]],[,,\"(?:321|7(?:[1-7]\\\\d|8[01]))\\\\d{5}\",,\n,,\"71123456\",,,[8]],[,,\"(?:0800|800\\\\d)\\\\d{6}\",,,,\"0800012345\",,,[10]],[,,\"90\\\\d{5}\",,,,\"9012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"79(?:1(?:[01]\\\\d|20)|2[0-25-7]\\\\d)\\\\d{3}\",,,,\"79101234\",,,[8]],\"BW\",267,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-79]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,\n,,[-1]],,,[,,,,,,,,,[-1]]],BY:[,[,,\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",,,,,,,[6,7,8,9,10,11],[5]],[,,\"(?:1(?:5(?:1[1-5]|[24]\\\\d|6[2-4]|9[1-7])|6(?:[235]\\\\d|4[1-7])|7\\\\d\\\\d)|2(?:1(?:[246]\\\\d|3[0-35-9]|5[1-9])|2(?:[235]\\\\d|4[0-8])|3(?:[26]\\\\d|3[02-79]|4[024-7]|5[03-7])))\\\\d{5}\",,,,\"152450911\",,,[9],[5,6,7]],[,,\"(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\\\d)\\\\d{6}\",,,,\"294911911\",,,[9]],[,,\"800\\\\d{3,7}|8(?:0[13]|20\\\\d)\\\\d{7}\",\n,,,\"8011234567\"],[,,\"(?:810|902)\\\\d{7}\",,,,\"9021234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"249\\\\d{6}\",,,,\"249123456\",,,[9]],\"BY\",375,\"810\",\"8\",,,\"0|80?\",,\"8~10\",,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,\"800\\\\d{3,7}|(?:8(?:0[13]|10|20\\\\d)|902)\\\\d{7}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],BZ:[,[,,\"(?:0800\\\\d|[2-8])\\\\d{6}\",,,,,,,[7,11]],[,,\"(?:2(?:[02]\\\\d|36|[68]0)|[3-58](?:[02]\\\\d|[68]0)|7(?:[02]\\\\d|32|[68]0))\\\\d{4}\",,,,\"2221234\",,,[7]],[,,\"6[0-35-7]\\\\d{5}\",,,,\"6221234\",,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234123\",\n,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"BZ\",501,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CA:[,[,,\"(?:[2-8]\\\\d|90)\\\\d{8}\",,,,,,,[10],[7]],[,,\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",,,,\"5062345678\",\n,,,[7]],[,,\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[578])|4(?:03|1[68]|3[178]|50|74)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\",,,,\"5062345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,\"600[2-9]\\\\d{6}\",,,,\"6002012345\"],\"CA\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CC:[,[,,\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",,,,,,,[6,7,8,9,10,12]],[,,\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",,,,\"891621234\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",\n,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"CC\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|([59]\\\\d{7})$\",\"8$1\",\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CD:[,[,,\"[189]\\\\d{8}|[1-68]\\\\d{6}\",,,,,,\n,[7,9]],[,,\"12\\\\d{7}|[1-6]\\\\d{6}\",,,,\"1234567\"],[,,\"88\\\\d{5}|(?:8[0-59]|9[017-9])\\\\d{7}\",,,,\"991234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CD\",243,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CF:[,[,,\n\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",,,,,,,[8]],[,,\"2[12]\\\\d{6}\",,,,\"21612345\"],[,,\"7[02457]\\\\d{6}\",,,,\"70012345\"],[,,,,,,,,,[-1]],[,,\"8776\\\\d{4}\",,,,\"87761234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CF\",236,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CG:[,[,,\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",,,,,,,[9]],[,,\"222[1-589]\\\\d{5}\",,,,\"222123456\"],[,,\"026(?:1[0-5]|6[6-9])\\\\d{4}|0(?:[14-6]\\\\d\\\\d|2(?:40|5[5-8]|6[07-9]))\\\\d{5}\",\n,,,\"061234567\"],[,,,,,,,,,[-1]],[,,\"80(?:0\\\\d\\\\d|120)\\\\d{4}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CG\",242,\"00\",,,,,,,,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CH:[,[,,\"8\\\\d{11}|[2-9]\\\\d{8}\",,,,,,,[9,12]],[,,\"(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"7[35-9]\\\\d{7}\",,,,\"781234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",\n,,[9]],[,,\"90[016]\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"84[0248]\\\\d{6}\",,,,\"840123456\",,,[9]],[,,\"878\\\\d{6}\",,,,\"878123456\",,,[9]],[,,,,,,,,,[-1]],\"CH\",41,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],,[,,\"74[0248]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"5[18]\\\\d{7}\",,,,\"581234567\",,,[9]],,,[,,\"860\\\\d{9}\",,,,\"860123456789\",\n,,[12]]],CI:[,[,,\"[02]\\\\d{9}\",,,,,,,[10]],[,,\"2(?:[15]\\\\d{3}|7(?:2(?:0[23]|1[2357]|[23][45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\\\d{5}\",,,,\"2123456789\"],[,,\"0704[0-7]\\\\d{5}|0(?:[15]\\\\d\\\\d|7(?:0[0-37-9]|[4-9][7-9]))\\\\d{6}\",,,,\"0123456789\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CI\",225,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,\n,[,,,,,,,,,[-1]]],CK:[,[,,\"[2-578]\\\\d{4}\",,,,,,,[5]],[,,\"(?:2\\\\d|3[13-7]|4[1-5])\\\\d{3}\",,,,\"21234\"],[,,\"[578]\\\\d{4}\",,,,\"71234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CK\",682,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CL:[,[,,\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",,,,,,,[9,10,11]],[,,\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\\\d\\\\d|3(?:[034]\\\\d|1[0-35-9]|2[1-9]|5[0-2])|600)|6469)|80[1-9]\\\\d\\\\d|9(?:3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|7[1-9]\\\\d\\\\d|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",\n,,,\"221234567\",,,[9]],[,,\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:2\\\\d\\\\d|3(?:[034]\\\\d|1[0-35-9]|2[1-9]|5[0-2])|600)|6469)|80[1-9]\\\\d\\\\d|9(?:3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|7[1-9]\\\\d\\\\d|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",,,,\"221234567\",,,[9]],[,,\"(?:123|8)00\\\\d{6}\",,,,\"800123456\",,,[9,11]],[,,,,,,,,,[-1]],[,,\"600\\\\d{7,8}\",,\n,,\"6001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,\"44\\\\d{7}\",,,,\"441234567\",,,[9]],\"CL\",56,\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",,,,,,,1,[[,\"(\\\\d{4})\",\"$1\",[\"1(?:[03-589]|21)|[29]0|78\"]],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],\n[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],[[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",\n[\"60|8\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],[,,,,,,,,,[-1]],,,[,,\"600\\\\d{7,8}\",,,,,,,[10,11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CM:[,[,,\"[26]\\\\d{8}|88\\\\d{6,7}\",,,,,,,[8,9]],[,,\"2(?:22|33)\\\\d{6}\",,,,\"222123456\",,,[9]],[,,\"(?:24[23]|6[5-9]\\\\d)\\\\d{6}\",,,,\"671234567\",,,[9]],[,,\"88\\\\d{6,7}\",,,,\"88012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CM\",237,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"88\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CN:[,[,,\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",,,,,,,[7,8,9,10,11,12],[5,6]],[,,\"(?:10(?:[02-79]\\\\d\\\\d|[18](?:0[1-9]|[1-9]\\\\d))|21(?:[18](?:0[1-9]|[1-9]\\\\d)|[2-79]\\\\d\\\\d))\\\\d{5}|(?:43[35]|754)\\\\d{7,8}|8(?:078\\\\d{7}|51\\\\d{7,8})|(?:10|(?:2|85)1|43[35]|754)(?:100\\\\d\\\\d|95\\\\d{3,4})|(?:2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\\\d{7}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{3})?|[1-9]\\\\d{5})|[1-9]\\\\d{6})|9(?:[0-46-9]\\\\d{6}|5\\\\d{3}(?:\\\\d(?:\\\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[02-8]\\\\d{6}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{2})?|[1-9]\\\\d{4})|[1-9]\\\\d{5})|9(?:[0-46-9]\\\\d{5}|5\\\\d{3,5}))\",\n,,,\"1012345678\",,,[7,8,9,10,11],[5,6]],[,,\"1740[0-5]\\\\d{6}|1(?:[38]\\\\d|4[57]|5[0-35-9]|6[25-7]|7[0-35-8]|9[0135-9])\\\\d{8}\",,,,\"13123456789\",,,[11]],[,,\"(?:(?:10|21)8|8)00\\\\d{7}\",,,,\"8001234567\",,,[10,12]],[,,\"16[08]\\\\d{5}\",,,,\"16812345\",,,[8]],[,,\"400\\\\d{7}|950\\\\d{7,8}|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))96\\\\d{3,4}\",\n,,,\"4001234567\",,,[7,8,9,10,11],[5,6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CN\",86,\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"0\",,,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",,\"00\",,[[,\"(\\\\d{5,6})\",\"$1\",[\"96\"]],[,\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\n\"$1 $2\",[\"16[08]\"]],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\n\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\n\"0$1\",\"$CC $1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\",\"1[1-9]|26|[3-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])\",\"26|3(?:[0268]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|50|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9])|(?:34|85[23])[0-8]|(?:1|58)[1-9]|(?:63|95)[06-9]|(?:33|85[23]9)[0-46-9]|(?:10|2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[0-8]|9[0-47-9])\",\n\"26|3(?:[0268]|3[0-46-9]|4[0-8]|9[079])|4(?:[049]|2[02-68]|[35]0|6[0-356]|8[014-9])|5(?:0|2[0-24-689]|4[0-2457-9]|6[057-9]|90)|6(?:[0-24578]|3[06-9]|6[14-79]|9[03-9])|7(?:0[02-9]|2[0135-79]|3[23]|4[0-27-9]|6[1457]|8)|8(?:[046]|1[01459]|2[0-489]|5(?:0|[23](?:[02-8]|1[1-9]|9[0-46-9]))|8[0-2459]|9[09])|9(?:0[0457]|1[08]|[268]|4[024-9]|5[06-9])|(?:1|58|85[23]10)[1-9]|(?:10|2[0-57-9])(?:[0-8]|9[0-47-9])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:[02-8]|1(?:0[1-9]|[1-9])|9[0-47-9])\"]],\n[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{7,8})\",\n\"$1 $2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",,1]],[[,\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\n\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\n\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\",\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\n\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",\"$CC $1\",1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"],,\"$CC $1\"],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",,1]],[,,,,,,,,,[-1]],,,[,,\"(?:(?:10|21)8|[48])00\\\\d{7}|950\\\\d{7,8}\",,,,,,,[10,11,12]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CO:[,[,,\"(?:(?:1\\\\d|[36])\\\\d{3}|9101)\\\\d{6}|[124-8]\\\\d{7}\",,,,,,,[8,10,11],[7]],[,,\"60[124-8][2-9]\\\\d{6}|[124-8][2-9]\\\\d{6}\",,,,\"12345678\",,,[8,10],[7]],[,,\"3333(?:0(?:0\\\\d|1[0-5])|[4-9]\\\\d\\\\d)\\\\d{3}|(?:3(?:24[1-9]|3(?:00|3[0-24-9]))|9101)\\\\d{6}|3(?:0[0-5]|1\\\\d|2[0-3]|5[01]|70)\\\\d{7}\",,,,\"3211234567\",,,[10]],[,,\"1800\\\\d{7}\",\n,,,\"18001234567\",,,[11]],[,,\"19(?:0[01]|4[78])\\\\d{7}\",,,,\"19001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CO\",57,\"00(?:4(?:[14]4|56)|[579])\",\"0\",,,\"0([3579]|4(?:[14]4|56))?\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"],,\"0$CC $1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[146][2-9]|[2578]\"],\"($1)\",\"0$CC $1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",\n[\"6\"],\"($1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"[39]\"],,\"0$CC $1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CR:[,[,,\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",,,,,,,[8,10]],[,,\"210[7-9]\\\\d{4}|2(?:[024-7]\\\\d|1[1-9])\\\\d{5}\",,,,\"22123456\",,,[8]],[,,\"(?:3005\\\\d|6500[01])\\\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\\\d{6}\",,,,\"83123456\",,,[8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"90[059]\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,\"(?:210[0-6]|4\\\\d{3}|5100)\\\\d{4}\",,,,\"40001234\",,,[8]],\"CR\",506,\"00\",,,,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\",,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CU:[,[,,\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",,,,,,,[6,7,8,10],[4,5]],[,,\"(?:3[23]|48)\\\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\\\d)\\\\d{6}|(?:2[1-4]|4[1257]|7\\\\d)\\\\d{5,6}\",,,,\"71234567\",\n,,,[4,5]],[,,\"5\\\\d{7}\",,,,\"51234567\",,,[8]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"807\\\\d{7}\",,,,\"8071234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CU\",53,\"119\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CV:[,[,,\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",,,,,,,[7]],[,,\"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\\\d|7[1-3]|8[1-5])\\\\d{4}\",\n,,,\"2211234\"],[,,\"(?:[34][36]|5[1-389]|9\\\\d)\\\\d{5}\",,,,\"9911234\"],[,,\"800\\\\d{4}\",,,,\"8001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CV\",238,\"0\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CW:[,[,,\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",,,,,,,[7,8]],[,,\"9(?:4(?:3[0-5]|4[14]|6\\\\d)|50\\\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\\\d|7[01]|8[57-9]))\\\\d{4}\",,,,\"94351234\"],[,,\"953[01]\\\\d{4}|9(?:5[12467]|6[5-9])\\\\d{5}\",\n,,,\"95181234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"60[0-2]\\\\d{4}\",,,,\"6001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"CW\",599,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],,[,,\"955\\\\d{5}\",,,,\"95581234\",,,[8]],1,\"[69]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CX:[,[,,\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",,,,,,,[6,7,8,9,10,12]],[,,\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",\n,,,\"891641234\",,,[9],[8]],[,,\"4(?:83[0-38]|93[0-6])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-24-9]|9[0-27-9])\\\\d{6}\",,,,\"412345678\",,,[9]],[,,\"180(?:0\\\\d{3}|2)\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"190[0-26]\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",,,,\"1300123456\",,,[6,8,10,12]],[,,,,,,,,,[-1]],[,,\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",,,,\"147101234\",,,[9]],\"CX\",61,\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"0\",,,\"0|([59]\\\\d{7})$\",\n\"8$1\",\"0011\",,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],CY:[,[,,\"(?:[279]\\\\d|[58]0)\\\\d{6}\",,,,,,,[8]],[,,\"2[2-6]\\\\d{6}\",,,,\"22345678\"],[,,\"9[4-79]\\\\d{6}\",,,,\"96123456\"],[,,\"800\\\\d{5}\",,,,\"80001234\"],[,,\"90[09]\\\\d{5}\",,,,\"90012345\"],[,,\"80[1-9]\\\\d{5}\",,,,\"80112345\"],[,,\"700\\\\d{5}\",,,,\"70012345\"],[,,,,,,,,,[-1]],\"CY\",357,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:50|77)\\\\d{6}\",,,,\"77123456\"],,,[,,,,,,,,,[-1]]],CZ:[,\n[,,\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",,,,,,,[9,10,11,12]],[,,\"(?:2\\\\d|3[1257-9]|4[16-9]|5[13-9])\\\\d{7}\",,,,\"212345678\",,,[9]],[,,\"(?:60[1-8]|7(?:0[2-5]|[2379]\\\\d))\\\\d{6}\",,,,\"601123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:0[05689]|76)\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"8[134]\\\\d{7}\",,,,\"811234567\",,,[9]],[,,\"70[01]\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"9[17]0\\\\d{6}\",,,,\"910123456\",,,[9]],\"CZ\",420,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"96\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"9(?:5\\\\d|7[2-4])\\\\d{6}\",,,,\"972123456\",,,[9]],,,[,,\"9(?:3\\\\d{9}|6\\\\d{7,10})\",,,,\"93123456789\"]],DE:[,[,,\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:1\\\\d|2[02-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[05]\\\\d|[23]1|[46][1-8])\\\\d{1,9}\",,,,,,,[4,5,6,7,8,9,10,11,12,\n13,14,15],[2,3]],[,,\"32\\\\d{9,11}|49[2-6]\\\\d{10}|49[0-7]\\\\d{3,9}|(?:[34]0|[68]9)\\\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\\\d|[589][0-7]|6[0-8]|7[0-467]))\\\\d{3,12}\",,\n,,\"30123456\",,,[5,6,7,8,9,10,11,12,13,14,15],[2,3,4]],[,,\"15[0-25-9]\\\\d{8}|1(?:6[023]|7\\\\d)\\\\d{7,8}\",,,,\"15123456789\",,,[10,11]],[,,\"800\\\\d{7,12}\",,,,\"8001234567890\",,,[10,11,12,13,14,15]],[,,\"(?:137[7-9]|900(?:[135]|9\\\\d))\\\\d{6}\",,,,\"9001234567\",,,[10,11]],[,,\"180\\\\d{5,11}|13(?:7[1-6]\\\\d\\\\d|8)\\\\d{4}\",,,,\"18012345\",,,[7,8,9,10,11,12,13,14]],[,,\"700\\\\d{8}\",,,,\"70012345678\",,,[11]],[,,,,,,,,,[-1]],\"DE\",49,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,12})\",\n\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],\n[,\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],,[,,\"16(?:4\\\\d{1,10}|[89]\\\\d{1,11})\",,,,\"16412345\",,,[4,5,6,7,8,9,10,11,12,13,14]],,,[,,,,,,,,,[-1]],[,,\"18(?:1\\\\d{5,11}|[2-9]\\\\d{8})\",,,,\"18500123456\",,,[8,9,10,11,12,13,14]],,,[,,\"1(?:6(?:013|255|399)|7(?:(?:[015]1|[69]3)3|[2-4]55|[78]99))\\\\d{7,8}|15(?:(?:[03-68]00|113)\\\\d|2\\\\d55|7\\\\d99|9\\\\d33)\\\\d{7}\",\n,,,\"177991234567\",,,[12,13]]],DJ:[,[,,\"(?:2\\\\d|77)\\\\d{6}\",,,,,,,[8]],[,,\"2(?:1[2-5]|7[45])\\\\d{5}\",,,,\"21360003\"],[,,\"77\\\\d{6}\",,,,\"77831001\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DJ\",253,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DK:[,[,,\"[2-9]\\\\d{7}\",,,,,,,[8]],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-46-9])\\\\d{6}\",,,,\"32123456\"],[,,\"(?:[2-7]\\\\d|8[126-9]|9[1-46-9])\\\\d{6}\",\n,,,\"32123456\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"DK\",45,\"00\",,,,,,,1,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DM:[,[,,\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\\\d{4}\",,,,\"7674201234\",,,,[7]],[,,\"767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\\\d{4}\",,,,\"7672251234\",,,,[7]],\n[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DM\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\"767$1\",,,,,[,,,,,,,,,[-1]],,\"767\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nDO:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"8(?:[04]9[2-9]\\\\d\\\\d|29(?:2(?:[0-59]\\\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\\\d|4[7-9])|[45]\\\\d\\\\d|6(?:[0-27-9]\\\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\\\d{4}\",,,,\"8092345678\",,,,[7]],[,,\"8[024]9[2-9]\\\\d{6}\",,,,\"8092345678\",,,,[7]],[,,\"8(?:00(?:14|[2-9]\\\\d)|(?:33|44|55|66|77|88)[2-9]\\\\d)\\\\d{5}\",\n,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"DO\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"8001|8[024]9\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],DZ:[,[,,\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",,,,,,,[8,9]],[,\n,\"9619\\\\d{5}|(?:1\\\\d|2[013-79]|3[0-8]|4[013-689])\\\\d{6}\",,,,\"12345678\"],[,,\"(?:5(?:4[0-29]|5\\\\d|6[0-2])|6(?:[569]\\\\d|7[0-6])|7[7-9]\\\\d)\\\\d{6}\",,,,\"551234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"80[3-689]1\\\\d{5}\",,,,\"808123456\",,,[9]],[,,\"80[12]1\\\\d{5}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"98[23]\\\\d{6}\",,,,\"983123456\",,,[9]],\"DZ\",213,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],\n[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EC:[,[,,\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",,,,,,,[8,9,10,11],[7]],[,,\"[2-7][2-7]\\\\d{6}\",,,,\"22123456\",,,[8],[7]],[,,\"964[0-2]\\\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\\\d)\\\\d{6}\",,,,\"991234567\",,,[9]],[,,\"1800\\\\d{7}|1[78]00\\\\d{6}\",,,,\"18001234567\",,,[10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[2-7]890\\\\d{4}\",,,,\"28901234\",,,[8]],\"EC\",593,\"00\",\"0\",,,\n\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-7]\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-7]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EE:[,[,,\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:3[23589]|4[3-8]|6\\\\d|7[1-9]|88)\\\\d{5}\",\n,,,\"3212345\",,,[7]],[,,\"(?:5\\\\d{5}|8(?:1(?:0(?:000|[3-9]\\\\d\\\\d)|(?:1(?:0[236]|1\\\\d)|(?:23|[3-79]\\\\d)\\\\d)\\\\d)|2(?:0(?:000|(?:19|[24-7]\\\\d)\\\\d)|(?:(?:[124-6]\\\\d|3[5-9])\\\\d|7(?:[679]\\\\d|8[13-9])|8(?:[2-6]\\\\d|7[01]))\\\\d)|[349]\\\\d{4}))\\\\d\\\\d|5(?:(?:[02]\\\\d|5[0-478])\\\\d|1(?:[0-8]\\\\d|95)|6(?:4[0-4]|5[1-589]))\\\\d{3}\",,,,\"51234567\",,,[7,8]],[,,\"800(?:(?:0\\\\d\\\\d|1)\\\\d|[2-9])\\\\d{3}\",,,,\"80012345\"],[,,\"(?:40\\\\d\\\\d|900)\\\\d{4}\",,,,\"9001234\",,,[7,8]],[,,,,,,,,,[-1]],[,,\"70[0-2]\\\\d{5}\",,,,\"70012345\",,,[8]],[,,,,\n,,,,,[-1]],\"EE\",372,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,\"800[2-9]\\\\d{3}\",,,,,,,[7]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EG:[,[,,\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",\n,,,,,,[8,9,10],[6,7]],[,,\"13[23]\\\\d{6}|(?:15|57)\\\\d{6,7}|(?:2[2-4]|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\\\d{7}\",,,,\"234567890\",,,[8,9],[6,7]],[,,\"1[0-25]\\\\d{8}\",,,,\"1001234567\",,,[10]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"EG\",20,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\n\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],EH:[,[,,\"[5-8]\\\\d{8}\",,,,,,,[9]],[,,\"528[89]\\\\d{5}\",,,,\"528812345\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|6[0-367]))\\\\d{6}\",,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"592(?:4[0-2]|93)\\\\d{4}\",,,,\"592401234\"],\"EH\",212,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"528[89]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ER:[,[,,\"[178]\\\\d{6}\",,,,,,,[7],\n[6]],[,,\"(?:1(?:1[12568]|[24]0|55|6[146])|8\\\\d\\\\d)\\\\d{4}\",,,,\"8370362\",,,,[6]],[,,\"(?:17[1-3]|7\\\\d\\\\d)\\\\d{4}\",,,,\"7123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ER\",291,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ES:[,[,,\"[5-9]\\\\d{8}\",,,,,,,[9]],[,,\"96906(?:0[0-8]|1[1-9]|[2-9]\\\\d)\\\\d\\\\d|9(?:69(?:0[0-57-9]|[1-9]\\\\d)|73(?:[0-8]\\\\d|9[1-9]))\\\\d{4}|(?:8(?:[1356]\\\\d|[28][0-8]|[47][1-9])|9(?:[135]\\\\d|[268][0-8]|4[1-9]|7[124-9]))\\\\d{6}\",\n,,,\"810123456\"],[,,\"(?:590[16]00\\\\d|9(?:6906(?:09|10)|7390\\\\d\\\\d))\\\\d\\\\d|(?:6\\\\d|7[1-48])\\\\d{7}\",,,,\"612345678\"],[,,\"[89]00\\\\d{6}\",,,,\"800123456\"],[,,\"80[367]\\\\d{6}\",,,,\"803123456\"],[,,\"90[12]\\\\d{6}\",,,,\"901123456\"],[,,\"70\\\\d{7}\",,,,\"701234567\"],[,,,,,,,,,[-1]],\"ES\",34,\"00\",,,,,,,,[[,\"(\\\\d{4})\",\"$1\",[\"905\"]],[,\"(\\\\d{6})\",\"$1\",[\"[79]9\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],\n[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"51\\\\d{7}\",,,,\"511234567\"],,,[,,,,,,,,,[-1]]],ET:[,[,,\"(?:11|[2-59]\\\\d)\\\\d{7}\",,,,,,,[9],[7]],[,,\"11667[01]\\\\d{3}|(?:11(?:1(?:1[124]|2[2-7]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-3]|6[5-8])|5(?:1[578]|44|5[0-4])|6(?:1[78]|2[69]|39|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\\\d)))\\\\d{4}\",\n,,,\"111112345\",,,,[7]],[,,\"9\\\\d{8}\",,,,\"911234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ET\",251,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FI:[,[,,\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",,,,,,,[5,6,7,8,9,10,11,12]],[,,\"(?:1[3-79][1-8]|[235689][1-8]\\\\d)\\\\d{2,6}\",,,,\"131234567\",,,[5,6,7,8,9]],[,,\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",\n,,,\"412345678\",,,[6,7,8,9,10]],[,,\"800\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"[67]00\\\\d{5,6}\",,,,\"600123456\",,,[8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FI\",358,\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{5})\",\"$1\",[\"75[12]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[,\"(\\\\d{6})\",\"$1\",[\"11\"]],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[,\n\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],[,,,,,,,,,[-1]],1,\"1[03-79]|[2-9]\",[,,\"20(?:2[023]|9[89])\\\\d{1,6}|(?:60[12]\\\\d|7099)\\\\d{4,5}|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:[1-3]00|7(?:0[1-5]\\\\d\\\\d|5[03-9]))\\\\d{3,7}\"],[,,\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\",\n,,,\"10112345\"],,,[,,,,,,,,,[-1]]],FJ:[,[,,\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",,,,,,,[7,11]],[,,\"603\\\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\\\d{5}\",,,,\"3212345\",,,[7]],[,,\"(?:[279]\\\\d|45|5[01568]|8[034679])\\\\d{5}\",,,,\"7012345\",,,[7]],[,,\"0800\\\\d{7}\",,,,\"08001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FJ\",679,\"0(?:0|52)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],,,[,,,,,,,,,[-1]]],FK:[,[,,\"[2-7]\\\\d{4}\",,,,,,,[5]],[,,\"[2-47]\\\\d{4}\",,,,\"31234\"],[,,\"[56]\\\\d{4}\",,,,\"51234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FK\",500,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FM:[,[,,\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",,,,,,,[7]],[,,\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\\\d)\\\\d)\\\\d{3}\",,,,\"3201234\"],[,,\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\\\d)\\\\d)\\\\d{3}\",\n,,,\"3501234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"FM\",691,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FO:[,[,,\"[2-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:20|[34]\\\\d|8[19])\\\\d{4}\",,,,\"201234\"],[,,\"(?:[27][1-9]|5\\\\d|91)\\\\d{4}\",,,,\"211234\"],[,,\"80[257-9]\\\\d{3}\",,,,\"802123\"],[,,\"90(?:[13-5][15-7]|2[125-7]|9\\\\d)\\\\d\\\\d\",,,,\"901123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:6[0-36]|88)\\\\d{4}\",,\n,,\"601234\"],\"FO\",298,\"00\",,,,\"(10(?:01|[12]0|88))\",,,,[[,\"(\\\\d{6})\",\"$1\",[\"[2-9]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],FR:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9]],[,,\"(?:[1-35]\\\\d|4[1-9])\\\\d{7}\",,,,\"123456789\"],[,,\"(?:6(?:[0-24-8]\\\\d|3[0-8]|9[589])|7(?:00|[3-9]\\\\d))\\\\d{6}\",,,,\"612345678\"],[,,\"80[0-5]\\\\d{6}\",,,,\"801234567\"],[,,\"836(?:0[0-36-9]|[1-9]\\\\d)\\\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\\\d|8[0-35-9])\\\\d{6}\",,,,\"891123456\"],[,,\"8(?:1[01]|2[0156]|84)\\\\d{6}\",\n,,,\"884012345\"],[,,,,,,,,,[-1]],[,,\"9\\\\d{8}\",,,,\"912345678\"],\"FR\",33,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})\",\"$1\",[\"10\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"80[6-9]\\\\d{6}\",,,,\"806123456\"],\n,,[,,,,,,,,,[-1]]],GA:[,[,,\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",,,,,,,[7,8]],[,,\"[01]1\\\\d{6}\",,,,\"01441234\",,,[8]],[,,\"(?:(?:0[2-7]|7[467])\\\\d|6(?:0[0-4]|10|[256]\\\\d))\\\\d{5}|[2-7]\\\\d{6}\",,,,\"06031234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GA\",241,\"00\",,,,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\",,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GB:[,[,,\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",,,,,,,[7,9,10],[4,5,6,8]],[,,\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0235])|4(?:[0-5]\\\\d\\\\d|69[7-9]|70[0359])|(?:5[0-26-9]|[78][0-49])\\\\d\\\\d|6(?:[0-4]\\\\d\\\\d|50[0-24-69]))|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:[02]\\\\d|1[0-278])))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",\n,,,\"1212345678\",,,[9,10],[4,5,6,7,8]],[,,\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",,,,\"7400123456\",,,[10]],[,,\"80[08]\\\\d{7}|800\\\\d{6}|8001111\",,,,\"8001234567\"],[,,\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",,,,\"9012345678\",,,[7,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",\n,,[10]],\"GB\",44,\"00\",\"0\",\" x\",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\n\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",,,,\"7640123456\",,,[10]],1,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,,,,[-1]]],GD:[,[,,\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-49]|5[5-79]|73|90)|63[68]|7(?:58|84)|800|938)\\\\d{4}\",\n,,,\"4732691234\",,,,[7]],[,,\"473(?:4(?:0[2-79]|1[04-9]|2[0-5]|58)|5(?:2[01]|3[3-8])|901)\\\\d{4}\",,,,\"4734031234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GD\",\n1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"473$1\",,,,,[,,,,,,,,,[-1]],,\"473\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GE:[,[,,\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",,,,,,,[9],[6,7]],[,,\"(?:3(?:[256]\\\\d|4[124-9]|7[0-4])|4(?:1\\\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\\\d{6}\",,,,\"322123456\",,,,[6,7]],[,,\"5(?:(?:0555|1177)[5-9]|757(?:7[7-9]|8[01]))\\\\d{3}|5(?:0070|(?:11|33)33|[25]222)[0-4]\\\\d{3}|5(?:00(?:0\\\\d|50)|11(?:00|1\\\\d|2[0-4])|5200|75(?:00|[57]5)|8(?:0(?:[01]\\\\d|2[0-4])|58[89]|8(?:55|88)))\\\\d{4}|(?:5(?:[14]4|5[0157-9]|68|7[0147-9]|9[1-35-9])|790)\\\\d{6}\",\n,,,\"555123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"70[67]\\\\d{6}\",,,,\"706123456\"],\"GE\",995,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"70[67]\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GF:[,[,,\"(?:[56]94|80\\\\d|976)\\\\d{6}\",\n,,,,,,[9]],[,,\"594(?:[023]\\\\d|1[01]|4[03-9]|5[6-9]|6[0-3]|80|9[0-6])\\\\d{4}\",,,,\"594101234\"],[,,\"694(?:[0-249]\\\\d|3[0-48])\\\\d{4}\",,,,\"694201234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976\\\\d{6}\",,,,\"976012345\"],\"GF\",594,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GG:[,[,,\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",\n,,,,,,[7,9,10],[6]],[,,\"1481[25-9]\\\\d{5}\",,,,\"1481256789\",,,[10],[6]],[,,\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",,,,\"7781123456\",,,[10]],[,,\"80[08]\\\\d{7}|800\\\\d{6}|8001111\",,,,\"8001234567\"],[,,\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",,,,\"9012345678\",,,[7,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,\"56\\\\d{8}\",,,,\"5612345678\",,,[10]],\"GG\",44,\"00\",\"0\",,,\"0|([25-9]\\\\d{5})$\",\"1481$1\",,,,,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",\n,,,\"7640123456\",,,[10]],,,[,,,,,,,,,[-1]],[,,\"(?:3[0347]|55)\\\\d{8}\",,,,\"5512345678\",,,[10]],,,[,,,,,,,,,[-1]]],GH:[,[,,\"(?:[235]\\\\d{3}|800)\\\\d{5}\",,,,,,,[8,9],[7]],[,,\"3082[0-5]\\\\d{4}|3(?:0(?:[237]\\\\d|8[01])|[167](?:2[0-6]|7\\\\d|80)|2(?:2[0-5]|7\\\\d|80)|3(?:2[0-3]|7\\\\d|80)|4(?:2[013-9]|3[01]|7\\\\d|80)|5(?:2[0-7]|7\\\\d|80)|8(?:2[0-2]|7\\\\d|80)|9(?:[28]0|7\\\\d))\\\\d{5}\",,,,\"302345678\",,,[9],[7]],[,,\"(?:2(?:[0346-8]\\\\d|5[67])|5(?:[0457]\\\\d|6[01]|9[1-9]))\\\\d{6}\",,,,\"231234567\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",\n,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GH\",233,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[237]|8[0-2]\"]],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"800\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GI:[,[,,\"(?:[25]\\\\d\\\\d|606)\\\\d{5}\",,,,,,,[8]],[,,\"21(?:6[24-7]\\\\d|90[0-2])\\\\d{3}|2(?:00|2[25])\\\\d{5}\",\n,,,\"20012345\"],[,,\"(?:5[146-8]\\\\d|606)\\\\d{5}\",,,,\"57123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GI\",350,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GL:[,[,,\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",,,,,,,[6]],[,,\"(?:19|3[1-7]|6[14689]|70|8[14-79]|9\\\\d)\\\\d{4}\",,,,\"321000\"],[,,\"[245]\\\\d{5}\",,,,\"221234\"],[,,\"80\\\\d{4}\",,,,\"801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3[89]\\\\d{4}\",\n,,,\"381234\"],\"GL\",299,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GM:[,[,,\"[2-9]\\\\d{6}\",,,,,,,[7]],[,,\"(?:4(?:[23]\\\\d\\\\d|4(?:1[024679]|[6-9]\\\\d))|5(?:5(?:3\\\\d|4[0-7])|6[67]\\\\d|7(?:1[04]|2[035]|3[58]|48))|8\\\\d{3})\\\\d{3}\",,,,\"5661234\"],[,,\"(?:[23679]\\\\d|5[0-389])\\\\d{5}\",,,,\"3012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GM\",220,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",\n[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GN:[,[,,\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",,,,,,,[8,9]],[,,\"3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\\\d\\\\d)\\\\d{4}\",,,,\"30241234\",,,[8]],[,,\"6[0-356]\\\\d{7}\",,,,\"601123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"722\\\\d{6}\",,,,\"722123456\",,,[9]],\"GN\",224,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[67]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GP:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:0[1-68]|1[0-24-7]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\",,,,\"590201234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"GP\",590,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[569]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GQ:[,[,,\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",,,,,,,[9]],[,,\"33[0-24-9]\\\\d[46]\\\\d{4}|3(?:33|5\\\\d)\\\\d[7-9]\\\\d{4}\",,,,\"333091234\"],[,,\"(?:222|55\\\\d)\\\\d{6}\",,,,\"222123456\"],[,,\"80\\\\d[1-9]\\\\d{5}\",,,,\"800123456\"],[,,\"90\\\\d[1-9]\\\\d{5}\",,,,\"900123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GQ\",240,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",\n[\"[235]\"]],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GR:[,[,,\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",,,,,,,[10,11,12]],[,,\"2(?:1\\\\d\\\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}\",\n,,,\"2123456789\",,,[10]],[,,\"68[57-9]\\\\d{7}|(?:69|94)\\\\d{8}\",,,,\"6912345678\",,,[10]],[,,\"800\\\\d{7,9}\",,,,\"8001234567\"],[,,\"90[19]\\\\d{7}\",,,,\"9091234567\",,,[10]],[,,\"8(?:0[16]|12|[27]5|50)\\\\d{7}\",,,,\"8011234567\",,,[10]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],[,,,,,,,,,[-1]],\"GR\",30,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\n\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"5005000\\\\d{3}\",,,,\"5005000123\",,,[10]],,,[,,,,,,,,,[-1]]],GT:[,[,,\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",,,,,,,[8,11]],[,,\"[267][2-9]\\\\d{6}\",,,,\"22456789\",,,[8]],[,,\"[3-5]\\\\d{7}\",,,,\"51234567\",,,[8]],[,,\"18[01]\\\\d{8}\",,,,\"18001112222\",,,[11]],[,,\"19\\\\d{9}\",,,,\"19001112222\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GT\",502,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],\n,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GU:[,[,,\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",,,,\"6713001234\",,,,[7]],[,,\"671(?:3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[0236-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[48])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\",\n,,,\"6713001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"GU\",1,\"011\",\"1\",,,\"1|([3-9]\\\\d{6})$\",\"671$1\",,1,,,[,,,,,,,,,[-1]],,\"671\",[,,,,,,,,,[-1]],[,,,,,,,\n,,[-1]],,,[,,,,,,,,,[-1]]],GW:[,[,,\"[49]\\\\d{8}|4\\\\d{6}\",,,,,,,[7,9]],[,,\"443\\\\d{6}\",,,,\"443201234\",,,[9]],[,,\"9(?:5\\\\d|6[569]|77)\\\\d{6}\",,,,\"955012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"40\\\\d{5}\",,,,\"4012345\",,,[7]],\"GW\",245,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],GY:[,[,,\"9008\\\\d{3}|(?:[2-467]\\\\d\\\\d|862)\\\\d{4}\",,,,,,,[7]],[,,\"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\\\d|7[0-24-79])|3(?:2[25-9]|3\\\\d)|4(?:4[0-24]|5[56])|77[1-57])\\\\d{4}\",\n,,,\"2201234\"],[,,\"(?:6\\\\d\\\\d|70[015-7])\\\\d{4}\",,,,\"6091234\"],[,,\"(?:289|862)\\\\d{4}\",,,,\"2891234\"],[,,\"9008\\\\d{3}\",,,,\"9008123\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"GY\",592,\"001\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HK:[,[,,\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",,,,,,,[5,6,7,8,9,11]],[,,\"(?:2(?:[13-9]\\\\d|2[013-9])\\\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\\\d|8(?:4[0-8]|5[0-5]|9\\\\d))|58(?:0[1-8]|1[2-9]))\\\\d{4}\",\n,,,\"21234567\",,,[8]],[,,\"(?:46(?:0[0-7]|1[0-6]|4[0-57-9]|6[0-4]|7[0-8])|573[0-6]|6(?:26[013-8]|66[0-3])|70(?:7[1-5]|8[0-4])|848[015-9]|929[013-9])\\\\d{4}|(?:4(?:40|6[2358])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-24679])|6(?:0[1-9]|[13-59]\\\\d|[268][0-57-9]|7[0-79])|84[09]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\\\d))\\\\d{5}\",,,,\"51234567\",,,[8]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"900(?:[0-24-9]\\\\d{7}|3\\\\d{1,4})\",,,,\"90012345678\",,,[5,6,7,8,11]],[,,,,,,,,,[-1]],[,,\"8(?:1[0-4679]\\\\d|2(?:[0-36]\\\\d|7[0-4])|3(?:[034]\\\\d|2[09]|70))\\\\d{4}\",\n,,,\"81123456\",,,[8]],[,,,,,,,,,[-1]],\"HK\",852,\"00(?:30|5[09]|[126-9]?)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],,[,,\"7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\\\d|1[18]|7[27-9])|3(?:[0-38]\\\\d|7[0-369]|9[2357-9])|47\\\\d|5(?:[178]\\\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\\\d)|7(?:[27]\\\\d|8[7-9])|8(?:[23689]\\\\d|7[1-9])|9(?:[025]\\\\d|6[0-246-8]|7[0-36-9]|8[238]))\\\\d{4}\",\n,,,\"71123456\",,,[8]],,,[,,,,,,,,,[-1]],[,,\"30(?:0[1-9]|[15-7]\\\\d|2[047]|89)\\\\d{4}\",,,,\"30161234\",,,[8]],,,[,,,,,,,,,[-1]]],HN:[,[,,\"8\\\\d{10}|[237-9]\\\\d{7}\",,,,,,,[8,11]],[,,\"2(?:2(?:0[0-39]|1[1-367]|[23]\\\\d|4[03-6]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[78]|2[3-59]|3[13-9]|4[0-68]|5[1-35])|5(?:0[7-9]|16|4[03-5]|5\\\\d|6[014-6]|7[04]|80)|6(?:[056]\\\\d|17|2[067]|3[04]|4[0-378]|[78][0-8]|9[01])|7(?:6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\\\d{4}\",,,,\"22123456\",,,[8]],[,,\"[37-9]\\\\d{7}\",\n,,,\"91234567\",,,[8]],[,,\"8002\\\\d{7}\",,,,\"80021234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"HN\",504,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]],[,,,,,,,,,[-1]],,,[,,\"8002\\\\d{7}\",,,,,,,[11]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HR:[,[,,\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",,,,,,,[6,7,8,9]],[,,\"1\\\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\\\d{6,7}\",\n,,,\"12345678\",,,[8,9],[6,7]],[,,\"9(?:751\\\\d{5}|8\\\\d{6,7})|9(?:0[1-9]|[1259]\\\\d|7[0679])\\\\d{6}\",,,,\"921234567\",,,[8,9]],[,,\"80[01]\\\\d{4,6}\",,,,\"800123456\",,,[7,8,9]],[,,\"6[01459]\\\\d{6}|6[01]\\\\d{4,5}\",,,,\"611234\",,,[6,7,8]],[,,,,,,,,,[-1]],[,,\"7[45]\\\\d{6}\",,,,\"74123456\",,,[8]],[,,,,,,,,,[-1]],\"HR\",385,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"62\\\\d{6,7}|72\\\\d{6}\",,,,\"62123456\",,,[8,9]],,,[,,,,,,,,,[-1]]],HT:[,[,,\"[2-489]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2\\\\d|5[1-5]|81|9[149])\\\\d{5}\",,,,\"22453300\"],[,,\"[34]\\\\d{7}\",,,,\"34101234\"],[,,\"8\\\\d{7}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"9(?:[67][0-4]|8[0-3589]|9\\\\d)\\\\d{5}\",\n,,,\"98901234\"],\"HT\",509,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],HU:[,[,,\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",,,,,,,[8,9],[6,7]],[,,\"(?:1\\\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\\\d{6}\",,,,\"12345678\",,,[8],[6,7]],[,,\"(?:[257]0|3[01])\\\\d{7}\",,,,\"201234567\",,,[9]],[,,\"(?:[48]0\\\\d|680[29])\\\\d{5}\",,,,\"80123456\"],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"21\\\\d{7}\",\n,,,\"211234567\",,,[9]],\"HU\",36,\"00\",\"06\",,,\"06\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:[48]0\\\\d|680[29])\\\\d{5}\"],[,,\"38\\\\d{7}\",,,,\"381234567\",,,[9]],,,[,,,,,,,,,[-1]]],ID:[,[,,\"(?:(?:00[1-9]|8\\\\d)\\\\d{4}|[1-36])\\\\d{6}|00\\\\d{10}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",,,,,,,[7,8,9,10,11,12,13],[5,6]],\n[,,\"2[124]\\\\d{7,8}|619\\\\d{8}|2(?:1(?:14|500)|2\\\\d{3})\\\\d{3}|61\\\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\\\d{5,8}\",,,,\"218350123\",,,[7,8,9,10,11],[5,6]],[,,\"8[1-35-9]\\\\d{7,10}\",\n,,,\"812345678\",,,[9,10,11,12]],[,,\"00[17]803\\\\d{7}|(?:177\\\\d|800)\\\\d{5,7}|001803\\\\d{6}\",,,,\"8001234567\",,,[8,9,10,11,12,13]],[,,\"809\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,\"804\\\\d{7}\",,,,\"8041234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ID\",62,\"00[89]\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[,\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",\n[\"8[1-35-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"001\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[,\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],\n[,\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"001803\\\\d{6,7}|(?:007803\\\\d|8071)\\\\d{6}\",,,,,,,[10,12,13]],[,,\"(?:1500|8071\\\\d{3})\\\\d{3}\",,,,\"8071123456\",,,[7,10]],,,[,,,,,,,,,[-1]]],IE:[,[,,\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",\n,,,,,,[7,8,9,10],[5,6]],[,,\"(?:1\\\\d|21)\\\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\\\d|7)|5(?:0[45]|1\\\\d|8)|6(?:1\\\\d|[237-9])|9(?:1\\\\d|[35-9]))\\\\d{5}|(?:23|4(?:[1-469]|8\\\\d)|5[23679]|6[4-6]|7[14]|9[04])\\\\d{7}\",,,,\"2212345\",,,,[5,6]],[,,\"8(?:22|[35-9]\\\\d)\\\\d{6}\",,,,\"850123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,\"15(?:1[2-8]|[2-8]0|9[089])\\\\d{6}\",,,,\"1520123456\",,,[10]],[,,\"18[59]0\\\\d{6}\",,,,\"1850123456\",,,[10]],[,,\"700\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"76\\\\d{7}\",,,,\"761234567\",,,[9]],\"IE\",353,\"00\",\n\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"18[59]0\\\\d{6}\",,,,,,,[10]],[,,\"818\\\\d{6}\",,,,\"818123456\",,,[9]],,,[,,\"88210[1-9]\\\\d{4}|8(?:[35-79]5\\\\d\\\\d|8(?:[013-9]\\\\d\\\\d|2(?:[01][1-9]|[2-9]\\\\d)))\\\\d{5}\",,,,\"8551234567\",,,[10]]],IL:[,[,,\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",,,,,,,[7,8,9,10,11,12]],[,,\"153\\\\d{8,9}|29[1-9]\\\\d{5}|(?:2[0-8]|[3489]\\\\d)\\\\d{6}\",,,,\"21234567\",,,[8,11,12],[7]],[,,\"5(?:(?:[02368]\\\\d|[19][2-9]|4[1-9])\\\\d|5(?:01|1[79]|2[2-9]|3[0-3]|4[34]|5[015689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\\\d{5}\",\n,,,\"502345678\",,,[9]],[,,\"1(?:255|80[019]\\\\d{3})\\\\d{3}\",,,,\"1800123456\",,,[7,10]],[,,\"1212\\\\d{4}|1(?:200|9(?:0[0-2]|19))\\\\d{6}\",,,,\"1919123456\",,,[8,10]],[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"7(?:380|8(?:33|55|77|81))\\\\d{5}|7(?:18|2[23]|3[237]|47|6[58]|7\\\\d|82|9[235-9])\\\\d{6}\",,,,\"771234567\",,,[9]],\"IL\",972,\"0(?:0|1[2-9])\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[,\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],,[,,,,,,,,,[-1]],,,[,,\"1700\\\\d{6}\",,,,,,,[10]],[,,\"1599\\\\d{6}\",,,,\"1599123456\",,,[10]],,,[,,\"151\\\\d{8,9}\",,,,\"15112340000\",,,[11,12]]],IM:[,[,,\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",,,,,,,[10],[6]],[,,\"1624(?:230|[5-8]\\\\d\\\\d)\\\\d{3}\",,,,\"1624756789\",\n,,,[6]],[,,\"76245[06]\\\\d{4}|7(?:4576|[59]24\\\\d|624[0-4689])\\\\d{5}\",,,,\"7924123456\"],[,,\"808162\\\\d{4}\",,,,\"8081624567\"],[,,\"8(?:440[49]06|72299\\\\d)\\\\d{3}|(?:8(?:45|70)|90[0167])624\\\\d{4}\",,,,\"9016247890\"],[,,,,,,,,,[-1]],[,,\"70\\\\d{8}\",,,,\"7012345678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"IM\",44,\"00\",\"0\",,,\"0|([25-8]\\\\d{5})$\",\"1624$1\",,,,,[,,,,,,,,,[-1]],,\"74576|(?:16|7[56])24\",[,,,,,,,,,[-1]],[,,\"3440[49]06\\\\d{3}|(?:3(?:08162|3\\\\d{4}|45624|7(?:0624|2299))|55\\\\d{4})\\\\d{4}\",,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],\nIN:[,[,,\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",,,,,,,[8,9,10,11,12,13],[6,7]],[,,\"2717(?:[2-7]\\\\d|95)\\\\d{4}|(?:271[0-689]|782[0-6])[2-7]\\\\d{5}|(?:170[24]|2(?:(?:[02][2-79]|90)\\\\d|80[13468])|(?:3(?:23|80)|683|79[1-7])\\\\d|4(?:20[24]|72[2-8])|552[1-7])\\\\d{6}|(?:11|33|4[04]|80)[2-7]\\\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\\\d)\\\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\\\d[2-7]\\\\d{5}\",\n,,,\"7410410123\",,,[10],[6,7,8]],[,,\"(?:61279|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\\\d{5}|(?:6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\\\d|7[02-8])\\\\d{5}|(?:6(?:[09]\\\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\\\d\\\\d)\\\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|8[124-6])\\\\d|7(?:[235689]\\\\d|4[0189]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]|881))[0189]\\\\d{5}\",\n,,,\"8123456789\",,,[10]],[,,\"000800\\\\d{7}|1(?:600\\\\d{6}|80(?:0\\\\d{4,9}|3\\\\d{9}))\",,,,\"1800123456\"],[,,\"186[12]\\\\d{9}\",,,,\"1861123456789\",,,[13]],[,,\"1860\\\\d{7}\",,,,\"18603451234\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IN\",91,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{7})\",\"$1\",[\"575\"]],[,\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],,,1],[,\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"140\"],,,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\n\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\n\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",,1],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],,,1]],[[,\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],,,1],[,\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],,,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\n\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\n\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\n\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\n\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",,1],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],,,1],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"18\"],,,1]],[,,,,,,,,,[-1]],,,[,,\"1(?:600\\\\d{6}|800\\\\d{4,9})|(?:000800|18(?:03\\\\d\\\\d|6(?:0|[12]\\\\d\\\\d)))\\\\d{7}\"],[,,\"140\\\\d{7}\",,,,\"1409305260\",,,[10]],,,[,,,,,,,,,[-1]]],IO:[,[,,\"3\\\\d{6}\",,,,,,,[7]],[,,\"37\\\\d{5}\",,,,\"3709100\"],[,,\"38\\\\d{5}\",,,,\"3801234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IO\",246,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IQ:[,[,,\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",\n,,,,,,[8,9,10],[6,7]],[,,\"1\\\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\\\d{6,7}\",,,,\"12345678\",,,[8,9],[6,7]],[,,\"7[3-9]\\\\d{8}\",,,,\"7912345678\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IQ\",964,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],IR:[,\n[,,\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",,,,,,,[4,5,6,7,10],[8]],[,,\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\\\d{7}|[16]\\\\d{3}(?:\\\\d{4})?|[289]\\\\d{3}(?:\\\\d(?:\\\\d{3})?)?)|94(?:000[09]|2(?:121|[2689]0\\\\d)|30[0-2]\\\\d|4(?:111|40\\\\d))\\\\d{4}\",,,,\"2123456789\",,,[6,7,10],[4,5,8]],[,,\"9(?:(?:0(?:[0-35]\\\\d|4[4-6])|(?:[13]\\\\d|2[0-3])\\\\d)\\\\d|9(?:[0-46]\\\\d\\\\d|5[15]0|8(?:1\\\\d|88)|9(?:0[013]|[19]\\\\d|21|77|8[7-9])))\\\\d{5}\",,,,\"9123456789\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"IR\",98,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"9(?:4440\\\\d{5}|6(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19]))\",,,,,,,[4,5,10]],[,,\"96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])\",\n,,,\"9601\",,,[4,5]],,,[,,,,,,,,,[-1]]],IS:[,[,,\"(?:38\\\\d|[4-9])\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\\\d|8[0-36-8])|5(?:05|[156]\\\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\\\d{4}\",,,,\"4101234\",,,[7]],[,,\"(?:38[589]\\\\d\\\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\\\d)|7(?:5[057]|[6-9]\\\\d)|8(?:2[0-59]|[3-69]\\\\d|8[28]))\\\\d{4}\",,,,\"6111234\"],[,,\"80[0-8]\\\\d{4}\",,,,\"8001234\",,,[7]],[,,\"90(?:0\\\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\\\d{3}\",\n,,,\"9001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"49[0-24-79]\\\\d{4}\",,,,\"4921234\",,,[7]],\"IS\",354,\"00|1(?:0(?:01|[12]0)|100)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"809\\\\d{4}\",,,,\"8091234\",,,[7]],,,[,,\"(?:689|8(?:7[18]|80)|95[48])\\\\d{4}\",,,,\"6891234\",,,[7]]],IT:[,[,,\"0\\\\d{5,10}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",,,,,,,[6,7,8,9,10,11,12]],[,,\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\",\n,,,\"0212345678\",,,[6,7,8,9,10,11]],[,,\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",,,,\"3123456789\",,,[9,10]],[,,\"80(?:0\\\\d{3}|3)\\\\d{3}\",,,,\"800123456\",,,[6,9]],[,,\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"IT\",39,\"00\",,,,,,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"1(?:0|9[246])\",\"1(?:0|9(?:2[2-9]|[46]))\"]],\n[,\"(\\\\d{6})\",\"$1\",[\"1(?:1|92)\"]],[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[,\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[38]\"]],[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\n\"$1 $2 $3\",[\"0[26]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],[[,\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[,\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[38]\"]],\n[,\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],[,,,,,,,,,[-1]],1,,[,,\"848\\\\d{6}\",,,,,,,[9]],[,,,,,,,,,[-1]],,,[,,\"3[2-8]\\\\d{9,10}\",,,,\"33101234501\",,,[11,12]]],JE:[,[,,\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",,,,,,,[10],[6]],[,,\"1534[0-24-8]\\\\d{5}\",,,,\"1534456789\",,,,[6]],[,,\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\",,,,\"7797712345\"],\n[,,\"80(?:07(?:35|81)|8901)\\\\d{4}\",,,,\"8007354567\"],[,,\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\",,,,\"9018105678\"],[,,,,,,,,,[-1]],[,,\"701511\\\\d{4}\",,,,\"7015115678\"],[,,\"56\\\\d{8}\",,,,\"5612345678\"],\"JE\",44,\"00\",\"0\",,,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",,,,,[,,\"76(?:464|652)\\\\d{5}|76(?:0[0-2]|2[356]|34|4[01347]|5[49]|6[0-369]|77|81|9[139])\\\\d{6}\",,,,\"7640123456\"],,,[,,,,,,,,,[-1]],[,,\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\",\n,,,\"5512345678\"],,,[,,,,,,,,,[-1]]],JM:[,[,,\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"8766060\\\\d{3}|(?:658(?:2(?:[0-8]\\\\d|9[0-46-9])|[3-9]\\\\d\\\\d)|876(?:52[35]|6(?:0[1-3579]|1[0237-9]|[23]\\\\d|40|5[06]|6[2-589]|7[05]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\\\d|9[2-468])))\\\\d{4}\",,,,\"8765230123\",,,,[7]],[,,\"(?:658295|876(?:2(?:0[2-9]|[14-9]\\\\d|2[013-9]|3[3-9])|[348]\\\\d\\\\d|5(?:0[1-9]|[1-9]\\\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\\\d{4}\",\n,,,\"8762101234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"JM\",1,\"011\",\"1\",,,\"1\",,,,,,[,,,,,,,,,[-1]],,\"658|876\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,\n,[-1]]],JO:[,[,,\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",,,,,,,[8,9]],[,,\"87(?:000|90[01])\\\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\\\d{4}\",\n,,,\"62001234\",,,[8]],[,,\"7(?:[78][0-25-9]|9\\\\d)\\\\d{6}\",,,,\"790123456\",,,[9]],[,,\"80\\\\d{6}\",,,,\"80012345\",,,[8]],[,,\"9\\\\d{7}\",,,,\"90012345\",,,[8]],[,,\"85\\\\d{6}\",,,,\"85012345\",,,[8]],[,,\"70\\\\d{7}\",,,,\"700123456\",,,[9]],[,,,,,,,,,[-1]],\"JO\",962,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,\"74(?:66|77)\\\\d{5}\",,,,\"746612345\",\n,,[9]],,,[,,,,,,,,,[-1]],[,,\"8(?:10|8\\\\d)\\\\d{5}\",,,,\"88101234\",,,[8]],,,[,,,,,,,,,[-1]]],JP:[,[,,\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",,,,,,,[8,9,10,11,12,13,14,15,16,17]],[,,\"(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\\\d|4(?:[2-578]\\\\d|6[02-8]|9[2-59])|5(?:[2-589]\\\\d|6[1-9]|7[2-8])|7(?:[25-9]\\\\d|3[4-9]|4[02-9])|8(?:[2679]\\\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\\\d|[679][1-9]))\\\\d{6}\",,,,\"312345678\",,,[9]],[,,\"[7-9]0[1-9]\\\\d{7}\",\n,,,\"9012345678\",,,[10]],[,,\"00777(?:[01]|5\\\\d)\\\\d\\\\d|(?:00(?:7778|882[1245])|(?:120|800\\\\d)\\\\d\\\\d)\\\\d{4}|00(?:37|66|78)\\\\d{6,13}\",,,,\"120123456\"],[,,\"990\\\\d{6}\",,,,\"990123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"60\\\\d{7}\",,,,\"601234567\",,,[9]],[,,\"50[1-9]\\\\d{7}\",,,,\"5012345678\",,,[10]],\"JP\",81,\"010\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"007\",\"0077\",\"00777\",\"00777[01]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\n\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{3,4})\",\"$1-$2-$3\",[\"007\",\"0077\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"008\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{5})(\\\\d{5,6})\",\"$1-$2-$3\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{6})(\\\\d{6,7})\",\"$1-$2-$3\",\n[\"0\"]]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[27-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|51|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\n\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\n\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[257-9]\"],\"0$1\"]],[,,\"20\\\\d{8}\",,,,\"2012345678\",,,[10]],,,[,,\"00(?:777(?:[01]|(?:5|8\\\\d)\\\\d)|882[1245]\\\\d\\\\d)\\\\d\\\\d|00(?:37|66|78)\\\\d{6,13}\"],[,,\"570\\\\d{6}\",,,,\"570123456\",,,[9]],,,[,,,,,,,,,[-1]]],KE:[,[,,\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",,,,,,,[7,8,9,10]],[,,\"(?:4[245]|5[1-79]|6[01457-9])\\\\d{5,7}|(?:4[136]|5[08]|62)\\\\d{7}|(?:[24]0|66)\\\\d{6,7}\",\n,,,\"202012345\",,,[7,8,9]],[,,\"(?:1(?:0[0-6]|1[0-5]|2[014])|7\\\\d\\\\d)\\\\d{6}\",,,,\"712123456\",,,[9]],[,,\"800[2-8]\\\\d{5,6}\",,,,\"800223456\",,,[9,10]],[,,\"900[02-9]\\\\d{5}\",,,,\"900223456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KE\",254,\"000\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KG:[,[,,\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",\n,,,,,,[9,10],[5,6]],[,,\"312(?:5[0-79]\\\\d|9(?:[0-689]\\\\d|7[0-24-9]))\\\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\\\d)|5(?:22|3[4-7]|59|6\\\\d)|6(?:22|5[35-7]|6\\\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\\\d)|9(?:22|4[1-8]|6\\\\d))|6(?:09|12|2[2-4])\\\\d)\\\\d{5}\",,,,\"312123456\",,,[9],[5,6]],[,,\"312(?:58\\\\d|973)\\\\d{3}|(?:2(?:0[0-35]|2\\\\d)|5[0-24-7]\\\\d|7(?:[07]\\\\d|55)|880|99[05-9])\\\\d{6}\",,,,\"700123456\",,,[9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\n,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KG\",996,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KH:[,[,,\"1\\\\d{9}|[1-9]\\\\d{7,8}\",,,,,,,[8,9,10],[6,7]],[,,\"23(?:4(?:[2-4]|[56]\\\\d)|[568]\\\\d\\\\d)\\\\d{4}|23[236-9]\\\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\\\d)\\\\d{5}|6\\\\d{5,6})\",\n,,,\"23756789\",,,[8,9],[6,7]],[,,\"(?:(?:1[28]|3[18]|9[67])\\\\d|6[016-9]|7(?:[07-9]|[16]\\\\d)|8(?:[013-79]|8\\\\d))\\\\d{6}|(?:1\\\\d|9[0-57-9])\\\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\\\d{5}\",,,,\"91234567\",,,[8,9]],[,,\"1800(?:1\\\\d|2[019])\\\\d{4}\",,,,\"1800123456\",,,[10]],[,,\"1900(?:1\\\\d|2[09])\\\\d{4}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KH\",855,\"00[14-9]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\n,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KI:[,[,,\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",,,,,,,[5,8]],[,,\"(?:[24]\\\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\\\d\\\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\\\d{3}\",,,,\"31234\"],[,,\"(?:63\\\\d{3}|73(?:0[0-5]\\\\d|140))\\\\d{3}|[67]200[01]\\\\d{3}\",,,,\"72001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"30(?:0[01]\\\\d\\\\d|12(?:11|20))\\\\d\\\\d\",,,,\"30010000\",,,[8]],\n\"KI\",686,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KM:[,[,,\"[3478]\\\\d{6}\",,,,,,,[7],[4]],[,,\"7[4-7]\\\\d{5}\",,,,\"7712345\",,,,[4]],[,,\"[34]\\\\d{6}\",,,,\"3212345\"],[,,,,,,,,,[-1]],[,,\"8\\\\d{6}\",,,,\"8001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KM\",269,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KN:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\\\d{4}\",\n,,,\"8692361234\",,,,[7]],[,,\"869(?:48[89]|55[6-8]|66\\\\d|76[02-7])\\\\d{4}\",,,,\"8697652917\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"KN\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\n\"869$1\",,,,,[,,,,,,,,,[-1]],,\"869\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KP:[,[,,\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",,,,,,,[8,10],[6,7]],[,,\"(?:(?:195|2)\\\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\\\d{6}\",,,,\"21234567\",,,,[6,7]],[,,\"19[1-3]\\\\d{7}\",,,,\"1921234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KP\",850,\"00|99\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"1\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"238[02-9]\\\\d{4}|2(?:[0-24-9]\\\\d|3[0-79])\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KR:[,[,,\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",,,,,,,[5,6,8,9,10,11,12,13,14],[3,4,7]],[,,\"(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\\\d{2,3}\",,,,\"22123456\",,,[5,6,8,9,10],[3,4,7]],[,,\"1(?:05(?:[0-8]\\\\d|9[0-6])|22[13]\\\\d)\\\\d{4,5}|1(?:0[1-46-9]|[16-9]\\\\d|2[013-9])\\\\d{6,7}\",\n,,,\"1020000000\",,,[9,10]],[,,\"00(?:308\\\\d{6,7}|798\\\\d{7,9})|(?:00368|80)\\\\d{7}\",,,,\"801234567\",,,[9,11,12,13,14]],[,,\"60[2-9]\\\\d{6}\",,,,\"602345678\",,,[9]],[,,,,,,,,,[-1]],[,,\"50\\\\d{8,9}\",,,,\"5012345678\",,,[10,11]],[,,\"70\\\\d{8}\",,,,\"7012345678\",,,[10]],\"KR\",82,\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"0\",,,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\",,,,[[,\"(\\\\d{5})\",\"$1\",[\"1[016-9]1\",\"1[016-9]11\",\"1[016-9]114\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\n\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"003\",\"0030\"]],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{5})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[,\"(\\\\d{5})(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3 $4\",[\"0\"]]],[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\",\"0$CC-$1\"],[,\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\",\"0$CC-$1\"]],[,,\"15\\\\d{7,8}\",,,,\"1523456789\",\n,,[9,10]],,,[,,\"00(?:3(?:08\\\\d{6,7}|68\\\\d{7})|798\\\\d{7,9})\",,,,,,,[11,12,13,14]],[,,\"1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[168]|88)|8(?:00|33|55|77|99))\\\\d{4}\",,,,\"15441234\",,,[8]],,,[,,,,,,,,,[-1]]],KW:[,[,,\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",,,,,,,[7,8]],[,,\"2(?:[23]\\\\d\\\\d|4(?:[1-35-9]\\\\d|44)|5(?:0[034]|[2-46]\\\\d|5[1-3]|7[1-7]))\\\\d{4}\",,,,\"22345678\",,,[8]],[,,\"(?:41\\\\d\\\\d|5(?:(?:[05]\\\\d|1[0-7]|6[56])\\\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\\\d)\\\\d|111|222|333|444|7(?:0[013-9]|[67]\\\\d)|888|9(?:[069]\\\\d|3[039]))|9(?:(?:0[09]|22|[4679]\\\\d|8[057-9])\\\\d|1(?:1[01]|99)|3(?:00|33)|5(?:00|5\\\\d)))\\\\d{4}\",\n,,,\"50012345\",,,[8]],[,,\"18\\\\d{5}\",,,,\"1801234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"KW\",965,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KY:[,[,,\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|25|[48]8)|9(?:14|4[035-9]))\\\\d{4}\",,\n,,\"3452221234\",,,,[7]],[,,\"345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|9(?:1[679]|2[2-9]|3[06-9]|90))\\\\d{4}\",,,,\"3453231234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"(?:345976|900[2-9]\\\\d\\\\d)\\\\d{4}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"KY\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"345$1\",,,,,[,,\"345849\\\\d{4}\",,,,\"3458491234\"],,\"345\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],KZ:[,[,,\"(?:33622|8\\\\d{8})\\\\d{5}|[78]\\\\d{9}\",,,,,,,[10,14],[5,6,7]],[,,\"(?:33622|7(?:1(?:0(?:[23]\\\\d|4[0-3]|59|63)|1(?:[23]\\\\d|4[0-79]|59)|2(?:[23]\\\\d|59)|3(?:2\\\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\\\d|3[013-9]|5[1-9])|5(?:2\\\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\\\d|5[19]|61)|72\\\\d|8(?:[27]\\\\d|3[1-46-9]|4[0-5]))|2(?:1(?:[23]\\\\d|4[46-9]|5[3469])|2(?:2\\\\d|3[0679]|46|5[12679])|3(?:[2-4]\\\\d|5[139])|4(?:2\\\\d|3[1-35-9]|59)|5(?:[23]\\\\d|4[0-246-8]|59|61)|6(?:2\\\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\\\d|40|5[279])|8(?:[23]\\\\d|4[0-3]|59)|9(?:2\\\\d|3[124578]|59))))\\\\d{5}\",\n,,,\"7123456789\",,,[10],[5,6,7]],[,,\"7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\\\d{7}\",,,,\"7710009998\",,,[10]],[,,\"8(?:00|108\\\\d{3})\\\\d{7}\",,,,\"8001234567\"],[,,\"809\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\",,,[10]],[,,\"751\\\\d{7}\",,,,\"7511234567\",,,[10]],\"KZ\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,,,[,,,,,,,,,[-1]],,\"33|7\",[,,\"751\\\\d{7}\",,,,,,,[10]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LA:[,[,,\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",,,,,,,[8,9,10],[6]],[,,\"(?:2[13]|[35-7][14]|41|8[1468])\\\\d{6}\",\n,,,\"21212862\",,,[8],[6]],[,,\"(?:20(?:[239]\\\\d|5[24-9]|7[6-8]|88)|302\\\\d)\\\\d{6}\",,,,\"2023123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LA\",856,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"30[013-9]\\\\d{6}\",,,,\"301234567\",,,[9]],,,\n[,,,,,,,,,[-1]]],LB:[,[,,\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",,,,,,,[7,8]],[,,\"7(?:62|8[0-7]|9[04-9])\\\\d{4}|(?:[14-69]\\\\d|2(?:[14-69]\\\\d|[78][1-9])|7[2-57]|8[02-9])\\\\d{5}\",,,,\"1123456\"],[,,\"793(?:[01]\\\\d|2[0-4])\\\\d{3}|(?:(?:3|81)\\\\d|7(?:[01]\\\\d|6[013-9]|8[89]|9[12]))\\\\d{5}\",,,,\"71123456\"],[,,,,,,,,,[-1]],[,,\"9[01]\\\\d{6}\",,,,\"90123456\",,,[8]],[,,\"80\\\\d{6}\",,,,\"80123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LB\",961,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LC:[,[,,\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"758(?:234|4(?:30|5\\\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\\\d{4}\",,,,\"7584305678\",,,,[7]],[,,\"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\\\d|3[0-3])|812)\\\\d{4}\",,,,\"7582845678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],\n[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"LC\",1,\"011\",\"1\",,,\"1|([2-8]\\\\d{6})$\",\"758$1\",,,,,[,,,,,,,,,[-1]],,\"758\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LI:[,[,,\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",,,,,,,[7,9]],[,,\"(?:2(?:01|1[27]|2[02]|3\\\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\\\d{4}\",\n,,,\"2345678\",,,[7]],[,,\"(?:6(?:(?:4[5-9]|5[0-4])\\\\d|6(?:[0245]\\\\d|[17]0|3[7-9]))\\\\d|7(?:[37-9]\\\\d|42|56))\\\\d{4}\",,,,\"660234567\"],[,,\"8002[28]\\\\d\\\\d|80(?:05\\\\d|9)\\\\d{4}\",,,,\"8002222\"],[,,\"90(?:02[258]|1(?:23|3[14])|66[136])\\\\d\\\\d\",,,,\"9002222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LI\",423,\"00\",\"0\",,,\"0|(1001)\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"69\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"870(?:28|87)\\\\d\\\\d\",,,,\"8702812\",,,[7]],,,[,,\"697(?:42|56|[78]\\\\d)\\\\d{4}\",,,,\"697861234\",,,[9]]],LK:[,[,,\"[1-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:12[2-9]|602|8[12]\\\\d|9(?:1\\\\d|22|9[245]))\\\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\\\d{6}\",,,,\"112345678\",,,,[7]],[,,\"7(?:[0-25-8]\\\\d|4[0-4])\\\\d{6}\",,,,\"712345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,\n,,,,,[-1]],[,,,,,,,,,[-1]],\"LK\",94,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"1973\\\\d{5}\",,,,\"197312345\"],,,[,,,,,,,,,[-1]]],LR:[,[,,\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",,,,,,,[7,8,9]],[,,\"(?:2\\\\d{3}|33333)\\\\d{4}\",,,,\"21234567\",,,[8,9]],[,,\"(?:(?:330|555|(?:77|88)\\\\d)\\\\d|4[67])\\\\d{5}|[56]\\\\d{6}\",,,,\"770123456\",,,[7,9]],[,,,,,,,,,[-1]],[,,\"332(?:02|[34]\\\\d)\\\\d{4}\",,,,\"332021234\",\n,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LR\",231,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LS:[,[,,\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"2\\\\d{7}\",,,,\"22123456\"],[,,\"[56]\\\\d{7}\",,,,\"50123456\"],[,,\"800[256]\\\\d{4}\",,,,\"80021234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,\n,[-1]],[,,,,,,,,,[-1]],\"LS\",266,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LT:[,[,,\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",,,,,,,[8]],[,,\"(?:3[1478]|4[124-6]|52)\\\\d{6}\",,,,\"31234567\"],[,,\"6\\\\d{7}\",,,,\"61234567\"],[,,\"80[02]\\\\d{5}\",,,,\"80012345\"],[,,\"9(?:0[0239]|10)\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],[,,\"70[05]\\\\d{5}\",,,,\"70012345\"],[,,\"[89]01\\\\d{5}\",,,,\"80123456\"],\"LT\",370,\"00\",\"8\",,,\"[08]\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",,1],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",,1],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",,1],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70[67]\\\\d{5}\",,,,\"70712345\"],,,[,,,,,,,,,[-1]]],LU:[,[,,\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",,,,,,,[4,5,6,7,8,9,10,11]],[,,\"(?:35[013-9]|80[2-9]|90[89])\\\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\\\d|8[13-9]|9[2-579])\\\\d{2,9}\",\n,,,\"27123456\"],[,,\"6(?:[269][18]|5[1568]|7[189]|81)\\\\d{6}\",,,,\"628123456\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"90[015]\\\\d{5}\",,,,\"90012345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,,,,,,,,[-1]],[,,\"20(?:1\\\\d{5}|[2-689]\\\\d{1,7})\",,,,\"20201234\",,,[4,5,6,7,8,9,10]],\"LU\",352,\"00\",,,,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\",,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"],\n,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"],,\"$CC $1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"],,\"$CC $1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",\n[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"],,\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],LV:[,[,,\"(?:[268]\\\\d|90)\\\\d{6}\",,,,,,,[8]],[,,\"6\\\\d{7}\",,,,\"63123456\"],[,,\"2\\\\d{7}\",,,,\"21234567\"],[,,\"80\\\\d{6}\",,,,\"80123456\"],[,,\"90\\\\d{6}\",,,,\"90123456\"],[,,\"81\\\\d{6}\",,,,\"81123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LV\",371,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nLY:[,[,,\"[2-9]\\\\d{8}\",,,,,,,[9],[7]],[,,\"(?:2(?:0[56]|[1-6]\\\\d|7[124579]|8[124])|3(?:1\\\\d|2[2356])|4(?:[17]\\\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\\\d|5[2-57]|8[1-5])|7(?:[13]\\\\d|2[13-79])|8(?:[124]\\\\d|5[124]|84))\\\\d{6}\",,,,\"212345678\",,,,[7]],[,,\"9[1-6]\\\\d{7}\",,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"LY\",218,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MA:[,[,,\"[5-8]\\\\d{8}\",,,,,,,[9]],[,,\"5(?:29(?:[189][05]|2[29]|3[01])|38(?:8[057]|9[05]))\\\\d{4}|5(?:2(?:[0-25-7]\\\\d|3[1-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\",,,,\"520123456\"],[,,\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[017]\\\\d|6[0-367]))\\\\d{6}\",,,,\"650123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89\\\\d{7}\",,,,\"891234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"592(?:4[0-2]|93)\\\\d{4}\",,,,\"592401234\"],\"MA\",212,\"00\",\"0\",\n,,\"0\",,,,[[,\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\",\"5(?:29|38)[89]0\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MC:[,[,,\"(?:[3489]|6\\\\d)\\\\d{7}\",,,,,,,[8,9]],[,,\"(?:870|9[2-47-9]\\\\d)\\\\d{5}\",\n,,,\"99123456\",,,[8]],[,,\"4(?:[46]\\\\d|5[1-9])\\\\d{5}|(?:3|6\\\\d)\\\\d{7}\",,,,\"612345678\"],[,,\"(?:800|90\\\\d)\\\\d{5}\",,,,\"90123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MC\",377,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"87\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[,\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,\"8[07]0\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MD:[,[,,\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",,,,,,,[8]],[,,\"(?:(?:2[1-9]|3[1-79])\\\\d|5(?:33|5[257]))\\\\d{5}\",,,,\"22212345\"],[,,\"562\\\\d{5}|(?:6\\\\d|7[16-9])\\\\d{6}\",,,,\"62112345\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"90[056]\\\\d{5}\",,,,\"90012345\"],[,,\"808\\\\d{5}\",,,,\"80812345\"],[,,,,,,,,,[-1]],\n[,,\"3[08]\\\\d{6}\",,,,\"30123456\"],\"MD\",373,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"803\\\\d{5}\",,,,\"80312345\"],,,[,,,,,,,,,[-1]]],ME:[,[,,\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",,,,,,,[8,9],[6]],[,,\"(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\\\d{5}\",,,,\"30234567\",,,[8],[6]],[,,\"6(?:[07-9]\\\\d|3[024]|6[0-25])\\\\d{5}\",\n,,,\"67622901\",,,[8]],[,,\"80(?:[0-2578]|9\\\\d)\\\\d{5}\",,,,\"80080002\"],[,,\"9(?:4[1568]|5[178])\\\\d{5}\",,,,\"94515151\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"78[1-49]\\\\d{5}\",,,,\"78108780\",,,[8]],\"ME\",382,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"77[1-9]\\\\d{5}\",,,,\"77273012\",,,[8]],,,[,,,,,,,,,[-1]]],MF:[,[,,\"(?:590|(?:69|80)\\\\d|976)\\\\d{6}\",,,,,,,[9]],[,,\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\",,,,\"590271234\"],[,,\"69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))\\\\d{4}\",\n,,,\"690001234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976[01]\\\\d{5}\",,,,\"976012345\"],\"MF\",590,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MG:[,[,,\"[23]\\\\d{8}\",,,,,,,[9],[7]],[,,\"2072[29]\\\\d{4}|20(?:2\\\\d|4[47]|5[3467]|6[279]|7[35]|8[268]|9[245])\\\\d{5}\",,,,\"202123456\",,,,[7]],[,,\"3[2-489]\\\\d{7}\",,,,\"321234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"22\\\\d{7}\",,,,\"221234567\"],\"MG\",\n261,\"00\",\"0\",,,\"0|([24-9]\\\\d{6})$\",\"20$1\",,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MH:[,[,,\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",,,,,,,[7]],[,,\"(?:247|528|625)\\\\d{4}\",,,,\"2471234\"],[,,\"(?:(?:23|54)5|329|45[56])\\\\d{4}\",,,,\"2351234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"635\\\\d{4}\",,,,\"6351234\"],\"MH\",692,\"011\",\"1\",,,\"1\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],,[,,,,,,,,\n,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MK:[,[,,\"[2-578]\\\\d{7}\",,,,,,,[8],[6,7]],[,,\"(?:(?:2(?:62|77)0|3444)\\\\d|4[56]440)\\\\d{3}|(?:34|4[357])700\\\\d{3}|(?:2(?:[23]\\\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\\\d{5}\",,,,\"22012345\",,,,[6,7]],[,,\"7(?:3555|4(?:60\\\\d|747)|94(?:[01]\\\\d|2[0-4]))\\\\d{3}|7(?:[0-25-8]\\\\d|3[1-4]|42|9[23])\\\\d{5}\",,,,\"72345678\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,\"5[02-9]\\\\d{6}\",,,,\"50012345\"],\n[,,\"8(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\",,,,\"80123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MK\",389,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ML:[,[,,\"[24-9]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:07[0-8]|12[67])\\\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-39]))\\\\d{5}\",,,,\"20212345\"],\n[,,\"2(?:0(?:01|79)|17\\\\d)\\\\d{4}|(?:5[01]|[679]\\\\d|8[239])\\\\d{6}\",,,,\"65012345\"],[,,\"80\\\\d{6}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ML\",223,\"00\",,,,,,,,[[,\"(\\\\d{4})\",\"$1\",[\"67[057-9]|74[045]\",\"67(?:0[09]|[59]9|77|8[89])|74(?:0[02]|44|55)\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],[,,,,,,,,,[-1]],,,[,,\"80\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MM:[,[,,\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",\n,,,,,,[6,7,8,9,10],[5]],[,,\"(?:1(?:(?:2\\\\d|3[56]|[89][0-6])\\\\d|4(?:2[2-469]|39|46|6[25]|7[0-3]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\\\d|2[246]|39|46|62|7[0-3]|83)|51\\\\d\\\\d)|4(?:2(?:2\\\\d\\\\d|48[0-3])|3(?:20\\\\d|4(?:70|83)|56)|420\\\\d|5470)|6(?:0(?:[23]|88\\\\d)|(?:124|[56]2\\\\d)\\\\d|247[23]|3(?:20\\\\d|470)|4(?:2[04]\\\\d|47[23])|7(?:(?:3\\\\d|8[01459])\\\\d|4(?:39|60|7[013]))))\\\\d{4}|5(?:2(?:2\\\\d{5,6}|47[023]\\\\d{4})|(?:347[23]|4(?:2(?:1|86)|470)|522\\\\d|6(?:20\\\\d|483)|7(?:20\\\\d|48[0-2])|8(?:20\\\\d|47[02])|9(?:20\\\\d|47[01]))\\\\d{4})|7(?:(?:0470|4(?:25\\\\d|470)|5(?:202|470|96\\\\d))\\\\d{4}|1(?:20\\\\d{4,5}|4(?:70|83)\\\\d{4}))|8(?:1(?:2\\\\d{5,6}|4(?:10|7[01]\\\\d)\\\\d{3})|2(?:2\\\\d{5,6}|(?:320|490\\\\d)\\\\d{3})|(?:3(?:2\\\\d\\\\d|470)|4[24-7]|5(?:2\\\\d|4[1-9]|51)\\\\d|6[23])\\\\d{4})|(?:1[2-6]\\\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|[35]2\\\\d))\\\\d{4}|25\\\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\\\d{4}\",\n,,,\"1234567\",,,[6,7,8,9],[5]],[,,\"(?:17[01]|9(?:2(?:[0-4]|[56]\\\\d\\\\d)|(?:3(?:[0-36]|4\\\\d)|(?:6\\\\d|8[89]|9[4-8])\\\\d|7(?:3|40|[5-9]\\\\d))\\\\d|4(?:(?:[0245]\\\\d|[1379])\\\\d|88)|5[0-6])\\\\d)\\\\d{4}|9[69]1\\\\d{6}|9(?:[68]\\\\d|9[089])\\\\d{5}\",,,,\"92123456\",,,[7,8,9,10]],[,,\"80080(?:[01][1-9]|2\\\\d)\\\\d{3}\",,,,\"8008001234\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1333\\\\d{4}|[12]468\\\\d{4}\",,,,\"13331234\",,,[8]],\"MM\",95,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\n\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[,\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],,[,,,\n,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MN:[,[,,\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",,,,,,,[8,9,10],[4,5,6]],[,,\"[12]2[1-3]\\\\d{5,6}|7(?:0[0-5]\\\\d|128)\\\\d{4}|(?:[12](?:1|27)|5[368])\\\\d{6}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\\\d{6,7}\",,,,\"53123456\",,,,[4,5,6]],[,,\"(?:83[01]|920)\\\\d{5}|(?:5[05]|8[05689]|9[013-9])\\\\d{6}\",,,,\"88123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"712[0-79]\\\\d{4}|7(?:1[013-9]|[5-8]\\\\d)\\\\d{5}\",,,,\"75123456\",,,[8]],\"MN\",976,\"001\",\n\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]],[,\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[,\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MO:[,[,,\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",,,,,,,[7,8]],[,,\"(?:28[2-9]|8(?:11|[2-57-9]\\\\d))\\\\d{5}\",\n,,,\"28212345\",,,[8]],[,,\"6800[0-79]\\\\d{3}|6(?:[235]\\\\d\\\\d|6(?:0[0-5]|[1-9]\\\\d)|8(?:0[1-9]|[14-8]\\\\d|2[5-9]|[39][0-4]))\\\\d{4}\",,,,\"66123456\",,,[8]],[,,\"0800\\\\d{3}\",,,,\"0800501\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MO\",853,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MP:[,[,,\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",,,,,,,[10],[7]],[,,\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",\n,,,\"6702345678\",,,,[7]],[,,\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\",,,,\"6702345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MP\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"670$1\",,1,,,[,,,,,,,,,[-1]],,\"670\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MQ:[,[,,\"(?:69|80)\\\\d{7}|(?:59|97)6\\\\d{6}\",,,,,,,[9]],[,,\"596(?:[04-7]\\\\d|10|2[7-9]|3[014-9]|8[09]|9[4-9])\\\\d{4}\",,,,\"596301234\"],[,,\"69(?:6(?:[0-46-9]\\\\d|5[0-6])|727)\\\\d{4}\",,,,\"696201234\"],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"976(?:6\\\\d|7[0-367])\\\\d{4}\",,,,\"976612345\"],\"MQ\",596,\"00\",\"0\",,,\"0\",\n,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MR:[,[,,\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"(?:25[08]|35\\\\d|45[1-7])\\\\d{5}\",,,,\"35123456\"],[,,\"[2-4][0-46-9]\\\\d{6}\",,,,\"22123456\"],[,,\"800\\\\d{5}\",,,,\"80012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MR\",222,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",\n[\"[2-48]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MS:[,[,,\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"6644(?:1[0-3]|91)\\\\d{4}\",,,,\"6644912345\",,,,[7]],[,,\"664(?:3(?:49|9[1-6])|49[2-6])\\\\d{4}\",,,,\"6644923456\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"MS\",1,\"011\",\"1\",,,\"1|([34]\\\\d{6})$\",\"664$1\",,,,,[,,,,,,,,,[-1]],,\"664\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MT:[,[,,\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",,,,,,,[8]],[,,\"20(?:3[1-4]|6[059])\\\\d{4}|2(?:0[19]|[1-357]\\\\d|60)\\\\d{5}\",,,,\"21001234\"],[,,\"(?:7(?:210|[79]\\\\d\\\\d)|9(?:[29]\\\\d\\\\d|69[67]|8(?:1[1-3]|89|97)))\\\\d{4}\",,,,\"96961234\"],[,,\"800[3467]\\\\d{4}\",,,,\"80071234\"],[,,\"5(?:0(?:0(?:37|43)|(?:6\\\\d|70|9[0168])\\\\d)|[12]\\\\d0[1-5])\\\\d{3}\",,,,\"50037123\"],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3550\\\\d{4}\",,,,\"35501234\"],\"MT\",356,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]],,[,,\"7117\\\\d{4}\",,,,\"71171234\"],,,[,,,,,,,,,[-1]],[,,\"501\\\\d{5}\",,,,\"50112345\"],,,[,,,,,,,,,[-1]]],MU:[,[,,\"(?:5|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",,,,,,,[7,8,10]],[,,\"(?:2(?:[0346-8]\\\\d|1[0-7])|4(?:[013568]\\\\d|2[4-7])|54(?:[3-5]\\\\d|71)|6\\\\d\\\\d|8(?:14|3[129]))\\\\d{4}\",,,,\"54480123\",,,[7,8]],[,,\"5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\\\d{4}|5(?:2[5-9]|4[3-689]|[57]\\\\d|8[0-689]|9[0-8])\\\\d{5}\",\n,,,\"52512345\",,,[8]],[,,\"802\\\\d{7}|80[0-2]\\\\d{4}\",,,,\"8001234\",,,[7,10]],[,,\"30\\\\d{5}\",,,,\"3012345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"3(?:20|9\\\\d)\\\\d{4}\",,,,\"3201234\",,,[7]],\"MU\",230,\"0(?:0|[24-7]0|3[03])\",,,,,,\"020\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MV:[,[,,\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",,,,,,,[7,10]],[,,\"(?:3(?:0[0-3]|3[0-59])|6(?:[57][02468]|6[024-68]|8[024689]))\\\\d{4}\",\n,,,\"6701234\",,,[7]],[,,\"46[46]\\\\d{4}|(?:7\\\\d|9[13-9])\\\\d{5}\",,,,\"7712345\",,,[7]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MV\",960,\"0(?:0|19)\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"4[05]0\\\\d{4}\",,,,\"4001234\",,,[7]],,,[,,,,,,,,,[-1]]],MW:[,[,,\"(?:[129]\\\\d|31|77|88)\\\\d{7}|1\\\\d{6}\",,,,,,,[7,9]],[,,\"(?:1[2-9]|2[12]\\\\d\\\\d)\\\\d{5}\",\n,,,\"1234567\"],[,,\"111\\\\d{6}|(?:31|77|88|9[89])\\\\d{7}\",,,,\"991234567\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MW\",265,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MX:[,[,,\"1(?:(?:44|99)[1-9]|65[0-689])\\\\d{7}|(?:1(?:[017]\\\\d|[235][1-9]|4[0-35-9]|6[0-46-9]|8[1-79]|9[1-8])|[2-9]\\\\d)\\\\d{8}\",\n,,,,,,[10,11],[7,8]],[,,\"6571\\\\d{6}|(?:2(?:0[01]|2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\",,,,\"2001234567\",,,[10],[7,8]],[,,\"6571\\\\d{6}|(?:1(?:2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-7][1-9]|3[1-8]|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))|2(?:2[1-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[25-7][1-9]|3[1-8]|4\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[1-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1-467][1-9]|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|6[1-9]|7[12]|8[1-8]|9\\\\d))\\\\d{7}\",\n,,,\"12221234567\",,,,[7,8]],[,,\"8(?:00|88)\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"900\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,\"300\\\\d{7}\",,,,\"3001234567\",,,[10]],[,,\"500\\\\d{7}\",,,,\"5001234567\",,,[10]],[,,,,,,,,,[-1]],\"MX\",52,\"0[09]\",\"01\",,,\"0(?:[12]|4[45])|1\",,\"00\",,[[,\"(\\\\d{5})\",\"$1\",[\"53\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],,,1],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],,,1],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$2 $3 $4\",[\"1\"],,,1]],[[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],,,1],[,\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],,,1],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],,,1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MY:[,[,,\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",,,,,,,[8,9,10],[6,7]],[,,\"(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\\\d|9[0-57])\\\\d|4(?:2[0-689]|[3-79]\\\\d|8[1-35689])|5(?:2[0-589]|[3468]\\\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\\\d|[3489][0-8]))\\\\d{5}\",\n,,,\"323856789\",,,[8,9],[6,7]],[,,\"1(?:1888[69]|4400|8(?:47|8[27])[0-4])\\\\d{4}|1(?:0(?:[23568]\\\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\\\d\\\\d|6(?:0[5-9]|[1-9]\\\\d)|7(?:[0134]\\\\d|2[1-9]|5[0-6]))|(?:(?:[269]|59)\\\\d|[37][1-9]|4[235-9])\\\\d|8(?:1[23]|[236]\\\\d|4[06]|5[7-9]|7[016-9]|8[01]|9[0-8]))\\\\d{5}\",,,,\"123456789\",,,[9,10]],[,,\"1[378]00\\\\d{6}\",,,,\"1300123456\",,,[10]],[,,\"1600\\\\d{6}\",,,,\"1600123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"15(?:4(?:6[0-4]\\\\d|8(?:0[125]|[17]\\\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\\\d))\\\\d{4}\",\n,,,\"1546012345\",,,[10]],\"MY\",60,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9])|8\"],\"0$1\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],MZ:[,[,,\"(?:2|8\\\\d)\\\\d{7}\",\n,,,,,,[8,9]],[,,\"2(?:[1346]\\\\d|5[0-2]|[78][12]|93)\\\\d{5}\",,,,\"21123456\",,,[8]],[,,\"8[2-79]\\\\d{7}\",,,,\"821234567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"MZ\",258,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NA:[,[,,\"[68]\\\\d{7,8}\",,,,,,,[8,9]],[,,\"64426\\\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\\\d{4,5}|6(?:1(?:(?:0\\\\d|2[0189]|3[24-69]|4[5-9])\\\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\\\d{4}\",\n,,,\"61221234\"],[,,\"(?:60|8[1245])\\\\d{7}\",,,,\"811234567\",,,[9]],[,,\"80\\\\d{7}\",,,,\"800123456\",,,[9]],[,,\"8701\\\\d{5}\",,,,\"870123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8(?:3\\\\d\\\\d|86)\\\\d{5}\",,,,\"88612345\"],\"NA\",264,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],,,[,,,,,,,,,[-1]]],NC:[,[,,\"[2-57-9]\\\\d{5}\",,,,,,,[6]],[,,\"(?:2[03-9]|3[0-5]|4[1-7]|88)\\\\d{4}\",,,,\"201234\"],[,,\"(?:5[0-4]|[79]\\\\d|8[0-79])\\\\d{4}\",,,,\"751234\"],[,,,,,,,,,[-1]],[,,\"36\\\\d{4}\",,,,\"366711\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NC\",687,\"00\",,,,,,,,[[,\"(\\\\d{3})\",\"$1\",[\"5[6-8]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NE:[,[,,\"[027-9]\\\\d{7}\",\n,,,,,,[8]],[,,\"2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\\\d{4}\",,,,\"20201234\"],[,,\"(?:23|7[04]|[89]\\\\d)\\\\d{6}\",,,,\"93123456\"],[,,\"08\\\\d{6}\",,,,\"08123456\"],[,,\"09\\\\d{6}\",,,,\"09123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NE\",227,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[04]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NF:[,[,\n,\"[13]\\\\d{5}\",,,,,,,[6],[5]],[,,\"(?:1(?:06|17|28|39)|3[0-2]\\\\d)\\\\d{3}\",,,,\"106609\",,,,[5]],[,,\"(?:14|3[58])\\\\d{4}\",,,,\"381234\",,,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NF\",672,\"00\",,,,\"([0-258]\\\\d{4})$\",\"3$1\",,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[,\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NG:[,[,,\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",,,,,,,[7,8,10,11,12,13,14],[5,6]],\n[,,\"(?:(?:[1-356]\\\\d|4[02-8]|8[2-9])\\\\d|9(?:0[3-9]|[1-9]\\\\d))\\\\d{5}|7(?:0(?:[013-689]\\\\d|2[0-24-9])\\\\d{3,4}|[1-79]\\\\d{6})|(?:[12]\\\\d|4[147]|5[14579]|6[1578]|7[1-3578])\\\\d{5}\",,,,\"18040123\",,,[7,8],[5,6]],[,,\"(?:702[0-24-9]|8(?:01|19)[01])\\\\d{6}|(?:70[13-689]|8(?:0[2-9]|1[0-8])|9(?:0[1-9]|1[2356]))\\\\d{7}\",,,,\"8021234567\",,,[10]],[,,\"800\\\\d{7,11}\",,,,\"80017591759\",,,[10,11,12,13,14]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NG\",234,\"009\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\n\"$1 $2 $3\",[\"78\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"700\\\\d{7,11}\",,,,\"7001234567\",,,[10,11,12,13,14]],,,[,,,,,,,,,[-1]]],NI:[,[,,\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",,,,,,,[8]],[,,\"2\\\\d{7}\",\n,,,\"21234567\"],[,,\"(?:5(?:5[0-7]|[78]\\\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\\\d)\\\\d)\\\\d{5}\",,,,\"81234567\"],[,,\"1800\\\\d{4}\",,,,\"18001234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NI\",505,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NL:[,[,,\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}\",,,,,,,[5,6,7,8,9,10]],[,,\"(?:1(?:[035]\\\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\\\d\\\\d)\\\\d{6}\",\n,,,\"101234567\",,,[9]],[,,\"6[1-58]\\\\d{7}\",,,,\"612345678\",,,[9]],[,,\"800\\\\d{4,7}\",,,,\"8001234\",,,[7,8,9,10]],[,,\"90[069]\\\\d{4,7}\",,,,\"9061234\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:85|91)\\\\d{7}\",,,,\"851234567\",,,[9]],\"NL\",31,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})\",\"$1\",[\"1[238]|[34]\"]],[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"14\"]],[,\"(\\\\d{6})\",\"$1\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[,\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[,\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],[,,\"66\\\\d{7}\",,,,\"662345678\",,,[9]],,,[,,\"140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)\\\\d\",\n,,,,,,[5,6]],[,,\"140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\\\d{6})\\\\d\",,,,\"14020\",,,[5,6,9]],,,[,,,,,,,,,[-1]]],NO:[,[,,\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",,,,,,,[5,8]],[,,\"(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\\\d{6}\",,,,\"21234567\",,,[8]],[,,\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",,,,\"40612345\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",\n,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"NO\",47,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|59\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],,[,,,,,,,,,[-1]],1,\"[02-689]|7[0-8]\",[,,,,,,,,,[-1]],[,,\"(?:0[2-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\",,,,\"02000\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],NP:[,[,,\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",,,,,,,[8,10,11],[6,7]],[,,\"(?:1[0-6]\\\\d|99[02-6])\\\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\\\d{5}\",\n,,,\"14567890\",,,[8],[6,7]],[,,\"9(?:6[0-3]|7[245]|8[0-24-68])\\\\d{7}\",,,,\"9841234567\",,,[10]],[,,\"1(?:66001|800\\\\d\\\\d)\\\\d{5}\",,,,\"16600101234\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NP\",977,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{5})\",\"$1-$2-$3\",[\"1\"]]],[[,\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{6})\",\n\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NR:[,[,,\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",,,,,,,[7]],[,,\"444\\\\d{4}\",,,,\"4441234\"],[,,\"(?:55[3-9]|666|8\\\\d\\\\d)\\\\d{4}\",,,,\"5551234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NR\",674,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nNU:[,[,,\"(?:[47]|888\\\\d)\\\\d{3}\",,,,,,,[4,7]],[,,\"[47]\\\\d{3}\",,,,\"7012\",,,[4]],[,,\"888[4-9]\\\\d{3}\",,,,\"8884012\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"NU\",683,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],NZ:[,[,,\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",,,,,,,[5,6,7,8,9,10]],[,,\"24099\\\\d{3}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\\\d{6}\",\n,,,\"32345678\",,,[8],[7]],[,,\"2[0-27-9]\\\\d{7,8}|21\\\\d{6}\",,,,\"211234567\",,,[8,9,10]],[,,\"508\\\\d{6,7}|80\\\\d{6,8}\",,,,\"800123456\",,,[8,9,10]],[,,\"(?:11\\\\d{5}|50(?:0[08]|30|66|77|88))\\\\d{3}|90\\\\d{6,8}\",,,,\"900123456\",,,[7,8,9,10]],[,,,,,,,,,[-1]],[,,\"70\\\\d{7}\",,,,\"701234567\",,,[9]],[,,,,,,,,,[-1]],\"NZ\",64,\"0(?:0|161)\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-579]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|[89]0\",\"50(?:[0367]|88)|[89]0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\n\"$1-$2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],,[,,\"[28]6\\\\d{6,7}\",,,,\"26123456\",,,[8,9]],,,[,,,,,,,,,[-1]],[,,\"8(?:1[6-9]|22|3\\\\d|4[045]|5[459]|7[0-3579]|90)\\\\d{2,7}\",,,,\"83012378\"],,,[,,,,,,,,,[-1]]],OM:[,[,,\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",,,,,,,[7,8,9]],[,,\"2[2-6]\\\\d{6}\",\n,,,\"23123456\",,,[8]],[,,\"1505\\\\d{4}|(?:7(?:[1289]\\\\d|7[0-4])|9(?:0[1-9]|[1-9]\\\\d))\\\\d{5}\",,,,\"92123456\",,,[8]],[,,\"8007\\\\d{4,5}|(?:500|800[05])\\\\d{4}\",,,,\"80071234\"],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"OM\",968,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PA:[,[,,\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",\n,,,,,,[7,8,10,11]],[,,\"(?:1(?:0\\\\d|1[479]|2[37]|3[0137]|4[17]|5[05]|6[58]|7[0167]|8[258]|9[1389])|2(?:[0235-79]\\\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[089]\\\\d|1[0-7]|2[0-5]|33|4[0-79]|5[05]|6[068]|7[0-8])|4(?:00|3[0-579]|4\\\\d|7[0-57-9])|5(?:[01]\\\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[056]|7[0-24-9]|8[6-9]|90)|8(?:09|2[89]|3\\\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\\\d))\\\\d{4}\",,,,\"2001234\",,,[7]],[,,\"(?:1[16]1|21[89]|6\\\\d{3}|8(?:1[01]|7[23]))\\\\d{4}\",\n,,,\"61234567\",,,[7,8]],[,,\"800\\\\d{4,5}|(?:00800|800\\\\d)\\\\d{6}\",,,,\"8001234\"],[,,\"(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\\\d{4}\",,,,\"8601234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PA\",507,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PE:[,[,,\"(?:[14-8]|9\\\\d)\\\\d{7}\",,,,,,,[8,9],[6,7]],[,,\"(?:(?:4[34]|5[14])[0-8]\\\\d|7(?:173|3[0-8]\\\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[569]|[56]0)))\\\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\\\d{6}\",\n,,,\"11234567\",,,[8],[6,7]],[,,\"9\\\\d{8}\",,,,\"912345678\",,,[9]],[,,\"800\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"805\\\\d{5}\",,,,\"80512345\",,,[8]],[,,\"801\\\\d{5}\",,,,\"80112345\",,,[8]],[,,\"80[24]\\\\d{5}\",,,,\"80212345\",,,[8]],[,,,,,,,,,[-1]],\"PE\",51,\"19(?:1[124]|77|90)00\",\"0\",\" Anexo \",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,\n,,,,,[-1]],,,[,,,,,,,,,[-1]]],PF:[,[,,\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",,,,,,,[6,8,9]],[,,\"4(?:0[4-689]|9[4-68])\\\\d{5}\",,,,\"40412345\",,,[8]],[,,\"8[7-9]\\\\d{6}\",,,,\"87123456\",,,[8]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"499\\\\d{5}\",,,,\"49901234\",,,[8]],\"PF\",689,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],,[,,,\n,,,,,,[-1]],,,[,,\"44\\\\d{4}\",,,,,,,[6]],[,,\"44\\\\d{4}\",,,,\"440123\",,,[6]],,,[,,,,,,,,,[-1]]],PG:[,[,,\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",,,,,,,[7,8]],[,,\"(?:(?:3[0-2]|4[257]|5[34]|9[78])\\\\d|64[1-9]|85[02-46-9])\\\\d{4}\",,,,\"3123456\",,,[7]],[,,\"(?:7\\\\d|8[18])\\\\d{6}\",,,,\"70123456\",,,[8]],[,,\"180\\\\d{4}\",,,,\"1801234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"2(?:0[0-47]|7[568])\\\\d{4}\",,,,\"2751234\",,,[7]],\"PG\",675,\"00|140[1-3]\",,,,,,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],\n[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],,[,,\"27[01]\\\\d{4}\",,,,\"2700123\",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PH:[,[,,\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",,,,,,,[6,8,9,10,11,12,13],[4,5,7]],[,,\"(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\\\d{3}|88(?:22\\\\d\\\\d|42))\\\\d{4}|(?:2|8[2-8]\\\\d\\\\d)\\\\d{5}\",,,,\"232345678\",,,[6,8,9,10],[4,5,7]],[,,\"(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\\\d|4[2-9]|8[135-9]|9[1-9]))\\\\d{7}\",,,,\"9051234567\",,,[10]],[,,\"1800\\\\d{7,9}\",\n,,,\"180012345678\",,,[11,12,13]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PH\",63,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[,\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PK:[,[,,\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",,,,,,\n,[8,9,10,11,12],[5,6,7]],[,,\"(?:(?:21|42)[2-9]|58[126])\\\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\\\d{5,6}\",,,,\"2123456789\",,,[9,10],[5,6,7,8]],[,,\"3(?:[0-24]\\\\d|3[0-7]|55|64)\\\\d{7}\",,,,\"3012345678\",,,[10]],[,,\"800\\\\d{5}(?:\\\\d{3})?\",,,,\"80012345\",,,[8,11]],[,,\"900\\\\d{5}\",,,,\"90012345\",,,[8]],[,,,,,,,,,[-1]],[,,\"122\\\\d{6}\",\n,,,\"122044444\",,,[9]],[,,,,,,,,,[-1]],\"PK\",92,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[,\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\n\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[,\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\\\d{6}\",\n,,,\"21111825888\",,,[11,12]],,,[,,,,,,,,,[-1]]],PL:[,[,,\"6\\\\d{5}(?:\\\\d{2})?|8\\\\d{9}|[1-9]\\\\d{6}(?:\\\\d{2})?\",,,,,,,[6,7,8,9,10]],[,,\"47\\\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\\\d{6}|1(?:[0-8]\\\\d{5}|9\\\\d{3}(?:\\\\d{2})?))\",,,,\"123456789\",,,[7,9]],[,,\"21(?:1(?:[145]\\\\d|3[1-5])|2[0-4]\\\\d)\\\\d{4}|(?:45|5[0137]|6[069]|7[2389]|88)\\\\d{7}\",,,,\"512345678\",,,[9]],[,,\"800\\\\d{6,7}\",,,,\"800123456\",,,[9,10]],[,,\"70[01346-8]\\\\d{6}\",,,,\"701234567\",,,[9]],[,,\"801\\\\d{6}\",\n,,,\"801234567\",,,[9]],[,,,,,,,,,[-1]],[,,\"39\\\\d{7}\",,,,\"391234567\",,,[9]],\"PL\",48,\"00\",,,,,,,,[[,\"(\\\\d{5})\",\"$1\",[\"19\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|64\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],\n[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]],,[,,\"64\\\\d{4,7}\",,,,\"641234567\",,,[6,7,8,9]],,,[,,,,,,,,,[-1]],[,,\"804\\\\d{6}\",,,,\"804123456\",,,[9]],,,[,,,,,,,,,[-1]]],PM:[,[,,\"(?:[45]|80\\\\d\\\\d)\\\\d{5}\",,,,,,,[6,9]],[,,\"(?:4[1-3]|50)\\\\d{4}\",,,,\"430123\",,,[6]],[,,\"(?:4[02-4]|5[056])\\\\d{4}\",,,,\"551234\",,,[6]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PM\",\n508,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PR:[,[,,\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",,,,,,,[10],[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"(?:787|939)[2-9]\\\\d{6}\",,,,\"7872345678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"PR\",1,\"011\",\"1\",,,\"1\",,,1,,,[,,,,,,,,,[-1]],,\"787|939\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PS:[,[,,\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",,,,,,,[8,9,10],[7]],[,,\"(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\\\d{5}\",,,,\"22234567\",,,[8],[7]],[,,\"5[69]\\\\d{7}\",,,,\"599123456\",,,[9]],[,,\"1800\\\\d{6}\",,,,\"1800123456\",,,[10]],[,,,,,,,,,[-1]],[,,\"1700\\\\d{6}\",,,,\"1700123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PS\",970,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"[2489]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PT:[,[,,\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",,,,,,,[9]],[,,\"2(?:[12]\\\\d|[35][1-689]|4[1-59]|6[1-35689]|7[1-9]|8[1-69]|9[1256])\\\\d{6}\",,,,\"212345678\"],[,,\"6[0356]92(?:30|9\\\\d)\\\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\\\d\\\\d|480))\\\\d{5}\",,,,\"912345678\"],[,,\"80[02]\\\\d{6}\",,,,\"800123456\"],[,,\"(?:6(?:0[178]|4[68])\\\\d|76(?:0[1-57]|1[2-47]|2[237]))\\\\d{5}\",\n,,,\"760123456\"],[,,\"80(?:8\\\\d|9[1579])\\\\d{5}\",,,,\"808123456\"],[,,\"884[0-4689]\\\\d{5}\",,,,\"884123456\"],[,,\"30\\\\d{7}\",,,,\"301234567\"],\"PT\",351,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"70(?:7\\\\d|8[17])\\\\d{5}\",,,,\"707123456\"],,,[,,\"600\\\\d{6}\",,,,\"600110000\"]],PW:[,[,,\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",,,,,,,[7]],[,,\"(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\\\d{4}\",\n,,,\"2771234\"],[,,\"(?:46[0-5]|6[2-4689]0)\\\\d{4}|(?:45|77|88)\\\\d{5}\",,,,\"6201234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"PW\",680,\"01[12]\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],PY:[,[,,\"59\\\\d{4,6}|9\\\\d{5,10}|(?:[2-46-8]\\\\d|5[0-8])\\\\d{4,7}\",,,,,,,[6,7,8,9,10,11],[5]],[,,\"(?:[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36])\\\\d{5,7}|(?:2(?:2[4-68]|[4-68]\\\\d|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\\\d)|4(?:3[12]|5[13]|9[1-47])|5(?:[1-4]\\\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\\\d|6[1-578]|75|8[0-8])|858)\\\\d{5,6}\",\n,,,\"212345678\",,,[7,8,9],[5,6]],[,,\"9(?:51|6[129]|[78][1-6]|9[1-5])\\\\d{6}\",,,,\"961456789\",,,[9]],[,,\"9800\\\\d{5,7}\",,,,\"98000123456\",,,[9,10,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"8700[0-4]\\\\d{4}\",,,,\"870012345\",,,[9]],\"PY\",595,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-6])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"[2-9]0\\\\d{4,7}\",,,,\"201234567\",,,[6,7,8,9]],,,[,,,,,,,,,[-1]]],QA:[,[,,\"[2-7]\\\\d{7}|800\\\\d{4}(?:\\\\d{2})?|2\\\\d{6}\",,,,,,,[7,8,9]],[,,\"4141\\\\d{4}|(?:23|4[04])\\\\d{6}\",,,,\"44123456\",\n,,[8]],[,,\"(?:2[89]|[35-7]\\\\d)\\\\d{6}\",,,,\"33123456\",,,[8]],[,,\"800\\\\d{4}(?:\\\\d{2})?\",,,,\"8001234\",,,[7,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"QA\",974,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]],,[,,\"2(?:[12]\\\\d|61)\\\\d{4}\",,,,\"2123456\",,,[7]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RE:[,[,,\"9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}\",,,,,,,[9]],[,,\"26(?:2\\\\d\\\\d|30[0-5])\\\\d{4}\",,,,\"262161234\"],[,,\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-46]|1[013]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-27]|8[0-8]|9[0-479]))|9769\\\\d)\\\\d{4}\",\n,,,\"692123456\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,\"89[1-37-9]\\\\d{6}\",,,,\"891123456\"],[,,\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\",,,,\"810123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RE\",262,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],,[,,,,,,,,,[-1]],1,\"26[23]|69|[89]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RO:[,[,,\"(?:[2378]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",,,,,,,[6,9]],[,,\"[23][13-6]\\\\d{7}|(?:2(?:19\\\\d|[3-6]\\\\d9)|31\\\\d\\\\d)\\\\d\\\\d\",,,,\"211234567\"],[,,\"7020\\\\d{5}|7(?:0[013-9]|1[0-3]|[2-7]\\\\d|8[03-8]|9[019])\\\\d{6}\",\n,,,\"712034567\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"90[0136]\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"801\\\\d{6}\",,,,\"801123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RO\",40,\"00\",\"0\",\" int \",,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:37\\\\d|80[578])\\\\d{6}\",,,,\"372123456\",\n,,[9]],,,[,,,,,,,,,[-1]]],RS:[,[,,\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",,,,,,,[6,7,8,9,10,11,12],[4,5]],[,,\"(?:11[1-9]\\\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\\\d))\\\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\\\d{4,9}\",,,,\"10234567\",,,[7,8,9,10,11,12],[4,5,6]],[,,\"6(?:[0-689]|7\\\\d)\\\\d{6,7}\",,,,\"601234567\",,,[8,9,10]],[,,\"800\\\\d{3,9}\",,,,\"80012345\"],[,,\"(?:78\\\\d|90[0169])\\\\d{3,7}\",,,,\"90012345\",,,[6,7,8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,\n,,,,,,,,[-1]],\"RS\",381,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7[06]\\\\d{4,10}\",,,,\"700123456\"],,,[,,,,,,,,,[-1]]],RU:[,[,,\"8\\\\d{13}|[347-9]\\\\d{9}\",,,,,,,[10,14],[7]],[,,\"(?:3(?:0[12]|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-79]|7[1-37-9]))\\\\d{7}\",,,,\"3011234567\",,,[10],[7]],[,,\"9\\\\d{9}\",\n,,,\"9123456789\",,,[10]],[,,\"8(?:0[04]|108\\\\d{3})\\\\d{7}\",,,,\"8001234567\"],[,,\"80[39]\\\\d{7}\",,,,\"8091234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"808\\\\d{7}\",,,,\"8081234567\",,,[10]],[,,,,,,,,,[-1]],\"RU\",7,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"[0-79]\"]],[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",,1],[,\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",,1],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\n\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],[[,\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",,1],[,\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\n\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",,1],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],[,,,,,,,,,[-1]],1,\"3[04-689]|[489]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],RW:[,[,,\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",,,,,,,[8,9]],[,,\"(?:06|2[23568]\\\\d)\\\\d{6}\",,,,\"250123456\"],[,,\"7[2389]\\\\d{7}\",,,,\"720123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\n\"900\\\\d{6}\",,,,\"900123456\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"RW\",250,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SA:[,[,,\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",,,,,,,[9,10],[7]],[,,\"1(?:1\\\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\\\d{6}\",,,,\"112345678\",,,[9],[7]],[,,\"579[01]\\\\d{5}|5(?:[013-689]\\\\d|7[0-36-8])\\\\d{6}\",\n,,,\"512345678\",,,[9]],[,,\"800\\\\d{7}\",,,,\"8001234567\",,,[10]],[,,\"925\\\\d{6}\",,,,\"925012345\",,,[9]],[,,\"920\\\\d{6}\",,,,\"920012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SA\",966,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"811\\\\d{7}\",,,,\"8110123456\",\n,,[10]],,,[,,,,,,,,,[-1]]],SB:[,[,,\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",,,,,,,[5,7]],[,,\"(?:1[4-79]|[23]\\\\d|4[0-2]|5[03]|6[0-37])\\\\d{3}\",,,,\"40123\",,,[5]],[,,\"48\\\\d{3}|(?:(?:7[1-9]|8[4-9])\\\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\\\d{4}\",,,,\"7421234\"],[,,\"1[38]\\\\d{3}\",,,,\"18123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[12]\\\\d{3}\",,,,\"51123\",,,[5]],\"SB\",677,\"0[01]\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]],,[,,,,,,,,,[-1]],,,\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SC:[,[,,\"8000\\\\d{3}|(?:[249]\\\\d|64)\\\\d{5}\",,,,,,,[7]],[,,\"4[2-46]\\\\d{5}\",,,,\"4217123\"],[,,\"2[5-8]\\\\d{5}\",,,,\"2510123\"],[,,\"8000\\\\d{3}\",,,,\"8000000\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"971\\\\d{4}|(?:64|95)\\\\d{5}\",,,,\"6412345\"],\"SC\",248,\"010|0[0-2]\",,,,,,\"00\",,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SD:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"1(?:5\\\\d|8[35-7])\\\\d{6}\",\n,,,\"153123456\"],[,,\"(?:1[0-2]|9[0-3569])\\\\d{7}\",,,,\"911231234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SD\",249,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SE:[,[,,\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",,,,,,,[6,7,8,9,10,12]],[,,\"(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\\\d)\\\\d|90[1-9])\\\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\\\d{5,6}\",\n,,,\"8123456\",,,[7,8,9]],[,,\"7[02369]\\\\d{7}\",,,,\"701234567\",,,[9]],[,,\"20\\\\d{4,7}\",,,,\"20123456\",,,[6,7,8,9]],[,,\"649\\\\d{6}|9(?:00|39|44)[1-8]\\\\d{3,6}\",,,,\"9001234567\",,,[7,8,9,10]],[,,\"77[0-7]\\\\d{6}\",,,,\"771234567\",,,[9]],[,,\"75[1-8]\\\\d{6}\",,,,\"751234567\",,,[9]],[,,,,,,,,,[-1]],\"SE\",46,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\"],\n[,\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1-$2 $3 $4\",[\"8\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\"]],[[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"20\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"9(?:00|39|44)\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"]],[,\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1 $2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"]],[,\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1 $2 $3\",[\"9(?:00|39|44)\"]],[,\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"10|7\"]],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]\"]]],[,,\"74[02-9]\\\\d{6}\",,,,\"740123456\",,,[9]],,,[,,,,,,,,,[-1]],[,,\"10[1-8]\\\\d{6}\",,,,\"102345678\",,,[9]],,,[,,\"(?:25[245]|67[3-68])\\\\d{9}\",,,,\"254123456789\",,,[12]]],SG:[,[,,\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",,,,,,,[8,10,11]],[,,\"662[0-24-9]\\\\d{4}|6(?:[0-578]\\\\d|6[013-57-9]|9[0-35-9])\\\\d{5}\",\n,,,\"61234567\",,,[8]],[,,\"8(?:051|95[0-2])\\\\d{4}|(?:8(?:0[1-4]|[1-8]\\\\d|9[0-4])|9[0-8]\\\\d)\\\\d{5}\",,,,\"81234567\",,,[8]],[,,\"(?:18|8)00\\\\d{7}\",,,,\"18001234567\",,,[10,11]],[,,\"1900\\\\d{7}\",,,,\"19001234567\",,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:3[12]\\\\d|666)\\\\d{5}\",,,,\"31234567\",,,[8]],\"SG\",65,\"0[0-3]\\\\d\",,,,,,,,[[,\"(\\\\d{4,5})\",\"$1\",[\"1[013-9]|77\",\"1(?:[013-8]|9(?:0[1-9]|[1-9]))|77\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\n\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-5]|[1-9])\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"7000\\\\d{7}\",,,,\"70001234567\",,,[11]],,,[,,,,,,,,,[-1]]],SH:[,[,,\"(?:[256]\\\\d|8)\\\\d{3}\",,,,,,,[4,5]],[,,\"2(?:[0-57-9]\\\\d|6[4-9])\\\\d\\\\d\",,,,\"22158\"],[,,\"[56]\\\\d{4}\",,,,\"51234\",,,[5]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"262\\\\d\\\\d\",,,,\"26212\",,,[5]],\"SH\",290,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],1,\"[256]\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SI:[,[,,\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",,,,,,,[5,6,7,8]],[,,\"(?:[1-357][2-8]|4[24-8])\\\\d{6}\",,,,\"12345678\",,,[8],[7]],[,,\"65(?:1\\\\d|55|[67]0)\\\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\\\d{6}\",,,,\"31234567\",,,[8]],[,,\"80\\\\d{4,6}\",,,,\"80123456\",,,[6,7,8]],[,,\"89[1-3]\\\\d{2,5}|90\\\\d{4,6}\",,,,\"90123456\"],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],[,,\"(?:59\\\\d\\\\d|8(?:1(?:[67]\\\\d|8[0-489])|2(?:0\\\\d|2[0-37-9]|8[0-2489])|3[389]\\\\d))\\\\d{4}\",,,,\"59012345\",,,[8]],\"SI\",386,\"00|10(?:22|66|88|99)\",\"0\",,,\"0\",,\"00\",,[[,\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SJ:[,[,,\"0\\\\d{4}|(?:[489]\\\\d|[57]9)\\\\d{6}\",\n,,,,,,[5,8]],[,,\"79\\\\d{6}\",,,,\"79123456\",,,[8]],[,,\"(?:4[015-8]|59|9\\\\d)\\\\d{6}\",,,,\"41234567\",,,[8]],[,,\"80[01]\\\\d{5}\",,,,\"80012345\",,,[8]],[,,\"82[09]\\\\d{5}\",,,,\"82012345\",,,[8]],[,,\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",,,,\"81021234\",,,[8]],[,,\"880\\\\d{5}\",,,,\"88012345\",,,[8]],[,,\"85[0-5]\\\\d{5}\",,,,\"85012345\",,,[8]],\"SJ\",47,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"79\",[,,,,,,,,,[-1]],[,,\"(?:0[2-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\",,,,\"02000\"],,,[,,\"81[23]\\\\d{5}\",,,,\"81212345\",,,[8]]],SK:[,[,,\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",\n,,,,,,[6,7,9]],[,,\"(?:2(?:16|[2-9]\\\\d{3})|(?:(?:[3-5][1-8]\\\\d|819)\\\\d|601[1-5])\\\\d)\\\\d{4}|(?:2|[3-5][1-8])1[67]\\\\d{3}|[3-5][1-8]16\\\\d\\\\d\",,,,\"221234567\"],[,,\"909[1-9]\\\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\\\d)\\\\d{6}\",,,,\"912123456\",,,[9]],[,,\"800\\\\d{6}\",,,,\"800123456\",,,[9]],[,,\"9(?:00|[78]\\\\d)\\\\d{6}\",,,,\"900123456\",,,[9]],[,,\"8[5-9]\\\\d{7}\",,,,\"850123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"6(?:02|5[0-4]|9[0-6])\\\\d{6}\",,,,\"690123456\",,,[9]],\"SK\",421,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",\n[\"21\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"909\",\"9090\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],[[,\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\n\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],[,,\"9090\\\\d{3}\",,,,\"9090123\",,,[7]],,,[,,\"9090\\\\d{3}|(?:602|8(?:00|[5-9]\\\\d)|9(?:00|[78]\\\\d))\\\\d{6}\",,,,,,,[7,9]],[,,\"96\\\\d{7}\",,,,\"961234567\",,,[9]],,,[,,,,,,,,,[-1]]],SL:[,[,,\"(?:[237-9]\\\\d|66)\\\\d{6}\",,,,,,,[8],[6]],[,,\"22[2-4][2-9]\\\\d{4}\",,,,\"22221234\",,,,[6]],[,,\"(?:25|3[0-5]|66|7[2-9]|8[08]|9[09])\\\\d{6}\",,,,\"25123456\"],[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SL\",232,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SM:[,[,,\"(?:0549|[5-7]\\\\d)\\\\d{6}\",,,,,,,[8,10],[6]],[,,\"0549(?:8[0157-9]|9\\\\d)\\\\d{4}\",,,,\"0549886377\",,,[10],[6]],[,,\"6[16]\\\\d{6}\",,,,\"66661212\",,,[8]],[,,,,,,,,,[-1]],[,,\"7[178]\\\\d{6}\",,,,\"71123456\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"5[158]\\\\d{6}\",,,,\"58001110\",,,[8]],\"SM\",378,\"00\",,,\n,\"([89]\\\\d{5})$\",\"0549$1\",,,[[,\"(\\\\d{6})\",\"$1\",[\"[89]\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SN:[,[,,\"(?:[378]\\\\d|93)\\\\d{7}\",,,,,,,[9]],[,,\"3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\\\d{5}\",,,,\"301012345\"],[,,\"75(?:01|[38]3)\\\\d{5}|7(?:[06-8]\\\\d|21|5[4-7]|90)\\\\d{6}\",\n,,,\"701234567\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,\"88[4689]\\\\d{6}\",,,,\"884123456\"],[,,\"81[02468]\\\\d{6}\",,,,\"810123456\"],[,,,,,,,,,[-1]],[,,\"(?:3(?:392|9[01]\\\\d)\\\\d|93(?:3[13]0|929))\\\\d{4}\",,,,\"933301234\"],\"SN\",221,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SO:[,[,,\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",,,,,,,[6,7,8,9]],[,,\n\"(?:1\\\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\\\d{5}|(?:[134]\\\\d|8[125])\\\\d{4}\",,,,\"4012345\",,,[6,7]],[,,\"(?:(?:15|(?:3[59]|4[89]|79|8[08])\\\\d|6(?:0[5-7]|[1-9]\\\\d)|9(?:0\\\\d|[2-9]))\\\\d|2(?:4\\\\d|8))\\\\d{5}|(?:6\\\\d|7[1-9])\\\\d{6}\",,,,\"71123456\",,,[7,8,9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SO\",252,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[,\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[,\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[,\"(\\\\d)(\\\\d{7})\",\n\"$1 $2\",[\"24|[67]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[,\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6(?:0[5-7]|[1-35-9])|9[2-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SR:[,[,,\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",,,,,,,[6,7]],[,,\"(?:2[1-3]|3[0-7]|(?:4|68)\\\\d|5[2-58])\\\\d{4}\",,,,\"211234\"],[,,\"(?:7[124-7]|8[124-9])\\\\d{5}\",,,,\"7412345\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"56\\\\d{4}\",,,,\"561234\",,,[6]],\"SR\",597,\"00\",,,,,,,\n,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[,\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SS:[,[,,\"[19]\\\\d{8}\",,,,,,,[9]],[,,\"1[89]\\\\d{7}\",,,,\"181234567\"],[,,\"(?:12|9[1257-9])\\\\d{7}\",,,,\"977123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SS\",211,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,\n,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ST:[,[,,\"(?:22|9\\\\d)\\\\d{5}\",,,,,,,[7]],[,,\"22\\\\d{5}\",,,,\"2221234\"],[,,\"900[5-9]\\\\d{3}|9(?:0[1-9]|[89]\\\\d)\\\\d{4}\",,,,\"9812345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"ST\",239,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SV:[,[,,\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",,,,,,,[7,8,11]],[,,\"2(?:[1-6]\\\\d{3}|[79]90[034]|890[0245])\\\\d{3}\",,,,\"21234567\",\n,,[8]],[,,\"66(?:[02-9]\\\\d\\\\d|1(?:[02-9]\\\\d|16))\\\\d{3}|(?:6[0-57-9]|7\\\\d)\\\\d{6}\",,,,\"70123456\",,,[8]],[,,\"800\\\\d{4}(?:\\\\d{4})?\",,,,\"8001234\",,,[7,11]],[,,\"900\\\\d{4}(?:\\\\d{4})?\",,,,\"9001234\",,,[7,11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SV\",503,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SX:[,[,,\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",\n,,,,,,[10],[7]],[,,\"7215(?:4[2-8]|8[239]|9[056])\\\\d{4}\",,,,\"7215425678\",,,,[7]],[,,\"7215(?:1[02]|2\\\\d|5[034679]|8[014-8])\\\\d{4}\",,,,\"7215205678\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002123456\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002123456\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,\n,\"5002345678\"],[,,,,,,,,,[-1]],\"SX\",1,\"011\",\"1\",,,\"1|(5\\\\d{6})$\",\"721$1\",,,,,[,,,,,,,,,[-1]],,\"721\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SY:[,[,,\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",,,,,,,[8,9],[6,7]],[,,\"21\\\\d{6,7}|(?:1(?:[14]\\\\d|[2356])|2[235]|3(?:[13]\\\\d|4)|4[134]|5[1-3])\\\\d{6}\",,,,\"112345678\",,,,[6,7]],[,,\"9(?:22|[3-689]\\\\d)\\\\d{6}\",,,,\"944567890\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"SY\",963,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\n\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",,1]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],SZ:[,[,,\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",,,,,,,[8,9]],[,,\"[23][2-5]\\\\d{6}\",,,,\"22171234\",,,[8]],[,,\"7[6-9]\\\\d{6}\",,,,\"76123456\",,,[8]],[,,\"0800\\\\d{4}\",,,,\"08001234\",,,[8]],[,,\"900\\\\d{6}\",,,,\"900012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"70\\\\d{6}\",,,,\"70012345\",,,[8]],\"SZ\",268,\"00\",,,,,,,,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[,\n\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]],,[,,,,,,,,,[-1]],,,[,,\"0800\\\\d{4}\",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TA:[,[,,\"8\\\\d{3}\",,,,,,,[4]],[,,\"8\\\\d{3}\",,,,\"8999\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TA\",290,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"8\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TC:[,[,,\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"649(?:266|712|9(?:4\\\\d|50))\\\\d{4}\",,,,\"6497121234\",,,,[7]],[,,\"649(?:2(?:3[129]|4[1-79])|3\\\\d\\\\d|4[34][1-3])\\\\d{4}\",\n,,,\"6492311234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,\"649(?:71[01]|966)\\\\d{4}\",,,,\"6497101234\",,,,[7]],\"TC\",1,\"011\",\"1\",,,\"1|([2-479]\\\\d{6})$\",\"649$1\",,,,,[,,,,,,,,\n,[-1]],,\"649\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TD:[,[,,\"(?:22|[69]\\\\d|77)\\\\d{6}\",,,,,,,[8]],[,,\"22(?:[37-9]0|5[0-5]|6[89])\\\\d{4}\",,,,\"22501234\"],[,,\"(?:6[023568]|77|9\\\\d)\\\\d{6}\",,,,\"63012345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TD\",235,\"00|16\",,,,,,\"00\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TG:[,[,,\"[279]\\\\d{7}\",,,,,,,[8]],[,,\"2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\\\d{5}\",\n,,,\"22212345\"],[,,\"(?:7[09]|9[0-36-9])\\\\d{6}\",,,,\"90112345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TG\",228,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TH:[,[,,\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",,,,,,,[8,9,10,13]],[,,\"(?:1[0689]|2\\\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\\\d{6}\",,,,\"21234567\",,,[8]],[,,\"671[0-8]\\\\d{5}|(?:14|6[1-6]|[89]\\\\d)\\\\d{7}\",,,,\"812345678\",\n,,[9]],[,,\"(?:001800\\\\d|1800)\\\\d{6}\",,,,\"1800123456\",,,[10,13]],[,,\"1900\\\\d{6}\",,,,\"1900123456\",,,[10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"6[08]\\\\d{7}\",,,,\"601234567\",,,[9]],\"TH\",66,\"00[1-9]\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TJ:[,[,,\"(?:00|[1-57-9]\\\\d)\\\\d{7}\",,,,,,,[9],[3,5,6,7]],[,,\"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\\\d{6}\",\n,,,\"372123456\",,,,[3,5,6,7]],[,,\"41[18]\\\\d{6}|(?:[034]0|[17][017]|2[02]|5[05]|8[08]|9\\\\d)\\\\d{7}\",,,,\"917123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TJ\",992,\"810\",,,,,,\"8~10\",,[[,\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"]],[,\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3[1-5]\"]],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0-57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],\nTK:[,[,,\"[2-47]\\\\d{3,6}\",,,,,,,[4,5,6,7]],[,,\"(?:2[2-4]|[34]\\\\d)\\\\d{2,5}\",,,,\"3101\"],[,,\"7[2-4]\\\\d{2,5}\",,,,\"7290\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TK\",690,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TL:[,[,,\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",,,,,,,[7,8]],[,,\"(?:2[1-5]|3[1-9]|4[1-4])\\\\d{5}\",,,,\"2112345\",,,[7]],[,,\"7[2-8]\\\\d{6}\",,,,\"77212345\",,,[8]],[,,\"80\\\\d{5}\",,,,\"8012345\",,,[7]],[,,\"90\\\\d{5}\",,,,\"9012345\",\n,,[7]],[,,,,,,,,,[-1]],[,,\"70\\\\d{5}\",,,,\"7012345\",,,[7]],[,,,,,,,,,[-1]],\"TL\",670,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TM:[,[,,\"[1-6]\\\\d{7}\",,,,,,,[8]],[,,\"(?:1(?:2\\\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\\\d{5}\",,,,\"12345678\"],[,,\"6\\\\d{7}\",,,,\"66123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\n[,,,,,,,,,[-1]],\"TM\",993,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[,\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TN:[,[,,\"[2-57-9]\\\\d{7}\",,,,,,,[8]],[,,\"81200\\\\d{3}|(?:3[0-2]|7\\\\d)\\\\d{6}\",,,,\"30010123\"],[,,\"3(?:001|[12]40)\\\\d{4}|(?:(?:[259]\\\\d|4[0-7])\\\\d|3(?:1[1-35]|6[0-4]|91))\\\\d{5}\",,,,\"20123456\"],[,,\"8010\\\\d{4}\",\n,,,\"80101234\"],[,,\"88\\\\d{6}\",,,,\"88123456\"],[,,\"8[12]10\\\\d{4}\",,,,\"81101234\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TN\",216,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TO:[,[,,\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",,,,,,,[5,7]],[,,\"(?:2\\\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:55[4-6]|6(?:[09]\\\\d|3[02]|8[15-9])|(?:7\\\\d|8[46-9])\\\\d|999)\\\\d{4}\",,,,\"7715123\",,,[7]],\n[,,\"0800\\\\d{3}\",,,,\"0800222\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"55[0-37-9]\\\\d{4}\",,,,\"5510123\",,,[7]],\"TO\",676,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[,\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TR:[,[,,\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[7,10,12,13]],[,,\"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\\\d{7}\",\n,,,\"2123456789\",,,[10]],[,,\"56161\\\\d{5}|5(?:0[15-7]|1[06]|24|[34]\\\\d|5[1-59]|9[46])\\\\d{7}\",,,,\"5012345678\",,,[10]],[,,\"8(?:00\\\\d{7}(?:\\\\d{2,3})?|11\\\\d{7})\",,,,\"8001234567\",,,[10,12,13]],[,,\"(?:8[89]8|900)\\\\d{7}\",,,,\"9001234567\",,,[10]],[,,,,,,,,,[-1]],[,,\"592(?:21[12]|461)\\\\d{4}\",,,,\"5922121234\",,,[10]],[,,\"850\\\\d{7}\",,,,\"8500123456\",,,[10]],\"TR\",90,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d)(\\\\d{3})\",\"$1 $2 $3\",[\"444\"],,,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\n\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",,1]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\n\"$1 $2 $3\",[\"80\"],\"0$1\",,1]],[,,\"512\\\\d{7}\",,,,\"5123456789\",,,[10]],,,[,,\"(?:444|811\\\\d{3})\\\\d{4}\",,,,,,,[7,10]],[,,\"444\\\\d{4}\",,,,\"4441444\",,,[7]],,,[,,,,,,,,,[-1]]],TT:[,[,,\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"868(?:2(?:0[13]|1[89]|[23]\\\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\\\d|7[0-79])|82[124])\\\\d{4}\",,,,\"8682211234\",,,,[7]],[,,\"868(?:(?:2[5-9]|3\\\\d)\\\\d|4(?:3[0-6]|[6-9]\\\\d)|6(?:20|78|8\\\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\\\d))\\\\d{4}\",,,,\"8682911234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",\n,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"TT\",1,\"011\",\"1\",,,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",,,,,[,,,,,,,,,[-1]],,\"868\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"868619\\\\d{4}\",,,,\"8686191234\",,,,[7]]],TV:[,[,,\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",\n,,,,,,[5,6,7]],[,,\"2[02-9]\\\\d{3}\",,,,\"20123\",,,[5]],[,,\"(?:7[01]\\\\d|90)\\\\d{4}\",,,,\"901234\",,,[6,7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"TV\",688,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[,\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],TW:[,[,,\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",,,,,,,[7,8,9,10,11]],[,,\"(?:2[2-8]\\\\d|370|55[01]|7[1-9])\\\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\\\d)|1[023]\\\\d)\\\\d{4,5}|(?:[239]\\\\d\\\\d|4(?:0[56]|12|49))\\\\d{5})|6(?:[01]\\\\d{7}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|8(?:(?:2(?:3\\\\d|4[0-269]|[578]0|66)|36[24-9]|90\\\\d\\\\d)\\\\d{4}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|(?:2(?:2(?:0\\\\d\\\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\\\d|1[0-4])|(?:4\\\\d|5[0-49]|6[0-29]|7[0-5])\\\\d)\\\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\\\d\\\\d|4(?:2(?:[089]\\\\d|7[1-9])|(?:3[0-4]|[78]\\\\d|9[01])\\\\d))\\\\d)\\\\d{3}\",\n,,,\"221234567\",,,[8,9]],[,,\"(?:40001[0-2]|9[0-8]\\\\d{4})\\\\d{3}\",,,,\"912345678\",,,[9]],[,,\"80[0-79]\\\\d{6}|800\\\\d{5}\",,,,\"800123456\",,,[8,9]],[,,\"20(?:[013-9]\\\\d\\\\d|2)\\\\d{4}\",,,,\"203123456\",,,[7,9]],[,,,,,,,,,[-1]],[,,\"99\\\\d{7}\",,,,\"990123456\",,,[9]],[,,\"7010(?:[0-2679]\\\\d|3[0-7]|8[0-5])\\\\d{5}|70\\\\d{8}\",,,,\"7012345678\",,,[10,11]],\"TW\",886,\"0(?:0[25-79]|19)\",\"0\",\"#\",,\"0\",,,,[[,\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"50[0-46-9]\\\\d{6}\",,,,\"500123456\",,,[9]],,,[,,,,,,,,,[-1]]],TZ:[,[,,\"(?:[26-8]\\\\d|41|90)\\\\d{7}\",,,,,,,[9]],[,,\"2[2-8]\\\\d{7}\",,,,\"222345678\"],[,,\"77[2-9]\\\\d{6}|(?:6[1-9]|7[1-689])\\\\d{7}\",,,,\"621234567\"],[,,\"80[08]\\\\d{6}\",,,,\"800123456\"],[,,\"90\\\\d{7}\",\n,,,\"900123456\"],[,,\"8(?:40|6[01])\\\\d{6}\",,,,\"840123456\"],[,,,,,,,,,[-1]],[,,\"41\\\\d{7}\",,,,\"412345678\"],\"TZ\",255,\"00[056]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,\"(?:8(?:[04]0|6[01])|90\\\\d)\\\\d{6}\"],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UA:[,[,,\"[89]\\\\d{9}|[3-9]\\\\d{8}\",,,,,,,[9,10],[5,6,7]],[,,\"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\\\d{7}\",,,\n,\"311234567\",,,[9],[5,6,7]],[,,\"(?:50|6[36-8]|7[1-3]|9[1-9])\\\\d{7}\",,,,\"501234567\",,,[9]],[,,\"800[1-8]\\\\d{5,6}\",,,,\"800123456\"],[,,\"900[239]\\\\d{5,6}\",,,,\"900212345\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"89[1-579]\\\\d{6}\",,,,\"891234567\",,,[9]],\"UA\",380,\"00\",\"0\",,,\"0\",,\"0~0\",,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",\n[\"4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\",\"4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UG:[,[,,\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",,,,,,,[9],[5,6,7]],[,,\"20(?:(?:(?:24|81)0|30[67])\\\\d|6(?:00[0-2]|30[0-4]))\\\\d{3}|(?:20(?:[0147]\\\\d|2[5-9]|32|5[0-4]|6[15-9])|[34]\\\\d{3})\\\\d{5}\",\n,,,\"312345678\",,,,[5,6,7]],[,,\"726[01]\\\\d{5}|7(?:[0157-9]\\\\d|20|36|[46][0-4])\\\\d{6}\",,,,\"712345678\"],[,,\"800[1-3]\\\\d{5}\",,,,\"800123456\"],[,,\"90[1-3]\\\\d{6}\",,,,\"901123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UG\",256,\"00[057]\",\"0\",,,\"0\",,,,[[,\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],US:[,[,,\"[2-9]\\\\d{9}\",\n,,,,,,[10],[7]],[,,\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"5(?:05(?:[2-57-9]\\\\d\\\\d|6(?:[0-35-9]\\\\d|44))|82(?:2(?:0[0-3]|[268]2)|3(?:0[02]|33)|4(?:00|4[24]|65|82)|5(?:00|29|83)|6(?:00|66|82)|777|8(?:00|88)|9(?:00|9[89])))\\\\d{4}|(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[01356]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[39]|7[0589]|8[04])|5(?:0[1-47-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[0-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-289]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01579]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\",\n,,,\"2015550123\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"US\",1,\"011\",\"1\",,,\"1\",,,1,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",\n[\"[2-9]\"],,,1]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-9]\"]]],[,,,,,,,,,[-1]],1,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UY:[,[,,\"4\\\\d{9}|[1249]\\\\d{7}|(?:[49]\\\\d|80)\\\\d{5}\",,,,,,,[7,8,10]],[,,\"(?:1(?:770|987)|(?:2\\\\d|4[2-7])\\\\d\\\\d)\\\\d{4}\",,,,\"21231234\",,,[8],[7]],[,,\"9[1-9]\\\\d{6}\",,,,\"94231234\",,,[8]],[,,\"(?:4\\\\d{5}|80[05])\\\\d{4}|405\\\\d{4}\",,,,\"8001234\",,,[7,10]],[,,\"90[0-8]\\\\d{4}\",,,,\"9001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UY\",598,\"0(?:0|1[3-9]\\\\d)\",\"0\",\n\" int. \",,\"0\",,\"00\",,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"405|8|90\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],UZ:[,[,,\"(?:33|55|[679]\\\\d|88)\\\\d{7}\",,,,,,,[9]],[,,\"(?:6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|6\\\\d\\\\d|7(?:[23]\\\\d|7[69])|9(?:22|4[1-8]|6[135]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|(?:1[12]|8\\\\d)\\\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|6(?:22|3[12457]|4[13-8])|9(?:22|5[1-9])))\\\\d{5}\",\n,,,\"669050123\"],[,,\"(?:(?:33|88|9[0-57-9])\\\\d{3}|55(?:50[013]|90\\\\d)|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:(?:11|7\\\\d)\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\\\d)\\\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079]))|9(?:2(?:1[1267]|3[01]|5\\\\d|7[0-4])|(?:5[67]|7\\\\d)\\\\d|6(?:2[0-26]|8\\\\d)))|7(?:[07]\\\\d{3}|1(?:13[01]|6(?:0[47]|1[67]|66)|71[3-69]|98\\\\d)|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|6(?:2(?:2[1245]|4[2-4])|39\\\\d|41[179]|5(?:[349]\\\\d|5[0-2])|7(?:0[017]|[13]\\\\d|22|44|55|67|88))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07]))))\\\\d{4}\",\n,,,\"912345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"UZ\",998,\"810\",\"8\",,,\"8\",,\"8~10\",,[[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[35-9]\"],\"8 $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VA:[,[,,\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",,,,,,,[6,7,8,9,10,11,12]],[,,\"06698\\\\d{1,6}\",,,,\"0669812345\",,,[6,7,8,9,10,11]],[,,\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",,,,\"3123456789\",,,[9,10]],[,,\"80(?:0\\\\d{3}|3)\\\\d{3}\",\n,,,\"800123456\",,,[6,9]],[,,\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",,,,\"899123456\",,,[6,8,9,10]],[,,\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",,,,\"848123456\",,,[6,9]],[,,\"1(?:78\\\\d|99)\\\\d{6}\",,,,\"1781234567\",,,[9,10]],[,,\"55\\\\d{8}\",,,,\"5512345678\",,,[10]],\"VA\",39,\"00\",,,,,,,,,,[,,,,,,,,,[-1]],,\"06698\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"3[2-8]\\\\d{9,10}\",,,,\"33101234501\",,,[11,12]]],VC:[,[,,\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",,,,,,,[10],[7]],\n[,,\"784(?:266|3(?:6[6-9]|7\\\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\\\d{4}\",,,,\"7842661234\",,,,[7]],[,,\"784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\\\d{4}\",,,,\"7844301234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VC\",1,\"011\",\"1\",,,\"1|([2-7]\\\\d{6})$\",\"784$1\",,,,,[,,,,,,,,,[-1]],,\"784\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VE:[,[,,\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",,,,,,,[10],[7]],[,,\"(?:2(?:12|3[457-9]|[467]\\\\d|[58][1-9]|9[1-6])|[4-6]00)\\\\d{7}\",,,,\"2121234567\",,,,[7]],[,,\"4(?:1[24-8]|2[46])\\\\d{7}\",,,,\"4121234567\"],[,,\"800\\\\d{7}\",,,,\"8001234567\"],[,,\"90[01]\\\\d{7}\",,,,\"9001234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"VE\",58,\"00\",\"0\",,,\"0\",,,,[[,\n\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\",\"$CC $1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"501\\\\d{7}\",,,,\"5010123456\",,,,[7]],,,[,,,,,,,,,[-1]]],VG:[,[,,\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",,,,,,,[10],[7]],[,,\"284496[0-5]\\\\d{3}|284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\\\d{4}\",,,,\"2842291234\",,,,[7]],[,,\"284496[6-9]\\\\d{3}|284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|99)|5(?:4[0-7]|68|9[69]))\\\\d{4}\",,,,\"2843001234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",\n,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VG\",1,\"011\",\"1\",,,\"1|([2-578]\\\\d{6})$\",\"284$1\",,,,,[,,,,,,,,,[-1]],,\"284\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VI:[,[,,\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",,,,,,,[10],[7]],[,,\"340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\",\n,,,\"3406421234\",,,,[7]],[,,\"340(?:2(?:0[0-38]|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\",,,,\"3406421234\",,,,[7]],[,,\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",,,,\"8002345678\"],[,,\"900[2-9]\\\\d{6}\",,,,\"9002345678\"],[,,,,,,,,,[-1]],[,,\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\",\n,,,\"5002345678\"],[,,,,,,,,,[-1]],\"VI\",1,\"011\",\"1\",,,\"1|([2-9]\\\\d{6})$\",\"340$1\",,1,,,[,,,,,,,,,[-1]],,\"340\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],VN:[,[,,\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",,,,,,,[7,8,9,10]],[,,\"2(?:0[3-9]|1[0-689]|2[0-25-9]|3[2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|8[2-79]|9[0-4679])\\\\d{7}\",,,,\"2101234567\",,,[10]],[,,\"(?:5(?:2[238]|59)|89[689]|99[013-9])\\\\d{6}|(?:3\\\\d|5[689]|7[06-9]|8[1-8]|9[0-8])\\\\d{7}\",,,,\"912345678\",,,[9]],[,,\"1800\\\\d{4,6}|12(?:0[13]|28)\\\\d{4}\",\n,,,\"1800123456\",,,[8,9,10]],[,,\"1900\\\\d{4,6}\",,,,\"1900123456\",,,[8,9,10]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"672\\\\d{6}\",,,,\"672012345\",,,[9]],\"VN\",84,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[17]99\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"69\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],,,1],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2[48]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",,1]],[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",,1],[,\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],,,1],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",,1],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",,1],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",,1]],[,,,,,,,,,[-1]],,,[,,\"[17]99\\\\d{4}|69\\\\d{5,6}\",,,,,,,[7,8]],[,,\"(?:[17]99|80\\\\d)\\\\d{4}|69\\\\d{5,6}\",\n,,,\"1992000\",,,[7,8]],,,[,,,,,,,,,[-1]]],VU:[,[,,\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",,,,,,,[5,7]],[,,\"(?:38[0-8]|48[4-9])\\\\d\\\\d|(?:2[02-9]|3[4-7]|88)\\\\d{3}\",,,,\"22123\",,,[5]],[,,\"(?:[58]\\\\d|7[013-7])\\\\d{5}\",,,,\"5912345\",,,[7]],[,,\"81[18]\\\\d\\\\d\",,,,\"81123\",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"9(?:0[1-9]|1[01])\\\\d{4}\",,,,\"9010123\",,,[7]],\"VU\",678,\"00\",,,,,,,,[[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"(?:3[03]|900\\\\d)\\\\d{3}\",,,,\"30123\"],,\n,[,,,,,,,,,[-1]]],WF:[,[,,\"(?:40|72)\\\\d{4}|8\\\\d{5}(?:\\\\d{3})?\",,,,,,,[6,9]],[,,\"72\\\\d{4}\",,,,\"721234\",,,[6]],[,,\"(?:72|8[23])\\\\d{4}\",,,,\"821234\",,,[6]],[,,\"80[0-5]\\\\d{6}\",,,,\"800012345\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WF\",681,\"00\",,,,,,,,[[,\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[478]\"]],[,\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"[48]0\\\\d{4}\",,,,\"401234\",,,[6]]],WS:[,[,,\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",\n,,,,,,[5,6,7,10]],[,,\"6[1-9]\\\\d{3}|(?:[2-5]|60)\\\\d{4}\",,,,\"22123\",,,[5,6]],[,,\"(?:7[1-35-7]|8(?:[3-7]|9\\\\d{3}))\\\\d{5}\",,,,\"7212345\",,,[7,10]],[,,\"800\\\\d{3}\",,,,\"800123\",,,[6]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"WS\",685,\"0\",,,,,,,,[[,\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[,\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],XK:[,[,,\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",,,,,,,[8,\n9]],[,,\"(?:2[89]|39)0\\\\d{6}|[23][89]\\\\d{6}\",,,,\"28012345\"],[,,\"4[3-9]\\\\d{6}\",,,,\"43201234\",,,[8]],[,,\"800\\\\d{5}\",,,,\"80001234\",,,[8]],[,,\"900\\\\d{5}\",,,,\"90001234\",,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"XK\",383,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YE:[,[,,\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",\n,,,,,,[7,8,9],[6]],[,,\"78[0-7]\\\\d{4}|17\\\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\\\d{5}\",,,,\"1234567\",,,[7,8],[6]],[,,\"7[0137]\\\\d{7}\",,,,\"712345678\",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YE\",967,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],YT:[,[,,\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",\n,,,,,,[9]],[,,\"269(?:0[67]|5[0-3]|6\\\\d|[78]0)\\\\d{4}\",,,,\"269601234\"],[,,\"639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])\\\\d{4}\",,,,\"639012345\"],[,,\"80\\\\d{7}\",,,,\"801234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"YT\",262,\"00\",\"0\",,,\"0\",,,,,,[,,,,,,,,,[-1]],,\"269|63\",[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],ZA:[,[,,\"[1-79]\\\\d{8}|8\\\\d{4,9}\",,,,,,,[5,6,7,8,9,10]],[,,\"(?:2(?:0330|4302)|52087)0\\\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\\\d|5[1346-8])\\\\d{7}\",,,,\"101234567\",\n,,[9]],[,,\"(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\\\d{3}|8[1-4]\\\\d{3,7}|(?:2[27]|47|54)4950\\\\d{3}|(?:1(?:049[2-4]|9[12]\\\\d\\\\d)|(?:6\\\\d|7[0-46-9])\\\\d{3}|8(?:5\\\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\\\d{3}|(?:12|[2-5]1)492\\\\d{4}\",,,,\"711234567\",,,[5,6,7,8,9]],[,,\"80\\\\d{7}\",,,,\"801234567\",,,[9]],[,,\"(?:86[2-9]|9[0-2]\\\\d)\\\\d{6}\",,,,\"862345678\",,,[9]],[,,\"860\\\\d{6}\",,,,\"860123456\",,,[9]],[,,,,,,,,,[-1]],[,,\"87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\\\d)\\\\d{5}\",\n,,,\"871234567\",,,[9]],\"ZA\",27,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"861\\\\d{6,7}\",,,,\"861123456\",,,[9,10]],,,[,,,,,,,,,[-1]]],ZM:[,[,,\"800\\\\d{6}|(?:21|63|[79]\\\\d)\\\\d{7}\",,,,,,,[9],[6]],[,,\"21[1-8]\\\\d{6}\",,,,\n\"211234567\",,,,[6]],[,,\"(?:7[679]|9[5-8])\\\\d{7}\",,,,\"955123456\"],[,,\"800\\\\d{6}\",,,,\"800123456\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"63\\\\d{7}\",,,,\"630123456\"],\"ZM\",260,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[1-9]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,\n,,,,,,,,[-1]]],ZW:[,[,,\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",,,,,,,[5,6,7,8,9,10],[3,4]],[,,\"(?:1(?:(?:3\\\\d|9)\\\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\\\d\\\\d|[56](?:[14]\\\\d\\\\d|20)|7(?:[089]|2[03]|[35]\\\\d\\\\d))\\\\d|4(?:2\\\\d\\\\d|8))\\\\d|1(?:2|[39]\\\\d{4}))|3(?:(?:123|(?:29\\\\d|92)\\\\d)\\\\d\\\\d|7(?:[19]|[56]\\\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\\\d{3}|83)|5(?:25\\\\d\\\\d|[78])|[689]\\\\d)|6(?:(?:[16-8]21|28|52[013])\\\\d\\\\d|[39])|8(?:[1349]28|523)\\\\d\\\\d)\\\\d{3}|(?:4\\\\d\\\\d|9[2-9])\\\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\\\d|7[1-7])\\\\d|2(?:[278]\\\\d|92)|58(?:2\\\\d|3))|3(?:[26]|9\\\\d{3})|5(?:4\\\\d|5)\\\\d\\\\d)\\\\d|6(?:(?:(?:[0-246]|[78]\\\\d)\\\\d|37)\\\\d|5[2-8]))\\\\d\\\\d|(?:2(?:[569]\\\\d|8[2-57-9])|3(?:[013-59]\\\\d|8[37])|6[89]8)\\\\d{3}\",\n,,,\"1312345\",,,,[3,4]],[,,\"7(?:[178]\\\\d|3[1-9])\\\\d{6}\",,,,\"712345678\",,,[9]],[,,\"80(?:[01]\\\\d|20|8[0-8])\\\\d{3}\",,,,\"8001234\",,,[7]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"86(?:1[12]|22|30|44|55|77|8[368])\\\\d{6}\",,,,\"8686123456\",,,[10]],\"ZW\",263,\"00\",\"0\",,,\"0\",,,,[[,\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[,\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],\n[,\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[,\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\n\"0$1\"],[,\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[,\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],800:[,[,,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:005|[1-9]\\\\d\\\\d)\\\\d{5}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",800,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,\n,,,,[-1]],,,[,,,,,,,,,[-1]]],808:[,[,,\"[1-9]\\\\d{7}\",,,,,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[1-9]\\\\d{7}\",,,,\"12345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",808,,,,,,,,1,[[,\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],870:[,[,,\"7\\\\d{11}|[35-7]\\\\d{8}\",,,,,,,[9,12]],[,,,,,,,,,[-1]],[,,\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\",,,,\"301234567\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,\n[-1]],[,,,,,,,,,[-1]],\"001\",870,,,,,,,,,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],878:[,[,,\"10\\\\d{10}\",,,,,,,[12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"10\\\\d{10}\",,,,\"101234567890\"],\"001\",878,,,,,,,,1,[[,\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],881:[,[,,\"[0-36-9]\\\\d{8}\",,,,,,,[9]],\n[,,,,,,,,,[-1]],[,,\"[0-36-9]\\\\d{8}\",,,,\"612345678\"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",881,,,,,,,,,[[,\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],882:[,[,,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|(?:[19]\\\\d|49)\\\\d{6}\",,,,,,,[7,8,9,10,11,12]],[,,,,,,,,,[-1]],[,,\"342\\\\d{4}|(?:337|49)\\\\d{6}|3(?:2|47|7\\\\d{3})\\\\d{7}\",,,,\"3421234\",,,[7,8,9,10,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,\n,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\",,,,\"390123456789\"],\"001\",882,,,,,,,,,[[,\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[,\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"4\"]],[,\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[,\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[,\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[,\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\n\"$1 $2 $3\",[\"34\"]],[,\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,\"348[57]\\\\d{7}\",,,,\"34851234567\",,,[11]]],883:[,[,,\"(?:210|370\\\\d\\\\d)\\\\d{7}|51\\\\d{7}(?:\\\\d{3})?\",,,,,,,[9,10,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"(?:210|(?:370[1-9]|51[013]0)\\\\d)\\\\d{7}|5100\\\\d{5}\",,,,\"510012345\"],\"001\",883,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\n\"$1 $2 $3\",[\"2\"]],[,\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[,\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[35]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],888:[,[,,\"\\\\d{11}\",,,,,,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",888,,,,,,,,1,[[,\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,\"\\\\d{11}\",,,,\"12345678901\"],,,[,,,,,,,,,[-1]]],979:[,[,,\n\"[1359]\\\\d{8}\",,,,,,,[9],[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,\"[1359]\\\\d{8}\",,,,\"123456789\",,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],\"001\",979,,,,,,,,1,[[,\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]]};/*\n\n Copyright (C) 2010 The Libphonenumber Authors.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nfunction K(){this.g={}}K.i=void 0;K.g=function(){return K.i?K.i:K.i=new K};\nvar wa={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\"},xa={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",\n7:\"7\",8:\"8\",9:\"9\",\"\\uff10\":\"0\",\"\\uff11\":\"1\",\"\\uff12\":\"2\",\"\\uff13\":\"3\",\"\\uff14\":\"4\",\"\\uff15\":\"5\",\"\\uff16\":\"6\",\"\\uff17\":\"7\",\"\\uff18\":\"8\",\"\\uff19\":\"9\",\"\\u0660\":\"0\",\"\\u0661\":\"1\",\"\\u0662\":\"2\",\"\\u0663\":\"3\",\"\\u0664\":\"4\",\"\\u0665\":\"5\",\"\\u0666\":\"6\",\"\\u0667\":\"7\",\"\\u0668\":\"8\",\"\\u0669\":\"9\",\"\\u06f0\":\"0\",\"\\u06f1\":\"1\",\"\\u06f2\":\"2\",\"\\u06f3\":\"3\",\"\\u06f4\":\"4\",\"\\u06f5\":\"5\",\"\\u06f6\":\"6\",\"\\u06f7\":\"7\",\"\\u06f8\":\"8\",\"\\u06f9\":\"9\",A:\"2\",B:\"2\",C:\"2\",D:\"3\",E:\"3\",F:\"3\",G:\"4\",H:\"4\",I:\"4\",J:\"5\",K:\"5\",L:\"5\",M:\"6\",N:\"6\",O:\"6\",P:\"7\",\nQ:\"7\",R:\"7\",S:\"7\",T:\"8\",U:\"8\",V:\"8\",W:\"9\",X:\"9\",Y:\"9\",Z:\"9\"},L=/^[+\\uff0b]+/,ya=/([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9])/,za=/[+\\uff0b0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]/,Aa=/[\\\\\\/] *x/,Ba=/[^0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9A-Za-z#]+$/,Ca=/(?:.*?[A-Za-z]){3}.*/;function N(a){return\"([0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{1,\"+a+\"})\"}\nfunction Da(){return\";ext=\"+N(\"20\")+\"|[ \\u00a0\\\\t,]*(?:e?xt(?:ensi(?:o\\u0301?|\\u00f3))?n?|\\uff45?\\uff58\\uff54\\uff4e?|\\u0434\\u043e\\u0431|anexo)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\"+(N(\"20\")+\"#?|[ \\u00a0\\\\t,]*(?:[x\\uff58#\\uff03~\\uff5e]|int|\\uff49\\uff4e\\uff54)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(N(\"9\")+\"#?|[- ]+\")+(N(\"6\")+\"#|[ \\u00a0\\\\t]*(?:,{2}|;)[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(N(\"15\")+\"#?|[ \\u00a0\\\\t]*(?:,)+[:\\\\.\\uff0e]?[ \\u00a0\\\\t,-]*\")+(N(\"9\")+\"#?\")}\nvar Ea=new RegExp(\"(?:\"+Da()+\")$\",\"i\"),Fa=new RegExp(\"^[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]{2}$|^[+\\uff0b]*(?:[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e*]*[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]){3,}[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\\\[\\\\]/~\\u2053\\u223c\\uff5e*A-Za-z0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]*(?:\"+Da()+\")?$\",\"i\"),Ga=/(\\$\\d)/;\nfunction Ha(a){return 2>a.length?!1:O(Fa,a)}function Ia(a){return O(Ca,a)?P(a,xa):P(a,wa)}function Ja(a){var b=Ia(a.toString());a.i=\"\";a.g(b)}function Ka(a){return null!=a&&(1!=x(a,9)||-1!=u(a,9)[0])}function P(a,b){for(var c=new E,d,e=a.length,g=0;g<e;++g)d=a.charAt(g),d=b[d.toUpperCase()],null!=d&&c.g(d);return c.toString()}function Q(a){return null!=a&&isNaN(a)&&a.toUpperCase()in va}\nfunction La(a,b,c){if(0==p(b,2)&&null!=b.g[5]){var d=w(b,5);if(0<d.length)return d}d=w(b,1);var e=R(b);if(0==c)return Ma(d,0,e,\"\");if(!(d in J))return e;a=S(a,d,T(d));b=null!=b.g[3]&&0!=p(b,3).length?3==c?\";ext=\"+p(b,3):null!=a.g[13]?p(a,13)+w(b,3):\" ext. \"+w(b,3):\"\";a:{a=0==u(a,20).length||2==c?u(a,19):u(a,20);for(var g,f=a.length,h=0;h<f;++h){g=a[h];var l=x(g,3);if(0==l||0==e.search(p(g,3,l-1)))if(l=new RegExp(p(g,1)),O(l,e)){a=g;break a}}a=null}null!=a&&(f=a,a=w(f,2),g=new RegExp(p(f,1)),w(f,5),\nf=w(f,4),e=2==c&&null!=f&&0<f.length?e.replace(g,a.replace(Ga,f)):e.replace(g,a),3==c&&(e=e.replace(/^[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e]+/,\"\"),e=e.replace(/[-x\\u2010-\\u2015\\u2212\\u30fc\\uff0d-\\uff0f \\u00a0\\u00ad\\u200b\\u2060\\u3000()\\uff08\\uff09\\uff3b\\uff3d.\\[\\]/~\\u2053\\u223c\\uff5e]+/g,\"-\")));return Ma(d,c,e,b)}function S(a,b,c){return\"001\"==c?U(a,\"\"+b):U(a,c)}\nfunction R(a){if(null==a.g[2])return\"\";var b=\"\"+p(a,2);return null!=a.g[4]&&p(a,4)&&0<w(a,8)?Array(w(a,8)+1).join(\"0\")+b:b}function Ma(a,b,c,d){switch(b){case 0:return\"+\"+a+c+d;case 1:return\"+\"+a+\" \"+c+d;case 3:return\"tel:+\"+a+\"-\"+c+d;default:return c+d}}\nfunction V(a,b){switch(b){case 4:return p(a,5);case 3:return p(a,4);case 1:return p(a,3);case 0:case 2:return p(a,2);case 5:return p(a,6);case 6:return p(a,8);case 7:return p(a,7);case 8:return p(a,21);case 9:return p(a,25);case 10:return p(a,28);default:return p(a,1)}}function W(a,b){return X(a,p(b,1))?X(a,p(b,5))?4:X(a,p(b,4))?3:X(a,p(b,6))?5:X(a,p(b,8))?6:X(a,p(b,7))?7:X(a,p(b,21))?8:X(a,p(b,25))?9:X(a,p(b,28))?10:X(a,p(b,2))?p(b,18)||X(a,p(b,3))?2:0:!p(b,18)&&X(a,p(b,3))?1:-1:-1}\nfunction U(a,b){if(null==b)return null;b=b.toUpperCase();var c=a.g[b];if(null==c){c=va[b];if(null==c)return null;c=(new D).g(H.j(),c);a.g[b]=c}return c}function X(a,b){var c=a.length;return 0<x(b,9)&&-1==u(b,9).indexOf(c)?!1:O(w(b,2),a)}\nfunction Na(a,b){if(null==b)return null;var c=w(b,1);c=J[c];if(null==c)a=null;else if(1==c.length)a=c[0];else a:{b=R(b);for(var d,e=c.length,g=0;g<e;g++){d=c[g];var f=U(a,d);if(null!=f.g[23]){if(0==b.search(p(f,23))){a=d;break a}}else if(-1!=W(b,f)){a=d;break a}}a=null}return a}function T(a){a=J[a];return null==a?\"ZZ\":a[0]}\nfunction Y(a,b,c,d){var e=V(c,d),g=0==x(e,9)?u(p(c,1),9):u(e,9);e=u(e,10);if(2==d)if(Ka(V(c,0)))a=V(c,1),Ka(a)&&(g=g.concat(0==x(a,9)?u(p(c,1),9):u(a,9)),g.sort(),0==e.length?e=u(a,10):(e=e.concat(u(a,10)),e.sort()));else return Y(a,b,c,1);if(-1==g[0])return 5;b=b.length;if(-1<e.indexOf(b))return 4;c=g[0];return c==b?0:c>b?2:g[g.length-1]<b?3:-1<g.indexOf(b,1)?0:5}function Oa(a,b){var c=R(b);b=w(b,1);if(!(b in J))return 1;b=S(a,b,T(b));return Y(a,c,b,-1)}\nfunction Pa(a,b,c,d,e,g){if(0==b.length)return 0;b=new E(b);var f;null!=c&&(f=p(c,11));null==f&&(f=\"NonMatch\");var h=b.toString();if(0==h.length)f=20;else if(L.test(h))h=h.replace(L,\"\"),b.i=\"\",b.g(Ia(h)),f=1;else{h=new RegExp(f);Ja(b);f=b.toString();if(0==f.search(h)){h=f.match(h)[0].length;var l=f.substring(h).match(ya);l&&null!=l[1]&&0<l[1].length&&\"0\"==P(l[1],wa)?f=!1:(b.i=\"\",b.g(f.substring(h)),f=!0)}else f=!1;f=f?5:20}e&&q(g,6,f);if(20!=f){if(2>=b.i.length)throw Error(\"Phone number too short after IDD\");\na:{a=b.toString();if(0!=a.length&&\"0\"!=a.charAt(0))for(e=a.length,b=1;3>=b&&b<=e;++b)if(c=parseInt(a.substring(0,b),10),c in J){d.g(a.substring(b));d=c;break a}d=0}if(0!=d)return q(g,1,d),d;throw Error(\"Invalid country calling code\");}if(null!=c&&(f=w(c,10),h=\"\"+f,l=b.toString(),0==l.lastIndexOf(h,0)&&(h=new E(l.substring(h.length)),l=p(c,1),l=new RegExp(w(l,2)),Qa(h,c,null),h=h.toString(),!O(l,b.toString())&&O(l,h)||3==Y(a,b.toString(),c,-1))))return d.g(h),e&&q(g,6,10),q(g,1,f),f;q(g,1,0);return 0}\nfunction Qa(a,b,c){var d=a.toString(),e=d.length,g=p(b,15);if(0!=e&&null!=g&&0!=g.length){var f=new RegExp(\"^(?:\"+g+\")\");if(e=f.exec(d)){g=new RegExp(w(p(b,1),2));var h=O(g,d),l=e.length-1;b=p(b,16);if(null==b||0==b.length||null==e[l]||0==e[l].length){if(!h||O(g,d.substring(e[0].length)))null!=c&&0<l&&null!=e[l]&&c.g(e[1]),a.set(d.substring(e[0].length))}else if(d=d.replace(f,b),!h||O(g,d))null!=c&&0<l&&c.g(e[1]),a.set(d)}}}\nfunction Z(a,b,c){if(!Q(c)&&0<b.length&&\"+\"!=b.charAt(0))throw Error(\"Invalid country calling code\");return Ra(a,b,c,!0)}\nfunction Ra(a,b,c,d){if(null==b)throw Error(\"The string supplied did not seem to be a phone number\");if(250<b.length)throw Error(\"The string supplied is too long to be a phone number\");var e=new E,g=b.indexOf(\";phone-context=\");if(0<=g){var f=g+15;if(\"+\"==b.charAt(f)){var h=b.indexOf(\";\",f);0<h?e.g(b.substring(f,h)):e.g(b.substring(f))}f=b.indexOf(\"tel:\");e.g(b.substring(0<=f?f+4:0,g))}else g=e.g,f=b.search(za),0<=f?(f=b.substring(f),f=f.replace(Ba,\"\"),h=f.search(Aa),0<=h&&(f=f.substring(0,h))):f=\n\"\",g.call(e,f);g=e.toString();f=g.indexOf(\";isub=\");0<f&&(e.i=\"\",e.g(g.substring(0,f)));if(!Ha(e.toString()))throw Error(\"The string supplied did not seem to be a phone number\");g=e.toString();if(!(Q(c)||null!=g&&0<g.length&&L.test(g)))throw Error(\"Invalid country calling code\");g=new I;d&&q(g,5,b);a:{b=e.toString();f=b.search(Ea);if(0<=f&&Ha(b.substring(0,f))){h=b.match(Ea);for(var l=h.length,z=1;z<l;++z)if(null!=h[z]&&0<h[z].length){e.i=\"\";e.g(b.substring(0,f));b=h[z];break a}}b=\"\"}0<b.length&&\nq(g,3,b);f=U(a,c);b=new E;h=0;l=e.toString();try{h=Pa(a,l,f,b,d,g)}catch(M){if(\"Invalid country calling code\"==M.message&&L.test(l)){if(l=l.replace(L,\"\"),h=Pa(a,l,f,b,d,g),0==h)throw M;}else throw M;}0!=h?(e=T(h),e!=c&&(f=S(a,h,e))):(Ja(e),b.g(e.toString()),null!=c?(h=w(f,10),q(g,1,h)):d&&(delete g.g[6],g.i&&delete g.i[6]));if(2>b.i.length)throw Error(\"The string supplied is too short to be a phone number\");null!=f&&(c=new E,e=new E(b.toString()),Qa(e,f,c),a=Y(a,e.toString(),f,-1),2!=a&&4!=a&&5!=\na&&(b=e,d&&0<c.toString().length&&q(g,7,c.toString())));d=b.toString();a=d.length;if(2>a)throw Error(\"The string supplied is too short to be a phone number\");if(17<a)throw Error(\"The string supplied is too long to be a phone number\");if(1<d.length&&\"0\"==d.charAt(0)){q(g,4,!0);for(a=1;a<d.length-1&&\"0\"==d.charAt(a);)a++;1!=a&&q(g,8,a)}q(g,2,parseInt(d,10));return g}function O(a,b){return(a=\"string\"==typeof a?b.match(\"^(?:\"+a+\")$\"):b.match(a))&&a[0].length==b.length?!0:!1};k(\"intlTelInputUtils\",{});k(\"intlTelInputUtils.formatNumber\",function(a,b,c){try{var d=K.g(),e=Z(d,a,b),g=Oa(d,e);return 0==g||4==g?La(d,e,\"undefined\"==typeof c?0:c):a}catch(f){return a}});k(\"intlTelInputUtils.getExampleNumber\",function(a,b,c){try{var d=K.g();a:{if(Q(a)){var e=V(U(d,a),c);try{if(null!=e.g[6]){var g=p(e,6);var f=Ra(d,g,a,!1);break a}}catch(h){}}f=null}return La(d,f,b?2:1)}catch(h){return\"\"}});k(\"intlTelInputUtils.getExtension\",function(a,b){try{return p(Z(K.g(),a,b),3)}catch(c){return\"\"}});\nk(\"intlTelInputUtils.getNumberType\",function(a,b){try{var c=K.g();var d=Z(c,a,b),e=Na(c,d),g=S(c,w(d,1),e);if(null==g)var f=-1;else{var h=R(d);f=W(h,g)}return f}catch(l){return-99}});\nk(\"intlTelInputUtils.getValidationError\",function(a,b){try{var c=K.g(),d=Z(c,a,b);return Oa(c,d)}catch(e){return\"Invalid country calling code\"==e.message?1:\"Phone number too short after IDD\"==e.message||\"The string supplied is too short to be a phone number\"==e.message?2:\"The string supplied is too long to be a phone number\"==e.message?3:-99}});\nk(\"intlTelInputUtils.isValidNumber\",function(a,b){try{var c=K.g(),d=Z(c,a,b);var e=Na(c,d),g=w(d,1),f=S(c,g,e),h;if(!(h=null==f)){var l;if(l=\"001\"!=e){var z=U(c,e);if(null==z)throw Error(\"Invalid region code: \"+e);var M=w(z,10);l=g!=M}h=l}if(h)var ua=!1;else{var Sa=R(d);ua=-1!=W(Sa,f)}return ua}catch(Ta){return!1}});k(\"intlTelInputUtils.numberFormat\",{E164:0,INTERNATIONAL:1,NATIONAL:2,RFC3966:3});\nk(\"intlTelInputUtils.numberType\",{FIXED_LINE:0,MOBILE:1,FIXED_LINE_OR_MOBILE:2,TOLL_FREE:3,PREMIUM_RATE:4,SHARED_COST:5,VOIP:6,PERSONAL_NUMBER:7,PAGER:8,UAN:9,VOICEMAIL:10,UNKNOWN:-1});k(\"intlTelInputUtils.validationError\",{IS_POSSIBLE:0,INVALID_COUNTRY_CODE:1,TOO_SHORT:2,TOO_LONG:3,IS_POSSIBLE_LOCAL_ONLY:4,INVALID_LENGTH:5});})();\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2022 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[1];\n    let keyFilter = matches[2];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[3]),\n        eventName,\n        eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n        identifier: matches[4],\n        methodName: matches[5],\n        keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    isFilterTarget(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filteres = this.keyFilter.split(\"+\");\n        const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n        const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n        if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n            return true;\n        }\n        const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n            this.invokeWithEvent(event);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(node, attributeName) {\n        const element = node;\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details = {}) {\n        this.selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const matches = element.matches(this.selector);\n        if (this.delegate.selectorMatchElement) {\n            return matches && this.delegate.selectorMatchElement(element, this.details);\n        }\n        return matches;\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        this.selectorMatched(element);\n    }\n    elementUnmatched(element) {\n        this.selectorUnmatched(element);\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const matches = this.matchElement(element);\n        const matchedBefore = this.matchesByElement.has(this.selector, element);\n        if (!matches && matchedBefore) {\n            this.selectorUnmatched(element);\n        }\n    }\n    selectorMatched(element) {\n        if (this.delegate.selectorMatched) {\n            this.delegate.selectorMatched(element, this.selector, this.details);\n            this.matchesByElement.add(this.selector, element);\n        }\n    }\n    selectorUnmatched(element) {\n        this.delegate.selectorUnmatched(element, this.selector, this.details);\n        this.matchesByElement.delete(this.selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n    }\n    start() {\n        if (this.selectorObserverMap.size === 0) {\n            this.outletDefinitions.forEach((outletName) => {\n                const selector = this.selector(outletName);\n                const details = { outletName };\n                if (selector) {\n                    this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n                }\n            });\n            this.selectorObserverMap.forEach((observer) => observer.start());\n        }\n        this.dependentContexts.forEach((context) => context.refresh());\n    }\n    stop() {\n        if (this.selectorObserverMap.size > 0) {\n            this.disconnectAllOutlets();\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        return (this.hasOutlet(element, outletName) &&\n            element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad(definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outlet = this.outlets.find(name);\n                if (outlet) {\n                    const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n                    if (outletController) {\n                        return outletController;\n                    }\n                    else {\n                        throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n                    }\n                }\n                throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outlet) => {\n                        const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n                        if (controller) {\n                            return controller;\n                        }\n                        else {\n                            console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n                        }\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outlet = this.outlets.find(name);\n                if (outlet) {\n                    return outlet;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n    if (!typeFromObject)\n        return;\n    const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n    if (typeFromObject !== defaultValueType) {\n        const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n    }\n    return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const typeFromObject = parseValueTypeObject({\n        controller: payload.controller,\n        token: payload.token,\n        typeObject: payload.typeDefinition,\n    });\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const key = `${dasherize(payload.token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(payload.typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value);\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from '@hotwired/stimulus'\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = window.location.protocol === 'http:'\nwindow.Stimulus = application\n\nexport { application }\n", "/* global Turbo */\n/**\n * Does a get request using the fetch api\n *\n * @param {string} path - the path to the resource\n * @return {Promise} - a promise that resolves to the response\n * @example\n *  get('/api/v1/users').then(response => response.json())\n */\nexport function get(path) {\n  return fetch(path, {\n    method: 'GET',\n    headers: {\n      'X-CSRF-Token': getCsrfToken(),\n      'Content-Type': 'application/json',\n    },\n  })\n}\n\nexport function getStream(path) {\n  return fetch(path, {\n    method: 'GET',\n    headers: {\n      'X-CSRF-Token': getCsrfToken(),\n      'Content-Type': 'application/json',\n      Accept: 'text/vnd.turbo-stream.html',\n    },\n  })\n    .then((r) => r.text())\n    .then((html) => Turbo.renderStreamMessage(html))\n}\n\n/**\n * Does a a put request using the fetch api\n *\n * @param {string} path - the path to the resource\n * @param {Object} body - the body of the request\n * @returns {Promise} - a promise that resolves to the response\n * @example\n *  put('/api/v1/users', { name: 'John' })\n */\nexport function put(path, body) {\n  return fetch(path, {\n    method: 'PUT',\n    body: JSON.stringify(body),\n    headers: {\n      'X-CSRF-Token': getCsrfToken(),\n      'Content-Type': 'application/json',\n    },\n  })\n}\n\n/**\n * Does a post request using the fetch api\n *\n * @param {string} path\n * @param {Object} body\n * @returns\n * @example\n *  post('/api/v1/users', { name: 'John' })\n */\nexport function post(path, body) {\n  return fetch(path, {\n    method: 'POST',\n    body: JSON.stringify(body),\n    headers: {\n      'X-CSRF-Token': getCsrfToken(),\n      'Content-Type': 'application/json',\n    },\n  })\n}\n\nexport function postStream(path, body) {\n  return fetch(path, {\n    method: 'POST',\n    body: JSON.stringify(body),\n    headers: {\n      'X-CSRF-Token': getCsrfToken(),\n      'Content-Type': 'application/json',\n      Accept: 'text/vnd.turbo-stream.html',\n    },\n  })\n}\n\n/**\n * Does a delete request using the fetch api\n *\n * @param {string} path - the path to the resource\n * @returns\n * @example\n *  destroy('/api/v1/users/1')\n */\nexport function destroy(path) {\n  return fetch(path, {\n    method: 'DELETE',\n    headers: {\n      'X-CSRF-Token': getCsrfToken(),\n    },\n  })\n}\n\n/**\n * A utility function to get the csrf token from the meta tag\n *\n * @returns {string} - the csrf token\n * @example\n *  getCsrfToken()\n */\nexport function getCsrfToken() {\n  return document.querySelector('meta[name=\"csrf-token\"]')?.content\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { getStream } from '../helpers/fetch_helper'\n\nexport default class ApplicationController extends Controller {\n  clickOn({ params: { selector } }) {\n    this.element.querySelector(selector)?.click()\n  }\n\n  setFrame({ params: { frame, src } }) {\n    const frameElement = document.querySelector(`#${frame}`)\n    if (!frameElement) return\n\n    frameElement.src = src\n  }\n\n  refreshClosestFrame({ target }) {\n    target.closest('turbo-frame')?.reload()\n  }\n\n  refreshFormFrame({ target, params: { url } }) {\n    const params = new URLSearchParams(new FormData(target.form))\n    params.delete('utf8')\n    params.delete('_method')\n    params.delete('authenticity_token')\n\n    const src = `${url}?${params.toString()}`\n\n    window.Turbo.visit(src, { frame: target.closest('turbo-frame').id })\n  }\n\n  flushAlerts() {\n    getStream('/flush_notifications')\n  }\n\n  resetAlerts() {\n    this.alertsFrame.innerHTML = ''\n  }\n\n  preventDefault(event) {\n    event.preventDefault()\n  }\n\n  submitClosestForm({ currentTarget }) {\n    currentTarget.closest('form')?.requestSubmit()\n  }\n\n  resetClosestForm({ currentTarget }) {\n    const form = currentTarget.closest('form')\n\n    if (!form) return\n\n    form.reset()\n    form.querySelectorAll('input[type=\"hidden\"]').forEach((input) => (input.value = null))\n    form.requestSubmit()\n  }\n\n  get alertsFrame() {\n    return document.querySelector('#global-alerts')\n  }\n\n  get currentURL() {\n    return new URL(window.location.href)\n  }\n\n  ///\n  /// private\n  ///\n\n  modifyQueryStringInline(key, value) {\n    const url = new URL(window.location.href)\n    const params = new URLSearchParams(url.search)\n\n    if (value) {\n      params.set(key, value)\n    } else {\n      params.delete(key)\n    }\n\n    url.search = params.toString()\n\n    window.history.replaceState({}, '', url.toString())\n  }\n\n  clearDataAttributes(element) {\n    for (const attribute of element.getAttributeNames()) {\n      if (attribute.startsWith('data-')) {\n        element.removeAttribute(attribute)\n      }\n    }\n  }\n\n  waitForAnimations(element, callback) {\n    return Promise.all(element.getAnimations().map((animation) => animation.finished)).then(callback)\n  }\n\n  vibrate(duration) {\n    if (navigator.vibrate) {\n      navigator.vibrate(duration)\n    }\n  }\n\n  focus(element) {\n    if (!element) return\n\n    document.activeElement.blur()\n    element.focus()\n  }\n}\n", "/*!\n * hotkeys-js v3.8.7\n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies.\n * \n * Copyright (c) 2021 kenny wong <wowohoo@qq.com>\n * http://jaywcjlove.github.io/hotkeys\n * \n * Licensed under the MIT license.\n */\n\nvar isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // \u7ED1\u5B9A\u4E8B\u4EF6\n\nfunction addEvent(object, event, method) {\n  if (object.addEventListener) {\n    object.addEventListener(event, method, false);\n  } else if (object.attachEvent) {\n    object.attachEvent(\"on\".concat(event), function () {\n      method(window.event);\n    });\n  }\n} // \u4FEE\u9970\u952E\u8F6C\u6362\u6210\u5BF9\u5E94\u7684\u952E\u7801\n\n\nfunction getMods(modifier, key) {\n  var mods = key.slice(0, key.length - 1);\n\n  for (var i = 0; i < mods.length; i++) {\n    mods[i] = modifier[mods[i].toLowerCase()];\n  }\n\n  return mods;\n} // \u5904\u7406\u4F20\u7684key\u5B57\u7B26\u4E32\u8F6C\u6362\u6210\u6570\u7EC4\n\n\nfunction getKeys(key) {\n  if (typeof key !== 'string') key = '';\n  key = key.replace(/\\s/g, ''); // \u5339\u914D\u4EFB\u4F55\u7A7A\u767D\u5B57\u7B26,\u5305\u62EC\u7A7A\u683C\u3001\u5236\u8868\u7B26\u3001\u6362\u9875\u7B26\u7B49\u7B49\n\n  var keys = key.split(','); // \u540C\u65F6\u8BBE\u7F6E\u591A\u4E2A\u5FEB\u6377\u952E\uFF0C\u4EE5','\u5206\u5272\n\n  var index = keys.lastIndexOf(''); // \u5FEB\u6377\u952E\u53EF\u80FD\u5305\u542B','\uFF0C\u9700\u7279\u6B8A\u5904\u7406\n\n  for (; index >= 0;) {\n    keys[index - 1] += ',';\n    keys.splice(index, 1);\n    index = keys.lastIndexOf('');\n  }\n\n  return keys;\n} // \u6BD4\u8F83\u4FEE\u9970\u952E\u7684\u6570\u7EC4\n\n\nfunction compareArray(a1, a2) {\n  var arr1 = a1.length >= a2.length ? a1 : a2;\n  var arr2 = a1.length >= a2.length ? a2 : a1;\n  var isIndex = true;\n\n  for (var i = 0; i < arr1.length; i++) {\n    if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n  }\n\n  return isIndex;\n}\n\nvar _keyMap = {\n  backspace: 8,\n  tab: 9,\n  clear: 12,\n  enter: 13,\n  return: 13,\n  esc: 27,\n  escape: 27,\n  space: 32,\n  left: 37,\n  up: 38,\n  right: 39,\n  down: 40,\n  del: 46,\n  delete: 46,\n  ins: 45,\n  insert: 45,\n  home: 36,\n  end: 35,\n  pageup: 33,\n  pagedown: 34,\n  capslock: 20,\n  num_0: 96,\n  num_1: 97,\n  num_2: 98,\n  num_3: 99,\n  num_4: 100,\n  num_5: 101,\n  num_6: 102,\n  num_7: 103,\n  num_8: 104,\n  num_9: 105,\n  num_multiply: 106,\n  num_add: 107,\n  num_enter: 108,\n  num_subtract: 109,\n  num_decimal: 110,\n  num_divide: 111,\n  '\u21EA': 20,\n  ',': 188,\n  '.': 190,\n  '/': 191,\n  '`': 192,\n  '-': isff ? 173 : 189,\n  '=': isff ? 61 : 187,\n  ';': isff ? 59 : 186,\n  '\\'': 222,\n  '[': 219,\n  ']': 221,\n  '\\\\': 220\n}; // Modifier Keys\n\nvar _modifier = {\n  // shiftKey\n  '\u21E7': 16,\n  shift: 16,\n  // altKey\n  '\u2325': 18,\n  alt: 18,\n  option: 18,\n  // ctrlKey\n  '\u2303': 17,\n  ctrl: 17,\n  control: 17,\n  // metaKey\n  '\u2318': 91,\n  cmd: 91,\n  command: 91\n};\nvar modifierMap = {\n  16: 'shiftKey',\n  18: 'altKey',\n  17: 'ctrlKey',\n  91: 'metaKey',\n  shiftKey: 16,\n  ctrlKey: 17,\n  altKey: 18,\n  metaKey: 91\n};\nvar _mods = {\n  16: false,\n  18: false,\n  17: false,\n  91: false\n};\nvar _handlers = {}; // F1~F12 special key\n\nfor (var k = 1; k < 20; k++) {\n  _keyMap[\"f\".concat(k)] = 111 + k;\n}\n\nvar _downKeys = []; // \u8BB0\u5F55\u6441\u4E0B\u7684\u7ED1\u5B9A\u952E\n\nvar _scope = 'all'; // \u9ED8\u8BA4\u70ED\u952E\u8303\u56F4\n\nvar elementHasBindEvent = []; // \u5DF2\u7ED1\u5B9A\u4E8B\u4EF6\u7684\u8282\u70B9\u8BB0\u5F55\n// \u8FD4\u56DE\u952E\u7801\n\nvar code = function code(x) {\n  return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\n}; // \u8BBE\u7F6E\u83B7\u53D6\u5F53\u524D\u8303\u56F4\uFF08\u9ED8\u8BA4\u4E3A'\u6240\u6709'\uFF09\n\n\nfunction setScope(scope) {\n  _scope = scope || 'all';\n} // \u83B7\u53D6\u5F53\u524D\u8303\u56F4\n\n\nfunction getScope() {\n  return _scope || 'all';\n} // \u83B7\u53D6\u6441\u4E0B\u7ED1\u5B9A\u952E\u7684\u952E\u503C\n\n\nfunction getPressedKeyCodes() {\n  return _downKeys.slice(0);\n} // \u8868\u5355\u63A7\u4EF6\u63A7\u4EF6\u5224\u65AD \u8FD4\u56DE Boolean\n// hotkey is effective only when filter return true\n\n\nfunction filter(event) {\n  var target = event.target || event.srcElement;\n  var tagName = target.tagName;\n  var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n\n  if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n    flag = false;\n  }\n\n  return flag;\n} // \u5224\u65AD\u6441\u4E0B\u7684\u952E\u662F\u5426\u4E3A\u67D0\u4E2A\u952E\uFF0C\u8FD4\u56DEtrue\u6216\u8005false\n\n\nfunction isPressed(keyCode) {\n  if (typeof keyCode === 'string') {\n    keyCode = code(keyCode); // \u8F6C\u6362\u6210\u952E\u7801\n  }\n\n  return _downKeys.indexOf(keyCode) !== -1;\n} // \u5FAA\u73AF\u5220\u9664handlers\u4E2D\u7684\u6240\u6709 scope(\u8303\u56F4)\n\n\nfunction deleteScope(scope, newScope) {\n  var handlers;\n  var i; // \u6CA1\u6709\u6307\u5B9Ascope\uFF0C\u83B7\u53D6scope\n\n  if (!scope) scope = getScope();\n\n  for (var key in _handlers) {\n    if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n      handlers = _handlers[key];\n\n      for (i = 0; i < handlers.length;) {\n        if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;\n      }\n    }\n  } // \u5982\u679Cscope\u88AB\u5220\u9664\uFF0C\u5C06scope\u91CD\u7F6E\u4E3Aall\n\n\n  if (getScope() === scope) setScope(newScope || 'all');\n} // \u6E05\u9664\u4FEE\u9970\u952E\n\n\nfunction clearModifier(event) {\n  var key = event.keyCode || event.which || event.charCode;\n\n  var i = _downKeys.indexOf(key); // \u4ECE\u5217\u8868\u4E2D\u6E05\u9664\u6309\u538B\u8FC7\u7684\u952E\n\n\n  if (i >= 0) {\n    _downKeys.splice(i, 1);\n  } // \u7279\u6B8A\u5904\u7406 cmmand \u952E\uFF0C\u5728 cmmand \u7EC4\u5408\u5FEB\u6377\u952E keyup \u53EA\u6267\u884C\u4E00\u6B21\u7684\u95EE\u9898\n\n\n  if (event.key && event.key.toLowerCase() === 'meta') {\n    _downKeys.splice(0, _downKeys.length);\n  } // \u4FEE\u9970\u952E shiftKey altKey ctrlKey (command||metaKey) \u6E05\u9664\n\n\n  if (key === 93 || key === 224) key = 91;\n\n  if (key in _mods) {\n    _mods[key] = false; // \u5C06\u4FEE\u9970\u952E\u91CD\u7F6E\u4E3Afalse\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = false;\n    }\n  }\n}\n\nfunction unbind(keysInfo) {\n  // unbind(), unbind all keys\n  if (!keysInfo) {\n    Object.keys(_handlers).forEach(function (key) {\n      return delete _handlers[key];\n    });\n  } else if (Array.isArray(keysInfo)) {\n    // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n    keysInfo.forEach(function (info) {\n      if (info.key) eachUnbind(info);\n    });\n  } else if (typeof keysInfo === 'object') {\n    // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n    if (keysInfo.key) eachUnbind(keysInfo);\n  } else if (typeof keysInfo === 'string') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    // support old method\n    // eslint-disable-line\n    var scope = args[0],\n        method = args[1];\n\n    if (typeof scope === 'function') {\n      method = scope;\n      scope = '';\n    }\n\n    eachUnbind({\n      key: keysInfo,\n      scope: scope,\n      method: method,\n      splitKey: '+'\n    });\n  }\n} // \u89E3\u9664\u7ED1\u5B9A\u67D0\u4E2A\u8303\u56F4\u7684\u5FEB\u6377\u952E\n\n\nvar eachUnbind = function eachUnbind(_ref) {\n  var key = _ref.key,\n      scope = _ref.scope,\n      method = _ref.method,\n      _ref$splitKey = _ref.splitKey,\n      splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;\n  var multipleKeys = getKeys(key);\n  multipleKeys.forEach(function (originKey) {\n    var unbindKeys = originKey.split(splitKey);\n    var len = unbindKeys.length;\n    var lastKey = unbindKeys[len - 1];\n    var keyCode = lastKey === '*' ? '*' : code(lastKey);\n    if (!_handlers[keyCode]) return; // \u5224\u65AD\u662F\u5426\u4F20\u5165\u8303\u56F4\uFF0C\u6CA1\u6709\u5C31\u83B7\u53D6\u8303\u56F4\n\n    if (!scope) scope = getScope();\n    var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n    _handlers[keyCode] = _handlers[keyCode].map(function (record) {\n      // \u901A\u8FC7\u51FD\u6570\u5224\u65AD\uFF0C\u662F\u5426\u89E3\u9664\u7ED1\u5B9A\uFF0C\u51FD\u6570\u76F8\u7B49\u76F4\u63A5\u8FD4\u56DE\n      var isMatchingMethod = method ? record.method === method : true;\n\n      if (isMatchingMethod && record.scope === scope && compareArray(record.mods, mods)) {\n        return {};\n      }\n\n      return record;\n    });\n  });\n}; // \u5BF9\u76D1\u542C\u5BF9\u5E94\u5FEB\u6377\u952E\u7684\u56DE\u8C03\u51FD\u6570\u8FDB\u884C\u5904\u7406\n\n\nfunction eventHandler(event, handler, scope) {\n  var modifiersMatch; // \u770B\u5B83\u662F\u5426\u5728\u5F53\u524D\u8303\u56F4\n\n  if (handler.scope === scope || handler.scope === 'all') {\n    // \u68C0\u67E5\u662F\u5426\u5339\u914D\u4FEE\u9970\u7B26\uFF08\u5982\u679C\u6709\u8FD4\u56DEtrue\uFF09\n    modifiersMatch = handler.mods.length > 0;\n\n    for (var y in _mods) {\n      if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n        if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n          modifiersMatch = false;\n        }\n      }\n    } // \u8C03\u7528\u5904\u7406\u7A0B\u5E8F\uFF0C\u5982\u679C\u662F\u4FEE\u9970\u952E\u4E0D\u505A\u5904\u7406\n\n\n    if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n      if (handler.method(event, handler) === false) {\n        if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.cancelBubble) event.cancelBubble = true;\n      }\n    }\n  }\n} // \u5904\u7406keydown\u4E8B\u4EF6\n\n\nfunction dispatch(event) {\n  var asterisk = _handlers['*'];\n  var key = event.keyCode || event.which || event.charCode; // \u8868\u5355\u63A7\u4EF6\u8FC7\u6EE4 \u9ED8\u8BA4\u8868\u5355\u63A7\u4EF6\u4E0D\u89E6\u53D1\u5FEB\u6377\u952E\n\n  if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)\u7684command\u952E\u503C224\uFF0C\u5728Webkit(Chrome)\u4E2D\u4FDD\u6301\u4E00\u81F4\n  // Webkit\u5DE6\u53F3 command \u952E\u503C\u4E0D\u4E00\u6837\n\n  if (key === 93 || key === 224) key = 91;\n  /**\n   * Collect bound keys\n   * If an Input Method Editor is processing key input and the event is keydown, return 229.\n   * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n   * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n   */\n\n  if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n  /**\n   * Jest test cases are required.\n   * ===============================\n   */\n\n  ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {\n    var keyNum = modifierMap[keyName];\n\n    if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n      _downKeys.push(keyNum);\n    } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n      _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n    } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n      /**\n       * Fix if Command is pressed:\n       * ===============================\n       */\n      if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n        _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n      }\n    }\n  });\n  /**\n   * -------------------------------\n   */\n\n  if (key in _mods) {\n    _mods[key] = true; // \u5C06\u7279\u6B8A\u5B57\u7B26\u7684key\u6CE8\u518C\u5230 hotkeys \u4E0A\n\n    for (var k in _modifier) {\n      if (_modifier[k] === key) hotkeys[k] = true;\n    }\n\n    if (!asterisk) return;\n  } // \u5C06 modifierMap \u91CC\u9762\u7684\u4FEE\u9970\u952E\u7ED1\u5B9A\u5230 event \u4E2D\n\n\n  for (var e in _mods) {\n    if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n      _mods[e] = event[modifierMap[e]];\n    }\n  }\n  /**\n   * https://github.com/jaywcjlove/hotkeys/pull/129\n   * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n   * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type \u03BC.\n   * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n   */\n\n\n  if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n    if (_downKeys.indexOf(17) === -1) {\n      _downKeys.push(17);\n    }\n\n    if (_downKeys.indexOf(18) === -1) {\n      _downKeys.push(18);\n    }\n\n    _mods[17] = true;\n    _mods[18] = true;\n  } // \u83B7\u53D6\u8303\u56F4 \u9ED8\u8BA4\u4E3A `all`\n\n\n  var scope = getScope(); // \u5BF9\u4EFB\u4F55\u5FEB\u6377\u952E\u90FD\u9700\u8981\u505A\u7684\u5904\u7406\n\n  if (asterisk) {\n    for (var i = 0; i < asterisk.length; i++) {\n      if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n        eventHandler(event, asterisk[i], scope);\n      }\n    }\n  } // key \u4E0D\u5728 _handlers \u4E2D\u8FD4\u56DE\n\n\n  if (!(key in _handlers)) return;\n\n  for (var _i = 0; _i < _handlers[key].length; _i++) {\n    if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {\n      if (_handlers[key][_i].key) {\n        var record = _handlers[key][_i];\n        var splitKey = record.splitKey;\n        var keyShortcut = record.key.split(splitKey);\n        var _downKeysCurrent = []; // \u8BB0\u5F55\u5F53\u524D\u6309\u952E\u952E\u503C\n\n        for (var a = 0; a < keyShortcut.length; a++) {\n          _downKeysCurrent.push(code(keyShortcut[a]));\n        }\n\n        if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n          // \u627E\u5230\u5904\u7406\u5185\u5BB9\n          eventHandler(event, record, scope);\n        }\n      }\n    }\n  }\n} // \u5224\u65AD element \u662F\u5426\u5DF2\u7ECF\u7ED1\u5B9A\u4E8B\u4EF6\n\n\nfunction isElementBind(element) {\n  return elementHasBindEvent.indexOf(element) > -1;\n}\n\nfunction hotkeys(key, option, method) {\n  _downKeys = [];\n  var keys = getKeys(key); // \u9700\u8981\u5904\u7406\u7684\u5FEB\u6377\u952E\u5217\u8868\n\n  var mods = [];\n  var scope = 'all'; // scope\u9ED8\u8BA4\u4E3Aall\uFF0C\u6240\u6709\u8303\u56F4\u90FD\u6709\u6548\n\n  var element = document; // \u5FEB\u6377\u952E\u4E8B\u4EF6\u7ED1\u5B9A\u8282\u70B9\n\n  var i = 0;\n  var keyup = false;\n  var keydown = true;\n  var splitKey = '+'; // \u5BF9\u4E3A\u8BBE\u5B9A\u8303\u56F4\u7684\u5224\u65AD\n\n  if (method === undefined && typeof option === 'function') {\n    method = option;\n  }\n\n  if (Object.prototype.toString.call(option) === '[object Object]') {\n    if (option.scope) scope = option.scope; // eslint-disable-line\n\n    if (option.element) element = option.element; // eslint-disable-line\n\n    if (option.keyup) keyup = option.keyup; // eslint-disable-line\n\n    if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n\n    if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n  }\n\n  if (typeof option === 'string') scope = option; // \u5BF9\u4E8E\u6BCF\u4E2A\u5FEB\u6377\u952E\u8FDB\u884C\u5904\u7406\n\n  for (; i < keys.length; i++) {\n    key = keys[i].split(splitKey); // \u6309\u952E\u5217\u8868\n\n    mods = []; // \u5982\u679C\u662F\u7EC4\u5408\u5FEB\u6377\u952E\u53D6\u5F97\u7EC4\u5408\u5FEB\u6377\u952E\n\n    if (key.length > 1) mods = getMods(_modifier, key); // \u5C06\u975E\u4FEE\u9970\u952E\u8F6C\u5316\u4E3A\u952E\u7801\n\n    key = key[key.length - 1];\n    key = key === '*' ? '*' : code(key); // *\u8868\u793A\u5339\u914D\u6240\u6709\u5FEB\u6377\u952E\n    // \u5224\u65ADkey\u662F\u5426\u5728_handlers\u4E2D\uFF0C\u4E0D\u5728\u5C31\u8D4B\u4E00\u4E2A\u7A7A\u6570\u7EC4\n\n    if (!(key in _handlers)) _handlers[key] = [];\n\n    _handlers[key].push({\n      keyup: keyup,\n      keydown: keydown,\n      scope: scope,\n      mods: mods,\n      shortcut: keys[i],\n      method: method,\n      key: keys[i],\n      splitKey: splitKey\n    });\n  } // \u5728\u5168\u5C40document\u4E0A\u8BBE\u7F6E\u5FEB\u6377\u952E\n\n\n  if (typeof element !== 'undefined' && !isElementBind(element) && window) {\n    elementHasBindEvent.push(element);\n    addEvent(element, 'keydown', function (e) {\n      dispatch(e);\n    });\n    addEvent(window, 'focus', function () {\n      _downKeys = [];\n    });\n    addEvent(element, 'keyup', function (e) {\n      dispatch(e);\n      clearModifier(e);\n    });\n  }\n}\n\nvar _api = {\n  setScope: setScope,\n  getScope: getScope,\n  deleteScope: deleteScope,\n  getPressedKeyCodes: getPressedKeyCodes,\n  isPressed: isPressed,\n  filter: filter,\n  unbind: unbind\n};\n\nfor (var a in _api) {\n  if (Object.prototype.hasOwnProperty.call(_api, a)) {\n    hotkeys[a] = _api[a];\n  }\n}\n\nif (typeof window !== 'undefined') {\n  var _hotkeys = window.hotkeys;\n\n  hotkeys.noConflict = function (deep) {\n    if (deep && window.hotkeys === hotkeys) {\n      window.hotkeys = _hotkeys;\n    }\n\n    return hotkeys;\n  };\n\n  window.hotkeys = hotkeys;\n}\n\nexport default hotkeys;\n", "/*\nStimulus-Use 0.50.0-1\n*/\nimport { Controller } from '@hotwired/stimulus';\nimport hotkeys from 'hotkeys-js';\n\nconst method = (controller, methodName) => {\n    const method = controller[methodName];\n    if (typeof method == 'function') {\n        return method;\n    }\n    else {\n        return (...args) => { };\n    }\n};\nconst composeEventName = (name, controller, eventPrefix) => {\n    let composedName = name;\n    if (eventPrefix === true) {\n        composedName = `${controller.identifier}:${name}`;\n    }\n    else if (typeof eventPrefix === 'string') {\n        composedName = `${eventPrefix}:${name}`;\n    }\n    return composedName;\n};\nconst extendedEvent = (type, event, detail) => {\n    const { bubbles, cancelable, composed } = event || { bubbles: true, cancelable: true, composed: true };\n    if (event) {\n        Object.assign(detail, { originalEvent: event });\n    }\n    const customEvent = new CustomEvent(type, {\n        bubbles,\n        cancelable,\n        composed,\n        detail\n    });\n    return customEvent;\n};\nfunction isElementInViewport(el) {\n    const rect = el.getBoundingClientRect();\n    const windowHeight = window.innerHeight || document.documentElement.clientHeight;\n    const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n    const vertInView = rect.top <= windowHeight && rect.top + rect.height >= 0;\n    const horInView = rect.left <= windowWidth && rect.left + rect.width >= 0;\n    return vertInView && horInView;\n}\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\n\nconst defaultOptions$7 = {\n    dispatchEvent: true,\n    eventPrefix: true\n};\nconst useIntersection = (controller, options = {}) => {\n    const { dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$7, options);\n    const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n    const callback = (entries) => {\n        const [entry] = entries;\n        if (entry.isIntersecting) {\n            dispatchAppear(entry);\n        }\n        else if (controller.isVisible) {\n            dispatchDisappear(entry);\n        }\n    };\n    const dispatchAppear = (entry) => {\n        controller.isVisible = true;\n        method(controller, 'appear').call(controller, entry);\n        if (dispatchEvent) {\n            const eventName = composeEventName('appear', controller, eventPrefix);\n            const appearEvent = extendedEvent(eventName, null, { controller, entry });\n            targetElement.dispatchEvent(appearEvent);\n        }\n    };\n    const dispatchDisappear = (entry) => {\n        controller.isVisible = false;\n        method(controller, 'disappear').call(controller, entry);\n        if (dispatchEvent) {\n            const eventName = composeEventName('disappear', controller, eventPrefix);\n            const disappearEvent = extendedEvent(eventName, null, { controller, entry });\n            targetElement.dispatchEvent(disappearEvent);\n        }\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observer = new IntersectionObserver(callback, options);\n    const observe = () => {\n        observer.observe(targetElement);\n    };\n    const unobserve = () => {\n        observer.unobserve(targetElement);\n    };\n    Object.assign(controller, {\n        isVisible: false,\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass IntersectionComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.isVisible = false;\n    }\n}\nclass IntersectionController extends IntersectionComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useIntersection(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst useLazyLoad = (controller, options) => {\n    const callback = (entries) => {\n        const [entry] = entries;\n        if (entry.isIntersecting && !controller.isLoaded) {\n            handleAppear();\n        }\n    };\n    const handleAppear = (entry) => {\n        const src = controller.data.get('src');\n        if (!src)\n            return;\n        const imageElement = controller.element;\n        controller.isLoading = true;\n        method(controller, 'loading').call(controller, src);\n        imageElement.onload = () => {\n            handleLoaded(src);\n        };\n        imageElement.src = src;\n    };\n    const handleLoaded = (src) => {\n        controller.isLoading = false;\n        controller.isLoaded = true;\n        method(controller, 'loaded').call(controller, src);\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observer = new IntersectionObserver(callback, options);\n    const observe = () => {\n        observer.observe(controller.element);\n    };\n    const unobserve = () => {\n        observer.unobserve(controller.element);\n    };\n    Object.assign(controller, {\n        isVisible: false,\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass LazyLoadComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.isLoading = false;\n        this.isLoaded = false;\n    }\n}\nclass LazyLoadController extends LazyLoadComposableController {\n    constructor(context) {\n        super(context);\n        this.options = { rootMargin: '10%' };\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useLazyLoad(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst defaultOptions$6 = {\n    dispatchEvent: true,\n    eventPrefix: true\n};\nconst useResize = (controller, options = {}) => {\n    const { dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$6, options);\n    const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n    const callback = (entries) => {\n        const [entry] = entries;\n        method(controller, 'resize').call(controller, entry.contentRect);\n        if (dispatchEvent) {\n            const eventName = composeEventName('resize', controller, eventPrefix);\n            const appearEvent = extendedEvent(eventName, null, {\n                controller,\n                entry\n            });\n            targetElement.dispatchEvent(appearEvent);\n        }\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observer = new ResizeObserver(callback);\n    const observe = () => {\n        observer.observe(targetElement);\n    };\n    const unobserve = () => {\n        observer.unobserve(targetElement);\n    };\n    Object.assign(controller, {\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass ResizeComposableController extends Controller {\n}\nclass ResizeController extends ResizeComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useResize(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst defaultOptions$5 = {\n    events: ['click', 'touchend'],\n    onlyVisible: true,\n    dispatchEvent: true,\n    eventPrefix: true\n};\nconst useClickOutside = (controller, options = {}) => {\n    const { onlyVisible, dispatchEvent, events, eventPrefix } = Object.assign({}, defaultOptions$5, options);\n    const onEvent = (event) => {\n        const targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n        if (targetElement.contains(event.target) || (!isElementInViewport(targetElement) && onlyVisible)) {\n            return;\n        }\n        if (controller.clickOutside) {\n            controller.clickOutside(event);\n        }\n        if (dispatchEvent) {\n            const eventName = composeEventName('click:outside', controller, eventPrefix);\n            const clickOutsideEvent = extendedEvent(eventName, event, { controller });\n            targetElement.dispatchEvent(clickOutsideEvent);\n        }\n    };\n    const observe = () => {\n        events === null || events === void 0 ? void 0 : events.forEach(event => {\n            window.addEventListener(event, onEvent, false);\n        });\n    };\n    const unobserve = () => {\n        events === null || events === void 0 ? void 0 : events.forEach(event => {\n            window.removeEventListener(event, onEvent, false);\n        });\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    Object.assign(controller, {\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass ClickOutsideComposableController extends Controller {\n}\nclass ClickOutsideController extends ClickOutsideComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useClickOutside(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\n\nconst defaultOptions$4 = {\n    debug: false,\n    logger: console,\n    dispatchEvent: true,\n    eventPrefix: true\n};\nclass StimulusUse {\n    constructor(controller, options = {}) {\n        var _a, _b, _c;\n        this.log = (functionName, args) => {\n            if (!this.debug)\n                return;\n            this.logger.groupCollapsed(`%c${this.controller.identifier} %c#${functionName}`, 'color: #3B82F6', 'color: unset');\n            this.logger.log(Object.assign({ controllerId: this.controllerId }, args));\n            this.logger.groupEnd();\n        };\n        this.dispatch = (eventName, details = {}) => {\n            if (this.dispatchEvent) {\n                const { event } = details, eventDetails = __rest(details, [\"event\"]);\n                const customEvent = this.extendedEvent(eventName, event || null, eventDetails);\n                this.targetElement.dispatchEvent(customEvent);\n                this.log('dispatchEvent', Object.assign({ eventName: customEvent.type }, eventDetails));\n            }\n        };\n        this.call = (methodName, args = {}) => {\n            const method = this.controller[methodName];\n            if (typeof method == 'function') {\n                return method.call(this.controller, args);\n            }\n        };\n        this.extendedEvent = (name, event, detail) => {\n            const { bubbles, cancelable, composed } = event || { bubbles: true, cancelable: true, composed: true };\n            if (event) {\n                Object.assign(detail, { originalEvent: event });\n            }\n            const customEvent = new CustomEvent(this.composeEventName(name), {\n                bubbles,\n                cancelable,\n                composed,\n                detail\n            });\n            return customEvent;\n        };\n        this.composeEventName = (name) => {\n            let composedName = name;\n            if (this.eventPrefix === true) {\n                composedName = `${this.controller.identifier}:${name}`;\n            }\n            else if (typeof this.eventPrefix === 'string') {\n                composedName = `${this.eventPrefix}:${name}`;\n            }\n            return composedName;\n        };\n        this.debug = (_b = (_a = options === null || options === void 0 ? void 0 : options.debug) !== null && _a !== void 0 ? _a : controller.application.stimulusUseDebug) !== null && _b !== void 0 ? _b : defaultOptions$4.debug;\n        this.logger = (_c = options === null || options === void 0 ? void 0 : options.logger) !== null && _c !== void 0 ? _c : defaultOptions$4.logger;\n        this.controller = controller;\n        this.controllerId = controller.element.id || controller.element.dataset.id;\n        this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n        const { dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$4, options);\n        Object.assign(this, { dispatchEvent, eventPrefix });\n        this.controllerInitialize = controller.initialize.bind(controller);\n        this.controllerConnect = controller.connect.bind(controller);\n        this.controllerDisconnect = controller.disconnect.bind(controller);\n    }\n}\n\nconst defaultOptions$3 = {\n    eventPrefix: true,\n    bubbles: true,\n    cancelable: true\n};\nclass UseDispatch extends StimulusUse {\n    constructor(controller, options = {}) {\n        var _a, _b, _c, _d;\n        super(controller, options);\n        this.dispatch = (eventName, detail = {}) => {\n            const { controller, targetElement, eventPrefix, bubbles, cancelable, log } = this;\n            Object.assign(detail, { controller });\n            const eventNameWithPrefix = composeEventName(eventName, this.controller, eventPrefix);\n            const event = new CustomEvent(eventNameWithPrefix, {\n                detail,\n                bubbles,\n                cancelable\n            });\n            targetElement.dispatchEvent(event);\n            log('dispatch', { eventName: eventNameWithPrefix, detail, bubbles, cancelable });\n            return event;\n        };\n        this.targetElement = (_a = options.element) !== null && _a !== void 0 ? _a : controller.element;\n        this.eventPrefix = (_b = options.eventPrefix) !== null && _b !== void 0 ? _b : defaultOptions$3.eventPrefix;\n        this.bubbles = (_c = options.bubbles) !== null && _c !== void 0 ? _c : defaultOptions$3.bubbles;\n        this.cancelable = (_d = options.cancelable) !== null && _d !== void 0 ? _d : defaultOptions$3.cancelable;\n        this.enhanceController();\n    }\n    enhanceController() {\n        Object.assign(this.controller, { dispatch: this.dispatch });\n    }\n}\nconst useDispatch = (controller, options = {}) => {\n    return new UseDispatch(controller, options);\n};\n\nconst useApplication = (controller, options = {}) => {\n    Object.defineProperty(controller, 'isPreview', {\n        get() {\n            return (document.documentElement.hasAttribute('data-turbolinks-preview') ||\n                document.documentElement.hasAttribute('data-turbo-preview'));\n        }\n    });\n    Object.defineProperty(controller, 'isConnected', {\n        get() {\n            return !!Array.from(this.context.module.connectedContexts).find(c => c === this.context);\n        }\n    });\n    Object.defineProperty(controller, 'csrfToken', {\n        get() {\n            return this.metaValue('csrf-token');\n        }\n    });\n    useDispatch(controller, options);\n    Object.assign(controller, {\n        metaValue(name) {\n            const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n            return element && element.getAttribute('content');\n        }\n    });\n};\n\nclass ApplicationController extends Controller {\n    constructor(context) {\n        super(context);\n        this.isPreview = false;\n        this.isConnected = false;\n        this.csrfToken = '';\n        useApplication(this, this.options);\n    }\n}\n\nconst defaultEvents = ['mousemove', 'mousedown', 'resize', 'keydown', 'touchstart', 'wheel'];\nconst oneMinute = 60e3;\nconst defaultOptions$2 = {\n    ms: oneMinute,\n    initialState: false,\n    events: defaultEvents,\n    dispatchEvent: true,\n    eventPrefix: true\n};\nconst useIdle = (controller, options = {}) => {\n    const { ms, initialState, events, dispatchEvent, eventPrefix } = Object.assign({}, defaultOptions$2, options);\n    let isIdle = initialState;\n    let timeout = setTimeout(() => {\n        isIdle = true;\n        dispatchAway();\n    }, ms);\n    const dispatchAway = (event) => {\n        const eventName = composeEventName('away', controller, eventPrefix);\n        controller.isIdle = true;\n        method(controller, 'away').call(controller, event);\n        if (dispatchEvent) {\n            const clickOutsideEvent = extendedEvent(eventName, event || null, { controller });\n            controller.element.dispatchEvent(clickOutsideEvent);\n        }\n    };\n    const dispatchBack = (event) => {\n        const eventName = composeEventName('back', controller, eventPrefix);\n        controller.isIdle = false;\n        method(controller, 'back').call(controller, event);\n        if (dispatchEvent) {\n            const clickOutsideEvent = extendedEvent(eventName, event || null, { controller });\n            controller.element.dispatchEvent(clickOutsideEvent);\n        }\n    };\n    const onEvent = (event) => {\n        if (isIdle)\n            dispatchBack(event);\n        isIdle = false;\n        clearTimeout(timeout);\n        timeout = setTimeout(() => {\n            isIdle = true;\n            dispatchAway(event);\n        }, ms);\n    };\n    const onVisibility = (event) => {\n        if (!document.hidden)\n            onEvent(event);\n    };\n    if (isIdle) {\n        dispatchAway();\n    }\n    else {\n        dispatchBack();\n    }\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observe = () => {\n        events.forEach(event => {\n            window.addEventListener(event, onEvent);\n        });\n        document.addEventListener('visibilitychange', onVisibility);\n    };\n    const unobserve = () => {\n        events.forEach(event => {\n            window.removeEventListener(event, onEvent);\n        });\n        document.removeEventListener('visibilitychange', onVisibility);\n    };\n    Object.assign(controller, {\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass IdleComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.isIdle = false;\n    }\n}\nclass IdleController extends IdleComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useIdle(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nclass UseVisibility extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            this.controller.isVisible = !document.hidden;\n            document.addEventListener('visibilitychange', this.handleVisibilityChange);\n            this.handleVisibilityChange();\n        };\n        this.unobserve = () => {\n            document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n        };\n        this.becomesInvisible = (event) => {\n            this.controller.isVisible = false;\n            this.call('invisible', event);\n            this.log('invisible', { isVisible: false });\n            this.dispatch('invisible', { event, isVisible: false });\n        };\n        this.becomesVisible = (event) => {\n            this.controller.isVisible = true;\n            this.call('visible', event);\n            this.log('visible', { isVisible: true });\n            this.dispatch('visible', { event, isVisible: true });\n        };\n        this.handleVisibilityChange = (event) => {\n            if (document.hidden) {\n                this.becomesInvisible(event);\n            }\n            else {\n                this.becomesVisible(event);\n            }\n        };\n        this.controller = controller;\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controllerDisconnect;\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useVisibility = (controller, options = {}) => {\n    const observer = new UseVisibility(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass VisibilityComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.isVisible = false;\n    }\n}\nclass VisibilityController extends VisibilityComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useVisibility(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nclass UseHover extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            this.targetElement.addEventListener('mouseenter', this.onEnter);\n            this.targetElement.addEventListener('mouseleave', this.onLeave);\n        };\n        this.unobserve = () => {\n            this.targetElement.removeEventListener('mouseenter', this.onEnter);\n            this.targetElement.removeEventListener('mouseleave', this.onLeave);\n        };\n        this.onEnter = (event) => {\n            this.call('mouseEnter', event);\n            this.log('mouseEnter', { hover: true });\n            this.dispatch('mouseEnter', { hover: false });\n        };\n        this.onLeave = (event) => {\n            this.call('mouseLeave', event);\n            this.log('mouseLeave', { hover: false });\n            this.dispatch('mouseLeave', { hover: false });\n        };\n        this.controller = controller;\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useHover = (controller, options = {}) => {\n    const observer = new UseHover(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass HoverComposableController extends Controller {\n}\nclass HoverController extends HoverComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useHover(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nclass UseMutation extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            try {\n                this.observer.observe(this.targetElement, this.options);\n            }\n            catch (error) {\n                this.controller.application.handleError(error, 'At a minimum, one of childList, attributes, and/or characterData must be true', {});\n            }\n        };\n        this.unobserve = () => {\n            this.observer.disconnect();\n        };\n        this.mutation = (entries) => {\n            this.call('mutate', entries);\n            this.log('mutate', { entries });\n            this.dispatch('mutate', { entries });\n        };\n        this.targetElement = (options === null || options === void 0 ? void 0 : options.element) || controller.element;\n        this.controller = controller;\n        this.options = options;\n        this.observer = new MutationObserver(this.mutation);\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useMutation = (controller, options = {}) => {\n    const observer = new UseMutation(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass MutationComposableController extends Controller {\n}\nclass MutationController extends MutationComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useMutation(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nclass UseTargetMutation extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            this.observer.observe(this.targetElement, {\n                subtree: true,\n                characterData: true,\n                childList: true,\n                attributes: true,\n                attributeOldValue: true,\n                attributeFilter: [this.targetSelector, this.scopedTargetSelector]\n            });\n        };\n        this.unobserve = () => {\n            this.observer.disconnect();\n        };\n        this.mutation = (entries) => {\n            for (const mutation of entries) {\n                switch (mutation.type) {\n                    case 'attributes':\n                        let newValue = mutation.target.getAttribute(mutation.attributeName);\n                        let oldValue = mutation.oldValue;\n                        if (mutation.attributeName === this.targetSelector || mutation.attributeName === this.scopedTargetSelector) {\n                            let oldTargets = this.targetsUsedByThisController(oldValue);\n                            let newTargets = this.targetsUsedByThisController(newValue);\n                            let removedTargets = oldTargets.filter(target => !newTargets.includes(target));\n                            let addedTargets = newTargets.filter(target => !oldTargets.includes(target));\n                            removedTargets.forEach(target => this.targetRemoved(this.stripIdentifierPrefix(target), mutation.target, 'attributeChange'));\n                            addedTargets.forEach(target => this.targetAdded(this.stripIdentifierPrefix(target), mutation.target, 'attributeChange'));\n                        }\n                        break;\n                    case 'characterData':\n                        let nodule = this.findTargetInAncestry(mutation.target);\n                        if (nodule == null) {\n                            return;\n                        }\n                        else {\n                            let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n                            supportedTargets.forEach((target) => {\n                                this.targetChanged(this.stripIdentifierPrefix(target), nodule, 'domMutation');\n                            });\n                        }\n                        break;\n                    case 'childList':\n                        let { addedNodes, removedNodes } = mutation;\n                        addedNodes.forEach((node) => this.processNodeDOMMutation(node, this.targetAdded));\n                        removedNodes.forEach((node) => this.processNodeDOMMutation(node, this.targetRemoved));\n                        break;\n                }\n            }\n        };\n        this.controller = controller;\n        this.options = options;\n        this.targetElement = controller.element;\n        this.identifier = controller.scope.identifier;\n        this.identifierPrefix = `${this.identifier}.`;\n        this.targetSelector = controller.scope.schema.targetAttribute;\n        this.scopedTargetSelector = `data-${this.identifier}-target`;\n        this.targets = options.targets || controller.constructor.targets;\n        this.prefixedTargets = this.targets.map(target => `${this.identifierPrefix}${target}`);\n        this.observer = new MutationObserver(this.mutation);\n        this.enhanceController();\n        this.observe();\n    }\n    processNodeDOMMutation(node, initialChangeModeAssumption) {\n        let nodule = node;\n        let change = initialChangeModeAssumption;\n        let supportedTargets = [];\n        if (nodule.nodeName == '#text' || this.targetsUsedByThisControllerFromNode(nodule).length == 0) {\n            change = this.targetChanged;\n            nodule = this.findTargetInAncestry(node);\n        }\n        else {\n            supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n        }\n        if (nodule == null) {\n            return;\n        }\n        else if (supportedTargets.length == 0) {\n            supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n        }\n        supportedTargets.forEach((target) => {\n            change.call(this, this.stripIdentifierPrefix(target), nodule, 'domMutation');\n        });\n    }\n    findTargetInAncestry(node) {\n        let nodule = node;\n        let supportedTargets = [];\n        if (nodule.nodeName != '#text') {\n            supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n        }\n        while (nodule.parentNode !== null && nodule.parentNode != this.targetElement && supportedTargets.length == 0) {\n            nodule = nodule.parentNode;\n            if (nodule.nodeName !== '#text') {\n                let supportedTargets = this.targetsUsedByThisControllerFromNode(nodule);\n                if (supportedTargets.length > 0) {\n                    return nodule;\n                }\n            }\n        }\n        if (nodule.nodeName == '#text') {\n            return null;\n        }\n        if (nodule.parentNode == null) {\n            return null;\n        }\n        if (nodule.parentNode == this.targetElement) {\n            if (this.targetsUsedByThisControllerFromNode(nodule).length > 0) {\n                return nodule;\n            }\n            return null;\n        }\n        return null;\n    }\n    targetAdded(name, node, trigger) {\n        let targetCallback = `${name}TargetAdded`;\n        this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n        this.log('targetAdded', { target: name, node, trigger });\n    }\n    targetRemoved(name, node, trigger) {\n        let targetCallback = `${name}TargetRemoved`;\n        this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n        this.log('targetRemoved', { target: name, node, trigger });\n    }\n    targetChanged(name, node, trigger) {\n        let targetCallback = `${name}TargetChanged`;\n        this.controller[targetCallback] && method(this.controller, targetCallback).call(this.controller, node);\n        this.log('targetChanged', { target: name, node, trigger });\n    }\n    targetsUsedByThisControllerFromNode(node) {\n        if (node.nodeName == '#text' || node.nodeName == '#comment') {\n            return [];\n        }\n        let nodeElement = node;\n        return this.targetsUsedByThisController(nodeElement.getAttribute(this.scopedTargetSelector) || nodeElement.getAttribute(this.targetSelector));\n    }\n    targetsUsedByThisController(targetStr) {\n        targetStr = targetStr || '';\n        let targetsToCheck = this.stripIdentifierPrefix(targetStr).split(' ');\n        return this.targets.filter(n => targetsToCheck.indexOf(n) !== -1);\n    }\n    stripIdentifierPrefix(target) {\n        return target.replace(new RegExp(this.identifierPrefix, 'g'), '');\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useTargetMutation = (controller, options = {}) => {\n    const observer = new UseTargetMutation(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass TargetMutationComposableController extends Controller {\n}\nclass TargetMutationController extends TargetMutationComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useTargetMutation(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst useWindowResize = (controller) => {\n    const callback = (event) => {\n        const { innerWidth, innerHeight } = window;\n        const payload = {\n            height: innerHeight || Infinity,\n            width: innerWidth || Infinity,\n            event\n        };\n        method(controller, 'windowResize').call(controller, payload);\n    };\n    const controllerDisconnect = controller.disconnect.bind(controller);\n    const observe = () => {\n        window.addEventListener('resize', callback);\n        callback();\n    };\n    const unobserve = () => {\n        window.removeEventListener('resize', callback);\n    };\n    Object.assign(controller, {\n        disconnect() {\n            unobserve();\n            controllerDisconnect();\n        }\n    });\n    observe();\n    return [observe, unobserve];\n};\n\nclass WindowResizeComposableController extends Controller {\n}\nclass WindowResizeController extends WindowResizeComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useWindowResize(this);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nconst memoize = (controller, name, value) => {\n    Object.defineProperty(controller, name, { value });\n    return value;\n};\nconst useMemo = (controller) => {\n    var _a;\n    (_a = controller.constructor.memos) === null || _a === void 0 ? void 0 : _a.forEach((getter) => {\n        memoize(controller, getter, controller[getter]);\n    });\n};\n\nclass DebounceController extends Controller {\n}\nDebounceController.debounces = [];\nconst defaultWait$1 = 200;\nconst debounce = (fn, wait = defaultWait$1) => {\n    let timeoutId = null;\n    return function () {\n        const args = arguments;\n        const context = this;\n        const callback = () => fn.apply(context, args);\n        if (timeoutId) {\n            clearTimeout(timeoutId);\n        }\n        timeoutId = setTimeout(callback, wait);\n    };\n};\nconst useDebounce = (controller, options) => {\n    var _a;\n    const constructor = controller.constructor;\n    (_a = constructor.debounces) === null || _a === void 0 ? void 0 : _a.forEach((func) => {\n        if (typeof func === 'string') {\n            controller[func] = debounce(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n        }\n        if (typeof func === 'object') {\n            const { name, wait } = func;\n            if (!name)\n                return;\n            controller[name] = debounce(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n        }\n    });\n};\n\nclass ThrottleController extends Controller {\n}\nThrottleController.throttles = [];\nconst defaultWait = 200;\nfunction throttle(func, wait = defaultWait) {\n    let inThrottle;\n    return function () {\n        const args = arguments;\n        const context = this;\n        if (!inThrottle) {\n            inThrottle = true;\n            func.apply(context, args);\n            setTimeout(() => (inThrottle = false), wait);\n        }\n    };\n}\nconst useThrottle = (controller, options = {}) => {\n    var _a;\n    const constructor = controller.constructor;\n    (_a = constructor.throttles) === null || _a === void 0 ? void 0 : _a.forEach((func) => {\n        if (typeof func === 'string') {\n            controller[func] = throttle(controller[func], options === null || options === void 0 ? void 0 : options.wait);\n        }\n        if (typeof func === 'object') {\n            const { name, wait } = func;\n            if (!name)\n                return;\n            controller[name] = throttle(controller[name], wait || (options === null || options === void 0 ? void 0 : options.wait));\n        }\n    });\n};\n\nconst defineMetaGetter = (controller, metaName, suffix) => {\n    const getterName = suffix ? `${camelize(metaName)}Meta` : camelize(metaName);\n    Object.defineProperty(controller, getterName, {\n        get() {\n            return typeCast(metaValue(metaName));\n        }\n    });\n};\nfunction metaValue(name) {\n    const element = document.head.querySelector(`meta[name=\"${name}\"]`);\n    return element && element.getAttribute('content');\n}\nfunction typeCast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\nconst useMeta = (controller, options = { suffix: true }) => {\n    const metaNames = controller.constructor.metaNames;\n    const suffix = options.suffix;\n    metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName) => {\n        defineMetaGetter(controller, metaName, suffix);\n    });\n    Object.defineProperty(controller, 'metas', {\n        get() {\n            const result = {};\n            metaNames === null || metaNames === void 0 ? void 0 : metaNames.forEach((metaName) => {\n                const value = typeCast(metaValue(metaName));\n                if (value !== undefined && value !== null) {\n                    result[camelize(metaName)] = value;\n                }\n            });\n            return result;\n        }\n    });\n};\n\nconst alpineNames = {\n    enterFromClass: 'enter',\n    enterActiveClass: 'enterStart',\n    enterToClass: 'enterEnd',\n    leaveFromClass: 'leave',\n    leaveActiveClass: 'leaveStart',\n    leaveToClass: 'leaveEnd'\n};\nconst defaultOptions$1 = {\n    transitioned: false,\n    hiddenClass: 'hidden',\n    preserveOriginalClass: true,\n    removeToClasses: true\n};\nconst useTransition = (controller, options = {}) => {\n    var _a, _b, _c;\n    const targetName = controller.element.dataset.transitionTarget;\n    let targetFromAttribute;\n    if (targetName) {\n        targetFromAttribute = controller[`${targetName}Target`];\n    }\n    const targetElement = (options === null || options === void 0 ? void 0 : options.element) || targetFromAttribute || controller.element;\n    if (!(targetElement instanceof HTMLElement || targetElement instanceof SVGElement))\n        return;\n    const dataset = targetElement.dataset;\n    const leaveAfter = parseInt(dataset.leaveAfter || '') || options.leaveAfter || 0;\n    const { transitioned, hiddenClass, preserveOriginalClass, removeToClasses } = Object.assign(defaultOptions$1, options);\n    const controllerEnter = (_a = controller.enter) === null || _a === void 0 ? void 0 : _a.bind(controller);\n    const controllerLeave = (_b = controller.leave) === null || _b === void 0 ? void 0 : _b.bind(controller);\n    const controllerToggleTransition = (_c = controller.toggleTransition) === null || _c === void 0 ? void 0 : _c.bind(controller);\n    async function enter(event) {\n        if (controller.transitioned)\n            return;\n        controller.transitioned = true;\n        controllerEnter && controllerEnter(event);\n        const enterFromClasses = getAttribute('enterFrom', options, dataset);\n        const enterActiveClasses = getAttribute('enterActive', options, dataset);\n        const enterToClasses = getAttribute('enterTo', options, dataset);\n        const leaveToClasses = getAttribute('leaveTo', options, dataset);\n        if (!!hiddenClass) {\n            targetElement.classList.remove(hiddenClass);\n        }\n        if (!removeToClasses) {\n            removeClasses(targetElement, leaveToClasses);\n        }\n        await transition(targetElement, enterFromClasses, enterActiveClasses, enterToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n        if (leaveAfter > 0) {\n            setTimeout(() => {\n                leave(event);\n            }, leaveAfter);\n        }\n    }\n    async function leave(event) {\n        if (!controller.transitioned)\n            return;\n        controller.transitioned = false;\n        controllerLeave && controllerLeave(event);\n        const leaveFromClasses = getAttribute('leaveFrom', options, dataset);\n        const leaveActiveClasses = getAttribute('leaveActive', options, dataset);\n        const leaveToClasses = getAttribute('leaveTo', options, dataset);\n        const enterToClasses = getAttribute('enterTo', options, dataset);\n        if (!removeToClasses) {\n            removeClasses(targetElement, enterToClasses);\n        }\n        await transition(targetElement, leaveFromClasses, leaveActiveClasses, leaveToClasses, hiddenClass, preserveOriginalClass, removeToClasses);\n        if (!!hiddenClass) {\n            targetElement.classList.add(hiddenClass);\n        }\n    }\n    function toggleTransition(event) {\n        controllerToggleTransition && controllerToggleTransition(event);\n        if (controller.transitioned) {\n            leave();\n        }\n        else {\n            enter();\n        }\n    }\n    async function transition(element, initialClasses, activeClasses, endClasses, hiddenClass, preserveOriginalClass, removeEndClasses) {\n        const stashedClasses = [];\n        if (preserveOriginalClass) {\n            initialClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n            activeClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n            endClasses.forEach(cls => element.classList.contains(cls) && cls !== hiddenClass && stashedClasses.push(cls));\n        }\n        addClasses(element, initialClasses);\n        removeClasses(element, stashedClasses);\n        addClasses(element, activeClasses);\n        await nextAnimationFrame();\n        removeClasses(element, initialClasses);\n        addClasses(element, endClasses);\n        await afterTransition(element);\n        removeClasses(element, activeClasses);\n        if (removeEndClasses) {\n            removeClasses(element, endClasses);\n        }\n        addClasses(element, stashedClasses);\n    }\n    function initialState() {\n        controller.transitioned = transitioned;\n        if (transitioned) {\n            if (!!hiddenClass) {\n                targetElement.classList.remove(hiddenClass);\n            }\n            enter();\n        }\n        else {\n            if (!!hiddenClass) {\n                targetElement.classList.add(hiddenClass);\n            }\n            leave();\n        }\n    }\n    function addClasses(element, classes) {\n        if (classes.length > 0) {\n            element.classList.add(...classes);\n        }\n    }\n    function removeClasses(element, classes) {\n        if (classes.length > 0) {\n            element.classList.remove(...classes);\n        }\n    }\n    initialState();\n    Object.assign(controller, { enter, leave, toggleTransition });\n    return [enter, leave, toggleTransition];\n};\nfunction getAttribute(name, options, dataset) {\n    const datasetName = `transition${name[0].toUpperCase()}${name.substr(1)}`;\n    const datasetAlpineName = alpineNames[name];\n    const classes = options[name] || dataset[datasetName] || dataset[datasetAlpineName] || ' ';\n    return isEmpty(classes) ? [] : classes.split(' ');\n}\nasync function afterTransition(element) {\n    return new Promise(resolve => {\n        const duration = Number(getComputedStyle(element).transitionDuration.split(',')[0].replace('s', '')) * 1000;\n        setTimeout(() => {\n            resolve(duration);\n        }, duration);\n    });\n}\nasync function nextAnimationFrame() {\n    return new Promise(resolve => {\n        requestAnimationFrame(() => {\n            requestAnimationFrame(resolve);\n        });\n    });\n}\nfunction isEmpty(str) {\n    return str.length === 0 || !str.trim();\n}\n\nclass TransitionComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.transitioned = false;\n    }\n}\nclass TransitionController extends TransitionComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            useTransition(this, this.options);\n        });\n    }\n}\n\nclass UseHotkeys extends StimulusUse {\n    constructor(controller, hotkeysOptions) {\n        super(controller, hotkeysOptions);\n        this.bind = () => {\n            for (const [hotkey, definition] of Object.entries(this.hotkeysOptions.hotkeys)) {\n                const handler = definition.handler.bind(this.controller);\n                hotkeys(hotkey, definition.options, (e) => handler(e, e));\n            }\n        };\n        this.unbind = () => {\n            for (const hotkey in this.hotkeysOptions.hotkeys) {\n                hotkeys.unbind(hotkey);\n            }\n        };\n        this.controller = controller;\n        this.hotkeysOptions = hotkeysOptions;\n        this.enhanceController();\n        this.bind();\n    }\n    enhanceController() {\n        if (this.hotkeysOptions.filter) {\n            hotkeys.filter = this.hotkeysOptions.filter;\n        }\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unbind();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst convertSimpleHotkeyDefinition = (definition) => {\n    return {\n        handler: definition[0],\n        options: {\n            element: definition[1]\n        }\n    };\n};\nconst coerceOptions = (options) => {\n    if (!options.hotkeys) {\n        const hotkeys = {};\n        Object.entries(options).forEach(([hotkey, definition]) => {\n            Object.defineProperty(hotkeys, hotkey, {\n                value: convertSimpleHotkeyDefinition(definition),\n                writable: false,\n                enumerable: true\n            });\n        });\n        options = {\n            hotkeys\n        };\n    }\n    return options;\n};\nconst useHotkeys = (controller, options) => {\n    return new UseHotkeys(controller, coerceOptions(options));\n};\n\nconst defaultOptions = {\n    mediaQueries: {},\n    dispatchEvent: true,\n    eventPrefix: true,\n    debug: false\n};\nclass UseMatchMedia extends StimulusUse {\n    constructor(controller, options = {}) {\n        var _a, _b, _c, _d;\n        super(controller, options);\n        this.matches = [];\n        this.callback = (event) => {\n            const name = Object.keys(this.mediaQueries).find(name => this.mediaQueries[name] === event.media);\n            if (!name)\n                return;\n            const { media, matches } = event;\n            this.changed({ name, media, matches, event });\n        };\n        this.changed = (payload) => {\n            const { name } = payload;\n            if (payload.event) {\n                this.call(camelize(`${name}_changed`), payload);\n                this.dispatch(`${name}:changed`, payload);\n                this.log(`media query \"${name}\" changed`, payload);\n            }\n            if (payload.matches) {\n                this.call(camelize(`is_${name}`), payload);\n                this.dispatch(`is:${name}`, payload);\n            }\n            else {\n                this.call(camelize(`not_${name}`), payload);\n                this.dispatch(`not:${name}`, payload);\n            }\n        };\n        this.observe = () => {\n            Object.keys(this.mediaQueries).forEach(name => {\n                const media = this.mediaQueries[name];\n                const match = window.matchMedia(media);\n                match.addListener(this.callback);\n                this.matches.push(match);\n                this.changed({ name, media, matches: match.matches });\n            });\n        };\n        this.unobserve = () => {\n            this.matches.forEach(match => match.removeListener(this.callback));\n        };\n        this.controller = controller;\n        this.mediaQueries = (_a = options.mediaQueries) !== null && _a !== void 0 ? _a : defaultOptions.mediaQueries;\n        this.dispatchEvent = (_b = options.dispatchEvent) !== null && _b !== void 0 ? _b : defaultOptions.dispatchEvent;\n        this.eventPrefix = (_c = options.eventPrefix) !== null && _c !== void 0 ? _c : defaultOptions.eventPrefix;\n        this.debug = (_d = options.debug) !== null && _d !== void 0 ? _d : defaultOptions.debug;\n        if (!window.matchMedia) {\n            console.error('window.matchMedia() is not available');\n            return;\n        }\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controller.disconnect.bind(this.controller);\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useMatchMedia = (controller, options = {}) => {\n    const observer = new UseMatchMedia(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass UseWindowFocus extends StimulusUse {\n    constructor(controller, options = {}) {\n        super(controller, options);\n        this.observe = () => {\n            if (document.hasFocus()) {\n                this.becomesFocused();\n            }\n            else {\n                console.log('i should be there');\n                this.becomesUnfocused();\n            }\n            this.interval = setInterval(() => {\n                this.handleWindowFocusChange();\n            }, this.intervalDuration);\n        };\n        this.unobserve = () => {\n            clearInterval(this.interval);\n        };\n        this.becomesUnfocused = (event) => {\n            this.controller.hasFocus = false;\n            this.call('unfocus', event);\n            this.log('unfocus', { hasFocus: false });\n            this.dispatch('unfocus', { event, hasFocus: false });\n        };\n        this.becomesFocused = (event) => {\n            this.controller.hasFocus = true;\n            this.call('focus', event);\n            this.log('focus', { hasFocus: true });\n            this.dispatch('focus', { event, hasFocus: true });\n        };\n        this.handleWindowFocusChange = (event) => {\n            if (document.hasFocus() && !this.controller.hasFocus) {\n                this.becomesFocused(event);\n            }\n            else if (!document.hasFocus() && this.controller.hasFocus) {\n                this.becomesUnfocused(event);\n            }\n        };\n        this.controller = controller;\n        this.intervalDuration = options.interval || 200;\n        this.enhanceController();\n        this.observe();\n    }\n    enhanceController() {\n        const controllerDisconnect = this.controllerDisconnect;\n        const disconnect = () => {\n            this.unobserve();\n            controllerDisconnect();\n        };\n        Object.assign(this.controller, { disconnect });\n    }\n}\nconst useWindowFocus = (controller, options = {}) => {\n    const observer = new UseWindowFocus(controller, options);\n    return [observer.observe, observer.unobserve];\n};\n\nclass WindowFocusComposableController extends Controller {\n    constructor() {\n        super(...arguments);\n        this.hasFocus = false;\n    }\n}\nclass WindowFocusController extends WindowFocusComposableController {\n    constructor(context) {\n        super(context);\n        requestAnimationFrame(() => {\n            const [observe, unobserve] = useWindowFocus(this, this.options);\n            Object.assign(this, { observe, unobserve });\n        });\n    }\n}\n\nexport { ApplicationController, ClickOutsideController, HoverController, IdleController, IntersectionController, LazyLoadController, MutationController, ResizeController, TargetMutationController, TransitionController, UseHover, UseMutation, UseTargetMutation, UseVisibility, VisibilityController, WindowFocusController, WindowResizeController, useApplication, useClickOutside, useDebounce, useDispatch, useHotkeys, useHover, useIdle, useIntersection, useLazyLoad, useMatchMedia, useMemo, useMeta, useMutation, useResize, useTargetMutation, useThrottle, useTransition, useVisibility, useWindowFocus, useWindowResize };\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class ClickOutsideController extends Controller {\n  static values = { ignore: String }\n\n  connect() {\n    useClickOutside(this, {\n      dispatchEvent: false,\n    })\n  }\n\n  clickOutside(event) {\n    if (this.hasIgnoreValue) {\n      const ignoreElement = document.querySelector(this.ignoreValue)\n      if (event.target === ignoreElement || ignoreElement.contains(event.target)) {\n        return\n      }\n    }\n\n    this.element.dispatchEvent(new Event('click:outside'))\n  }\n}\n", "/***\n * Removes extra backdrops and other modals\n */\nfunction removeModals() {\n  for (const _modal of [...document.querySelectorAll('.modal')]) {\n    $(_modal).on('hidden.bs.modal', function () {\n      $(this).remove()\n    })\n\n    $(_modal).modal('hide')\n  }\n  // These are technically vestigial now we should rewrite the modal js\n  for (const _backdrop of [...document.querySelectorAll('.modal-backdrop')]) {\n    _backdrop.remove()\n  }\n}\n\nfunction removeModalOpen() {\n  document.body.classList.remove('modal-open')\n}\n\nexport function manageClassEventDragAndDrop(modal, calendar) {\n  $(modal).modal('show')\n\n  const closeBtn = modal.querySelector('.fa-xmark')\n  const cancelBtn = modal.querySelector('.btn.btn-default')\n  const saveBtn = modal.querySelector('.btn.btn-primary')\n\n  closeBtn.addEventListener(\n    'click',\n    () => {\n      calendar.refetchEvents()\n      removeModalOpen()\n    },\n    {\n      once: true,\n    },\n  ),\n    cancelBtn.addEventListener(\n      'click',\n      () => {\n        calendar.refetchEvents()\n        removeModalOpen()\n      },\n      {\n        once: true,\n      },\n    ),\n    saveBtn.addEventListener(\n      'click',\n      () => {\n        modal.remove()\n        removeModalOpen()\n      },\n      {\n        once: true,\n      },\n    )\n}\n\nfunction modal(showBackdrop) {\n  const _modal = document.createElement('div')\n  _modal.classList.add('modal')\n  _modal.classList.add('modal-form')\n  _modal.classList.add('success-modal')\n  _modal.classList.add('fade')\n  _modal.setAttribute('role', 'dialog')\n  _modal.setAttribute('tabindex', '-1')\n  _modal.setAttribute('data-backdrop', showBackdrop ? 'true' : 'false')\n\n  return _modal\n}\n\nfunction modalDialog() {\n  const _modalDialog = document.createElement('div')\n  _modalDialog.classList.add('modal-dialog')\n  return _modalDialog\n}\n\nfunction modalContent() {\n  const _modalContent = document.createElement('div')\n  _modalContent.classList.add('modal-content')\n  return _modalContent\n}\n\nfunction modalHeader() {\n  const _modalHeader = document.createElement('div')\n  _modalHeader.classList.add('modal-header')\n  return _modalHeader\n}\n\nfunction modalTitle(title, options) {\n  const _modalTitle = document.createElement('div')\n  _modalTitle.classList.add('modal-title')\n  if (options.classes) {\n    _modalTitle.classList.add(options.classes)\n  }\n  _modalTitle.innerHTML = title\n  return _modalTitle\n}\n\nfunction modalBody() {\n  const _modalBody = document.createElement('div')\n  _modalBody.classList.add('modal-body')\n  return _modalBody\n}\nfunction modalBodyMessage(message) {\n  const _modalBodyMessage = document.createElement('div')\n  _modalBodyMessage.classList.add('text-center')\n  _modalBodyMessage.innerHTML = message\n  return _modalBodyMessage\n}\n\nfunction modalFooter() {\n  const _modalFooter = document.createElement('div')\n  _modalFooter.classList.add('modal-footer')\n  return _modalFooter\n}\n\nfunction closeButton() {\n  const _closeButton = document.createElement('button')\n  _closeButton.classList.add('close')\n  _closeButton.setAttribute('type', 'button')\n  _closeButton.setAttribute('aria-label', 'Close')\n  _closeButton.addEventListener('click', removeModals)\n  return _closeButton\n}\n\nfunction icon() {\n  const _icon = document.createElement('i')\n  _icon.classList.add('fa')\n  _icon.classList.add('fa-times')\n  return _icon\n}\n\nfunction cancelButton(denyText) {\n  const _cancelButton = document.createElement('button')\n  _cancelButton.classList.add('btn')\n  _cancelButton.classList.add('btn-default')\n  _cancelButton.setAttribute('type', 'button')\n  _cancelButton.addEventListener('click', removeModals)\n  _cancelButton.innerHTML = denyText\n  return _cancelButton\n}\n\nfunction submitButton(confirmText, form_id) {\n  const _submitButton = document.createElement('button')\n  _submitButton.classList.add('btn')\n  _submitButton.classList.add('btn-primary')\n  _submitButton.setAttribute('type', 'submit')\n  _submitButton.setAttribute('form', form_id)\n  _submitButton.setAttribute('name', 'commit')\n  _submitButton.innerHTML = confirmText\n  return _submitButton\n}\n\nfunction submitAnchor(confirmText, path, method) {\n  const _submitAnchor = document.createElement('a')\n  _submitAnchor.classList.add('btn')\n  _submitAnchor.classList.add('btn-primary')\n  _submitAnchor.setAttribute('href', path)\n  _submitAnchor.setAttribute('data-method', method)\n  _submitAnchor.addEventListener('click', removeModals)\n  _submitAnchor.innerHTML = confirmText\n  return _submitAnchor\n}\n\n/***\n * Creates a modal with the given title, message, button text and options\n *\n * @param {String} title - The title of the modal\n * @param {String} confirmText - The text of the confirm button\n * @param {String} denyText - The text of the deny button\n * @param {String} message - The message to display in the modal\n * @param {Object} options - The form id or path to submit to as an object\n *\n * @return {HTMLElement} The completely constructed modal\n * @example\n * const modal = createModal('Confirm!', 'OK', 'Cancel', 'Your changes have been saved!', { form_id: '#form' })\n */\nexport function createModal(\n  title,\n  confirmText,\n  denyText,\n  message,\n  options = {\n    form_id: '',\n    path: '',\n    method: '',\n    payload: '',\n    showBackdrop: false,\n    classes: '',\n  },\n) {\n  const _modal = modal(options.showBackdrop)\n  const _modalDialog = modalDialog()\n  const _modalContent = modalContent()\n  const _modalHeader = modalHeader()\n  const _modalTitle = modalTitle(title, options)\n  const _modalBody = modalBody()\n  const _modalBodyMessage = modalBodyMessage(message)\n  const _modalFooter = modalFooter()\n  const _closeButton = closeButton()\n  const _icon = icon()\n  const _cancelButton = cancelButton(denyText)\n  const _submitButton = options.form_id\n    ? submitButton(confirmText, options.form_id)\n    : submitAnchor(confirmText, options.path, options.method)\n\n  // Construct the header\n  _closeButton.appendChild(_icon)\n  _modalHeader.appendChild(_modalTitle)\n  _modalHeader.appendChild(_closeButton)\n\n  // Construct the body\n  _modalBody.appendChild(_modalBodyMessage)\n\n  // Construct the footer\n  _modalFooter.appendChild(_cancelButton)\n  _modalFooter.appendChild(_submitButton)\n\n  // Slap all of those into the modal-content div\n  _modalContent.appendChild(_modalHeader)\n  _modalContent.appendChild(_modalBody)\n  _modalContent.appendChild(_modalFooter)\n\n  // Construct the final modal\n  _modalDialog.appendChild(_modalContent)\n  _modal.appendChild(_modalDialog)\n\n  return _modal\n}\n", "/***\n * Removes all extra modal backdrops so there is only one\n */\nexport function removeExtraBackdrops() {\n  if (document.querySelectorAll('.modal-backdrop').length > 1) {\n    document.querySelector('.modal-backdrop').remove()\n  }\n}\n\nexport function removeModalOpen() {\n  document.body.classList.remove('modal-open')\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { createModal, manageClassEventDragAndDrop } from '../helpers/confirmation_submit_helper'\nimport { removeExtraBackdrops } from '../helpers/modal_helper'\nimport { flatten } from 'q-flat'\n\n// TODO: This sucks, in reality any modals with confirmations should just send along\n// the actual confirmation modal and the confirmation should just be a part of\n// modal_controller.js\nexport default class extends Controller {\n  static targets = ['form']\n  static values = {\n    editMessage: String,\n    deleteMessage: String,\n    editTitle: String,\n    editSubmitText: String,\n    deleteTitle: String,\n    deleteSubmitText: String,\n    deletePath: String,\n    denyText: String,\n    showBackdrop: Boolean,\n  }\n\n  connect() {\n    document.addEventListener('confirmation-modal:open', this.showConfirmationModal, { once: true })\n  }\n\n  showConfirmationModal(event) {\n    event.preventDefault()\n    const payload = event.detail.data\n    const queryString = new URLSearchParams(flatten(payload))\n    const calendar = event.detail.calendar\n\n    this.modal = createModal(\n      event.detail.info.dataset.title,\n      event.detail.info.dataset.confirmText,\n      event.detail.info.dataset.denyText,\n      event.detail.info.dataset.message,\n      {\n        path: `${event.detail.path}${queryString}`,\n        method: 'post',\n        payload: `${queryString}`,\n        showBackdrop: true,\n      },\n    )\n\n    manageClassEventDragAndDrop(this.modal, calendar)\n  }\n\n  showEditConfirmation(event) {\n    event.preventDefault()\n    this.element.classList.add('hidden')\n\n    removeExtraBackdrops()\n\n    this.modal = createModal(\n      this.editTitleValue,\n      this.editSubmitTextValue,\n      this.denyTextValue,\n      this.editMessageValue,\n      {\n        form_id: this.formTarget.id,\n      },\n    )\n\n    $(this.modal).modal('show')\n  }\n\n  showDeleteConfirmation(event) {\n    event.preventDefault()\n\n    if (!document.querySelector('#classes-wrapper')) {\n      this.element.classList.add('hidden')\n    }\n\n    removeExtraBackdrops()\n\n    this.modal = createModal(\n      this.deleteTitleValue,\n      this.deleteSubmitTextValue,\n      this.denyTextValue,\n      this.deleteMessageValue,\n      {\n        path: this.deletePathValue,\n        method: 'delete',\n        showBackdrop: this.showBackdropValue || false,\n        classes: 'title-center',\n      },\n    )\n\n    $(this.modal).modal('show')\n  }\n\n  hide() {\n    this.modal.classList.add('hidden')\n    document.querySelector('.modal-backdrop').classList.add('hidden')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { initializeDropdownTabs, initializeTooltips } from '../../../vendor/assets/javascripts/voltage'\nimport { put } from '../helpers/fetch_helper'\n\n// TODO: Most of the stuff here isn't great and should be refactored\nexport default class extends Controller {\n  connect() {\n    initializeDropdownTabs($(this.element))\n    initializeTooltips($(this.element))\n\n    // This should just be links with turbo tbh\n    this.initializeSortingColumns()\n\n    this.element.addEventListener('collapse--component:complete', this.setCollapseExpandPreference.bind(this))\n  }\n\n  disconnect() {\n    this.element.removeEventListener('collapse--component:complete', this.setCollapseExpandPreference)\n  }\n\n  ///\n  /// private\n  ///\n  initializeSortingColumns() {\n    for (const header of [...this.element.querySelectorAll('th.sortable-column')]) {\n      header.addEventListener(\n        'click',\n        () => {\n          const sortColumn = header.classList[1]\n          const sortAscending = !header.classList.contains('selected-up')\n          const url = new URL(this.frame.src)\n\n          url.searchParams.set('sort_by', sortColumn)\n          url.searchParams.set('sort_asc', sortAscending)\n\n          this.frame.src = url\n        },\n        { once: true },\n      )\n    }\n  }\n\n  setCollapseExpandPreference(event) {\n    const collapsed = event.detail.collapsed\n    const sectionName = this.frame.id.replaceAll(/-/g, '_')\n\n    put('/preferences', {\n      key: 'dashboard_collapse',\n      preferences: {\n        [sectionName]: collapsed ? 'collapsed' : 'expanded',\n      },\n    })\n  }\n\n  get frame() {\n    return this.element.closest('turbo-frame')\n  }\n}\n", "/**!\n * Sortable 1.14.0\n * @author\tRubaXa   <trash@rubaxa.org>\n * @author\towenm    <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.14.0\";\n\nfunction userAgent(pattern) {\n  if (typeof window !== 'undefined' && window.navigator) {\n    return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n  }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n  capture: false,\n  passive: false\n};\n\nfunction on(el, event, fn) {\n  el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n  el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n  if (!selector) return;\n  selector[0] === '>' && (selector = selector.substring(1));\n\n  if (el) {\n    try {\n      if (el.matches) {\n        return el.matches(selector);\n      } else if (el.msMatchesSelector) {\n        return el.msMatchesSelector(selector);\n      } else if (el.webkitMatchesSelector) {\n        return el.webkitMatchesSelector(selector);\n      }\n    } catch (_) {\n      return false;\n    }\n  }\n\n  return false;\n}\n\nfunction getParentOrHost(el) {\n  return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n  if (el) {\n    ctx = ctx || document;\n\n    do {\n      if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n        return el;\n      }\n\n      if (el === ctx) break;\n      /* jshint boss:true */\n    } while (el = getParentOrHost(el));\n  }\n\n  return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n  if (el && name) {\n    if (el.classList) {\n      el.classList[state ? 'add' : 'remove'](name);\n    } else {\n      var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n      el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n    }\n  }\n}\n\nfunction css(el, prop, val) {\n  var style = el && el.style;\n\n  if (style) {\n    if (val === void 0) {\n      if (document.defaultView && document.defaultView.getComputedStyle) {\n        val = document.defaultView.getComputedStyle(el, '');\n      } else if (el.currentStyle) {\n        val = el.currentStyle;\n      }\n\n      return prop === void 0 ? val : val[prop];\n    } else {\n      if (!(prop in style) && prop.indexOf('webkit') === -1) {\n        prop = '-webkit-' + prop;\n      }\n\n      style[prop] = val + (typeof val === 'string' ? '' : 'px');\n    }\n  }\n}\n\nfunction matrix(el, selfOnly) {\n  var appliedTransforms = '';\n\n  if (typeof el === 'string') {\n    appliedTransforms = el;\n  } else {\n    do {\n      var transform = css(el, 'transform');\n\n      if (transform && transform !== 'none') {\n        appliedTransforms = transform + ' ' + appliedTransforms;\n      }\n      /* jshint boss:true */\n\n    } while (!selfOnly && (el = el.parentNode));\n  }\n\n  var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n  /*jshint -W056 */\n\n  return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n  if (ctx) {\n    var list = ctx.getElementsByTagName(tagName),\n        i = 0,\n        n = list.length;\n\n    if (iterator) {\n      for (; i < n; i++) {\n        iterator(list[i], i);\n      }\n    }\n\n    return list;\n  }\n\n  return [];\n}\n\nfunction getWindowScrollingElement() {\n  var scrollingElement = document.scrollingElement;\n\n  if (scrollingElement) {\n    return scrollingElement;\n  } else {\n    return document.documentElement;\n  }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param  {HTMLElement} el                       The element whose boundingClientRect is wanted\n * @param  {[Boolean]} relativeToContainingBlock  Whether the rect should be relative to the containing block of (including) the container\n * @param  {[Boolean]} relativeToNonStaticParent  Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param  {[Boolean]} undoScale                  Whether the container's scale() should be undone\n * @param  {[HTMLElement]} container              The parent the element will be placed in\n * @return {Object}                               The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n  if (!el.getBoundingClientRect && el !== window) return;\n  var elRect, top, left, bottom, right, height, width;\n\n  if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n    elRect = el.getBoundingClientRect();\n    top = elRect.top;\n    left = elRect.left;\n    bottom = elRect.bottom;\n    right = elRect.right;\n    height = elRect.height;\n    width = elRect.width;\n  } else {\n    top = 0;\n    left = 0;\n    bottom = window.innerHeight;\n    right = window.innerWidth;\n    height = window.innerHeight;\n    width = window.innerWidth;\n  }\n\n  if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n    // Adjust for translate()\n    container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n    // Not needed on <= IE11\n\n    if (!IE11OrLess) {\n      do {\n        if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n          var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n          top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n          left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n          bottom = top + elRect.height;\n          right = left + elRect.width;\n          break;\n        }\n        /* jshint boss:true */\n\n      } while (container = container.parentNode);\n    }\n  }\n\n  if (undoScale && el !== window) {\n    // Adjust for scale()\n    var elMatrix = matrix(container || el),\n        scaleX = elMatrix && elMatrix.a,\n        scaleY = elMatrix && elMatrix.d;\n\n    if (elMatrix) {\n      top /= scaleY;\n      left /= scaleX;\n      width /= scaleX;\n      height /= scaleY;\n      bottom = top + height;\n      right = left + width;\n    }\n  }\n\n  return {\n    top: top,\n    left: left,\n    bottom: bottom,\n    right: right,\n    width: width,\n    height: height\n  };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param  {HTMLElement}  el           The element who's side being scrolled out of view is in question\n * @param  {String}       elSide       Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param  {String}       parentSide   Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement}               The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n  var parent = getParentAutoScrollElement(el, true),\n      elSideVal = getRect(el)[elSide];\n  /* jshint boss:true */\n\n  while (parent) {\n    var parentSideVal = getRect(parent)[parentSide],\n        visible = void 0;\n\n    if (parentSide === 'top' || parentSide === 'left') {\n      visible = elSideVal >= parentSideVal;\n    } else {\n      visible = elSideVal <= parentSideVal;\n    }\n\n    if (!visible) return parent;\n    if (parent === getWindowScrollingElement()) break;\n    parent = getParentAutoScrollElement(parent, false);\n  }\n\n  return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param  {HTMLElement} el       The parent element\n * @param  {Number} childNum      The index of the child\n * @param  {Object} options       Parent Sortable's options\n * @return {HTMLElement}          The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n  var currentChild = 0,\n      i = 0,\n      children = el.children;\n\n  while (i < children.length) {\n    if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n      if (currentChild === childNum) {\n        return children[i];\n      }\n\n      currentChild++;\n    }\n\n    i++;\n  }\n\n  return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param  {HTMLElement} el       Parent element\n * @param  {selector} selector    Any other elements that should be ignored\n * @return {HTMLElement}          The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n  var last = el.lastElementChild;\n\n  while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n    last = last.previousElementSibling;\n  }\n\n  return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param  {HTMLElement} el\n * @param  {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n  var index = 0;\n\n  if (!el || !el.parentNode) {\n    return -1;\n  }\n  /* jshint boss:true */\n\n\n  while (el = el.previousElementSibling) {\n    if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n      index++;\n    }\n  }\n\n  return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param  {HTMLElement} el\n * @return {Array}             Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n  var offsetLeft = 0,\n      offsetTop = 0,\n      winScroller = getWindowScrollingElement();\n\n  if (el) {\n    do {\n      var elMatrix = matrix(el),\n          scaleX = elMatrix.a,\n          scaleY = elMatrix.d;\n      offsetLeft += el.scrollLeft * scaleX;\n      offsetTop += el.scrollTop * scaleY;\n    } while (el !== winScroller && (el = el.parentNode));\n  }\n\n  return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param  {Array} arr   Array that may or may not hold the object\n * @param  {Object} obj  An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number}      The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n  for (var i in arr) {\n    if (!arr.hasOwnProperty(i)) continue;\n\n    for (var key in obj) {\n      if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n    }\n  }\n\n  return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n  // skip to window\n  if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n  var elem = el;\n  var gotSelf = false;\n\n  do {\n    // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n    if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n      var elemCSS = css(elem);\n\n      if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n        if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n        if (gotSelf || includeSelf) return elem;\n        gotSelf = true;\n      }\n    }\n    /* jshint boss:true */\n\n  } while (elem = elem.parentNode);\n\n  return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n  if (dst && src) {\n    for (var key in src) {\n      if (src.hasOwnProperty(key)) {\n        dst[key] = src[key];\n      }\n    }\n  }\n\n  return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n  return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n  return function () {\n    if (!_throttleTimeout) {\n      var args = arguments,\n          _this = this;\n\n      if (args.length === 1) {\n        callback.call(_this, args[0]);\n      } else {\n        callback.apply(_this, args);\n      }\n\n      _throttleTimeout = setTimeout(function () {\n        _throttleTimeout = void 0;\n      }, ms);\n    }\n  };\n}\n\nfunction cancelThrottle() {\n  clearTimeout(_throttleTimeout);\n  _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n  el.scrollLeft += x;\n  el.scrollTop += y;\n}\n\nfunction clone(el) {\n  var Polymer = window.Polymer;\n  var $ = window.jQuery || window.Zepto;\n\n  if (Polymer && Polymer.dom) {\n    return Polymer.dom(el).cloneNode(true);\n  } else if ($) {\n    return $(el).clone(true)[0];\n  } else {\n    return el.cloneNode(true);\n  }\n}\n\nfunction setRect(el, rect) {\n  css(el, 'position', 'absolute');\n  css(el, 'top', rect.top);\n  css(el, 'left', rect.left);\n  css(el, 'width', rect.width);\n  css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n  css(el, 'position', '');\n  css(el, 'top', '');\n  css(el, 'left', '');\n  css(el, 'width', '');\n  css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n  var animationStates = [],\n      animationCallbackId;\n  return {\n    captureAnimationState: function captureAnimationState() {\n      animationStates = [];\n      if (!this.options.animation) return;\n      var children = [].slice.call(this.el.children);\n      children.forEach(function (child) {\n        if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n        animationStates.push({\n          target: child,\n          rect: getRect(child)\n        });\n\n        var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n        if (child.thisAnimationDuration) {\n          var childMatrix = matrix(child, true);\n\n          if (childMatrix) {\n            fromRect.top -= childMatrix.f;\n            fromRect.left -= childMatrix.e;\n          }\n        }\n\n        child.fromRect = fromRect;\n      });\n    },\n    addAnimationState: function addAnimationState(state) {\n      animationStates.push(state);\n    },\n    removeAnimationState: function removeAnimationState(target) {\n      animationStates.splice(indexOfObject(animationStates, {\n        target: target\n      }), 1);\n    },\n    animateAll: function animateAll(callback) {\n      var _this = this;\n\n      if (!this.options.animation) {\n        clearTimeout(animationCallbackId);\n        if (typeof callback === 'function') callback();\n        return;\n      }\n\n      var animating = false,\n          animationTime = 0;\n      animationStates.forEach(function (state) {\n        var time = 0,\n            target = state.target,\n            fromRect = target.fromRect,\n            toRect = getRect(target),\n            prevFromRect = target.prevFromRect,\n            prevToRect = target.prevToRect,\n            animatingRect = state.rect,\n            targetMatrix = matrix(target, true);\n\n        if (targetMatrix) {\n          // Compensate for current animation\n          toRect.top -= targetMatrix.f;\n          toRect.left -= targetMatrix.e;\n        }\n\n        target.toRect = toRect;\n\n        if (target.thisAnimationDuration) {\n          // Could also check if animatingRect is between fromRect and toRect\n          if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n          (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n            // If returning to same place as started from animation and on same axis\n            time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n          }\n        } // if fromRect != toRect: animate\n\n\n        if (!isRectEqual(toRect, fromRect)) {\n          target.prevFromRect = fromRect;\n          target.prevToRect = toRect;\n\n          if (!time) {\n            time = _this.options.animation;\n          }\n\n          _this.animate(target, animatingRect, toRect, time);\n        }\n\n        if (time) {\n          animating = true;\n          animationTime = Math.max(animationTime, time);\n          clearTimeout(target.animationResetTimer);\n          target.animationResetTimer = setTimeout(function () {\n            target.animationTime = 0;\n            target.prevFromRect = null;\n            target.fromRect = null;\n            target.prevToRect = null;\n            target.thisAnimationDuration = null;\n          }, time);\n          target.thisAnimationDuration = time;\n        }\n      });\n      clearTimeout(animationCallbackId);\n\n      if (!animating) {\n        if (typeof callback === 'function') callback();\n      } else {\n        animationCallbackId = setTimeout(function () {\n          if (typeof callback === 'function') callback();\n        }, animationTime);\n      }\n\n      animationStates = [];\n    },\n    animate: function animate(target, currentRect, toRect, duration) {\n      if (duration) {\n        css(target, 'transition', '');\n        css(target, 'transform', '');\n        var elMatrix = matrix(this.el),\n            scaleX = elMatrix && elMatrix.a,\n            scaleY = elMatrix && elMatrix.d,\n            translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n            translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n        target.animatingX = !!translateX;\n        target.animatingY = !!translateY;\n        css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n        this.forRepaintDummy = repaint(target); // repaint\n\n        css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n        css(target, 'transform', 'translate3d(0,0,0)');\n        typeof target.animated === 'number' && clearTimeout(target.animated);\n        target.animated = setTimeout(function () {\n          css(target, 'transition', '');\n          css(target, 'transform', '');\n          target.animated = false;\n          target.animatingX = false;\n          target.animatingY = false;\n        }, duration);\n      }\n    }\n  };\n}\n\nfunction repaint(target) {\n  return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n  return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n  initializeByDefault: true\n};\nvar PluginManager = {\n  mount: function mount(plugin) {\n    // Set default static properties\n    for (var option in defaults) {\n      if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n        plugin[option] = defaults[option];\n      }\n    }\n\n    plugins.forEach(function (p) {\n      if (p.pluginName === plugin.pluginName) {\n        throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n      }\n    });\n    plugins.push(plugin);\n  },\n  pluginEvent: function pluginEvent(eventName, sortable, evt) {\n    var _this = this;\n\n    this.eventCanceled = false;\n\n    evt.cancel = function () {\n      _this.eventCanceled = true;\n    };\n\n    var eventNameGlobal = eventName + 'Global';\n    plugins.forEach(function (plugin) {\n      if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n      if (sortable[plugin.pluginName][eventNameGlobal]) {\n        sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n          sortable: sortable\n        }, evt));\n      } // Only fire plugin event if plugin is enabled in this sortable,\n      // and plugin has event defined\n\n\n      if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n        sortable[plugin.pluginName][eventName](_objectSpread2({\n          sortable: sortable\n        }, evt));\n      }\n    });\n  },\n  initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n    plugins.forEach(function (plugin) {\n      var pluginName = plugin.pluginName;\n      if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n      var initialized = new plugin(sortable, el, sortable.options);\n      initialized.sortable = sortable;\n      initialized.options = sortable.options;\n      sortable[pluginName] = initialized; // Add default options from plugin\n\n      _extends(defaults, initialized.defaults);\n    });\n\n    for (var option in sortable.options) {\n      if (!sortable.options.hasOwnProperty(option)) continue;\n      var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n      if (typeof modified !== 'undefined') {\n        sortable.options[option] = modified;\n      }\n    }\n  },\n  getEventProperties: function getEventProperties(name, sortable) {\n    var eventProperties = {};\n    plugins.forEach(function (plugin) {\n      if (typeof plugin.eventProperties !== 'function') return;\n\n      _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n    });\n    return eventProperties;\n  },\n  modifyOption: function modifyOption(sortable, name, value) {\n    var modifiedValue;\n    plugins.forEach(function (plugin) {\n      // Plugin must exist on the Sortable\n      if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n      if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n        modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n      }\n    });\n    return modifiedValue;\n  }\n};\n\nfunction dispatchEvent(_ref) {\n  var sortable = _ref.sortable,\n      rootEl = _ref.rootEl,\n      name = _ref.name,\n      targetEl = _ref.targetEl,\n      cloneEl = _ref.cloneEl,\n      toEl = _ref.toEl,\n      fromEl = _ref.fromEl,\n      oldIndex = _ref.oldIndex,\n      newIndex = _ref.newIndex,\n      oldDraggableIndex = _ref.oldDraggableIndex,\n      newDraggableIndex = _ref.newDraggableIndex,\n      originalEvent = _ref.originalEvent,\n      putSortable = _ref.putSortable,\n      extraEventProperties = _ref.extraEventProperties;\n  sortable = sortable || rootEl && rootEl[expando];\n  if (!sortable) return;\n  var evt,\n      options = sortable.options,\n      onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n  if (window.CustomEvent && !IE11OrLess && !Edge) {\n    evt = new CustomEvent(name, {\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    evt = document.createEvent('Event');\n    evt.initEvent(name, true, true);\n  }\n\n  evt.to = toEl || rootEl;\n  evt.from = fromEl || rootEl;\n  evt.item = targetEl || rootEl;\n  evt.clone = cloneEl;\n  evt.oldIndex = oldIndex;\n  evt.newIndex = newIndex;\n  evt.oldDraggableIndex = oldDraggableIndex;\n  evt.newDraggableIndex = newDraggableIndex;\n  evt.originalEvent = originalEvent;\n  evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n  var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n  for (var option in allEventProperties) {\n    evt[option] = allEventProperties[option];\n  }\n\n  if (rootEl) {\n    rootEl.dispatchEvent(evt);\n  }\n\n  if (options[onName]) {\n    options[onName].call(sortable, evt);\n  }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      originalEvent = _ref.evt,\n      data = _objectWithoutProperties(_ref, _excluded);\n\n  PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n    dragEl: dragEl,\n    parentEl: parentEl,\n    ghostEl: ghostEl,\n    rootEl: rootEl,\n    nextEl: nextEl,\n    lastDownEl: lastDownEl,\n    cloneEl: cloneEl,\n    cloneHidden: cloneHidden,\n    dragStarted: moved,\n    putSortable: putSortable,\n    activeSortable: Sortable.active,\n    originalEvent: originalEvent,\n    oldIndex: oldIndex,\n    oldDraggableIndex: oldDraggableIndex,\n    newIndex: newIndex,\n    newDraggableIndex: newDraggableIndex,\n    hideGhostForTarget: _hideGhostForTarget,\n    unhideGhostForTarget: _unhideGhostForTarget,\n    cloneNowHidden: function cloneNowHidden() {\n      cloneHidden = true;\n    },\n    cloneNowShown: function cloneNowShown() {\n      cloneHidden = false;\n    },\n    dispatchSortableEvent: function dispatchSortableEvent(name) {\n      _dispatchEvent({\n        sortable: sortable,\n        name: name,\n        originalEvent: originalEvent\n      });\n    }\n  }, data));\n};\n\nfunction _dispatchEvent(info) {\n  dispatchEvent(_objectSpread2({\n    putSortable: putSortable,\n    cloneEl: cloneEl,\n    targetEl: dragEl,\n    rootEl: rootEl,\n    oldIndex: oldIndex,\n    oldDraggableIndex: oldDraggableIndex,\n    newIndex: newIndex,\n    newDraggableIndex: newDraggableIndex\n  }, info));\n}\n\nvar dragEl,\n    parentEl,\n    ghostEl,\n    rootEl,\n    nextEl,\n    lastDownEl,\n    cloneEl,\n    cloneHidden,\n    oldIndex,\n    newIndex,\n    oldDraggableIndex,\n    newDraggableIndex,\n    activeGroup,\n    putSortable,\n    awaitingDragStarted = false,\n    ignoreNextClick = false,\n    sortables = [],\n    tapEvt,\n    touchEvt,\n    lastDx,\n    lastDy,\n    tapDistanceLeft,\n    tapDistanceTop,\n    moved,\n    lastTarget,\n    lastDirection,\n    pastFirstInvertThresh = false,\n    isCircumstantialInvert = false,\n    targetMoveDistance,\n    // For positioning ghost absolutely\nghostRelativeParent,\n    ghostRelativeParentInitialScroll = [],\n    // (left, top)\n_silent = false,\n    savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n    PositionGhostAbsolutely = IOS,\n    CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n    // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n    supportCssPointerEvents = function () {\n  if (!documentExists) return; // false when <= IE11\n\n  if (IE11OrLess) {\n    return false;\n  }\n\n  var el = document.createElement('x');\n  el.style.cssText = 'pointer-events:auto';\n  return el.style.pointerEvents === 'auto';\n}(),\n    _detectDirection = function _detectDirection(el, options) {\n  var elCSS = css(el),\n      elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n      child1 = getChild(el, 0, options),\n      child2 = getChild(el, 1, options),\n      firstChildCSS = child1 && css(child1),\n      secondChildCSS = child2 && css(child2),\n      firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n      secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n  if (elCSS.display === 'flex') {\n    return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n  }\n\n  if (elCSS.display === 'grid') {\n    return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n  }\n\n  if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n    var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n    return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n  }\n\n  return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n    _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n  var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n      dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n      dragElOppLength = vertical ? dragRect.width : dragRect.height,\n      targetS1Opp = vertical ? targetRect.left : targetRect.top,\n      targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n      targetOppLength = vertical ? targetRect.width : targetRect.height;\n  return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param  {Number} x      X position\n * @param  {Number} y      Y position\n * @return {HTMLElement}   Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n  var ret;\n  sortables.some(function (sortable) {\n    var threshold = sortable[expando].options.emptyInsertThreshold;\n    if (!threshold || lastChild(sortable)) return;\n    var rect = getRect(sortable),\n        insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n        insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n    if (insideHorizontally && insideVertically) {\n      return ret = sortable;\n    }\n  });\n  return ret;\n},\n    _prepareGroup = function _prepareGroup(options) {\n  function toFn(value, pull) {\n    return function (to, from, dragEl, evt) {\n      var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n      if (value == null && (pull || sameGroup)) {\n        // Default pull value\n        // Default pull and put value if same group\n        return true;\n      } else if (value == null || value === false) {\n        return false;\n      } else if (pull && value === 'clone') {\n        return value;\n      } else if (typeof value === 'function') {\n        return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n      } else {\n        var otherGroup = (pull ? to : from).options.group.name;\n        return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n      }\n    };\n  }\n\n  var group = {};\n  var originalGroup = options.group;\n\n  if (!originalGroup || _typeof(originalGroup) != 'object') {\n    originalGroup = {\n      name: originalGroup\n    };\n  }\n\n  group.name = originalGroup.name;\n  group.checkPull = toFn(originalGroup.pull, true);\n  group.checkPut = toFn(originalGroup.put);\n  group.revertClone = originalGroup.revertClone;\n  options.group = group;\n},\n    _hideGhostForTarget = function _hideGhostForTarget() {\n  if (!supportCssPointerEvents && ghostEl) {\n    css(ghostEl, 'display', 'none');\n  }\n},\n    _unhideGhostForTarget = function _unhideGhostForTarget() {\n  if (!supportCssPointerEvents && ghostEl) {\n    css(ghostEl, 'display', '');\n  }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n  document.addEventListener('click', function (evt) {\n    if (ignoreNextClick) {\n      evt.preventDefault();\n      evt.stopPropagation && evt.stopPropagation();\n      evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n      ignoreNextClick = false;\n      return false;\n    }\n  }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n  if (dragEl) {\n    evt = evt.touches ? evt.touches[0] : evt;\n\n    var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n    if (nearest) {\n      // Create imitation event\n      var event = {};\n\n      for (var i in evt) {\n        if (evt.hasOwnProperty(i)) {\n          event[i] = evt[i];\n        }\n      }\n\n      event.target = event.rootEl = nearest;\n      event.preventDefault = void 0;\n      event.stopPropagation = void 0;\n\n      nearest[expando]._onDragOver(event);\n    }\n  }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n  if (dragEl) {\n    dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n  }\n};\n/**\n * @class  Sortable\n * @param  {HTMLElement}  el\n * @param  {Object}       [options]\n */\n\n\nfunction Sortable(el, options) {\n  if (!(el && el.nodeType && el.nodeType === 1)) {\n    throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n  }\n\n  this.el = el; // root element\n\n  this.options = options = _extends({}, options); // Export instance\n\n  el[expando] = this;\n  var defaults = {\n    group: null,\n    sort: true,\n    disabled: false,\n    store: null,\n    handle: null,\n    draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n    swapThreshold: 1,\n    // percentage; 0 <= x <= 1\n    invertSwap: false,\n    // invert always\n    invertedSwapThreshold: null,\n    // will be set to same as swapThreshold if default\n    removeCloneOnHide: true,\n    direction: function direction() {\n      return _detectDirection(el, this.options);\n    },\n    ghostClass: 'sortable-ghost',\n    chosenClass: 'sortable-chosen',\n    dragClass: 'sortable-drag',\n    ignore: 'a, img',\n    filter: null,\n    preventOnFilter: true,\n    animation: 0,\n    easing: null,\n    setData: function setData(dataTransfer, dragEl) {\n      dataTransfer.setData('Text', dragEl.textContent);\n    },\n    dropBubble: false,\n    dragoverBubble: false,\n    dataIdAttr: 'data-id',\n    delay: 0,\n    delayOnTouchOnly: false,\n    touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n    forceFallback: false,\n    fallbackClass: 'sortable-fallback',\n    fallbackOnBody: false,\n    fallbackTolerance: 0,\n    fallbackOffset: {\n      x: 0,\n      y: 0\n    },\n    supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n    emptyInsertThreshold: 5\n  };\n  PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n  for (var name in defaults) {\n    !(name in options) && (options[name] = defaults[name]);\n  }\n\n  _prepareGroup(options); // Bind all private methods\n\n\n  for (var fn in this) {\n    if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n      this[fn] = this[fn].bind(this);\n    }\n  } // Setup drag mode\n\n\n  this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n  if (this.nativeDraggable) {\n    // Touch start threshold cannot be greater than the native dragstart threshold\n    this.options.touchStartThreshold = 1;\n  } // Bind events\n\n\n  if (options.supportPointer) {\n    on(el, 'pointerdown', this._onTapStart);\n  } else {\n    on(el, 'mousedown', this._onTapStart);\n    on(el, 'touchstart', this._onTapStart);\n  }\n\n  if (this.nativeDraggable) {\n    on(el, 'dragover', this);\n    on(el, 'dragenter', this);\n  }\n\n  sortables.push(this.el); // Restore sorting\n\n  options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n  _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n  constructor: Sortable,\n  _isOutsideThisEl: function _isOutsideThisEl(target) {\n    if (!this.el.contains(target) && target !== this.el) {\n      lastTarget = null;\n    }\n  },\n  _getDirection: function _getDirection(evt, target) {\n    return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n  },\n  _onTapStart: function _onTapStart(\n  /** Event|TouchEvent */\n  evt) {\n    if (!evt.cancelable) return;\n\n    var _this = this,\n        el = this.el,\n        options = this.options,\n        preventOnFilter = options.preventOnFilter,\n        type = evt.type,\n        touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n        target = (touch || evt).target,\n        originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n        filter = options.filter;\n\n    _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n    if (dragEl) {\n      return;\n    }\n\n    if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n      return; // only left button and enabled\n    } // cancel dnd if original target is content editable\n\n\n    if (originalTarget.isContentEditable) {\n      return;\n    } // Safari ignores further event handling after mousedown\n\n\n    if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n      return;\n    }\n\n    target = closest(target, options.draggable, el, false);\n\n    if (target && target.animated) {\n      return;\n    }\n\n    if (lastDownEl === target) {\n      // Ignoring duplicate `down`\n      return;\n    } // Get the index of the dragged element within its parent\n\n\n    oldIndex = index(target);\n    oldDraggableIndex = index(target, options.draggable); // Check filter\n\n    if (typeof filter === 'function') {\n      if (filter.call(this, evt, target, this)) {\n        _dispatchEvent({\n          sortable: _this,\n          rootEl: originalTarget,\n          name: 'filter',\n          targetEl: target,\n          toEl: el,\n          fromEl: el\n        });\n\n        pluginEvent('filter', _this, {\n          evt: evt\n        });\n        preventOnFilter && evt.cancelable && evt.preventDefault();\n        return; // cancel dnd\n      }\n    } else if (filter) {\n      filter = filter.split(',').some(function (criteria) {\n        criteria = closest(originalTarget, criteria.trim(), el, false);\n\n        if (criteria) {\n          _dispatchEvent({\n            sortable: _this,\n            rootEl: criteria,\n            name: 'filter',\n            targetEl: target,\n            fromEl: el,\n            toEl: el\n          });\n\n          pluginEvent('filter', _this, {\n            evt: evt\n          });\n          return true;\n        }\n      });\n\n      if (filter) {\n        preventOnFilter && evt.cancelable && evt.preventDefault();\n        return; // cancel dnd\n      }\n    }\n\n    if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n      return;\n    } // Prepare `dragstart`\n\n\n    this._prepareDragStart(evt, touch, target);\n  },\n  _prepareDragStart: function _prepareDragStart(\n  /** Event */\n  evt,\n  /** Touch */\n  touch,\n  /** HTMLElement */\n  target) {\n    var _this = this,\n        el = _this.el,\n        options = _this.options,\n        ownerDocument = el.ownerDocument,\n        dragStartFn;\n\n    if (target && !dragEl && target.parentNode === el) {\n      var dragRect = getRect(target);\n      rootEl = el;\n      dragEl = target;\n      parentEl = dragEl.parentNode;\n      nextEl = dragEl.nextSibling;\n      lastDownEl = target;\n      activeGroup = options.group;\n      Sortable.dragged = dragEl;\n      tapEvt = {\n        target: dragEl,\n        clientX: (touch || evt).clientX,\n        clientY: (touch || evt).clientY\n      };\n      tapDistanceLeft = tapEvt.clientX - dragRect.left;\n      tapDistanceTop = tapEvt.clientY - dragRect.top;\n      this._lastX = (touch || evt).clientX;\n      this._lastY = (touch || evt).clientY;\n      dragEl.style['will-change'] = 'all';\n\n      dragStartFn = function dragStartFn() {\n        pluginEvent('delayEnded', _this, {\n          evt: evt\n        });\n\n        if (Sortable.eventCanceled) {\n          _this._onDrop();\n\n          return;\n        } // Delayed drag has been triggered\n        // we can re-enable the events: touchmove/mousemove\n\n\n        _this._disableDelayedDragEvents();\n\n        if (!FireFox && _this.nativeDraggable) {\n          dragEl.draggable = true;\n        } // Bind the events: dragstart/dragend\n\n\n        _this._triggerDragStart(evt, touch); // Drag start event\n\n\n        _dispatchEvent({\n          sortable: _this,\n          name: 'choose',\n          originalEvent: evt\n        }); // Chosen item\n\n\n        toggleClass(dragEl, options.chosenClass, true);\n      }; // Disable \"draggable\"\n\n\n      options.ignore.split(',').forEach(function (criteria) {\n        find(dragEl, criteria.trim(), _disableDraggable);\n      });\n      on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'mouseup', _this._onDrop);\n      on(ownerDocument, 'touchend', _this._onDrop);\n      on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n      if (FireFox && this.nativeDraggable) {\n        this.options.touchStartThreshold = 4;\n        dragEl.draggable = true;\n      }\n\n      pluginEvent('delayStart', this, {\n        evt: evt\n      }); // Delay is impossible for native DnD in Edge or IE\n\n      if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n        if (Sortable.eventCanceled) {\n          this._onDrop();\n\n          return;\n        } // If the user moves the pointer or let go the click or touch\n        // before the delay has been reached:\n        // disable the delayed drag\n\n\n        on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n        on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n        on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n        on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n        on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n        options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n        _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n      } else {\n        dragStartFn();\n      }\n    }\n  },\n  _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n  /** TouchEvent|PointerEvent **/\n  e) {\n    var touch = e.touches ? e.touches[0] : e;\n\n    if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n      this._disableDelayedDrag();\n    }\n  },\n  _disableDelayedDrag: function _disableDelayedDrag() {\n    dragEl && _disableDraggable(dragEl);\n    clearTimeout(this._dragStartTimer);\n\n    this._disableDelayedDragEvents();\n  },\n  _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n    var ownerDocument = this.el.ownerDocument;\n    off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n    off(ownerDocument, 'touchend', this._disableDelayedDrag);\n    off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n    off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n    off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n    off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n  },\n  _triggerDragStart: function _triggerDragStart(\n  /** Event */\n  evt,\n  /** Touch */\n  touch) {\n    touch = touch || evt.pointerType == 'touch' && evt;\n\n    if (!this.nativeDraggable || touch) {\n      if (this.options.supportPointer) {\n        on(document, 'pointermove', this._onTouchMove);\n      } else if (touch) {\n        on(document, 'touchmove', this._onTouchMove);\n      } else {\n        on(document, 'mousemove', this._onTouchMove);\n      }\n    } else {\n      on(dragEl, 'dragend', this);\n      on(rootEl, 'dragstart', this._onDragStart);\n    }\n\n    try {\n      if (document.selection) {\n        // Timeout neccessary for IE9\n        _nextTick(function () {\n          document.selection.empty();\n        });\n      } else {\n        window.getSelection().removeAllRanges();\n      }\n    } catch (err) {}\n  },\n  _dragStarted: function _dragStarted(fallback, evt) {\n\n    awaitingDragStarted = false;\n\n    if (rootEl && dragEl) {\n      pluginEvent('dragStarted', this, {\n        evt: evt\n      });\n\n      if (this.nativeDraggable) {\n        on(document, 'dragover', _checkOutsideTargetEl);\n      }\n\n      var options = this.options; // Apply effect\n\n      !fallback && toggleClass(dragEl, options.dragClass, false);\n      toggleClass(dragEl, options.ghostClass, true);\n      Sortable.active = this;\n      fallback && this._appendGhost(); // Drag start event\n\n      _dispatchEvent({\n        sortable: this,\n        name: 'start',\n        originalEvent: evt\n      });\n    } else {\n      this._nulling();\n    }\n  },\n  _emulateDragOver: function _emulateDragOver() {\n    if (touchEvt) {\n      this._lastX = touchEvt.clientX;\n      this._lastY = touchEvt.clientY;\n\n      _hideGhostForTarget();\n\n      var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n      var parent = target;\n\n      while (target && target.shadowRoot) {\n        target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n        if (target === parent) break;\n        parent = target;\n      }\n\n      dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n      if (parent) {\n        do {\n          if (parent[expando]) {\n            var inserted = void 0;\n            inserted = parent[expando]._onDragOver({\n              clientX: touchEvt.clientX,\n              clientY: touchEvt.clientY,\n              target: target,\n              rootEl: parent\n            });\n\n            if (inserted && !this.options.dragoverBubble) {\n              break;\n            }\n          }\n\n          target = parent; // store last element\n        }\n        /* jshint boss:true */\n        while (parent = parent.parentNode);\n      }\n\n      _unhideGhostForTarget();\n    }\n  },\n  _onTouchMove: function _onTouchMove(\n  /**TouchEvent*/\n  evt) {\n    if (tapEvt) {\n      var options = this.options,\n          fallbackTolerance = options.fallbackTolerance,\n          fallbackOffset = options.fallbackOffset,\n          touch = evt.touches ? evt.touches[0] : evt,\n          ghostMatrix = ghostEl && matrix(ghostEl, true),\n          scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n          scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n          relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n          dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n          dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n      if (!Sortable.active && !awaitingDragStarted) {\n        if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n          return;\n        }\n\n        this._onDragStart(evt, true);\n      }\n\n      if (ghostEl) {\n        if (ghostMatrix) {\n          ghostMatrix.e += dx - (lastDx || 0);\n          ghostMatrix.f += dy - (lastDy || 0);\n        } else {\n          ghostMatrix = {\n            a: 1,\n            b: 0,\n            c: 0,\n            d: 1,\n            e: dx,\n            f: dy\n          };\n        }\n\n        var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n        css(ghostEl, 'webkitTransform', cssMatrix);\n        css(ghostEl, 'mozTransform', cssMatrix);\n        css(ghostEl, 'msTransform', cssMatrix);\n        css(ghostEl, 'transform', cssMatrix);\n        lastDx = dx;\n        lastDy = dy;\n        touchEvt = touch;\n      }\n\n      evt.cancelable && evt.preventDefault();\n    }\n  },\n  _appendGhost: function _appendGhost() {\n    // Bug if using scale(): https://stackoverflow.com/questions/2637058\n    // Not being adjusted for\n    if (!ghostEl) {\n      var container = this.options.fallbackOnBody ? document.body : rootEl,\n          rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n          options = this.options; // Position absolutely\n\n      if (PositionGhostAbsolutely) {\n        // Get relatively positioned parent\n        ghostRelativeParent = container;\n\n        while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n          ghostRelativeParent = ghostRelativeParent.parentNode;\n        }\n\n        if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n          if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n          rect.top += ghostRelativeParent.scrollTop;\n          rect.left += ghostRelativeParent.scrollLeft;\n        } else {\n          ghostRelativeParent = getWindowScrollingElement();\n        }\n\n        ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n      }\n\n      ghostEl = dragEl.cloneNode(true);\n      toggleClass(ghostEl, options.ghostClass, false);\n      toggleClass(ghostEl, options.fallbackClass, true);\n      toggleClass(ghostEl, options.dragClass, true);\n      css(ghostEl, 'transition', '');\n      css(ghostEl, 'transform', '');\n      css(ghostEl, 'box-sizing', 'border-box');\n      css(ghostEl, 'margin', 0);\n      css(ghostEl, 'top', rect.top);\n      css(ghostEl, 'left', rect.left);\n      css(ghostEl, 'width', rect.width);\n      css(ghostEl, 'height', rect.height);\n      css(ghostEl, 'opacity', '0.8');\n      css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n      css(ghostEl, 'zIndex', '100000');\n      css(ghostEl, 'pointerEvents', 'none');\n      Sortable.ghost = ghostEl;\n      container.appendChild(ghostEl); // Set transform-origin\n\n      css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n    }\n  },\n  _onDragStart: function _onDragStart(\n  /**Event*/\n  evt,\n  /**boolean*/\n  fallback) {\n    var _this = this;\n\n    var dataTransfer = evt.dataTransfer;\n    var options = _this.options;\n    pluginEvent('dragStart', this, {\n      evt: evt\n    });\n\n    if (Sortable.eventCanceled) {\n      this._onDrop();\n\n      return;\n    }\n\n    pluginEvent('setupClone', this);\n\n    if (!Sortable.eventCanceled) {\n      cloneEl = clone(dragEl);\n      cloneEl.draggable = false;\n      cloneEl.style['will-change'] = '';\n\n      this._hideClone();\n\n      toggleClass(cloneEl, this.options.chosenClass, false);\n      Sortable.clone = cloneEl;\n    } // #1143: IFrame support workaround\n\n\n    _this.cloneId = _nextTick(function () {\n      pluginEvent('clone', _this);\n      if (Sortable.eventCanceled) return;\n\n      if (!_this.options.removeCloneOnHide) {\n        rootEl.insertBefore(cloneEl, dragEl);\n      }\n\n      _this._hideClone();\n\n      _dispatchEvent({\n        sortable: _this,\n        name: 'clone'\n      });\n    });\n    !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n    if (fallback) {\n      ignoreNextClick = true;\n      _this._loopId = setInterval(_this._emulateDragOver, 50);\n    } else {\n      // Undo what was set in _prepareDragStart before drag started\n      off(document, 'mouseup', _this._onDrop);\n      off(document, 'touchend', _this._onDrop);\n      off(document, 'touchcancel', _this._onDrop);\n\n      if (dataTransfer) {\n        dataTransfer.effectAllowed = 'move';\n        options.setData && options.setData.call(_this, dataTransfer, dragEl);\n      }\n\n      on(document, 'drop', _this); // #1276 fix:\n\n      css(dragEl, 'transform', 'translateZ(0)');\n    }\n\n    awaitingDragStarted = true;\n    _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n    on(document, 'selectstart', _this);\n    moved = true;\n\n    if (Safari) {\n      css(document.body, 'user-select', 'none');\n    }\n  },\n  // Returns true - if no further action is needed (either inserted or another condition)\n  _onDragOver: function _onDragOver(\n  /**Event*/\n  evt) {\n    var el = this.el,\n        target = evt.target,\n        dragRect,\n        targetRect,\n        revert,\n        options = this.options,\n        group = options.group,\n        activeSortable = Sortable.active,\n        isOwner = activeGroup === group,\n        canSort = options.sort,\n        fromSortable = putSortable || activeSortable,\n        vertical,\n        _this = this,\n        completedFired = false;\n\n    if (_silent) return;\n\n    function dragOverEvent(name, extra) {\n      pluginEvent(name, _this, _objectSpread2({\n        evt: evt,\n        isOwner: isOwner,\n        axis: vertical ? 'vertical' : 'horizontal',\n        revert: revert,\n        dragRect: dragRect,\n        targetRect: targetRect,\n        canSort: canSort,\n        fromSortable: fromSortable,\n        target: target,\n        completed: completed,\n        onMove: function onMove(target, after) {\n          return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n        },\n        changed: changed\n      }, extra));\n    } // Capture animation state\n\n\n    function capture() {\n      dragOverEvent('dragOverAnimationCapture');\n\n      _this.captureAnimationState();\n\n      if (_this !== fromSortable) {\n        fromSortable.captureAnimationState();\n      }\n    } // Return invocation when dragEl is inserted (or completed)\n\n\n    function completed(insertion) {\n      dragOverEvent('dragOverCompleted', {\n        insertion: insertion\n      });\n\n      if (insertion) {\n        // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n        if (isOwner) {\n          activeSortable._hideClone();\n        } else {\n          activeSortable._showClone(_this);\n        }\n\n        if (_this !== fromSortable) {\n          // Set ghost class to new sortable's ghost class\n          toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n          toggleClass(dragEl, options.ghostClass, true);\n        }\n\n        if (putSortable !== _this && _this !== Sortable.active) {\n          putSortable = _this;\n        } else if (_this === Sortable.active && putSortable) {\n          putSortable = null;\n        } // Animation\n\n\n        if (fromSortable === _this) {\n          _this._ignoreWhileAnimating = target;\n        }\n\n        _this.animateAll(function () {\n          dragOverEvent('dragOverAnimationComplete');\n          _this._ignoreWhileAnimating = null;\n        });\n\n        if (_this !== fromSortable) {\n          fromSortable.animateAll();\n          fromSortable._ignoreWhileAnimating = null;\n        }\n      } // Null lastTarget if it is not inside a previously swapped element\n\n\n      if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n        lastTarget = null;\n      } // no bubbling and not fallback\n\n\n      if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n        dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n        !insertion && nearestEmptyInsertDetectEvent(evt);\n      }\n\n      !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n      return completedFired = true;\n    } // Call when dragEl has been inserted\n\n\n    function changed() {\n      newIndex = index(dragEl);\n      newDraggableIndex = index(dragEl, options.draggable);\n\n      _dispatchEvent({\n        sortable: _this,\n        name: 'change',\n        toEl: el,\n        newIndex: newIndex,\n        newDraggableIndex: newDraggableIndex,\n        originalEvent: evt\n      });\n    }\n\n    if (evt.preventDefault !== void 0) {\n      evt.cancelable && evt.preventDefault();\n    }\n\n    target = closest(target, options.draggable, el, true);\n    dragOverEvent('dragOver');\n    if (Sortable.eventCanceled) return completedFired;\n\n    if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n      return completed(false);\n    }\n\n    ignoreNextClick = false;\n\n    if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n    : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n      vertical = this._getDirection(evt, target) === 'vertical';\n      dragRect = getRect(dragEl);\n      dragOverEvent('dragOverValid');\n      if (Sortable.eventCanceled) return completedFired;\n\n      if (revert) {\n        parentEl = rootEl; // actualization\n\n        capture();\n\n        this._hideClone();\n\n        dragOverEvent('revert');\n\n        if (!Sortable.eventCanceled) {\n          if (nextEl) {\n            rootEl.insertBefore(dragEl, nextEl);\n          } else {\n            rootEl.appendChild(dragEl);\n          }\n        }\n\n        return completed(true);\n      }\n\n      var elLastChild = lastChild(el, options.draggable);\n\n      if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n        // Insert to end of list\n        // If already at end of list: Do not insert\n        if (elLastChild === dragEl) {\n          return completed(false);\n        } // if there is a last element, it is the target\n\n\n        if (elLastChild && el === evt.target) {\n          target = elLastChild;\n        }\n\n        if (target) {\n          targetRect = getRect(target);\n        }\n\n        if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n          capture();\n          el.appendChild(dragEl);\n          parentEl = el; // actualization\n\n          changed();\n          return completed(true);\n        }\n      } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n        // Insert to start of list\n        var firstChild = getChild(el, 0, options, true);\n\n        if (firstChild === dragEl) {\n          return completed(false);\n        }\n\n        target = firstChild;\n        targetRect = getRect(target);\n\n        if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n          capture();\n          el.insertBefore(dragEl, firstChild);\n          parentEl = el; // actualization\n\n          changed();\n          return completed(true);\n        }\n      } else if (target.parentNode === el) {\n        targetRect = getRect(target);\n        var direction = 0,\n            targetBeforeFirstSwap,\n            differentLevel = dragEl.parentNode !== el,\n            differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n            side1 = vertical ? 'top' : 'left',\n            scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n            scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n        if (lastTarget !== target) {\n          targetBeforeFirstSwap = targetRect[side1];\n          pastFirstInvertThresh = false;\n          isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n        }\n\n        direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n        var sibling;\n\n        if (direction !== 0) {\n          // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n          var dragIndex = index(dragEl);\n\n          do {\n            dragIndex -= direction;\n            sibling = parentEl.children[dragIndex];\n          } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n        } // If dragEl is already beside target: Do not insert\n\n\n        if (direction === 0 || sibling === target) {\n          return completed(false);\n        }\n\n        lastTarget = target;\n        lastDirection = direction;\n        var nextSibling = target.nextElementSibling,\n            after = false;\n        after = direction === 1;\n\n        var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n        if (moveVector !== false) {\n          if (moveVector === 1 || moveVector === -1) {\n            after = moveVector === 1;\n          }\n\n          _silent = true;\n          setTimeout(_unsilent, 30);\n          capture();\n\n          if (after && !nextSibling) {\n            el.appendChild(dragEl);\n          } else {\n            target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n          } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n          if (scrolledPastTop) {\n            scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n          }\n\n          parentEl = dragEl.parentNode; // actualization\n          // must be done before animation\n\n          if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n            targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n          }\n\n          changed();\n          return completed(true);\n        }\n      }\n\n      if (el.contains(dragEl)) {\n        return completed(false);\n      }\n    }\n\n    return false;\n  },\n  _ignoreWhileAnimating: null,\n  _offMoveEvents: function _offMoveEvents() {\n    off(document, 'mousemove', this._onTouchMove);\n    off(document, 'touchmove', this._onTouchMove);\n    off(document, 'pointermove', this._onTouchMove);\n    off(document, 'dragover', nearestEmptyInsertDetectEvent);\n    off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n    off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n  },\n  _offUpEvents: function _offUpEvents() {\n    var ownerDocument = this.el.ownerDocument;\n    off(ownerDocument, 'mouseup', this._onDrop);\n    off(ownerDocument, 'touchend', this._onDrop);\n    off(ownerDocument, 'pointerup', this._onDrop);\n    off(ownerDocument, 'touchcancel', this._onDrop);\n    off(document, 'selectstart', this);\n  },\n  _onDrop: function _onDrop(\n  /**Event*/\n  evt) {\n    var el = this.el,\n        options = this.options; // Get the index of the dragged element within its parent\n\n    newIndex = index(dragEl);\n    newDraggableIndex = index(dragEl, options.draggable);\n    pluginEvent('drop', this, {\n      evt: evt\n    });\n    parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n    newIndex = index(dragEl);\n    newDraggableIndex = index(dragEl, options.draggable);\n\n    if (Sortable.eventCanceled) {\n      this._nulling();\n\n      return;\n    }\n\n    awaitingDragStarted = false;\n    isCircumstantialInvert = false;\n    pastFirstInvertThresh = false;\n    clearInterval(this._loopId);\n    clearTimeout(this._dragStartTimer);\n\n    _cancelNextTick(this.cloneId);\n\n    _cancelNextTick(this._dragStartId); // Unbind events\n\n\n    if (this.nativeDraggable) {\n      off(document, 'drop', this);\n      off(el, 'dragstart', this._onDragStart);\n    }\n\n    this._offMoveEvents();\n\n    this._offUpEvents();\n\n    if (Safari) {\n      css(document.body, 'user-select', '');\n    }\n\n    css(dragEl, 'transform', '');\n\n    if (evt) {\n      if (moved) {\n        evt.cancelable && evt.preventDefault();\n        !options.dropBubble && evt.stopPropagation();\n      }\n\n      ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n      if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n        // Remove clone(s)\n        cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n      }\n\n      if (dragEl) {\n        if (this.nativeDraggable) {\n          off(dragEl, 'dragend', this);\n        }\n\n        _disableDraggable(dragEl);\n\n        dragEl.style['will-change'] = ''; // Remove classes\n        // ghostClass is added in dragStarted\n\n        if (moved && !awaitingDragStarted) {\n          toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n        }\n\n        toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n        _dispatchEvent({\n          sortable: this,\n          name: 'unchoose',\n          toEl: parentEl,\n          newIndex: null,\n          newDraggableIndex: null,\n          originalEvent: evt\n        });\n\n        if (rootEl !== parentEl) {\n          if (newIndex >= 0) {\n            // Add event\n            _dispatchEvent({\n              rootEl: parentEl,\n              name: 'add',\n              toEl: parentEl,\n              fromEl: rootEl,\n              originalEvent: evt\n            }); // Remove event\n\n\n            _dispatchEvent({\n              sortable: this,\n              name: 'remove',\n              toEl: parentEl,\n              originalEvent: evt\n            }); // drag from one list and drop into another\n\n\n            _dispatchEvent({\n              rootEl: parentEl,\n              name: 'sort',\n              toEl: parentEl,\n              fromEl: rootEl,\n              originalEvent: evt\n            });\n\n            _dispatchEvent({\n              sortable: this,\n              name: 'sort',\n              toEl: parentEl,\n              originalEvent: evt\n            });\n          }\n\n          putSortable && putSortable.save();\n        } else {\n          if (newIndex !== oldIndex) {\n            if (newIndex >= 0) {\n              // drag & drop within the same list\n              _dispatchEvent({\n                sortable: this,\n                name: 'update',\n                toEl: parentEl,\n                originalEvent: evt\n              });\n\n              _dispatchEvent({\n                sortable: this,\n                name: 'sort',\n                toEl: parentEl,\n                originalEvent: evt\n              });\n            }\n          }\n        }\n\n        if (Sortable.active) {\n          /* jshint eqnull:true */\n          if (newIndex == null || newIndex === -1) {\n            newIndex = oldIndex;\n            newDraggableIndex = oldDraggableIndex;\n          }\n\n          _dispatchEvent({\n            sortable: this,\n            name: 'end',\n            toEl: parentEl,\n            originalEvent: evt\n          }); // Save sorting\n\n\n          this.save();\n        }\n      }\n    }\n\n    this._nulling();\n  },\n  _nulling: function _nulling() {\n    pluginEvent('nulling', this);\n    rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n    savedInputChecked.forEach(function (el) {\n      el.checked = true;\n    });\n    savedInputChecked.length = lastDx = lastDy = 0;\n  },\n  handleEvent: function handleEvent(\n  /**Event*/\n  evt) {\n    switch (evt.type) {\n      case 'drop':\n      case 'dragend':\n        this._onDrop(evt);\n\n        break;\n\n      case 'dragenter':\n      case 'dragover':\n        if (dragEl) {\n          this._onDragOver(evt);\n\n          _globalDragOver(evt);\n        }\n\n        break;\n\n      case 'selectstart':\n        evt.preventDefault();\n        break;\n    }\n  },\n\n  /**\n   * Serializes the item into an array of string.\n   * @returns {String[]}\n   */\n  toArray: function toArray() {\n    var order = [],\n        el,\n        children = this.el.children,\n        i = 0,\n        n = children.length,\n        options = this.options;\n\n    for (; i < n; i++) {\n      el = children[i];\n\n      if (closest(el, options.draggable, this.el, false)) {\n        order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n      }\n    }\n\n    return order;\n  },\n\n  /**\n   * Sorts the elements according to the array.\n   * @param  {String[]}  order  order of the items\n   */\n  sort: function sort(order, useAnimation) {\n    var items = {},\n        rootEl = this.el;\n    this.toArray().forEach(function (id, i) {\n      var el = rootEl.children[i];\n\n      if (closest(el, this.options.draggable, rootEl, false)) {\n        items[id] = el;\n      }\n    }, this);\n    useAnimation && this.captureAnimationState();\n    order.forEach(function (id) {\n      if (items[id]) {\n        rootEl.removeChild(items[id]);\n        rootEl.appendChild(items[id]);\n      }\n    });\n    useAnimation && this.animateAll();\n  },\n\n  /**\n   * Save the current sorting\n   */\n  save: function save() {\n    var store = this.options.store;\n    store && store.set && store.set(this);\n  },\n\n  /**\n   * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n   * @param   {HTMLElement}  el\n   * @param   {String}       [selector]  default: `options.draggable`\n   * @returns {HTMLElement|null}\n   */\n  closest: function closest$1(el, selector) {\n    return closest(el, selector || this.options.draggable, this.el, false);\n  },\n\n  /**\n   * Set/get option\n   * @param   {string} name\n   * @param   {*}      [value]\n   * @returns {*}\n   */\n  option: function option(name, value) {\n    var options = this.options;\n\n    if (value === void 0) {\n      return options[name];\n    } else {\n      var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n      if (typeof modifiedValue !== 'undefined') {\n        options[name] = modifiedValue;\n      } else {\n        options[name] = value;\n      }\n\n      if (name === 'group') {\n        _prepareGroup(options);\n      }\n    }\n  },\n\n  /**\n   * Destroy\n   */\n  destroy: function destroy() {\n    pluginEvent('destroy', this);\n    var el = this.el;\n    el[expando] = null;\n    off(el, 'mousedown', this._onTapStart);\n    off(el, 'touchstart', this._onTapStart);\n    off(el, 'pointerdown', this._onTapStart);\n\n    if (this.nativeDraggable) {\n      off(el, 'dragover', this);\n      off(el, 'dragenter', this);\n    } // Remove draggable attributes\n\n\n    Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n      el.removeAttribute('draggable');\n    });\n\n    this._onDrop();\n\n    this._disableDelayedDragEvents();\n\n    sortables.splice(sortables.indexOf(this.el), 1);\n    this.el = el = null;\n  },\n  _hideClone: function _hideClone() {\n    if (!cloneHidden) {\n      pluginEvent('hideClone', this);\n      if (Sortable.eventCanceled) return;\n      css(cloneEl, 'display', 'none');\n\n      if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n        cloneEl.parentNode.removeChild(cloneEl);\n      }\n\n      cloneHidden = true;\n    }\n  },\n  _showClone: function _showClone(putSortable) {\n    if (putSortable.lastPutMode !== 'clone') {\n      this._hideClone();\n\n      return;\n    }\n\n    if (cloneHidden) {\n      pluginEvent('showClone', this);\n      if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n      if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n        rootEl.insertBefore(cloneEl, dragEl);\n      } else if (nextEl) {\n        rootEl.insertBefore(cloneEl, nextEl);\n      } else {\n        rootEl.appendChild(cloneEl);\n      }\n\n      if (this.options.group.revertClone) {\n        this.animate(dragEl, cloneEl);\n      }\n\n      css(cloneEl, 'display', '');\n      cloneHidden = false;\n    }\n  }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n  if (evt.dataTransfer) {\n    evt.dataTransfer.dropEffect = 'move';\n  }\n\n  evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n  var evt,\n      sortable = fromEl[expando],\n      onMoveFn = sortable.options.onMove,\n      retVal; // Support for new CustomEvent feature\n\n  if (window.CustomEvent && !IE11OrLess && !Edge) {\n    evt = new CustomEvent('move', {\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    evt = document.createEvent('Event');\n    evt.initEvent('move', true, true);\n  }\n\n  evt.to = toEl;\n  evt.from = fromEl;\n  evt.dragged = dragEl;\n  evt.draggedRect = dragRect;\n  evt.related = targetEl || toEl;\n  evt.relatedRect = targetRect || getRect(toEl);\n  evt.willInsertAfter = willInsertAfter;\n  evt.originalEvent = originalEvent;\n  fromEl.dispatchEvent(evt);\n\n  if (onMoveFn) {\n    retVal = onMoveFn.call(sortable, evt, originalEvent);\n  }\n\n  return retVal;\n}\n\nfunction _disableDraggable(el) {\n  el.draggable = false;\n}\n\nfunction _unsilent() {\n  _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n  var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n  var spacer = 10;\n  return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n  var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n  var spacer = 10;\n  return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n  var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n      targetLength = vertical ? targetRect.height : targetRect.width,\n      targetS1 = vertical ? targetRect.top : targetRect.left,\n      targetS2 = vertical ? targetRect.bottom : targetRect.right,\n      invert = false;\n\n  if (!invertSwap) {\n    // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n    if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n      // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n      // check if past first invert threshold on side opposite of lastDirection\n      if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n        // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n        pastFirstInvertThresh = true;\n      }\n\n      if (!pastFirstInvertThresh) {\n        // dragEl shadow (target move distance shadow)\n        if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n        : mouseOnAxis > targetS2 - targetMoveDistance) {\n          return -lastDirection;\n        }\n      } else {\n        invert = true;\n      }\n    } else {\n      // Regular\n      if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n        return _getInsertDirection(target);\n      }\n    }\n  }\n\n  invert = invert || invertSwap;\n\n  if (invert) {\n    // Invert of regular\n    if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n      return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n    }\n  }\n\n  return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param  {HTMLElement} target       The target whose position dragEl is being inserted at\n * @return {Number}                   Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n  if (index(dragEl) < index(target)) {\n    return 1;\n  } else {\n    return -1;\n  }\n}\n/**\n * Generate id\n * @param   {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n  var str = el.tagName + el.className + el.src + el.href + el.textContent,\n      i = str.length,\n      sum = 0;\n\n  while (i--) {\n    sum += str.charCodeAt(i);\n  }\n\n  return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n  savedInputChecked.length = 0;\n  var inputs = root.getElementsByTagName('input');\n  var idx = inputs.length;\n\n  while (idx--) {\n    var el = inputs[idx];\n    el.checked && savedInputChecked.push(el);\n  }\n}\n\nfunction _nextTick(fn) {\n  return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n  return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n  on(document, 'touchmove', function (evt) {\n    if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n      evt.preventDefault();\n    }\n  });\n} // Export utils\n\n\nSortable.utils = {\n  on: on,\n  off: off,\n  css: css,\n  find: find,\n  is: function is(el, selector) {\n    return !!closest(el, selector, el, false);\n  },\n  extend: extend,\n  throttle: throttle,\n  closest: closest,\n  toggleClass: toggleClass,\n  clone: clone,\n  index: index,\n  nextTick: _nextTick,\n  cancelNextTick: _cancelNextTick,\n  detectDirection: _detectDirection,\n  getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param  {HTMLElement} element The element\n * @return {Sortable|undefined}         The instance of Sortable\n */\n\nSortable.get = function (element) {\n  return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param  {...SortablePlugin|SortablePlugin[]} plugins       Plugins being mounted\n */\n\n\nSortable.mount = function () {\n  for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n    plugins[_key] = arguments[_key];\n  }\n\n  if (plugins[0].constructor === Array) plugins = plugins[0];\n  plugins.forEach(function (plugin) {\n    if (!plugin.prototype || !plugin.prototype.constructor) {\n      throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n    }\n\n    if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n    PluginManager.mount(plugin);\n  });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement}  el\n * @param {Object}      [options]\n */\n\n\nSortable.create = function (el, options) {\n  return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n    scrollEl,\n    scrollRootEl,\n    scrolling = false,\n    lastAutoScrollX,\n    lastAutoScrollY,\n    touchEvt$1,\n    pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n  function AutoScroll() {\n    this.defaults = {\n      scroll: true,\n      forceAutoScrollFallback: false,\n      scrollSensitivity: 30,\n      scrollSpeed: 10,\n      bubbleScroll: true\n    }; // Bind all private methods\n\n    for (var fn in this) {\n      if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n  }\n\n  AutoScroll.prototype = {\n    dragStarted: function dragStarted(_ref) {\n      var originalEvent = _ref.originalEvent;\n\n      if (this.sortable.nativeDraggable) {\n        on(document, 'dragover', this._handleAutoScroll);\n      } else {\n        if (this.options.supportPointer) {\n          on(document, 'pointermove', this._handleFallbackAutoScroll);\n        } else if (originalEvent.touches) {\n          on(document, 'touchmove', this._handleFallbackAutoScroll);\n        } else {\n          on(document, 'mousemove', this._handleFallbackAutoScroll);\n        }\n      }\n    },\n    dragOverCompleted: function dragOverCompleted(_ref2) {\n      var originalEvent = _ref2.originalEvent;\n\n      // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n      if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n        this._handleAutoScroll(originalEvent);\n      }\n    },\n    drop: function drop() {\n      if (this.sortable.nativeDraggable) {\n        off(document, 'dragover', this._handleAutoScroll);\n      } else {\n        off(document, 'pointermove', this._handleFallbackAutoScroll);\n        off(document, 'touchmove', this._handleFallbackAutoScroll);\n        off(document, 'mousemove', this._handleFallbackAutoScroll);\n      }\n\n      clearPointerElemChangedInterval();\n      clearAutoScrolls();\n      cancelThrottle();\n    },\n    nulling: function nulling() {\n      touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n      autoScrolls.length = 0;\n    },\n    _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n      this._handleAutoScroll(evt, true);\n    },\n    _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n      var _this = this;\n\n      var x = (evt.touches ? evt.touches[0] : evt).clientX,\n          y = (evt.touches ? evt.touches[0] : evt).clientY,\n          elem = document.elementFromPoint(x, y);\n      touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n      // Edge's autoscroll seems too conditional,\n      // MACOS Safari does not have autoscroll,\n      // Firefox and Chrome are good\n\n      if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n        autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n        var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n        if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n          pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n          pointerElemChangedInterval = setInterval(function () {\n            var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n            if (newElem !== ogElemScroller) {\n              ogElemScroller = newElem;\n              clearAutoScrolls();\n            }\n\n            autoScroll(evt, _this.options, newElem, fallback);\n          }, 10);\n          lastAutoScrollX = x;\n          lastAutoScrollY = y;\n        }\n      } else {\n        // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n        if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n          clearAutoScrolls();\n          return;\n        }\n\n        autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n      }\n    }\n  };\n  return _extends(AutoScroll, {\n    pluginName: 'scroll',\n    initializeByDefault: true\n  });\n}\n\nfunction clearAutoScrolls() {\n  autoScrolls.forEach(function (autoScroll) {\n    clearInterval(autoScroll.pid);\n  });\n  autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n  clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n  // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n  if (!options.scroll) return;\n  var x = (evt.touches ? evt.touches[0] : evt).clientX,\n      y = (evt.touches ? evt.touches[0] : evt).clientY,\n      sens = options.scrollSensitivity,\n      speed = options.scrollSpeed,\n      winScroller = getWindowScrollingElement();\n  var scrollThisInstance = false,\n      scrollCustomFn; // New scroll root, set scrollEl\n\n  if (scrollRootEl !== rootEl) {\n    scrollRootEl = rootEl;\n    clearAutoScrolls();\n    scrollEl = options.scroll;\n    scrollCustomFn = options.scrollFn;\n\n    if (scrollEl === true) {\n      scrollEl = getParentAutoScrollElement(rootEl, true);\n    }\n  }\n\n  var layersOut = 0;\n  var currentParent = scrollEl;\n\n  do {\n    var el = currentParent,\n        rect = getRect(el),\n        top = rect.top,\n        bottom = rect.bottom,\n        left = rect.left,\n        right = rect.right,\n        width = rect.width,\n        height = rect.height,\n        canScrollX = void 0,\n        canScrollY = void 0,\n        scrollWidth = el.scrollWidth,\n        scrollHeight = el.scrollHeight,\n        elCSS = css(el),\n        scrollPosX = el.scrollLeft,\n        scrollPosY = el.scrollTop;\n\n    if (el === winScroller) {\n      canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n      canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n    } else {\n      canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n      canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n    }\n\n    var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n    var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n    if (!autoScrolls[layersOut]) {\n      for (var i = 0; i <= layersOut; i++) {\n        if (!autoScrolls[i]) {\n          autoScrolls[i] = {};\n        }\n      }\n    }\n\n    if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n      autoScrolls[layersOut].el = el;\n      autoScrolls[layersOut].vx = vx;\n      autoScrolls[layersOut].vy = vy;\n      clearInterval(autoScrolls[layersOut].pid);\n\n      if (vx != 0 || vy != 0) {\n        scrollThisInstance = true;\n        /* jshint loopfunc:true */\n\n        autoScrolls[layersOut].pid = setInterval(function () {\n          // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n          if (isFallback && this.layer === 0) {\n            Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n          }\n\n          var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n          var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n          if (typeof scrollCustomFn === 'function') {\n            if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n              return;\n            }\n          }\n\n          scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n        }.bind({\n          layer: layersOut\n        }), 24);\n      }\n    }\n\n    layersOut++;\n  } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n  scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n  var originalEvent = _ref.originalEvent,\n      putSortable = _ref.putSortable,\n      dragEl = _ref.dragEl,\n      activeSortable = _ref.activeSortable,\n      dispatchSortableEvent = _ref.dispatchSortableEvent,\n      hideGhostForTarget = _ref.hideGhostForTarget,\n      unhideGhostForTarget = _ref.unhideGhostForTarget;\n  if (!originalEvent) return;\n  var toSortable = putSortable || activeSortable;\n  hideGhostForTarget();\n  var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n  var target = document.elementFromPoint(touch.clientX, touch.clientY);\n  unhideGhostForTarget();\n\n  if (toSortable && !toSortable.el.contains(target)) {\n    dispatchSortableEvent('spill');\n    this.onSpill({\n      dragEl: dragEl,\n      putSortable: putSortable\n    });\n  }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n  startIndex: null,\n  dragStart: function dragStart(_ref2) {\n    var oldDraggableIndex = _ref2.oldDraggableIndex;\n    this.startIndex = oldDraggableIndex;\n  },\n  onSpill: function onSpill(_ref3) {\n    var dragEl = _ref3.dragEl,\n        putSortable = _ref3.putSortable;\n    this.sortable.captureAnimationState();\n\n    if (putSortable) {\n      putSortable.captureAnimationState();\n    }\n\n    var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n    if (nextSibling) {\n      this.sortable.el.insertBefore(dragEl, nextSibling);\n    } else {\n      this.sortable.el.appendChild(dragEl);\n    }\n\n    this.sortable.animateAll();\n\n    if (putSortable) {\n      putSortable.animateAll();\n    }\n  },\n  drop: drop\n};\n\n_extends(Revert, {\n  pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n  onSpill: function onSpill(_ref4) {\n    var dragEl = _ref4.dragEl,\n        putSortable = _ref4.putSortable;\n    var parentSortable = putSortable || this.sortable;\n    parentSortable.captureAnimationState();\n    dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n    parentSortable.animateAll();\n  },\n  drop: drop\n};\n\n_extends(Remove, {\n  pluginName: 'removeOnSpill'\n});\n\nvar OnSpill = [Remove, Revert];\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n  function Swap() {\n    this.defaults = {\n      swapClass: 'sortable-swap-highlight'\n    };\n  }\n\n  Swap.prototype = {\n    dragStart: function dragStart(_ref) {\n      var dragEl = _ref.dragEl;\n      lastSwapEl = dragEl;\n    },\n    dragOverValid: function dragOverValid(_ref2) {\n      var completed = _ref2.completed,\n          target = _ref2.target,\n          onMove = _ref2.onMove,\n          activeSortable = _ref2.activeSortable,\n          changed = _ref2.changed,\n          cancel = _ref2.cancel;\n      if (!activeSortable.options.swap) return;\n      var el = this.sortable.el,\n          options = this.options;\n\n      if (target && target !== el) {\n        var prevSwapEl = lastSwapEl;\n\n        if (onMove(target) !== false) {\n          toggleClass(target, options.swapClass, true);\n          lastSwapEl = target;\n        } else {\n          lastSwapEl = null;\n        }\n\n        if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n          toggleClass(prevSwapEl, options.swapClass, false);\n        }\n      }\n\n      changed();\n      completed(true);\n      cancel();\n    },\n    drop: function drop(_ref3) {\n      var activeSortable = _ref3.activeSortable,\n          putSortable = _ref3.putSortable,\n          dragEl = _ref3.dragEl;\n      var toSortable = putSortable || this.sortable;\n      var options = this.options;\n      lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n      if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n        if (dragEl !== lastSwapEl) {\n          toSortable.captureAnimationState();\n          if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n          swapNodes(dragEl, lastSwapEl);\n          toSortable.animateAll();\n          if (toSortable !== activeSortable) activeSortable.animateAll();\n        }\n      }\n    },\n    nulling: function nulling() {\n      lastSwapEl = null;\n    }\n  };\n  return _extends(Swap, {\n    pluginName: 'swap',\n    eventProperties: function eventProperties() {\n      return {\n        swapItem: lastSwapEl\n      };\n    }\n  });\n}\n\nfunction swapNodes(n1, n2) {\n  var p1 = n1.parentNode,\n      p2 = n2.parentNode,\n      i1,\n      i2;\n  if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n  i1 = index(n1);\n  i2 = index(n2);\n\n  if (p1.isEqualNode(p2) && i1 < i2) {\n    i2++;\n  }\n\n  p1.insertBefore(n2, p1.children[i1]);\n  p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n    multiDragClones = [],\n    lastMultiDragSelect,\n    // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n    initialFolding = false,\n    // Initial multi-drag fold when drag started\nfolding = false,\n    // Folding any other time\ndragStarted = false,\n    dragEl$1,\n    clonesFromRect,\n    clonesHidden;\n\nfunction MultiDragPlugin() {\n  function MultiDrag(sortable) {\n    // Bind all private methods\n    for (var fn in this) {\n      if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n\n    if (sortable.options.supportPointer) {\n      on(document, 'pointerup', this._deselectMultiDrag);\n    } else {\n      on(document, 'mouseup', this._deselectMultiDrag);\n      on(document, 'touchend', this._deselectMultiDrag);\n    }\n\n    on(document, 'keydown', this._checkKeyDown);\n    on(document, 'keyup', this._checkKeyUp);\n    this.defaults = {\n      selectedClass: 'sortable-selected',\n      multiDragKey: null,\n      setData: function setData(dataTransfer, dragEl) {\n        var data = '';\n\n        if (multiDragElements.length && multiDragSortable === sortable) {\n          multiDragElements.forEach(function (multiDragElement, i) {\n            data += (!i ? '' : ', ') + multiDragElement.textContent;\n          });\n        } else {\n          data = dragEl.textContent;\n        }\n\n        dataTransfer.setData('Text', data);\n      }\n    };\n  }\n\n  MultiDrag.prototype = {\n    multiDragKeyDown: false,\n    isMultiDrag: false,\n    delayStartGlobal: function delayStartGlobal(_ref) {\n      var dragged = _ref.dragEl;\n      dragEl$1 = dragged;\n    },\n    delayEnded: function delayEnded() {\n      this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n    },\n    setupClone: function setupClone(_ref2) {\n      var sortable = _ref2.sortable,\n          cancel = _ref2.cancel;\n      if (!this.isMultiDrag) return;\n\n      for (var i = 0; i < multiDragElements.length; i++) {\n        multiDragClones.push(clone(multiDragElements[i]));\n        multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n        multiDragClones[i].draggable = false;\n        multiDragClones[i].style['will-change'] = '';\n        toggleClass(multiDragClones[i], this.options.selectedClass, false);\n        multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n      }\n\n      sortable._hideClone();\n\n      cancel();\n    },\n    clone: function clone(_ref3) {\n      var sortable = _ref3.sortable,\n          rootEl = _ref3.rootEl,\n          dispatchSortableEvent = _ref3.dispatchSortableEvent,\n          cancel = _ref3.cancel;\n      if (!this.isMultiDrag) return;\n\n      if (!this.options.removeCloneOnHide) {\n        if (multiDragElements.length && multiDragSortable === sortable) {\n          insertMultiDragClones(true, rootEl);\n          dispatchSortableEvent('clone');\n          cancel();\n        }\n      }\n    },\n    showClone: function showClone(_ref4) {\n      var cloneNowShown = _ref4.cloneNowShown,\n          rootEl = _ref4.rootEl,\n          cancel = _ref4.cancel;\n      if (!this.isMultiDrag) return;\n      insertMultiDragClones(false, rootEl);\n      multiDragClones.forEach(function (clone) {\n        css(clone, 'display', '');\n      });\n      cloneNowShown();\n      clonesHidden = false;\n      cancel();\n    },\n    hideClone: function hideClone(_ref5) {\n      var _this = this;\n\n      var sortable = _ref5.sortable,\n          cloneNowHidden = _ref5.cloneNowHidden,\n          cancel = _ref5.cancel;\n      if (!this.isMultiDrag) return;\n      multiDragClones.forEach(function (clone) {\n        css(clone, 'display', 'none');\n\n        if (_this.options.removeCloneOnHide && clone.parentNode) {\n          clone.parentNode.removeChild(clone);\n        }\n      });\n      cloneNowHidden();\n      clonesHidden = true;\n      cancel();\n    },\n    dragStartGlobal: function dragStartGlobal(_ref6) {\n      var sortable = _ref6.sortable;\n\n      if (!this.isMultiDrag && multiDragSortable) {\n        multiDragSortable.multiDrag._deselectMultiDrag();\n      }\n\n      multiDragElements.forEach(function (multiDragElement) {\n        multiDragElement.sortableIndex = index(multiDragElement);\n      }); // Sort multi-drag elements\n\n      multiDragElements = multiDragElements.sort(function (a, b) {\n        return a.sortableIndex - b.sortableIndex;\n      });\n      dragStarted = true;\n    },\n    dragStarted: function dragStarted(_ref7) {\n      var _this2 = this;\n\n      var sortable = _ref7.sortable;\n      if (!this.isMultiDrag) return;\n\n      if (this.options.sort) {\n        // Capture rects,\n        // hide multi drag elements (by positioning them absolute),\n        // set multi drag elements rects to dragRect,\n        // show multi drag elements,\n        // animate to rects,\n        // unset rects & remove from DOM\n        sortable.captureAnimationState();\n\n        if (this.options.animation) {\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            css(multiDragElement, 'position', 'absolute');\n          });\n          var dragRect = getRect(dragEl$1, false, true, true);\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            setRect(multiDragElement, dragRect);\n          });\n          folding = true;\n          initialFolding = true;\n        }\n      }\n\n      sortable.animateAll(function () {\n        folding = false;\n        initialFolding = false;\n\n        if (_this2.options.animation) {\n          multiDragElements.forEach(function (multiDragElement) {\n            unsetRect(multiDragElement);\n          });\n        } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n        if (_this2.options.sort) {\n          removeMultiDragElements();\n        }\n      });\n    },\n    dragOver: function dragOver(_ref8) {\n      var target = _ref8.target,\n          completed = _ref8.completed,\n          cancel = _ref8.cancel;\n\n      if (folding && ~multiDragElements.indexOf(target)) {\n        completed(false);\n        cancel();\n      }\n    },\n    revert: function revert(_ref9) {\n      var fromSortable = _ref9.fromSortable,\n          rootEl = _ref9.rootEl,\n          sortable = _ref9.sortable,\n          dragRect = _ref9.dragRect;\n\n      if (multiDragElements.length > 1) {\n        // Setup unfold animation\n        multiDragElements.forEach(function (multiDragElement) {\n          sortable.addAnimationState({\n            target: multiDragElement,\n            rect: folding ? getRect(multiDragElement) : dragRect\n          });\n          unsetRect(multiDragElement);\n          multiDragElement.fromRect = dragRect;\n          fromSortable.removeAnimationState(multiDragElement);\n        });\n        folding = false;\n        insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n      }\n    },\n    dragOverCompleted: function dragOverCompleted(_ref10) {\n      var sortable = _ref10.sortable,\n          isOwner = _ref10.isOwner,\n          insertion = _ref10.insertion,\n          activeSortable = _ref10.activeSortable,\n          parentEl = _ref10.parentEl,\n          putSortable = _ref10.putSortable;\n      var options = this.options;\n\n      if (insertion) {\n        // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n        if (isOwner) {\n          activeSortable._hideClone();\n        }\n\n        initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n        if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n          // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n          var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n            // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n            parentEl.appendChild(multiDragElement);\n          });\n          folding = true;\n        } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n        if (!isOwner) {\n          // Only remove if not folding (folding will remove them anyways)\n          if (!folding) {\n            removeMultiDragElements();\n          }\n\n          if (multiDragElements.length > 1) {\n            var clonesHiddenBefore = clonesHidden;\n\n            activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n            if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n              multiDragClones.forEach(function (clone) {\n                activeSortable.addAnimationState({\n                  target: clone,\n                  rect: clonesFromRect\n                });\n                clone.fromRect = clonesFromRect;\n                clone.thisAnimationDuration = null;\n              });\n            }\n          } else {\n            activeSortable._showClone(sortable);\n          }\n        }\n      }\n    },\n    dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n      var dragRect = _ref11.dragRect,\n          isOwner = _ref11.isOwner,\n          activeSortable = _ref11.activeSortable;\n      multiDragElements.forEach(function (multiDragElement) {\n        multiDragElement.thisAnimationDuration = null;\n      });\n\n      if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n        clonesFromRect = _extends({}, dragRect);\n        var dragMatrix = matrix(dragEl$1, true);\n        clonesFromRect.top -= dragMatrix.f;\n        clonesFromRect.left -= dragMatrix.e;\n      }\n    },\n    dragOverAnimationComplete: function dragOverAnimationComplete() {\n      if (folding) {\n        folding = false;\n        removeMultiDragElements();\n      }\n    },\n    drop: function drop(_ref12) {\n      var evt = _ref12.originalEvent,\n          rootEl = _ref12.rootEl,\n          parentEl = _ref12.parentEl,\n          sortable = _ref12.sortable,\n          dispatchSortableEvent = _ref12.dispatchSortableEvent,\n          oldIndex = _ref12.oldIndex,\n          putSortable = _ref12.putSortable;\n      var toSortable = putSortable || this.sortable;\n      if (!evt) return;\n      var options = this.options,\n          children = parentEl.children; // Multi-drag selection\n\n      if (!dragStarted) {\n        if (options.multiDragKey && !this.multiDragKeyDown) {\n          this._deselectMultiDrag();\n        }\n\n        toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n        if (!~multiDragElements.indexOf(dragEl$1)) {\n          multiDragElements.push(dragEl$1);\n          dispatchEvent({\n            sortable: sortable,\n            rootEl: rootEl,\n            name: 'select',\n            targetEl: dragEl$1,\n            originalEvt: evt\n          }); // Modifier activated, select from last to dragEl\n\n          if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n            var lastIndex = index(lastMultiDragSelect),\n                currentIndex = index(dragEl$1);\n\n            if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n              // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n              // (but previous selection existed)\n              var n, i;\n\n              if (currentIndex > lastIndex) {\n                i = lastIndex;\n                n = currentIndex;\n              } else {\n                i = currentIndex;\n                n = lastIndex + 1;\n              }\n\n              for (; i < n; i++) {\n                if (~multiDragElements.indexOf(children[i])) continue;\n                toggleClass(children[i], options.selectedClass, true);\n                multiDragElements.push(children[i]);\n                dispatchEvent({\n                  sortable: sortable,\n                  rootEl: rootEl,\n                  name: 'select',\n                  targetEl: children[i],\n                  originalEvt: evt\n                });\n              }\n            }\n          } else {\n            lastMultiDragSelect = dragEl$1;\n          }\n\n          multiDragSortable = toSortable;\n        } else {\n          multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n          lastMultiDragSelect = null;\n          dispatchEvent({\n            sortable: sortable,\n            rootEl: rootEl,\n            name: 'deselect',\n            targetEl: dragEl$1,\n            originalEvt: evt\n          });\n        }\n      } // Multi-drag drop\n\n\n      if (dragStarted && this.isMultiDrag) {\n        folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n        if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n          var dragRect = getRect(dragEl$1),\n              multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n          if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n          toSortable.captureAnimationState();\n\n          if (!initialFolding) {\n            if (options.animation) {\n              dragEl$1.fromRect = dragRect;\n              multiDragElements.forEach(function (multiDragElement) {\n                multiDragElement.thisAnimationDuration = null;\n\n                if (multiDragElement !== dragEl$1) {\n                  var rect = folding ? getRect(multiDragElement) : dragRect;\n                  multiDragElement.fromRect = rect; // Prepare unfold animation\n\n                  toSortable.addAnimationState({\n                    target: multiDragElement,\n                    rect: rect\n                  });\n                }\n              });\n            } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n            // properly they must all be removed\n\n\n            removeMultiDragElements();\n            multiDragElements.forEach(function (multiDragElement) {\n              if (children[multiDragIndex]) {\n                parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n              } else {\n                parentEl.appendChild(multiDragElement);\n              }\n\n              multiDragIndex++;\n            }); // If initial folding is done, the elements may have changed position because they are now\n            // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n            // must be fired here as Sortable will not.\n\n            if (oldIndex === index(dragEl$1)) {\n              var update = false;\n              multiDragElements.forEach(function (multiDragElement) {\n                if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n                  update = true;\n                  return;\n                }\n              });\n\n              if (update) {\n                dispatchSortableEvent('update');\n              }\n            }\n          } // Must be done after capturing individual rects (scroll bar)\n\n\n          multiDragElements.forEach(function (multiDragElement) {\n            unsetRect(multiDragElement);\n          });\n          toSortable.animateAll();\n        }\n\n        multiDragSortable = toSortable;\n      } // Remove clones if necessary\n\n\n      if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n        multiDragClones.forEach(function (clone) {\n          clone.parentNode && clone.parentNode.removeChild(clone);\n        });\n      }\n    },\n    nullingGlobal: function nullingGlobal() {\n      this.isMultiDrag = dragStarted = false;\n      multiDragClones.length = 0;\n    },\n    destroyGlobal: function destroyGlobal() {\n      this._deselectMultiDrag();\n\n      off(document, 'pointerup', this._deselectMultiDrag);\n      off(document, 'mouseup', this._deselectMultiDrag);\n      off(document, 'touchend', this._deselectMultiDrag);\n      off(document, 'keydown', this._checkKeyDown);\n      off(document, 'keyup', this._checkKeyUp);\n    },\n    _deselectMultiDrag: function _deselectMultiDrag(evt) {\n      if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n      if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n      if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n      if (evt && evt.button !== 0) return;\n\n      while (multiDragElements.length) {\n        var el = multiDragElements[0];\n        toggleClass(el, this.options.selectedClass, false);\n        multiDragElements.shift();\n        dispatchEvent({\n          sortable: this.sortable,\n          rootEl: this.sortable.el,\n          name: 'deselect',\n          targetEl: el,\n          originalEvt: evt\n        });\n      }\n    },\n    _checkKeyDown: function _checkKeyDown(evt) {\n      if (evt.key === this.options.multiDragKey) {\n        this.multiDragKeyDown = true;\n      }\n    },\n    _checkKeyUp: function _checkKeyUp(evt) {\n      if (evt.key === this.options.multiDragKey) {\n        this.multiDragKeyDown = false;\n      }\n    }\n  };\n  return _extends(MultiDrag, {\n    // Static methods & properties\n    pluginName: 'multiDrag',\n    utils: {\n      /**\n       * Selects the provided multi-drag item\n       * @param  {HTMLElement} el    The element to be selected\n       */\n      select: function select(el) {\n        var sortable = el.parentNode[expando];\n        if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n        if (multiDragSortable && multiDragSortable !== sortable) {\n          multiDragSortable.multiDrag._deselectMultiDrag();\n\n          multiDragSortable = sortable;\n        }\n\n        toggleClass(el, sortable.options.selectedClass, true);\n        multiDragElements.push(el);\n      },\n\n      /**\n       * Deselects the provided multi-drag item\n       * @param  {HTMLElement} el    The element to be deselected\n       */\n      deselect: function deselect(el) {\n        var sortable = el.parentNode[expando],\n            index = multiDragElements.indexOf(el);\n        if (!sortable || !sortable.options.multiDrag || !~index) return;\n        toggleClass(el, sortable.options.selectedClass, false);\n        multiDragElements.splice(index, 1);\n      }\n    },\n    eventProperties: function eventProperties() {\n      var _this3 = this;\n\n      var oldIndicies = [],\n          newIndicies = [];\n      multiDragElements.forEach(function (multiDragElement) {\n        oldIndicies.push({\n          multiDragElement: multiDragElement,\n          index: multiDragElement.sortableIndex\n        }); // multiDragElements will already be sorted if folding\n\n        var newIndex;\n\n        if (folding && multiDragElement !== dragEl$1) {\n          newIndex = -1;\n        } else if (folding) {\n          newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n        } else {\n          newIndex = index(multiDragElement);\n        }\n\n        newIndicies.push({\n          multiDragElement: multiDragElement,\n          index: newIndex\n        });\n      });\n      return {\n        items: _toConsumableArray(multiDragElements),\n        clones: [].concat(multiDragClones),\n        oldIndicies: oldIndicies,\n        newIndicies: newIndicies\n      };\n    },\n    optionListeners: {\n      multiDragKey: function multiDragKey(key) {\n        key = key.toLowerCase();\n\n        if (key === 'ctrl') {\n          key = 'Control';\n        } else if (key.length > 1) {\n          key = key.charAt(0).toUpperCase() + key.substr(1);\n        }\n\n        return key;\n      }\n    }\n  });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n  multiDragElements.forEach(function (multiDragElement, i) {\n    var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n    if (target) {\n      rootEl.insertBefore(multiDragElement, target);\n    } else {\n      rootEl.appendChild(multiDragElement);\n    }\n  });\n}\n/**\n * Insert multi-drag clones\n * @param  {[Boolean]} elementsInserted  Whether the multi-drag elements are inserted\n * @param  {HTMLElement} rootEl\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n  multiDragClones.forEach(function (clone, i) {\n    var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n    if (target) {\n      rootEl.insertBefore(clone, target);\n    } else {\n      rootEl.appendChild(clone);\n    }\n  });\n}\n\nfunction removeMultiDragElements() {\n  multiDragElements.forEach(function (multiDragElement) {\n    if (multiDragElement === dragEl$1) return;\n    multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n  });\n}\n\nexport default Sortable;\nexport { AutoScrollPlugin as AutoScroll, MultiDragPlugin as MultiDrag, OnSpill, Sortable, SwapPlugin as Swap };\n", "import { Sortable, OnSpill, AutoScroll } from 'sortablejs/modular/sortable.core.esm'\nSortable.mount(OnSpill)\nSortable.mount(AutoScroll) // This only applies to old browsers, no clue if it works.\n\n/**\n * Creates an instance of a Sortable with the options\n *\n * @param {HTMLElement} element - The element to make sortable\n * @param {Object} options - sortablejs options to merge with the defaults\n * @return {Sortable} The sortable instance on the element.\n * @example\n *  const sortable = createSortable(document.querySelector('.sortable'), { animation: 200 })\n */\nexport function createSortable(element, options = {}) {\n  options = {\n    ghostClass: 'sortable-placeholder',\n    easing: 'cubic-bezier(0.83, 0, 0.17, 1)',\n    filter: '.sortable-ignore',\n    dragoverBubble: false,\n    scroll: true,\n    revertOnSpill: true,\n    animation: 125,\n    ...options,\n  }\n\n  return Sortable.create(element, options)\n}\n", "/* global isMobile */\n\nimport { Controller } from '@hotwired/stimulus'\nimport { createSortable } from '../helpers/sortable_helper'\nimport { put } from '../helpers/fetch_helper'\n\n/**\n * Class representing the submit on drop version of the sortable controller\n * @extends Controller\n */\nexport default class DropSortableController extends Controller {\n  static values = { options: Object, path: String }\n  static targets = ['item']\n\n  /**\n   * Initialize the Events and Sortable when the Stimulus controller is 'connected'\n   */\n  connect() {\n    const options = {\n      onEnd: (event) => {\n        this.submit(event)\n      },\n      draggable: `[data-drop-sortable-target='item']`,\n      ...this.optionsValue,\n    }\n\n    if (isMobile()) {\n      options.handle = '.fa-grip-dots-vertical'\n    }\n\n    this.itemTargets.map((item) => item.classList.add('draggable-item'))\n    createSortable(this.element, options)\n  }\n\n  submit() {\n    // When the dragged element is dropped, then update the order of all the elements in db\n    const ids = this.itemTargets.map((item) => item.dataset.id)\n    put(this.pathValue, { ids })\n  }\n}\n", "var objectExtend = extend;\n\n/*\n  var obj = {a: 3, b: 5};\n  extend(obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n  obj; // {a: 4, b: 5, c: 8}\n\n  var obj = {a: 3, b: 5};\n  extend({}, obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n  obj; // {a: 3, b: 5}\n\n  var arr = [1, 2, 3];\n  var obj = {a: 3, b: 5};\n  extend(obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n  arr.push(4);\n  obj; // {a: 3, b: 5, c: [1, 2, 3, 4]}\n\n  var arr = [1, 2, 3];\n  var obj = {a: 3, b: 5};\n  extend(true, obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n  arr.push(4);\n  obj; // {a: 3, b: 5, c: [1, 2, 3]}\n\n  extend({a: 4, b: 5}); // {a: 4, b: 5}\n  extend({a: 4, b: 5}, 3); {a: 4, b: 5}\n  extend({a: 4, b: 5}, true); {a: 4, b: 5}\n  extend('hello', {a: 4, b: 5}); // throws\n  extend(3, {a: 4, b: 5}); // throws\n*/\n\nfunction extend(/* [deep], obj1, obj2, [objn] */) {\n  var args = [].slice.call(arguments);\n  var deep = false;\n  if (typeof args[0] == 'boolean') {\n    deep = args.shift();\n  }\n  var result = args[0];\n  if (isUnextendable(result)) {\n    throw new Error('extendee must be an object');\n  }\n  var extenders = args.slice(1);\n  var len = extenders.length;\n  for (var i = 0; i < len; i++) {\n    var extender = extenders[i];\n    for (var key in extender) {\n      if (Object.prototype.hasOwnProperty.call(extender, key)) {\n        var value = extender[key];\n        if (deep && isCloneable(value)) {\n          var base = Array.isArray(value) ? [] : {};\n          result[key] = extend(\n            true,\n            Object.prototype.hasOwnProperty.call(result, key) && !isUnextendable(result[key])\n              ? result[key]\n              : base,\n            value\n          );\n        } else {\n          result[key] = value;\n        }\n      }\n    }\n  }\n  return result;\n}\n\nfunction isCloneable(obj) {\n  return Array.isArray(obj) || {}.toString.call(obj) == '[object Object]';\n}\n\nfunction isUnextendable(val) {\n  return !val || (typeof val != 'object' && typeof val != 'function');\n}\n\nexport {objectExtend as default};\n", "import extend from \"just-extend\";\nimport Emitter from \"./emitter\";\nimport defaultOptions from \"./options\";\n\nexport default class Dropzone extends Emitter {\n  static initClass() {\n    // Exposing the emitter class, mainly for tests\n    this.prototype.Emitter = Emitter;\n\n    /*\n     This is a list of all available events you can register on a dropzone object.\n\n     You can register an event handler like this:\n\n     dropzone.on(\"dragEnter\", function() { });\n\n     */\n    this.prototype.events = [\n      \"drop\",\n      \"dragstart\",\n      \"dragend\",\n      \"dragenter\",\n      \"dragover\",\n      \"dragleave\",\n      \"addedfile\",\n      \"addedfiles\",\n      \"removedfile\",\n      \"thumbnail\",\n      \"error\",\n      \"errormultiple\",\n      \"processing\",\n      \"processingmultiple\",\n      \"uploadprogress\",\n      \"totaluploadprogress\",\n      \"sending\",\n      \"sendingmultiple\",\n      \"success\",\n      \"successmultiple\",\n      \"canceled\",\n      \"canceledmultiple\",\n      \"complete\",\n      \"completemultiple\",\n      \"reset\",\n      \"maxfilesexceeded\",\n      \"maxfilesreached\",\n      \"queuecomplete\",\n    ];\n\n    this.prototype._thumbnailQueue = [];\n    this.prototype._processingThumbnail = false;\n  }\n\n  constructor(el, options) {\n    super();\n    let fallback, left;\n    this.element = el;\n\n    this.clickableElements = [];\n    this.listeners = [];\n    this.files = []; // All files\n\n    if (typeof this.element === \"string\") {\n      this.element = document.querySelector(this.element);\n    }\n\n    // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n    if (!this.element || this.element.nodeType == null) {\n      throw new Error(\"Invalid dropzone element.\");\n    }\n\n    if (this.element.dropzone) {\n      throw new Error(\"Dropzone already attached.\");\n    }\n\n    // Now add this dropzone to the instances.\n    Dropzone.instances.push(this);\n\n    // Put the dropzone inside the element itself.\n    this.element.dropzone = this;\n\n    let elementOptions =\n      (left = Dropzone.optionsForElement(this.element)) != null ? left : {};\n\n    this.options = extend(\n      true,\n      {},\n      defaultOptions,\n      elementOptions,\n      options != null ? options : {}\n    );\n\n    this.options.previewTemplate = this.options.previewTemplate.replace(\n      /\\n*/g,\n      \"\"\n    );\n\n    // If the browser failed, just call the fallback and leave\n    if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n      return this.options.fallback.call(this);\n    }\n\n    // @options.url = @element.getAttribute \"action\" unless @options.url?\n    if (this.options.url == null) {\n      this.options.url = this.element.getAttribute(\"action\");\n    }\n\n    if (!this.options.url) {\n      throw new Error(\"No URL provided.\");\n    }\n\n    if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n      throw new Error(\n        \"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\"\n      );\n    }\n\n    if (this.options.uploadMultiple && this.options.chunking) {\n      throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n    }\n\n    if (this.options.binaryBody && this.options.uploadMultiple) {\n      throw new Error(\"You cannot set both: binaryBody and uploadMultiple.\");\n    }\n\n    // Backwards compatibility\n    if (this.options.acceptedMimeTypes) {\n      this.options.acceptedFiles = this.options.acceptedMimeTypes;\n      delete this.options.acceptedMimeTypes;\n    }\n\n    // Backwards compatibility\n    if (this.options.renameFilename != null) {\n      this.options.renameFile = (file) =>\n        this.options.renameFilename.call(this, file.name, file);\n    }\n\n    if (typeof this.options.method === \"string\") {\n      this.options.method = this.options.method.toUpperCase();\n    }\n\n    if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n      // Remove the fallback\n      fallback.parentNode.removeChild(fallback);\n    }\n\n    // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n    if (this.options.previewsContainer !== false) {\n      if (this.options.previewsContainer) {\n        this.previewsContainer = Dropzone.getElement(\n          this.options.previewsContainer,\n          \"previewsContainer\"\n        );\n      } else {\n        this.previewsContainer = this.element;\n      }\n    }\n\n    if (this.options.clickable) {\n      if (this.options.clickable === true) {\n        this.clickableElements = [this.element];\n      } else {\n        this.clickableElements = Dropzone.getElements(\n          this.options.clickable,\n          \"clickable\"\n        );\n      }\n    }\n\n    this.init();\n  }\n\n  // Returns all files that have been accepted\n  getAcceptedFiles() {\n    return this.files.filter((file) => file.accepted).map((file) => file);\n  }\n\n  // Returns all files that have been rejected\n  // Not sure when that's going to be useful, but added for completeness.\n  getRejectedFiles() {\n    return this.files.filter((file) => !file.accepted).map((file) => file);\n  }\n\n  getFilesWithStatus(status) {\n    return this.files\n      .filter((file) => file.status === status)\n      .map((file) => file);\n  }\n\n  // Returns all files that are in the queue\n  getQueuedFiles() {\n    return this.getFilesWithStatus(Dropzone.QUEUED);\n  }\n\n  getUploadingFiles() {\n    return this.getFilesWithStatus(Dropzone.UPLOADING);\n  }\n\n  getAddedFiles() {\n    return this.getFilesWithStatus(Dropzone.ADDED);\n  }\n\n  // Files that are either queued or uploading\n  getActiveFiles() {\n    return this.files\n      .filter(\n        (file) =>\n          file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED\n      )\n      .map((file) => file);\n  }\n\n  // The function that gets called when Dropzone is initialized. You\n  // can (and should) setup event listeners inside this function.\n  init() {\n    // In case it isn't set already\n    if (this.element.tagName === \"form\") {\n      this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n    }\n\n    if (\n      this.element.classList.contains(\"dropzone\") &&\n      !this.element.querySelector(\".dz-message\")\n    ) {\n      this.element.appendChild(\n        Dropzone.createElement(\n          `<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">${this.options.dictDefaultMessage}</button></div>`\n        )\n      );\n    }\n\n    if (this.clickableElements.length) {\n      let setupHiddenFileInput = () => {\n        if (this.hiddenFileInput) {\n          this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        }\n        this.hiddenFileInput = document.createElement(\"input\");\n        this.hiddenFileInput.setAttribute(\"type\", \"file\");\n        if (this.options.maxFiles === null || this.options.maxFiles > 1) {\n          this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n        }\n        this.hiddenFileInput.className = \"dz-hidden-input\";\n\n        if (this.options.acceptedFiles !== null) {\n          this.hiddenFileInput.setAttribute(\n            \"accept\",\n            this.options.acceptedFiles\n          );\n        }\n        if (this.options.capture !== null) {\n          this.hiddenFileInput.setAttribute(\"capture\", this.options.capture);\n        }\n\n        // Making sure that no one can \"tab\" into this field.\n        this.hiddenFileInput.setAttribute(\"tabindex\", \"-1\");\n\n        // Not setting `display=\"none\"` because some browsers don't accept clicks\n        // on elements that aren't displayed.\n        this.hiddenFileInput.style.visibility = \"hidden\";\n        this.hiddenFileInput.style.position = \"absolute\";\n        this.hiddenFileInput.style.top = \"0\";\n        this.hiddenFileInput.style.left = \"0\";\n        this.hiddenFileInput.style.height = \"0\";\n        this.hiddenFileInput.style.width = \"0\";\n        Dropzone.getElement(\n          this.options.hiddenInputContainer,\n          \"hiddenInputContainer\"\n        ).appendChild(this.hiddenFileInput);\n        this.hiddenFileInput.addEventListener(\"change\", () => {\n          let { files } = this.hiddenFileInput;\n          if (files.length) {\n            for (let file of files) {\n              this.addFile(file);\n            }\n          }\n          this.emit(\"addedfiles\", files);\n          setupHiddenFileInput();\n        });\n      };\n      setupHiddenFileInput();\n    }\n\n    this.URL = window.URL !== null ? window.URL : window.webkitURL;\n\n    // Setup all event listeners on the Dropzone object itself.\n    // They're not in @setupEventListeners() because they shouldn't be removed\n    // again when the dropzone gets disabled.\n    for (let eventName of this.events) {\n      this.on(eventName, this.options[eventName]);\n    }\n\n    this.on(\"uploadprogress\", () => this.updateTotalUploadProgress());\n\n    this.on(\"removedfile\", () => this.updateTotalUploadProgress());\n\n    this.on(\"canceled\", (file) => this.emit(\"complete\", file));\n\n    // Emit a `queuecomplete` event if all files finished uploading.\n    this.on(\"complete\", (file) => {\n      if (\n        this.getAddedFiles().length === 0 &&\n        this.getUploadingFiles().length === 0 &&\n        this.getQueuedFiles().length === 0\n      ) {\n        // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n        return setTimeout(() => this.emit(\"queuecomplete\"), 0);\n      }\n    });\n\n    const containsFiles = function (e) {\n      if (e.dataTransfer.types) {\n        // Because e.dataTransfer.types is an Object in\n        // IE, we need to iterate like this instead of\n        // using e.dataTransfer.types.some()\n        for (var i = 0; i < e.dataTransfer.types.length; i++) {\n          if (e.dataTransfer.types[i] === \"Files\") return true;\n        }\n      }\n      return false;\n    };\n\n    let noPropagation = function (e) {\n      // If there are no files, we don't want to stop\n      // propagation so we don't interfere with other\n      // drag and drop behaviour.\n      if (!containsFiles(e)) return;\n      e.stopPropagation();\n      if (e.preventDefault) {\n        return e.preventDefault();\n      } else {\n        return (e.returnValue = false);\n      }\n    };\n\n    // Create the listeners\n    this.listeners = [\n      {\n        element: this.element,\n        events: {\n          dragstart: (e) => {\n            return this.emit(\"dragstart\", e);\n          },\n          dragenter: (e) => {\n            noPropagation(e);\n            return this.emit(\"dragenter\", e);\n          },\n          dragover: (e) => {\n            // Makes it possible to drag files from chrome's download bar\n            // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n            // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n            let efct;\n            try {\n              efct = e.dataTransfer.effectAllowed;\n            } catch (error) {}\n            e.dataTransfer.dropEffect =\n              \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n\n            noPropagation(e);\n            return this.emit(\"dragover\", e);\n          },\n          dragleave: (e) => {\n            return this.emit(\"dragleave\", e);\n          },\n          drop: (e) => {\n            noPropagation(e);\n            return this.drop(e);\n          },\n          dragend: (e) => {\n            return this.emit(\"dragend\", e);\n          },\n        },\n\n        // This is disabled right now, because the browsers don't implement it properly.\n        // \"paste\": (e) =>\n        //   noPropagation e\n        //   @paste e\n      },\n    ];\n\n    this.clickableElements.forEach((clickableElement) => {\n      return this.listeners.push({\n        element: clickableElement,\n        events: {\n          click: (evt) => {\n            // Only the actual dropzone or the message element should trigger file selection\n            if (\n              clickableElement !== this.element ||\n              evt.target === this.element ||\n              Dropzone.elementInside(\n                evt.target,\n                this.element.querySelector(\".dz-message\")\n              )\n            ) {\n              this.hiddenFileInput.click(); // Forward the click\n            }\n            return true;\n          },\n        },\n      });\n    });\n\n    this.enable();\n\n    return this.options.init.call(this);\n  }\n\n  // Not fully tested yet\n  destroy() {\n    this.disable();\n    this.removeAllFiles(true);\n    if (\n      this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined\n    ) {\n      this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n      this.hiddenFileInput = null;\n    }\n    delete this.element.dropzone;\n    return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n  }\n\n  updateTotalUploadProgress() {\n    let totalUploadProgress;\n    let totalBytesSent = 0;\n    let totalBytes = 0;\n\n    let activeFiles = this.getActiveFiles();\n\n    if (activeFiles.length) {\n      for (let file of this.getActiveFiles()) {\n        totalBytesSent += file.upload.bytesSent;\n        totalBytes += file.upload.total;\n      }\n      totalUploadProgress = (100 * totalBytesSent) / totalBytes;\n    } else {\n      totalUploadProgress = 100;\n    }\n\n    return this.emit(\n      \"totaluploadprogress\",\n      totalUploadProgress,\n      totalBytes,\n      totalBytesSent\n    );\n  }\n\n  // @options.paramName can be a function taking one parameter rather than a string.\n  // A parameter name for a file is obtained simply by calling this with an index number.\n  _getParamName(n) {\n    if (typeof this.options.paramName === \"function\") {\n      return this.options.paramName(n);\n    } else {\n      return `${this.options.paramName}${\n        this.options.uploadMultiple ? `[${n}]` : \"\"\n      }`;\n    }\n  }\n\n  // If @options.renameFile is a function,\n  // the function will be used to rename the file.name before appending it to the formData\n  _renameFile(file) {\n    if (typeof this.options.renameFile !== \"function\") {\n      return file.name;\n    }\n    return this.options.renameFile(file);\n  }\n\n  // Returns a form that can be used as fallback if the browser does not support DragnDrop\n  //\n  // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n  // This code has to pass in IE7 :(\n  getFallbackForm() {\n    let existingFallback, form;\n    if ((existingFallback = this.getExistingFallback())) {\n      return existingFallback;\n    }\n\n    let fieldsString = '<div class=\"dz-fallback\">';\n    if (this.options.dictFallbackText) {\n      fieldsString += `<p>${this.options.dictFallbackText}</p>`;\n    }\n    fieldsString += `<input type=\"file\" name=\"${this._getParamName(0)}\" ${\n      this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined\n    } /><input type=\"submit\" value=\"Upload!\"></div>`;\n\n    let fields = Dropzone.createElement(fieldsString);\n    if (this.element.tagName !== \"FORM\") {\n      form = Dropzone.createElement(\n        `<form action=\"${this.options.url}\" enctype=\"multipart/form-data\" method=\"${this.options.method}\"></form>`\n      );\n      form.appendChild(fields);\n    } else {\n      // Make sure that the enctype and method attributes are set properly\n      this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      this.element.setAttribute(\"method\", this.options.method);\n    }\n    return form != null ? form : fields;\n  }\n\n  // Returns the fallback elements if they exist already\n  //\n  // This code has to pass in IE7 :(\n  getExistingFallback() {\n    let getFallback = function (elements) {\n      for (let el of elements) {\n        if (/(^| )fallback($| )/.test(el.className)) {\n          return el;\n        }\n      }\n    };\n\n    for (let tagName of [\"div\", \"form\"]) {\n      var fallback;\n      if (\n        (fallback = getFallback(this.element.getElementsByTagName(tagName)))\n      ) {\n        return fallback;\n      }\n    }\n  }\n\n  // Activates all listeners stored in @listeners\n  setupEventListeners() {\n    return this.listeners.map((elementListeners) =>\n      (() => {\n        let result = [];\n        for (let event in elementListeners.events) {\n          let listener = elementListeners.events[event];\n          result.push(\n            elementListeners.element.addEventListener(event, listener, false)\n          );\n        }\n        return result;\n      })()\n    );\n  }\n\n  // Deactivates all listeners stored in @listeners\n  removeEventListeners() {\n    return this.listeners.map((elementListeners) =>\n      (() => {\n        let result = [];\n        for (let event in elementListeners.events) {\n          let listener = elementListeners.events[event];\n          result.push(\n            elementListeners.element.removeEventListener(event, listener, false)\n          );\n        }\n        return result;\n      })()\n    );\n  }\n\n  // Removes all event listeners and cancels all files in the queue or being processed.\n  disable() {\n    this.clickableElements.forEach((element) =>\n      element.classList.remove(\"dz-clickable\")\n    );\n    this.removeEventListeners();\n    this.disabled = true;\n\n    return this.files.map((file) => this.cancelUpload(file));\n  }\n\n  enable() {\n    delete this.disabled;\n    this.clickableElements.forEach((element) =>\n      element.classList.add(\"dz-clickable\")\n    );\n    return this.setupEventListeners();\n  }\n\n  // Returns a nicely formatted filesize\n  filesize(size) {\n    let selectedSize = 0;\n    let selectedUnit = \"b\";\n\n    if (size > 0) {\n      let units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n      for (let i = 0; i < units.length; i++) {\n        let unit = units[i];\n        let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n        if (size >= cutoff) {\n          selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n          selectedUnit = unit;\n          break;\n        }\n      }\n\n      selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n    }\n\n    return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n  }\n\n  // Adds or removes the `dz-max-files-reached` class from the form.\n  _updateMaxFilesReachedClass() {\n    if (\n      this.options.maxFiles != null &&\n      this.getAcceptedFiles().length >= this.options.maxFiles\n    ) {\n      if (this.getAcceptedFiles().length === this.options.maxFiles) {\n        this.emit(\"maxfilesreached\", this.files);\n      }\n      return this.element.classList.add(\"dz-max-files-reached\");\n    } else {\n      return this.element.classList.remove(\"dz-max-files-reached\");\n    }\n  }\n\n  drop(e) {\n    if (!e.dataTransfer) {\n      return;\n    }\n    this.emit(\"drop\", e);\n\n    // Convert the FileList to an Array\n    // This is necessary for IE11\n    let files = [];\n    for (let i = 0; i < e.dataTransfer.files.length; i++) {\n      files[i] = e.dataTransfer.files[i];\n    }\n\n    // Even if it's a folder, files.length will contain the folders.\n    if (files.length) {\n      let { items } = e.dataTransfer;\n      if (items && items.length && items[0].webkitGetAsEntry != null) {\n        // The browser supports dropping of folders, so handle items instead of files\n        this._addFilesFromItems(items);\n      } else {\n        this.handleFiles(files);\n      }\n    }\n\n    this.emit(\"addedfiles\", files);\n  }\n\n  paste(e) {\n    if (\n      __guard__(e != null ? e.clipboardData : undefined, (x) => x.items) == null\n    ) {\n      return;\n    }\n\n    this.emit(\"paste\", e);\n    let { items } = e.clipboardData;\n\n    if (items.length) {\n      return this._addFilesFromItems(items);\n    }\n  }\n\n  handleFiles(files) {\n    for (let file of files) {\n      this.addFile(file);\n    }\n  }\n\n  // When a folder is dropped (or files are pasted), items must be handled\n  // instead of files.\n  _addFilesFromItems(items) {\n    return (() => {\n      let result = [];\n      for (let item of items) {\n        var entry;\n        if (\n          item.webkitGetAsEntry != null &&\n          (entry = item.webkitGetAsEntry())\n        ) {\n          if (entry.isFile) {\n            result.push(this.addFile(item.getAsFile()));\n          } else if (entry.isDirectory) {\n            // Append all files from that directory to files\n            result.push(this._addFilesFromDirectory(entry, entry.name));\n          } else {\n            result.push(undefined);\n          }\n        } else if (item.getAsFile != null) {\n          if (item.kind == null || item.kind === \"file\") {\n            result.push(this.addFile(item.getAsFile()));\n          } else {\n            result.push(undefined);\n          }\n        } else {\n          result.push(undefined);\n        }\n      }\n      return result;\n    })();\n  }\n\n  // Goes through the directory, and adds each file it finds recursively\n  _addFilesFromDirectory(directory, path) {\n    let dirReader = directory.createReader();\n\n    let errorHandler = (error) =>\n      __guardMethod__(console, \"log\", (o) => o.log(error));\n\n    var readEntries = () => {\n      return dirReader.readEntries((entries) => {\n        if (entries.length > 0) {\n          for (let entry of entries) {\n            if (entry.isFile) {\n              entry.file((file) => {\n                if (\n                  this.options.ignoreHiddenFiles &&\n                  file.name.substring(0, 1) === \".\"\n                ) {\n                  return;\n                }\n                file.fullPath = `${path}/${file.name}`;\n                return this.addFile(file);\n              });\n            } else if (entry.isDirectory) {\n              this._addFilesFromDirectory(entry, `${path}/${entry.name}`);\n            }\n          }\n\n          // Recursively call readEntries() again, since browser only handle\n          // the first 100 entries.\n          // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n          readEntries();\n        }\n        return null;\n      }, errorHandler);\n    };\n\n    return readEntries();\n  }\n\n  // If `done()` is called without argument the file is accepted\n  // If you call it with an error message, the file is rejected\n  // (This allows for asynchronous validation)\n  //\n  // This function checks the filesize, and if the file.type passes the\n  // `acceptedFiles` check.\n  accept(file, done) {\n    if (\n      this.options.maxFilesize &&\n      file.size > this.options.maxFilesize * 1024 * 1024\n    ) {\n      done(\n        this.options.dictFileTooBig\n          .replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100)\n          .replace(\"{{maxFilesize}}\", this.options.maxFilesize)\n      );\n    } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n      done(this.options.dictInvalidFileType);\n    } else if (\n      this.options.maxFiles != null &&\n      this.getAcceptedFiles().length >= this.options.maxFiles\n    ) {\n      done(\n        this.options.dictMaxFilesExceeded.replace(\n          \"{{maxFiles}}\",\n          this.options.maxFiles\n        )\n      );\n      this.emit(\"maxfilesexceeded\", file);\n    } else {\n      this.options.accept.call(this, file, done);\n    }\n  }\n\n  addFile(file) {\n    file.upload = {\n      uuid: Dropzone.uuidv4(),\n      progress: 0,\n      // Setting the total upload size to file.size for the beginning\n      // It's actual different than the size to be transmitted.\n      total: file.size,\n      bytesSent: 0,\n      filename: this._renameFile(file),\n      // Not setting chunking information here, because the acutal data \u2014 and\n      // thus the chunks \u2014 might change if `options.transformFile` is set\n      // and does something to the data.\n    };\n    this.files.push(file);\n\n    file.status = Dropzone.ADDED;\n\n    this.emit(\"addedfile\", file);\n\n    this._enqueueThumbnail(file);\n\n    this.accept(file, (error) => {\n      if (error) {\n        file.accepted = false;\n        this._errorProcessing([file], error); // Will set the file.status\n      } else {\n        file.accepted = true;\n        if (this.options.autoQueue) {\n          this.enqueueFile(file);\n        } // Will set .accepted = true\n      }\n      this._updateMaxFilesReachedClass();\n    });\n  }\n\n  // Wrapper for enqueueFile\n  enqueueFiles(files) {\n    for (let file of files) {\n      this.enqueueFile(file);\n    }\n    return null;\n  }\n\n  enqueueFile(file) {\n    if (file.status === Dropzone.ADDED && file.accepted === true) {\n      file.status = Dropzone.QUEUED;\n      if (this.options.autoProcessQueue) {\n        return setTimeout(() => this.processQueue(), 0); // Deferring the call\n      }\n    } else {\n      throw new Error(\n        \"This file can't be queued because it has already been processed or was rejected.\"\n      );\n    }\n  }\n\n  _enqueueThumbnail(file) {\n    if (\n      this.options.createImageThumbnails &&\n      file.type.match(/image.*/) &&\n      file.size <= this.options.maxThumbnailFilesize * 1024 * 1024\n    ) {\n      this._thumbnailQueue.push(file);\n      return setTimeout(() => this._processThumbnailQueue(), 0); // Deferring the call\n    }\n  }\n\n  _processThumbnailQueue() {\n    if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n      return;\n    }\n\n    this._processingThumbnail = true;\n    let file = this._thumbnailQueue.shift();\n    return this.createThumbnail(\n      file,\n      this.options.thumbnailWidth,\n      this.options.thumbnailHeight,\n      this.options.thumbnailMethod,\n      true,\n      (dataUrl) => {\n        this.emit(\"thumbnail\", file, dataUrl);\n        this._processingThumbnail = false;\n        return this._processThumbnailQueue();\n      }\n    );\n  }\n\n  // Can be called by the user to remove a file\n  removeFile(file) {\n    if (file.status === Dropzone.UPLOADING) {\n      this.cancelUpload(file);\n    }\n    this.files = without(this.files, file);\n\n    this.emit(\"removedfile\", file);\n    if (this.files.length === 0) {\n      return this.emit(\"reset\");\n    }\n  }\n\n  // Removes all files that aren't currently processed from the list\n  removeAllFiles(cancelIfNecessary) {\n    // Create a copy of files since removeFile() changes the @files array.\n    if (cancelIfNecessary == null) {\n      cancelIfNecessary = false;\n    }\n    for (let file of this.files.slice()) {\n      if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n        this.removeFile(file);\n      }\n    }\n    return null;\n  }\n\n  // Resizes an image before it gets sent to the server. This function is the default behavior of\n  // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n  // the resized blob.\n  resizeImage(file, width, height, resizeMethod, callback) {\n    return this.createThumbnail(\n      file,\n      width,\n      height,\n      resizeMethod,\n      true,\n      (dataUrl, canvas) => {\n        if (canvas == null) {\n          // The image has not been resized\n          return callback(file);\n        } else {\n          let { resizeMimeType } = this.options;\n          if (resizeMimeType == null) {\n            resizeMimeType = file.type;\n          }\n          let resizedDataURL = canvas.toDataURL(\n            resizeMimeType,\n            this.options.resizeQuality\n          );\n          if (\n            resizeMimeType === \"image/jpeg\" ||\n            resizeMimeType === \"image/jpg\"\n          ) {\n            // Now add the original EXIF information\n            resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n          }\n          return callback(Dropzone.dataURItoBlob(resizedDataURL));\n        }\n      }\n    );\n  }\n\n  createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n    let fileReader = new FileReader();\n\n    fileReader.onload = () => {\n      file.dataURL = fileReader.result;\n\n      // Don't bother creating a thumbnail for SVG images since they're vector\n      if (file.type === \"image/svg+xml\") {\n        if (callback != null) {\n          callback(fileReader.result);\n        }\n        return;\n      }\n\n      this.createThumbnailFromUrl(\n        file,\n        width,\n        height,\n        resizeMethod,\n        fixOrientation,\n        callback\n      );\n    };\n\n    fileReader.readAsDataURL(file);\n  }\n\n  // `mockFile` needs to have these attributes:\n  //\n  //     { name: 'name', size: 12345, imageUrl: '' }\n  //\n  // `callback` will be invoked when the image has been downloaded and displayed.\n  // `crossOrigin` will be added to the `img` tag when accessing the file.\n  displayExistingFile(\n    mockFile,\n    imageUrl,\n    callback,\n    crossOrigin,\n    resizeThumbnail = true\n  ) {\n    this.emit(\"addedfile\", mockFile);\n    this.emit(\"complete\", mockFile);\n\n    if (!resizeThumbnail) {\n      this.emit(\"thumbnail\", mockFile, imageUrl);\n      if (callback) callback();\n    } else {\n      let onDone = (thumbnail) => {\n        this.emit(\"thumbnail\", mockFile, thumbnail);\n        if (callback) callback();\n      };\n      mockFile.dataURL = imageUrl;\n\n      this.createThumbnailFromUrl(\n        mockFile,\n        this.options.thumbnailWidth,\n        this.options.thumbnailHeight,\n        this.options.thumbnailMethod,\n        this.options.fixOrientation,\n        onDone,\n        crossOrigin\n      );\n    }\n  }\n\n  createThumbnailFromUrl(\n    file,\n    width,\n    height,\n    resizeMethod,\n    fixOrientation,\n    callback,\n    crossOrigin\n  ) {\n    // Not using `new Image` here because of a bug in latest Chrome versions.\n    // See https://github.com/enyo/dropzone/pull/226\n    let img = document.createElement(\"img\");\n\n    if (crossOrigin) {\n      img.crossOrigin = crossOrigin;\n    }\n\n    // fixOrientation is not needed anymore with browsers handling imageOrientation\n    fixOrientation =\n      getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\"\n        ? false\n        : fixOrientation;\n\n    img.onload = () => {\n      let loadExif = (callback) => callback(1);\n      if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n        loadExif = (callback) =>\n          EXIF.getData(img, function () {\n            return callback(EXIF.getTag(this, \"Orientation\"));\n          });\n      }\n\n      return loadExif((orientation) => {\n        file.width = img.width;\n        file.height = img.height;\n\n        let resizeInfo = this.options.resize.call(\n          this,\n          file,\n          width,\n          height,\n          resizeMethod\n        );\n\n        let canvas = document.createElement(\"canvas\");\n        let ctx = canvas.getContext(\"2d\");\n\n        canvas.width = resizeInfo.trgWidth;\n        canvas.height = resizeInfo.trgHeight;\n\n        if (orientation > 4) {\n          canvas.width = resizeInfo.trgHeight;\n          canvas.height = resizeInfo.trgWidth;\n        }\n\n        switch (orientation) {\n          case 2:\n            // horizontal flip\n            ctx.translate(canvas.width, 0);\n            ctx.scale(-1, 1);\n            break;\n          case 3:\n            // 180\u00B0 rotate left\n            ctx.translate(canvas.width, canvas.height);\n            ctx.rotate(Math.PI);\n            break;\n          case 4:\n            // vertical flip\n            ctx.translate(0, canvas.height);\n            ctx.scale(1, -1);\n            break;\n          case 5:\n            // vertical flip + 90 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.scale(1, -1);\n            break;\n          case 6:\n            // 90\u00B0 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.translate(0, -canvas.width);\n            break;\n          case 7:\n            // horizontal flip + 90 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.translate(canvas.height, -canvas.width);\n            ctx.scale(-1, 1);\n            break;\n          case 8:\n            // 90\u00B0 rotate left\n            ctx.rotate(-0.5 * Math.PI);\n            ctx.translate(-canvas.height, 0);\n            break;\n        }\n\n        // This is a bugfix for iOS' scaling bug.\n        drawImageIOSFix(\n          ctx,\n          img,\n          resizeInfo.srcX != null ? resizeInfo.srcX : 0,\n          resizeInfo.srcY != null ? resizeInfo.srcY : 0,\n          resizeInfo.srcWidth,\n          resizeInfo.srcHeight,\n          resizeInfo.trgX != null ? resizeInfo.trgX : 0,\n          resizeInfo.trgY != null ? resizeInfo.trgY : 0,\n          resizeInfo.trgWidth,\n          resizeInfo.trgHeight\n        );\n\n        let thumbnail = canvas.toDataURL(\"image/png\");\n\n        if (callback != null) {\n          return callback(thumbnail, canvas);\n        }\n      });\n    };\n\n    if (callback != null) {\n      img.onerror = callback;\n    }\n\n    return (img.src = file.dataURL);\n  }\n\n  // Goes through the queue and processes files if there aren't too many already.\n  processQueue() {\n    let { parallelUploads } = this.options;\n    let processingLength = this.getUploadingFiles().length;\n    let i = processingLength;\n\n    // There are already at least as many files uploading than should be\n    if (processingLength >= parallelUploads) {\n      return;\n    }\n\n    let queuedFiles = this.getQueuedFiles();\n\n    if (!(queuedFiles.length > 0)) {\n      return;\n    }\n\n    if (this.options.uploadMultiple) {\n      // The files should be uploaded in one request\n      return this.processFiles(\n        queuedFiles.slice(0, parallelUploads - processingLength)\n      );\n    } else {\n      while (i < parallelUploads) {\n        if (!queuedFiles.length) {\n          return;\n        } // Nothing left to process\n        this.processFile(queuedFiles.shift());\n        i++;\n      }\n    }\n  }\n\n  // Wrapper for `processFiles`\n  processFile(file) {\n    return this.processFiles([file]);\n  }\n\n  // Loads the file, then calls finishedLoading()\n  processFiles(files) {\n    for (let file of files) {\n      file.processing = true; // Backwards compatibility\n      file.status = Dropzone.UPLOADING;\n\n      this.emit(\"processing\", file);\n    }\n\n    if (this.options.uploadMultiple) {\n      this.emit(\"processingmultiple\", files);\n    }\n\n    return this.uploadFiles(files);\n  }\n\n  _getFilesWithXhr(xhr) {\n    let files;\n    return (files = this.files\n      .filter((file) => file.xhr === xhr)\n      .map((file) => file));\n  }\n\n  // Cancels the file upload and sets the status to CANCELED\n  // **if** the file is actually being uploaded.\n  // If it's still in the queue, the file is being removed from it and the status\n  // set to CANCELED.\n  cancelUpload(file) {\n    if (file.status === Dropzone.UPLOADING) {\n      let groupedFiles = this._getFilesWithXhr(file.xhr);\n      for (let groupedFile of groupedFiles) {\n        groupedFile.status = Dropzone.CANCELED;\n      }\n      if (typeof file.xhr !== \"undefined\") {\n        file.xhr.abort();\n      }\n      for (let groupedFile of groupedFiles) {\n        this.emit(\"canceled\", groupedFile);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"canceledmultiple\", groupedFiles);\n      }\n    } else if (\n      file.status === Dropzone.ADDED ||\n      file.status === Dropzone.QUEUED\n    ) {\n      file.status = Dropzone.CANCELED;\n      this.emit(\"canceled\", file);\n      if (this.options.uploadMultiple) {\n        this.emit(\"canceledmultiple\", [file]);\n      }\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  resolveOption(option, ...args) {\n    if (typeof option === \"function\") {\n      return option.apply(this, args);\n    }\n    return option;\n  }\n\n  uploadFile(file) {\n    return this.uploadFiles([file]);\n  }\n\n  uploadFiles(files) {\n    this._transformFiles(files, (transformedFiles) => {\n      if (this.options.chunking) {\n        // Chunking is not allowed to be used with `uploadMultiple` so we know\n        // that there is only __one__file.\n        let transformedFile = transformedFiles[0];\n        files[0].upload.chunked =\n          this.options.chunking &&\n          (this.options.forceChunking ||\n            transformedFile.size > this.options.chunkSize);\n        files[0].upload.totalChunkCount = Math.ceil(\n          transformedFile.size / this.options.chunkSize\n        );\n      }\n\n      if (files[0].upload.chunked) {\n        // This file should be sent in chunks!\n\n        // If the chunking option is set, we **know** that there can only be **one** file, since\n        // uploadMultiple is not allowed with this option.\n        let file = files[0];\n        let transformedFile = transformedFiles[0];\n        let startedChunkCount = 0;\n\n        file.upload.chunks = [];\n\n        let handleNextChunk = () => {\n          let chunkIndex = 0;\n\n          // Find the next item in file.upload.chunks that is not defined yet.\n          while (file.upload.chunks[chunkIndex] !== undefined) {\n            chunkIndex++;\n          }\n\n          // This means, that all chunks have already been started.\n          if (chunkIndex >= file.upload.totalChunkCount) return;\n\n          startedChunkCount++;\n\n          let start = chunkIndex * this.options.chunkSize;\n          let end = Math.min(\n            start + this.options.chunkSize,\n            transformedFile.size\n          );\n\n          let dataBlock = {\n            name: this._getParamName(0),\n            data: transformedFile.webkitSlice\n              ? transformedFile.webkitSlice(start, end)\n              : transformedFile.slice(start, end),\n            filename: file.upload.filename,\n            chunkIndex: chunkIndex,\n          };\n\n          file.upload.chunks[chunkIndex] = {\n            file: file,\n            index: chunkIndex,\n            dataBlock: dataBlock, // In case we want to retry.\n            status: Dropzone.UPLOADING,\n            progress: 0,\n            retries: 0, // The number of times this block has been retried.\n          };\n\n          this._uploadData(files, [dataBlock]);\n        };\n\n        file.upload.finishedChunkUpload = (chunk, response) => {\n          let allFinished = true;\n          chunk.status = Dropzone.SUCCESS;\n\n          // Clear the data from the chunk\n          chunk.dataBlock = null;\n          chunk.response = chunk.xhr.responseText;\n          chunk.responseHeaders = chunk.xhr.getAllResponseHeaders();\n          // Leaving this reference to xhr will cause memory leaks.\n          chunk.xhr = null;\n\n          for (let i = 0; i < file.upload.totalChunkCount; i++) {\n            if (file.upload.chunks[i] === undefined) {\n              return handleNextChunk();\n            }\n            if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n              allFinished = false;\n            }\n          }\n\n          if (allFinished) {\n            this.options.chunksUploaded(file, () => {\n              this._finished(files, response, null);\n            });\n          }\n        };\n\n        if (this.options.parallelChunkUploads) {\n          for (let i = 0; i < file.upload.totalChunkCount; i++) {\n            handleNextChunk();\n          }\n        } else {\n          handleNextChunk();\n        }\n      } else {\n        let dataBlocks = [];\n        for (let i = 0; i < files.length; i++) {\n          dataBlocks[i] = {\n            name: this._getParamName(i),\n            data: transformedFiles[i],\n            filename: files[i].upload.filename,\n          };\n        }\n        this._uploadData(files, dataBlocks);\n      }\n    });\n  }\n\n  /// Returns the right chunk for given file and xhr\n  _getChunk(file, xhr) {\n    for (let i = 0; i < file.upload.totalChunkCount; i++) {\n      if (\n        file.upload.chunks[i] !== undefined &&\n        file.upload.chunks[i].xhr === xhr\n      ) {\n        return file.upload.chunks[i];\n      }\n    }\n  }\n\n  // This function actually uploads the file(s) to the server.\n  //\n  //  If dataBlocks contains the actual data to upload (meaning, that this could\n  // either be transformed files, or individual chunks for chunked upload) then\n  // they will be used for the actual data to upload.\n  _uploadData(files, dataBlocks) {\n    let xhr = new XMLHttpRequest();\n\n    // Put the xhr object in the file objects to be able to reference it later.\n    for (let file of files) {\n      file.xhr = xhr;\n    }\n    if (files[0].upload.chunked) {\n      // Put the xhr object in the right chunk object, so it can be associated\n      // later, and found with _getChunk.\n      files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n    }\n\n    let method = this.resolveOption(this.options.method, files, dataBlocks);\n    let url = this.resolveOption(this.options.url, files, dataBlocks);\n    xhr.open(method, url, true);\n\n    // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n    let timeout = this.resolveOption(this.options.timeout, files);\n    if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files);\n\n    // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n    xhr.withCredentials = !!this.options.withCredentials;\n\n    xhr.onload = (e) => {\n      this._finishedUploading(files, xhr, e);\n    };\n\n    xhr.ontimeout = () => {\n      this._handleUploadError(\n        files,\n        xhr,\n        `Request timedout after ${this.options.timeout / 1000} seconds`\n      );\n    };\n\n    xhr.onerror = () => {\n      this._handleUploadError(files, xhr);\n    };\n\n    // Some browsers do not have the .upload property\n    let progressObj = xhr.upload != null ? xhr.upload : xhr;\n    progressObj.onprogress = (e) =>\n      this._updateFilesUploadProgress(files, xhr, e);\n\n    let headers = this.options.defaultHeaders\n      ? {\n          Accept: \"application/json\",\n          \"Cache-Control\": \"no-cache\",\n          \"X-Requested-With\": \"XMLHttpRequest\",\n        }\n      : {};\n\n    if (this.options.binaryBody) {\n      headers[\"Content-Type\"] = files[0].type;\n    }\n\n    if (this.options.headers) {\n      extend(headers, this.options.headers);\n    }\n\n    for (let headerName in headers) {\n      let headerValue = headers[headerName];\n      if (headerValue) {\n        xhr.setRequestHeader(headerName, headerValue);\n      }\n    }\n\n    if (this.options.binaryBody) {\n      // Since the file is going to be sent as binary body, it doesn't make\n      // any sense to generate `FormData` for it.\n      for (let file of files) {\n        this.emit(\"sending\", file, xhr);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr);\n      }\n      this.submitRequest(xhr, null, files);\n    } else {\n      let formData = new FormData();\n\n      // Adding all @options parameters\n      if (this.options.params) {\n        let additionalParams = this.options.params;\n        if (typeof additionalParams === \"function\") {\n          additionalParams = additionalParams.call(\n            this,\n            files,\n            xhr,\n            files[0].upload.chunked ? this._getChunk(files[0], xhr) : null\n          );\n        }\n\n        for (let key in additionalParams) {\n          let value = additionalParams[key];\n          if (Array.isArray(value)) {\n            // The additional parameter contains an array,\n            // so lets iterate over it to attach each value\n            // individually.\n            for (let i = 0; i < value.length; i++) {\n              formData.append(key, value[i]);\n            }\n          } else {\n            formData.append(key, value);\n          }\n        }\n      }\n\n      // Let the user add additional data if necessary\n      for (let file of files) {\n        this.emit(\"sending\", file, xhr, formData);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n\n      this._addFormElementData(formData);\n\n      // Finally add the files\n      // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n      for (let i = 0; i < dataBlocks.length; i++) {\n        let dataBlock = dataBlocks[i];\n        formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n      }\n\n      this.submitRequest(xhr, formData, files);\n    }\n  }\n\n  // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n  _transformFiles(files, done) {\n    let transformedFiles = [];\n    // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n    let doneCounter = 0;\n    for (let i = 0; i < files.length; i++) {\n      this.options.transformFile.call(this, files[i], (transformedFile) => {\n        transformedFiles[i] = transformedFile;\n        if (++doneCounter === files.length) {\n          done(transformedFiles);\n        }\n      });\n    }\n  }\n\n  // Takes care of adding other input elements of the form to the AJAX request\n  _addFormElementData(formData) {\n    // Take care of other input elements\n    if (this.element.tagName === \"FORM\") {\n      for (let input of this.element.querySelectorAll(\n        \"input, textarea, select, button\"\n      )) {\n        let inputName = input.getAttribute(\"name\");\n        let inputType = input.getAttribute(\"type\");\n        if (inputType) inputType = inputType.toLowerCase();\n\n        // If the input doesn't have a name, we can't use it.\n        if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n        if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n          // Possibly multiple values\n          for (let option of input.options) {\n            if (option.selected) {\n              formData.append(inputName, option.value);\n            }\n          }\n        } else if (\n          !inputType ||\n          (inputType !== \"checkbox\" && inputType !== \"radio\") ||\n          input.checked\n        ) {\n          formData.append(inputName, input.value);\n        }\n      }\n    }\n  }\n\n  // Invoked when there is new progress information about given files.\n  // If e is not provided, it is assumed that the upload is finished.\n  _updateFilesUploadProgress(files, xhr, e) {\n    if (!files[0].upload.chunked) {\n      // Handle file uploads without chunking\n      for (let file of files) {\n        if (\n          file.upload.total &&\n          file.upload.bytesSent &&\n          file.upload.bytesSent == file.upload.total\n        ) {\n          // If both, the `total` and `bytesSent` have already been set, and\n          // they are equal (meaning progress is at 100%), we can skip this\n          // file, since an upload progress shouldn't go down.\n          continue;\n        }\n\n        if (e) {\n          file.upload.progress = (100 * e.loaded) / e.total;\n          file.upload.total = e.total;\n          file.upload.bytesSent = e.loaded;\n        } else {\n          // No event, so we're at 100%\n          file.upload.progress = 100;\n          file.upload.bytesSent = file.upload.total;\n        }\n\n        this.emit(\n          \"uploadprogress\",\n          file,\n          file.upload.progress,\n          file.upload.bytesSent\n        );\n      }\n    } else {\n      // Handle chunked file uploads\n\n      // Chunked upload is not compatible with uploading multiple files in one\n      // request, so we know there's only one file.\n      let file = files[0];\n\n      // Since this is a chunked upload, we need to update the appropriate chunk\n      // progress.\n      let chunk = this._getChunk(file, xhr);\n\n      if (e) {\n        chunk.progress = (100 * e.loaded) / e.total;\n        chunk.total = e.total;\n        chunk.bytesSent = e.loaded;\n      } else {\n        // No event, so we're at 100%\n        chunk.progress = 100;\n        chunk.bytesSent = chunk.total;\n      }\n\n      // Now tally the *file* upload progress from its individual chunks\n      file.upload.progress = 0;\n      file.upload.total = 0;\n      file.upload.bytesSent = 0;\n      for (let i = 0; i < file.upload.totalChunkCount; i++) {\n        if (\n          file.upload.chunks[i] &&\n          typeof file.upload.chunks[i].progress !== \"undefined\"\n        ) {\n          file.upload.progress += file.upload.chunks[i].progress;\n          file.upload.total += file.upload.chunks[i].total;\n          file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n        }\n      }\n      // Since the process is a percentage, we need to divide by the amount of\n      // chunks we've used.\n      file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n\n      this.emit(\n        \"uploadprogress\",\n        file,\n        file.upload.progress,\n        file.upload.bytesSent\n      );\n    }\n  }\n\n  _finishedUploading(files, xhr, e) {\n    let response;\n\n    if (files[0].status === Dropzone.CANCELED) {\n      return;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n      response = xhr.responseText;\n\n      if (\n        xhr.getResponseHeader(\"content-type\") &&\n        ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")\n      ) {\n        try {\n          response = JSON.parse(response);\n        } catch (error) {\n          e = error;\n          response = \"Invalid JSON response from server.\";\n        }\n      }\n    }\n\n    this._updateFilesUploadProgress(files, xhr);\n\n    if (!(200 <= xhr.status && xhr.status < 300)) {\n      this._handleUploadError(files, xhr, response);\n    } else {\n      if (files[0].upload.chunked) {\n        files[0].upload.finishedChunkUpload(\n          this._getChunk(files[0], xhr),\n          response\n        );\n      } else {\n        this._finished(files, response, e);\n      }\n    }\n  }\n\n  _handleUploadError(files, xhr, response) {\n    if (files[0].status === Dropzone.CANCELED) {\n      return;\n    }\n\n    if (files[0].upload.chunked && this.options.retryChunks) {\n      let chunk = this._getChunk(files[0], xhr);\n      if (chunk.retries++ < this.options.retryChunksLimit) {\n        this._uploadData(files, [chunk.dataBlock]);\n        return;\n      } else {\n        console.warn(\"Retried this chunk too often. Giving up.\");\n      }\n    }\n\n    this._errorProcessing(\n      files,\n      response ||\n        this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status),\n      xhr\n    );\n  }\n\n  submitRequest(xhr, formData, files) {\n    if (xhr.readyState != 1) {\n      console.warn(\n        \"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\"\n      );\n      return;\n    }\n    if (this.options.binaryBody) {\n      if (files[0].upload.chunked) {\n        const chunk = this._getChunk(files[0], xhr);\n        xhr.send(chunk.dataBlock.data);\n      } else {\n        xhr.send(files[0]);\n      }\n    } else {\n      xhr.send(formData);\n    }\n  }\n\n  // Called internally when processing is finished.\n  // Individual callbacks have to be called in the appropriate sections.\n  _finished(files, responseText, e) {\n    for (let file of files) {\n      file.status = Dropzone.SUCCESS;\n      this.emit(\"success\", file, responseText, e);\n      this.emit(\"complete\", file);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"successmultiple\", files, responseText, e);\n      this.emit(\"completemultiple\", files);\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  // Called internally when processing is finished.\n  // Individual callbacks have to be called in the appropriate sections.\n  _errorProcessing(files, message, xhr) {\n    for (let file of files) {\n      file.status = Dropzone.ERROR;\n      this.emit(\"error\", file, message, xhr);\n      this.emit(\"complete\", file);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"errormultiple\", files, message, xhr);\n      this.emit(\"completemultiple\", files);\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  static uuidv4() {\n    return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\n      /[xy]/g,\n      function (c) {\n        let r = (Math.random() * 16) | 0,\n          v = c === \"x\" ? r : (r & 0x3) | 0x8;\n        return v.toString(16);\n      }\n    );\n  }\n}\nDropzone.initClass();\n\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n//     Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// And in html:\n//\n//     <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\nDropzone.options = {};\n\n// Returns the options for an element or undefined if none available.\nDropzone.optionsForElement = function (element) {\n  // Get the `Dropzone.options.elementId` for this element if it exists\n  if (element.getAttribute(\"id\")) {\n    return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n  } else {\n    return undefined;\n  }\n};\n\n// Holds a list of all dropzone instances\nDropzone.instances = [];\n\n// Returns the dropzone for given element if any\nDropzone.forElement = function (element) {\n  if (typeof element === \"string\") {\n    element = document.querySelector(element);\n  }\n  if ((element != null ? element.dropzone : undefined) == null) {\n    throw new Error(\n      \"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.\"\n    );\n  }\n  return element.dropzone;\n};\n\n// Looks for all .dropzone elements and creates a dropzone for them\nDropzone.discover = function () {\n  let dropzones;\n  if (document.querySelectorAll) {\n    dropzones = document.querySelectorAll(\".dropzone\");\n  } else {\n    dropzones = [];\n    // IE :(\n    let checkElements = (elements) =>\n      (() => {\n        let result = [];\n        for (let el of elements) {\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            result.push(dropzones.push(el));\n          } else {\n            result.push(undefined);\n          }\n        }\n        return result;\n      })();\n    checkElements(document.getElementsByTagName(\"div\"));\n    checkElements(document.getElementsByTagName(\"form\"));\n  }\n\n  return (() => {\n    let result = [];\n    for (let dropzone of dropzones) {\n      // Create a dropzone unless auto discover has been disabled for specific element\n      if (Dropzone.optionsForElement(dropzone) !== false) {\n        result.push(new Dropzone(dropzone));\n      } else {\n        result.push(undefined);\n      }\n    }\n    return result;\n  })();\n};\n\n// Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\nDropzone.blockedBrowsers = [\n  // The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n  /opera.*(Macintosh|Windows Phone).*version\\/12/i,\n];\n\n// Checks if the browser is supported\nDropzone.isBrowserSupported = function () {\n  let capableBrowser = true;\n\n  if (\n    window.File &&\n    window.FileReader &&\n    window.FileList &&\n    window.Blob &&\n    window.FormData &&\n    document.querySelector\n  ) {\n    if (!(\"classList\" in document.createElement(\"a\"))) {\n      capableBrowser = false;\n    } else {\n      if (Dropzone.blacklistedBrowsers !== undefined) {\n        // Since this has been renamed, this makes sure we don't break older\n        // configuration.\n        Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n      }\n      // The browser supports the API, but may be blocked.\n      for (let regex of Dropzone.blockedBrowsers) {\n        if (regex.test(navigator.userAgent)) {\n          capableBrowser = false;\n          continue;\n        }\n      }\n    }\n  } else {\n    capableBrowser = false;\n  }\n\n  return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n  // convert base64 to raw binary data held in a string\n  // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n  let byteString = atob(dataURI.split(\",\")[1]);\n\n  // separate out the mime component\n  let mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n\n  // write the bytes of the string to an ArrayBuffer\n  let ab = new ArrayBuffer(byteString.length);\n  let ia = new Uint8Array(ab);\n  for (\n    let i = 0, end = byteString.length, asc = 0 <= end;\n    asc ? i <= end : i >= end;\n    asc ? i++ : i--\n  ) {\n    ia[i] = byteString.charCodeAt(i);\n  }\n\n  // write the ArrayBuffer to a blob\n  return new Blob([ab], { type: mimeString });\n};\n\n// Returns an array without the rejected item\nconst without = (list, rejectedItem) =>\n  list.filter((item) => item !== rejectedItem).map((item) => item);\n\n// abc-def_ghi -> abcDefGhi\nconst camelize = (str) =>\n  str.replace(/[\\-_](\\w)/g, (match) => match.charAt(1).toUpperCase());\n\n// Creates an element from string\nDropzone.createElement = function (string) {\n  let div = document.createElement(\"div\");\n  div.innerHTML = string;\n  return div.childNodes[0];\n};\n\n// Tests if given element is inside (or simply is) the container\nDropzone.elementInside = function (element, container) {\n  if (element === container) {\n    return true;\n  } // Coffeescript doesn't support do/while loops\n  while ((element = element.parentNode)) {\n    if (element === container) {\n      return true;\n    }\n  }\n  return false;\n};\n\nDropzone.getElement = function (el, name) {\n  let element;\n  if (typeof el === \"string\") {\n    element = document.querySelector(el);\n  } else if (el.nodeType != null) {\n    element = el;\n  }\n  if (element == null) {\n    throw new Error(\n      `Invalid \\`${name}\\` option provided. Please provide a CSS selector or a plain HTML element.`\n    );\n  }\n  return element;\n};\n\nDropzone.getElements = function (els, name) {\n  let el, elements;\n  if (els instanceof Array) {\n    elements = [];\n    try {\n      for (el of els) {\n        elements.push(this.getElement(el, name));\n      }\n    } catch (e) {\n      elements = null;\n    }\n  } else if (typeof els === \"string\") {\n    elements = [];\n    for (el of document.querySelectorAll(els)) {\n      elements.push(el);\n    }\n  } else if (els.nodeType != null) {\n    elements = [els];\n  }\n\n  if (elements == null || !elements.length) {\n    throw new Error(\n      `Invalid \\`${name}\\` option provided. Please provide a CSS selector, a plain HTML element or a list of those.`\n    );\n  }\n\n  return elements;\n};\n\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\nDropzone.confirm = function (question, accepted, rejected) {\n  if (window.confirm(question)) {\n    return accepted();\n  } else if (rejected != null) {\n    return rejected();\n  }\n};\n\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\nDropzone.isValidFile = function (file, acceptedFiles) {\n  if (!acceptedFiles) {\n    return true;\n  } // If there are no accepted mime types, it's OK\n  acceptedFiles = acceptedFiles.split(\",\");\n\n  let mimeType = file.type;\n  let baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n  for (let validType of acceptedFiles) {\n    validType = validType.trim();\n    if (validType.charAt(0) === \".\") {\n      if (\n        file.name\n          .toLowerCase()\n          .indexOf(\n            validType.toLowerCase(),\n            file.name.length - validType.length\n          ) !== -1\n      ) {\n        return true;\n      }\n    } else if (/\\/\\*$/.test(validType)) {\n      // This is something like a image/* mime type\n      if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n        return true;\n      }\n    } else {\n      if (mimeType === validType) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\n// Augment jQuery\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n  jQuery.fn.dropzone = function (options) {\n    return this.each(function () {\n      return new Dropzone(this, options);\n    });\n  };\n}\n\n// Dropzone file status codes\nDropzone.ADDED = \"added\";\n\nDropzone.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\nDropzone.ACCEPTED = Dropzone.QUEUED;\n\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nlet detectVerticalSquash = function (img) {\n  let iw = img.naturalWidth;\n  let ih = img.naturalHeight;\n  let canvas = document.createElement(\"canvas\");\n  canvas.width = 1;\n  canvas.height = ih;\n  let ctx = canvas.getContext(\"2d\");\n  ctx.drawImage(img, 0, 0);\n  let { data } = ctx.getImageData(1, 0, 1, ih);\n\n  // search image edge pixel position in case it is squashed vertically.\n  let sy = 0;\n  let ey = ih;\n  let py = ih;\n  while (py > sy) {\n    let alpha = data[(py - 1) * 4 + 3];\n\n    if (alpha === 0) {\n      ey = py;\n    } else {\n      sy = py;\n    }\n\n    py = (ey + sy) >> 1;\n  }\n  let ratio = py / ih;\n\n  if (ratio === 0) {\n    return 1;\n  } else {\n    return ratio;\n  }\n};\n\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar drawImageIOSFix = function (ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n  let vertSquashRatio = detectVerticalSquash(img);\n  return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\nclass ExifRestore {\n  static initClass() {\n    this.KEY_STR =\n      \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n  }\n\n  static encode64(input) {\n    let output = \"\";\n    let chr1 = undefined;\n    let chr2 = undefined;\n    let chr3 = \"\";\n    let enc1 = undefined;\n    let enc2 = undefined;\n    let enc3 = undefined;\n    let enc4 = \"\";\n    let i = 0;\n    while (true) {\n      chr1 = input[i++];\n      chr2 = input[i++];\n      chr3 = input[i++];\n      enc1 = chr1 >> 2;\n      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n      enc4 = chr3 & 63;\n      if (isNaN(chr2)) {\n        enc3 = enc4 = 64;\n      } else if (isNaN(chr3)) {\n        enc4 = 64;\n      }\n      output =\n        output +\n        this.KEY_STR.charAt(enc1) +\n        this.KEY_STR.charAt(enc2) +\n        this.KEY_STR.charAt(enc3) +\n        this.KEY_STR.charAt(enc4);\n      chr1 = chr2 = chr3 = \"\";\n      enc1 = enc2 = enc3 = enc4 = \"\";\n      if (!(i < input.length)) {\n        break;\n      }\n    }\n    return output;\n  }\n\n  static restore(origFileBase64, resizedFileBase64) {\n    if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n      return resizedFileBase64;\n    }\n    let rawImage = this.decode64(\n      origFileBase64.replace(\"data:image/jpeg;base64,\", \"\")\n    );\n    let segments = this.slice2Segments(rawImage);\n    let image = this.exifManipulation(resizedFileBase64, segments);\n    return `data:image/jpeg;base64,${this.encode64(image)}`;\n  }\n\n  static exifManipulation(resizedFileBase64, segments) {\n    let exifArray = this.getExifArray(segments);\n    let newImageArray = this.insertExif(resizedFileBase64, exifArray);\n    let aBuffer = new Uint8Array(newImageArray);\n    return aBuffer;\n  }\n\n  static getExifArray(segments) {\n    let seg = undefined;\n    let x = 0;\n    while (x < segments.length) {\n      seg = segments[x];\n      if ((seg[0] === 255) & (seg[1] === 225)) {\n        return seg;\n      }\n      x++;\n    }\n    return [];\n  }\n\n  static insertExif(resizedFileBase64, exifArray) {\n    let imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n    let buf = this.decode64(imageData);\n    let separatePoint = buf.indexOf(255, 3);\n    let mae = buf.slice(0, separatePoint);\n    let ato = buf.slice(separatePoint);\n    let array = mae;\n    array = array.concat(exifArray);\n    array = array.concat(ato);\n    return array;\n  }\n\n  static slice2Segments(rawImageArray) {\n    let head = 0;\n    let segments = [];\n    while (true) {\n      var length;\n      if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 218)) {\n        break;\n      }\n      if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 216)) {\n        head += 2;\n      } else {\n        length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n        let endPoint = head + length + 2;\n        let seg = rawImageArray.slice(head, endPoint);\n        segments.push(seg);\n        head = endPoint;\n      }\n      if (head > rawImageArray.length) {\n        break;\n      }\n    }\n    return segments;\n  }\n\n  static decode64(input) {\n    let output = \"\";\n    let chr1 = undefined;\n    let chr2 = undefined;\n    let chr3 = \"\";\n    let enc1 = undefined;\n    let enc2 = undefined;\n    let enc3 = undefined;\n    let enc4 = \"\";\n    let i = 0;\n    let buf = [];\n    // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n    let base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n    if (base64test.exec(input)) {\n      console.warn(\n        \"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\"\n      );\n    }\n    input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n    while (true) {\n      enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n      chr1 = (enc1 << 2) | (enc2 >> 4);\n      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n      chr3 = ((enc3 & 3) << 6) | enc4;\n      buf.push(chr1);\n      if (enc3 !== 64) {\n        buf.push(chr2);\n      }\n      if (enc4 !== 64) {\n        buf.push(chr3);\n      }\n      chr1 = chr2 = chr3 = \"\";\n      enc1 = enc2 = enc3 = enc4 = \"\";\n      if (!(i < input.length)) {\n        break;\n      }\n    }\n    return buf;\n  }\n}\nExifRestore.initClass();\n\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n// @win window reference\n// @fn function reference\nlet contentLoaded = function (win, fn) {\n  let done = false;\n  let top = true;\n  let doc = win.document;\n  let root = doc.documentElement;\n  let add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n  let rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n  let pre = doc.addEventListener ? \"\" : \"on\";\n  var init = function (e) {\n    if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n      return;\n    }\n    (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n    if (!done && (done = true)) {\n      return fn.call(win, e.type || e);\n    }\n  };\n\n  var poll = function () {\n    try {\n      root.doScroll(\"left\");\n    } catch (e) {\n      setTimeout(poll, 50);\n      return;\n    }\n    return init(\"poll\");\n  };\n\n  if (doc.readyState !== \"complete\") {\n    if (doc.createEventObject && root.doScroll) {\n      try {\n        top = !win.frameElement;\n      } catch (error) {}\n      if (top) {\n        poll();\n      }\n    }\n    doc[add](pre + \"DOMContentLoaded\", init, false);\n    doc[add](pre + \"readystatechange\", init, false);\n    return win[add](pre + \"load\", init, false);\n  }\n};\n\nfunction __guard__(value, transform) {\n  return typeof value !== \"undefined\" && value !== null\n    ? transform(value)\n    : undefined;\n}\nfunction __guardMethod__(obj, methodName, transform) {\n  if (\n    typeof obj !== \"undefined\" &&\n    obj !== null &&\n    typeof obj[methodName] === \"function\"\n  ) {\n    return transform(obj, methodName);\n  } else {\n    return undefined;\n  }\n}\n\nexport { Dropzone };\n", "// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nexport default class Emitter {\n  // Add an event listener for given event\n  on(event, fn) {\n    this._callbacks = this._callbacks || {};\n    // Create namespace for this event\n    if (!this._callbacks[event]) {\n      this._callbacks[event] = [];\n    }\n    this._callbacks[event].push(fn);\n    return this;\n  }\n\n  emit(event, ...args) {\n    this._callbacks = this._callbacks || {};\n    let callbacks = this._callbacks[event];\n\n    if (callbacks) {\n      for (let callback of callbacks) {\n        callback.apply(this, args);\n      }\n    }\n    // trigger a corresponding DOM event\n    if (this.element) {\n      this.element.dispatchEvent(\n        this.makeEvent(\"dropzone:\" + event, { args: args })\n      );\n    }\n    return this;\n  }\n\n  makeEvent(eventName, detail) {\n    let params = { bubbles: true, cancelable: true, detail: detail };\n\n    if (typeof window.CustomEvent === \"function\") {\n      return new CustomEvent(eventName, params);\n    } else {\n      // IE 11 support\n      // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n      var evt = document.createEvent(\"CustomEvent\");\n      evt.initCustomEvent(\n        eventName,\n        params.bubbles,\n        params.cancelable,\n        params.detail\n      );\n      return evt;\n    }\n  }\n\n  // Remove event listener for given event. If fn is not provided, all event\n  // listeners for that event will be removed. If neither is provided, all\n  // event listeners will be removed.\n  off(event, fn) {\n    if (!this._callbacks || arguments.length === 0) {\n      this._callbacks = {};\n      return this;\n    }\n\n    // specific event\n    let callbacks = this._callbacks[event];\n    if (!callbacks) {\n      return this;\n    }\n\n    // remove all handlers\n    if (arguments.length === 1) {\n      delete this._callbacks[event];\n      return this;\n    }\n\n    // remove specific handler\n    for (let i = 0; i < callbacks.length; i++) {\n      let callback = callbacks[i];\n      if (callback === fn) {\n        callbacks.splice(i, 1);\n        break;\n      }\n    }\n\n    return this;\n  }\n}\n", "import Dropzone from \"./dropzone\";\nimport defaultPreviewTemplate from \"bundle-text:./preview-template.html\";\n\nlet defaultOptions = {\n  /**\n   * Has to be specified on elements other than form (or when the form doesn't\n   * have an `action` attribute).\n   *\n   * You can also provide a function that will be called with `files` and\n   * `dataBlocks`  and must return the url as string.\n   */\n  url: null,\n\n  /**\n   * Can be changed to `\"put\"` if necessary. You can also provide a function\n   * that will be called with `files` and must return the method (since `v3.12.0`).\n   */\n  method: \"post\",\n\n  /**\n   * Will be set on the XHRequest.\n   */\n  withCredentials: false,\n\n  /**\n   * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n   * If set to null or 0, no timeout is going to be set.\n   */\n  timeout: null,\n\n  /**\n   * How many file uploads to process in parallel (See the\n   * Enqueuing file uploads documentation section for more info)\n   */\n  parallelUploads: 2,\n\n  /**\n   * Whether to send multiple files in one request. If\n   * this it set to true, then the fallback file input element will\n   * have the `multiple` attribute as well. This option will\n   * also trigger additional events (like `processingmultiple`). See the events\n   * documentation section for more information.\n   */\n  uploadMultiple: false,\n\n  /**\n   * Whether you want files to be uploaded in chunks to your server. This can't be\n   * used in combination with `uploadMultiple`.\n   *\n   * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n   */\n  chunking: false,\n\n  /**\n   * If `chunking` is enabled, this defines whether **every** file should be chunked,\n   * even if the file size is below chunkSize. This means, that the additional chunk\n   * form data will be submitted and the `chunksUploaded` callback will be invoked.\n   */\n  forceChunking: false,\n\n  /**\n   * If `chunking` is `true`, then this defines the chunk size in bytes.\n   */\n  chunkSize: 2 * 1024 * 1024,\n\n  /**\n   * If `true`, the individual chunks of a file are being uploaded simultaneously.\n   */\n  parallelChunkUploads: false,\n\n  /**\n   * Whether a chunk should be retried if it fails.\n   */\n  retryChunks: false,\n\n  /**\n   * If `retryChunks` is true, how many times should it be retried.\n   */\n  retryChunksLimit: 3,\n\n  /**\n   * The maximum filesize (in MiB) that is allowed to be uploaded.\n   */\n  maxFilesize: 256,\n\n  /**\n   * The name of the file param that gets transferred.\n   * **NOTE**: If you have the option  `uploadMultiple` set to `true`, then\n   * Dropzone will append `[]` to the name.\n   */\n  paramName: \"file\",\n\n  /**\n   * Whether thumbnails for images should be generated\n   */\n  createImageThumbnails: true,\n\n  /**\n   * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n   */\n  maxThumbnailFilesize: 10,\n\n  /**\n   * If `null`, the ratio of the image will be used to calculate it.\n   */\n  thumbnailWidth: 120,\n\n  /**\n   * The same as `thumbnailWidth`. If both are null, images will not be resized.\n   */\n  thumbnailHeight: 120,\n\n  /**\n   * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  thumbnailMethod: \"crop\",\n\n  /**\n   * If set, images will be resized to these dimensions before being **uploaded**.\n   * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n   * ratio of the file will be preserved.\n   *\n   * The `options.transformFile` function uses these options, so if the `transformFile` function\n   * is overridden, these options don't do anything.\n   */\n  resizeWidth: null,\n\n  /**\n   * See `resizeWidth`.\n   */\n  resizeHeight: null,\n\n  /**\n   * The mime type of the resized image (before it gets uploaded to the server).\n   * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n   * See `resizeWidth` for more information.\n   */\n  resizeMimeType: null,\n\n  /**\n   * The quality of the resized images. See `resizeWidth`.\n   */\n  resizeQuality: 0.8,\n\n  /**\n   * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  resizeMethod: \"contain\",\n\n  /**\n   * The base that is used to calculate the **displayed** filesize. You can\n   * change this to 1024 if you would rather display kibibytes, mebibytes,\n   * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n   * not `1 kilobyte`. You can change this to `1024` if you don't care about\n   * validity.\n   */\n  filesizeBase: 1000,\n\n  /**\n   * If not `null` defines how many files this Dropzone handles. If it exceeds,\n   * the event `maxfilesexceeded` will be called. The dropzone element gets the\n   * class `dz-max-files-reached` accordingly so you can provide visual\n   * feedback.\n   */\n  maxFiles: null,\n\n  /**\n   * An optional object to send additional headers to the server. Eg:\n   * `{ \"My-Awesome-Header\": \"header value\" }`\n   */\n  headers: null,\n\n  /**\n   * Should the default headers be set or not?\n   * Accept: application/json <- for requesting json response\n   * Cache-Control: no-cache <- Request shouldnt be cached\n   * X-Requested-With: XMLHttpRequest <- We sent the request via XMLHttpRequest\n   */\n  defaultHeaders: true,\n\n  /**\n   * If `true`, the dropzone element itself will be clickable, if `false`\n   * nothing will be clickable.\n   *\n   * You can also pass an HTML element, a CSS selector (for multiple elements)\n   * or an array of those. In that case, all of those elements will trigger an\n   * upload when clicked.\n   */\n  clickable: true,\n\n  /**\n   * Whether hidden files in directories should be ignored.\n   */\n  ignoreHiddenFiles: true,\n\n  /**\n   * The default implementation of `accept` checks the file's mime type or\n   * extension against this list. This is a comma separated list of mime\n   * types or file extensions.\n   *\n   * Eg.: `image/*,application/pdf,.psd`\n   *\n   * If the Dropzone is `clickable` this option will also be used as\n   * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n   * parameter on the hidden file input as well.\n   */\n  acceptedFiles: null,\n\n  /**\n   * **Deprecated!**\n   * Use acceptedFiles instead.\n   */\n  acceptedMimeTypes: null,\n\n  /**\n   * If false, files will be added to the queue but the queue will not be\n   * processed automatically.\n   * This can be useful if you need some additional user input before sending\n   * files (or if you want want all files sent at once).\n   * If you're ready to send the file simply call `myDropzone.processQueue()`.\n   *\n   * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n   * section for more information.\n   */\n  autoProcessQueue: true,\n\n  /**\n   * If false, files added to the dropzone will not be queued by default.\n   * You'll have to call `enqueueFile(file)` manually.\n   */\n  autoQueue: true,\n\n  /**\n   * If `true`, this will add a link to every file preview to remove or cancel (if\n   * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n   * and `dictRemoveFile` options are used for the wording.\n   */\n  addRemoveLinks: false,\n\n  /**\n   * Defines where to display the file previews \u2013 if `null` the\n   * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n   * selector. The element should have the `dropzone-previews` class so\n   * the previews are displayed properly.\n   */\n  previewsContainer: null,\n\n  /**\n   * Set this to `true` if you don't want previews to be shown.\n   */\n  disablePreviews: false,\n\n  /**\n   * This is the element the hidden input field (which is used when clicking on the\n   * dropzone to trigger file selection) will be appended to. This might\n   * be important in case you use frameworks to switch the content of your page.\n   *\n   * Can be a selector string, or an element directly.\n   */\n  hiddenInputContainer: \"body\",\n\n  /**\n   * If null, no capture type will be specified\n   * If camera, mobile devices will skip the file selection and choose camera\n   * If microphone, mobile devices will skip the file selection and choose the microphone\n   * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n   * On apple devices multiple must be set to false.  AcceptedFiles may need to\n   * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n   */\n  capture: null,\n\n  /**\n   * **Deprecated**. Use `renameFile` instead.\n   */\n  renameFilename: null,\n\n  /**\n   * A function that is invoked before the file is uploaded to the server and renames the file.\n   * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n   * file that gets used during the upload can be accessed through `file.upload.filename`.\n   */\n  renameFile: null,\n\n  /**\n   * If `true` the fallback will be forced. This is very useful to test your server\n   * implementations first and make sure that everything works as\n   * expected without dropzone if you experience problems, and to test\n   * how your fallbacks will look.\n   */\n  forceFallback: false,\n\n  /**\n   * The text used before any files are dropped.\n   */\n  dictDefaultMessage: \"Drop files here to upload\",\n\n  /**\n   * The text that replaces the default message text it the browser is not supported.\n   */\n  dictFallbackMessage:\n    \"Your browser does not support drag'n'drop file uploads.\",\n\n  /**\n   * The text that will be added before the fallback form.\n   * If you provide a  fallback element yourself, or if this option is `null` this will\n   * be ignored.\n   */\n  dictFallbackText:\n    \"Please use the fallback form below to upload your files like in the olden days.\",\n\n  /**\n   * If the filesize is too big.\n   * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n   */\n  dictFileTooBig:\n    \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n  /**\n   * If the file doesn't match the file type.\n   */\n  dictInvalidFileType: \"You can't upload files of this type.\",\n\n  /**\n   * If the server response was invalid.\n   * `{{statusCode}}` will be replaced with the servers status code.\n   */\n  dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n   */\n  dictCancelUpload: \"Cancel upload\",\n\n  /**\n   * The text that is displayed if an upload was manually canceled\n   */\n  dictUploadCanceled: \"Upload canceled.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n   */\n  dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used to remove a file.\n   */\n  dictRemoveFile: \"Remove file\",\n\n  /**\n   * If this is not null, then the user will be prompted before removing a file.\n   */\n  dictRemoveFileConfirmation: null,\n\n  /**\n   * Displayed if `maxFiles` is st and exceeded.\n   * The string `{{maxFiles}}` will be replaced by the configuration value.\n   */\n  dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n  /**\n   * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n   * `b` for bytes.\n   */\n  dictFileSizeUnits: { tb: \"TB\", gb: \"GB\", mb: \"MB\", kb: \"KB\", b: \"b\" },\n  /**\n   * Called when dropzone initialized\n   * You can add event listeners here\n   */\n  init() {},\n\n  /**\n   * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n   * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n   * of a function, this needs to return a map.\n   *\n   * The default implementation does nothing for normal uploads, but adds relevant information for\n   * chunked uploads.\n   *\n   * This is the same as adding hidden input fields in the form element.\n   */\n  params(files, xhr, chunk) {\n    if (chunk) {\n      return {\n        dzuuid: chunk.file.upload.uuid,\n        dzchunkindex: chunk.index,\n        dztotalfilesize: chunk.file.size,\n        dzchunksize: this.options.chunkSize,\n        dztotalchunkcount: chunk.file.upload.totalChunkCount,\n        dzchunkbyteoffset: chunk.index * this.options.chunkSize,\n      };\n    }\n  },\n\n  /**\n   * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n   * and a `done` function as parameters.\n   *\n   * If the done function is invoked without arguments, the file is \"accepted\" and will\n   * be processed. If you pass an error message, the file is rejected, and the error\n   * message will be displayed.\n   * This function will not be called if the file is too big or doesn't match the mime types.\n   */\n  accept(file, done) {\n    return done();\n  },\n\n  /**\n   * The callback that will be invoked when all chunks have been uploaded for a file.\n   * It gets the file for which the chunks have been uploaded as the first parameter,\n   * and the `done` function as second. `done()` needs to be invoked when everything\n   * needed to finish the upload process is done.\n   */\n  chunksUploaded: function (file, done) {\n    done();\n  },\n\n  /**\n   * Sends the file as binary blob in body instead of form data.\n   * If this is set, the `params` option will be ignored.\n   * It's an error to set this to `true` along with `uploadMultiple` since\n   * multiple files cannot be in a single binary body.\n   */\n  binaryBody: false,\n\n  /**\n   * Gets called when the browser is not supported.\n   * The default implementation shows the fallback input field and adds\n   * a text.\n   */\n  fallback() {\n    // This code should pass in IE7... :(\n    let messageElement;\n    this.element.className = `${this.element.className} dz-browser-not-supported`;\n\n    for (let child of this.element.getElementsByTagName(\"div\")) {\n      if (/(^| )dz-message($| )/.test(child.className)) {\n        messageElement = child;\n        child.className = \"dz-message\"; // Removes the 'dz-default' class\n        break;\n      }\n    }\n    if (!messageElement) {\n      messageElement = Dropzone.createElement(\n        '<div class=\"dz-message\"><span></span></div>'\n      );\n      this.element.appendChild(messageElement);\n    }\n\n    let span = messageElement.getElementsByTagName(\"span\")[0];\n    if (span) {\n      if (span.textContent != null) {\n        span.textContent = this.options.dictFallbackMessage;\n      } else if (span.innerText != null) {\n        span.innerText = this.options.dictFallbackMessage;\n      }\n    }\n\n    return this.element.appendChild(this.getFallbackForm());\n  },\n\n  /**\n   * Gets called to calculate the thumbnail dimensions.\n   *\n   * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n   *\n   *  - `srcWidth` & `srcHeight` (required)\n   *  - `trgWidth` & `trgHeight` (required)\n   *  - `srcX` & `srcY` (optional, default `0`)\n   *  - `trgX` & `trgY` (optional, default `0`)\n   *\n   * Those values are going to be used by `ctx.drawImage()`.\n   */\n  resize(file, width, height, resizeMethod) {\n    let info = {\n      srcX: 0,\n      srcY: 0,\n      srcWidth: file.width,\n      srcHeight: file.height,\n    };\n\n    let srcRatio = file.width / file.height;\n\n    // Automatically calculate dimensions if not specified\n    if (width == null && height == null) {\n      width = info.srcWidth;\n      height = info.srcHeight;\n    } else if (width == null) {\n      width = height * srcRatio;\n    } else if (height == null) {\n      height = width / srcRatio;\n    }\n\n    // Make sure images aren't upscaled\n    width = Math.min(width, info.srcWidth);\n    height = Math.min(height, info.srcHeight);\n\n    let trgRatio = width / height;\n\n    if (info.srcWidth > width || info.srcHeight > height) {\n      // Image is bigger and needs rescaling\n      if (resizeMethod === \"crop\") {\n        if (srcRatio > trgRatio) {\n          info.srcHeight = file.height;\n          info.srcWidth = info.srcHeight * trgRatio;\n        } else {\n          info.srcWidth = file.width;\n          info.srcHeight = info.srcWidth / trgRatio;\n        }\n      } else if (resizeMethod === \"contain\") {\n        // Method 'contain'\n        if (srcRatio > trgRatio) {\n          height = width / srcRatio;\n        } else {\n          width = height * srcRatio;\n        }\n      } else {\n        throw new Error(`Unknown resizeMethod '${resizeMethod}'`);\n      }\n    }\n\n    info.srcX = (file.width - info.srcWidth) / 2;\n    info.srcY = (file.height - info.srcHeight) / 2;\n\n    info.trgWidth = width;\n    info.trgHeight = height;\n\n    return info;\n  },\n\n  /**\n   * Can be used to transform the file (for example, resize an image if necessary).\n   *\n   * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n   * images according to those dimensions.\n   *\n   * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n   * to be invoked with the file when the transformation is done.\n   */\n  transformFile(file, done) {\n    if (\n      (this.options.resizeWidth || this.options.resizeHeight) &&\n      file.type.match(/image.*/)\n    ) {\n      return this.resizeImage(\n        file,\n        this.options.resizeWidth,\n        this.options.resizeHeight,\n        this.options.resizeMethod,\n        done\n      );\n    } else {\n      return done(file);\n    }\n  },\n\n  /**\n   * A string that contains the template used for each dropped\n   * file. Change it to fulfill your needs but make sure to properly\n   * provide all elements.\n   *\n   * If you want to use an actual HTML element instead of providing a String\n   * as a config option, you could create a div with the id `tpl`,\n   * put the template inside it and provide the element like this:\n   *\n   *     document\n   *       .querySelector('#tpl')\n   *       .innerHTML\n   *\n   */\n  previewTemplate: defaultPreviewTemplate,\n\n  /*\n   Those functions register themselves to the events on init and handle all\n   the user interface specific stuff. Overwriting them won't break the upload\n   but can break the way it's displayed.\n   You can overwrite them if you don't like the default behavior. If you just\n   want to add an additional event handler, register it on the dropzone object\n   and don't overwrite those options.\n   */\n\n  // Those are self explanatory and simply concern the DragnDrop.\n  drop(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragstart(e) {},\n  dragend(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragenter(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragover(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragleave(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n\n  paste(e) {},\n\n  // Called whenever there are no files left in the dropzone anymore, and the\n  // dropzone should be displayed as if in the initial state.\n  reset() {\n    return this.element.classList.remove(\"dz-started\");\n  },\n\n  // Called when a file is added to the queue\n  // Receives `file`\n  addedfile(file) {\n    if (this.element === this.previewsContainer) {\n      this.element.classList.add(\"dz-started\");\n    }\n\n    if (this.previewsContainer && !this.options.disablePreviews) {\n      file.previewElement = Dropzone.createElement(\n        this.options.previewTemplate.trim()\n      );\n      file.previewTemplate = file.previewElement; // Backwards compatibility\n\n      this.previewsContainer.appendChild(file.previewElement);\n      for (var node of file.previewElement.querySelectorAll(\"[data-dz-name]\")) {\n        node.textContent = file.name;\n      }\n      for (node of file.previewElement.querySelectorAll(\"[data-dz-size]\")) {\n        node.innerHTML = this.filesize(file.size);\n      }\n\n      if (this.options.addRemoveLinks) {\n        file._removeLink = Dropzone.createElement(\n          `<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>${this.options.dictRemoveFile}</a>`\n        );\n        file.previewElement.appendChild(file._removeLink);\n      }\n\n      let removeFileEvent = (e) => {\n        e.preventDefault();\n        e.stopPropagation();\n        if (file.status === Dropzone.UPLOADING) {\n          return Dropzone.confirm(\n            this.options.dictCancelUploadConfirmation,\n            () => this.removeFile(file)\n          );\n        } else {\n          if (this.options.dictRemoveFileConfirmation) {\n            return Dropzone.confirm(\n              this.options.dictRemoveFileConfirmation,\n              () => this.removeFile(file)\n            );\n          } else {\n            return this.removeFile(file);\n          }\n        }\n      };\n\n      for (let removeLink of file.previewElement.querySelectorAll(\n        \"[data-dz-remove]\"\n      )) {\n        removeLink.addEventListener(\"click\", removeFileEvent);\n      }\n    }\n  },\n\n  // Called whenever a file is removed.\n  removedfile(file) {\n    if (file.previewElement != null && file.previewElement.parentNode != null) {\n      file.previewElement.parentNode.removeChild(file.previewElement);\n    }\n    return this._updateMaxFilesReachedClass();\n  },\n\n  // Called when a thumbnail has been generated\n  // Receives `file` and `dataUrl`\n  thumbnail(file, dataUrl) {\n    if (file.previewElement) {\n      file.previewElement.classList.remove(\"dz-file-preview\");\n      for (let thumbnailElement of file.previewElement.querySelectorAll(\n        \"[data-dz-thumbnail]\"\n      )) {\n        thumbnailElement.alt = file.name;\n        thumbnailElement.src = dataUrl;\n      }\n\n      return setTimeout(\n        () => file.previewElement.classList.add(\"dz-image-preview\"),\n        1\n      );\n    }\n  },\n\n  // Called whenever an error occurs\n  // Receives `file` and `message`\n  error(file, message) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-error\");\n      if (typeof message !== \"string\" && message.error) {\n        message = message.error;\n      }\n      for (let node of file.previewElement.querySelectorAll(\n        \"[data-dz-errormessage]\"\n      )) {\n        node.textContent = message;\n      }\n    }\n  },\n\n  errormultiple() {},\n\n  // Called when a file gets processed. Since there is a cue, not all added\n  // files are processed immediately.\n  // Receives `file`\n  processing(file) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-processing\");\n      if (file._removeLink) {\n        return (file._removeLink.innerHTML = this.options.dictCancelUpload);\n      }\n    }\n  },\n\n  processingmultiple() {},\n\n  // Called whenever the upload progress gets updated.\n  // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n  // To get the total number of bytes of the file, use `file.size`\n  uploadprogress(file, progress, bytesSent) {\n    if (file.previewElement) {\n      for (let node of file.previewElement.querySelectorAll(\n        \"[data-dz-uploadprogress]\"\n      )) {\n        node.nodeName === \"PROGRESS\"\n          ? (node.value = progress)\n          : (node.style.width = `${progress}%`);\n      }\n    }\n  },\n\n  // Called whenever the total upload progress gets updated.\n  // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n  totaluploadprogress() {},\n\n  // Called just before the file is sent. Gets the `xhr` object as second\n  // parameter, so you can modify it (for example to add a CSRF token) and a\n  // `formData` object to add additional information.\n  sending() {},\n\n  sendingmultiple() {},\n\n  // When the complete upload is finished and successful\n  // Receives `file`\n  success(file) {\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-success\");\n    }\n  },\n\n  successmultiple() {},\n\n  // When the upload is canceled.\n  canceled(file) {\n    return this.emit(\"error\", file, this.options.dictUploadCanceled);\n  },\n\n  canceledmultiple() {},\n\n  // When the upload is finished, either with success or an error.\n  // Receives `file`\n  complete(file) {\n    if (file._removeLink) {\n      file._removeLink.innerHTML = this.options.dictRemoveFile;\n    }\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-complete\");\n    }\n  },\n\n  completemultiple() {},\n\n  maxfilesexceeded() {},\n\n  maxfilesreached() {},\n\n  queuecomplete() {},\n\n  addedfiles() {},\n};\n\nexport default defaultOptions;\n", "module.exports = \"a1acf319c471fa03\";", "/* global loadLazyPartial */\n\nimport Dropzone from 'dropzone'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['fileInput', 'dropZoneContainer']\n\n  connect() {\n    this.dropZone = this.createDropZone()\n    Dropzone.autoDiscover = false\n    this.hideFileInput()\n\n    this.dropZone.on('addedfile', () => {\n      if (this.dropZone.files.length === 1) {\n        document.querySelector('.file-details').style.display = 'none'\n        document.querySelector('.new-agreement-editor').classList.add('hidden')\n        document.querySelector('.override-token-container').classList.add('hidden')\n        document.querySelector('.btn-primary.preview-agreement').innerText = this.submitText\n      } else if (this.dropZone.files.length > 1) {\n        this.dropZone.removeFile(this.dropZone.files[0])\n      }\n    })\n\n    this.dropZone.on('removedfile', (file) => {\n      const agreementModal = document.querySelector('#add-new-agreement')\n      if (agreementModal && file.previewElement && this.dropZone.files.length === 0) {\n        file.previewElement.classList.remove('dz-file-preview')\n        document.querySelector('.file-details').style.display = 'initial'\n        document.querySelector('.new-agreement-editor').classList.remove('hidden')\n        document.querySelector('.override-token-container').classList.remove('hidden')\n        document.querySelector('.btn-primary.preview-agreement').innerText = this.previewText\n      }\n    })\n\n    this.dropZone.on('success', (file, responseData) => {\n      $('#add-new-agreement').modal('hide')\n      this.dropZone.removeFile(file)\n      let agreementsComp = document.querySelector('#agreements')\n      document.querySelector('#global-alerts').innerHTML = responseData.content\n      if (agreementsComp) {\n        loadLazyPartial(agreementsComp.dataset.path, $(agreementsComp), true, true)\n      }\n    })\n\n    this.dropZone.on('error', (file, responseData) => {\n      this.dropZone.removeFile(file)\n      if (responseData.partial) {\n        $('#add-new-agreement').modal('hide')\n        if (responseData.partial) {\n          document.querySelector('#global-alerts').innerHTML = responseData.partial\n        }\n        return false\n      }\n    })\n  }\n\n  hideFileInput() {\n    this.fileInputTarget.disabled = true\n    this.fileInputTarget.style.display = 'none'\n  }\n\n  processFiles(event) {\n    if (this.dropZone.files.length > 0) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.dropZone.processQueue()\n    }\n  }\n\n  get headers() {\n    return { 'X-CSRF-Token': this.getMetaValue('csrf-token') }\n  }\n\n  get url() {\n    return this.fileInputTarget.getAttribute('data-direct-upload-url')\n  }\n\n  get maxFiles() {\n    return this.fileInputTarget.getAttribute('data-max-files') || 1\n  }\n\n  get maxFileSize() {\n    return this.fileInputTarget.getAttribute('data-max-file-size') || 30\n  }\n\n  get acceptedFiles() {\n    return this.fileInputTarget.getAttribute('data-accepted-files')\n  }\n\n  get addRemoveLinks() {\n    return this.fileInputTarget.getAttribute('data-add-remove-links') || true\n  }\n\n  get submitText() {\n    return this.fileInputTarget.getAttribute('data-submit-text')\n  }\n\n  get previewText() {\n    return this.fileInputTarget.getAttribute('data-preview-text')\n  }\n\n  get previewContainer() {\n    return this.fileInputTarget.getAttribute('data-preview-container')\n  }\n\n  get previewTemplate() {\n    return this.fileInputTarget.getAttribute('data-preview-template')\n  }\n\n  //\n  // private\n  //\n  createDropZone() {\n    return new Dropzone(this.dropZoneContainerTarget, {\n      url: this.url,\n      headers: this.headers,\n      maxFiles: this.maxFiles,\n      maxFilesize: this.maxFileSize,\n      acceptedFiles: this.acceptedFiles,\n      addRemoveLinks: this.addRemoveLinks,\n      autoProcessQueue: false,\n      previewsContainer: this.previewContainer,\n      previewTemplate: document.querySelector(this.previewTemplate).innerHTML,\n    })\n  }\n\n  getMetaValue(name) {\n    const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n    if (element) {\n      return element.getAttribute('content')\n    }\n  }\n}\n", "/**\n *  Function to determine if a given element is visible without observers\n *\n * @param {HTMLElement} element - The element to check the visibility of\n * @returns {boolean} true if element is visible, false otherwise\n *\n * @example\n * const visible = elementIsVisible(myElement)\n */\nexport function elementIsVisible(element) {\n  return element.offsetWidth > 0 && element.offsetHeight > 0\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { elementIsVisible } from '../../helpers/visibility_helper'\n\nexport default class extends Controller {\n  static targets = ['navButton', 'module', 'selectedClassDetails', 'customFormFields', 'header']\n\n  connect() {\n    if (this.navButtonTargets.length !== this.moduleTargets.length) {\n      throw new Error('Mismatched number of step buttons and modules.')\n    }\n\n    this.steps = this.navButtonTargets.map((button, index) => index + 1)\n    this.currentStep = 1\n  }\n\n  nextStep(event) {\n    event.preventDefault()\n    if (!this.visibleFieldsAreValid()) return\n    this.currentStep += 1\n    this.setStep(this.currentStep)\n  }\n\n  previousStep(event) {\n    event.preventDefault()\n    this.currentStep -= 1\n    this.setStep(this.currentStep)\n  }\n\n  jumpToStep(event) {\n    event.preventDefault()\n    if (event.currentTarget.classList.contains('disabled')) return\n\n    const step = parseInt(event.currentTarget.dataset.step)\n    this.currentStep = step\n    this.setStep(step)\n  }\n\n  ///\n  /// private\n  ///\n  setStep(step) {\n    this.shiftNavigation(step)\n\n    window.scrollTo(0, this.headerTarget.offsetTop - 10)\n\n    if (step === 1) this.resetState()\n\n    this.shiftCarousels(step)\n  }\n\n  shiftNavigation(step) {\n    const otherSteps = this.steps.filter((_step) => _step !== step)\n    const index = step - 1\n\n    this.navButtonTargets[index].classList.add('active')\n    this.moduleTargets[index].classList.remove('hidden')\n    this.navButtonTargets[index].classList.remove('disabled')\n    this.navButtonTargets[index].classList.remove('reached')\n\n    for (const _step of otherSteps) {\n      const _index = _step - 1\n      if (_step < step) {\n        this.navButtonTargets[_index].classList.add('reached')\n        this.navButtonTargets[_index].classList.remove('active')\n        this.navButtonTargets[_index].classList.remove('disabled')\n      } else {\n        this.navButtonTargets[_index].classList.remove('reached')\n        this.navButtonTargets[_index].classList.remove('active')\n        this.navButtonTargets[_index].classList.add('disabled')\n      }\n    }\n  }\n\n  shiftCarousels(step) {\n    const index = step - 1\n    this.cleanCarouselItems(this.navButtonTargets)\n    this.cleanCarouselItems(this.moduleTargets)\n\n    this.setCarouselPosition(index, this.navButtonTargets)\n    this.setCarouselPosition(index, this.moduleTargets)\n\n    this.hideCarouselItems(this.navButtonTargets, true, false)\n    this.hideCarouselItems(this.moduleTargets, false, true)\n  }\n\n  setCarouselPosition(index, items) {\n    const currentItem = items[index]\n    const prevItem = items[index - 1]\n    const futureItem = items[index + 1]\n\n    if (currentItem) {\n      currentItem.classList.add('active')\n    }\n\n    if (prevItem) {\n      prevItem.classList.add('prev')\n    }\n\n    if (futureItem) {\n      futureItem.classList.add('next')\n    }\n  }\n\n  cleanCarouselItems(items) {\n    for (const item of items) {\n      item.classList.remove('active', 'next', 'prev', 'hidden', 'hidden-xs')\n    }\n  }\n\n  hideCarouselItems(items, small, hideInactive) {\n    for (const item of items) {\n      // Hide items that are not currently on screen\n      const shouldHide = !(\n        item.classList.contains('active') ||\n        item.classList.contains('next') ||\n        item.classList.contains('prev')\n      )\n\n      if (shouldHide) {\n        item.classList.add(small ? 'hidden-xs' : 'hidden')\n      }\n\n      // Hide items on screen that are not active\n      if (hideInactive && !item.classList.contains('active')) {\n        item.classList.add('hidden')\n      }\n    }\n  }\n\n  resetState() {\n    if (!this.hasSelectedClassDetailsTarget) return\n\n    const fields = this.selectedClassDetailsTarget.querySelectorAll('input')\n    const items = this.selectedClassDetailsTarget.querySelectorAll('.item')\n\n    for (const field of fields) {\n      if (field.id === 'class_required') return\n\n      field.value = ''\n    }\n\n    for (const item of items) {\n      item.querySelector('div').textContent = ''\n    }\n  }\n\n  visibleFieldsAreValid() {\n    if (!this.hasCustomFormFieldsTarget) return true\n\n    const fields = [...this.customFormFields, ...this.publicController.agreementTokenFields].filter((field) =>\n      elementIsVisible(field),\n    )\n    if (!fields.length) return true\n\n    const signed = this.publicController.signatures.every((signature) => signature.completed)\n\n    if (!signed) {\n      this.publicController.reportSignatureValidity()\n    }\n\n    return fields.reduce((acc, field) => acc && field.reportValidity(), true) && signed\n  }\n\n  get customFormFields() {\n    return [...this.customFormFieldsTarget.querySelectorAll('input')]\n  }\n\n  get publicController() {\n    return this.application.getControllerForElementAndIdentifier(this.element, 'public')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { post } from '../../helpers/fetch_helper'\n\nexport default class extends Controller {\n  static values = { serviceFee: String }\n  static targets = [\n    'checkout',\n    'hiddenTotalField',\n    'creditCardContainer',\n    'submissionIsInvoiced',\n    'noPaymentRequired',\n    'additionalCharges',\n    'taxTotal',\n    'taxLineItem',\n    'subtotal',\n    'total',\n    'serviceFee',\n    'serviceFeeLineItem',\n    'inventoryItem',\n  ]\n\n  connect() {\n    this.rawCart = new Set()\n\n    // Since these aren't exclusively used by LPs its weird to have them\n    // as targets, but it's nice to have reference to them.\n    this.stripeCardElement = document.querySelector('#stripe-card-element')\n    this.usaEpayCardElement = document.querySelector('#usa-epay-card-element')\n    this.alertsElement = document.querySelector('#global-alerts')\n  }\n\n  addToCart(event) {\n    const cartDataArr = JSON.parse(event.currentTarget.getAttribute('cartData'))\n\n    // Kinda stupid but I didnt know about stimulus values when I wrote this controller ig\n    // so it does some dumbassery\n    for (const cartData of cartDataArr) {\n      this.rawCart.add(JSON.stringify(cartData))\n    }\n\n    this.setCheckoutContent()\n  }\n\n  toggleFromCart(event) {\n    const cartData = event.currentTarget.getAttribute('cartData')\n    if (event.currentTarget.checked) {\n      this.rawCart.add(cartData)\n    } else {\n      this.rawCart.delete(cartData)\n    }\n\n    this.setCheckoutContent()\n  }\n\n  toggleOneFromCart(event) {\n    const cartDataArr = JSON.parse(event.currentTarget.getAttribute('cartData'))\n    if (this.previousSingleCartData) {\n      for (const cartData of this.previousSingleCartData) {\n        this.rawCart.delete(JSON.stringify(cartData))\n      }\n    }\n\n    // Kinda stupid but I didnt know about stimulus values when I wrote this controller ig\n    // so it does some dumbassery\n    for (const cartData of cartDataArr) {\n      this.rawCart.add(JSON.stringify(cartData))\n    }\n    this.previousSingleCartData = cartDataArr\n\n    this.setCheckoutContent()\n  }\n\n  clearCart() {\n    this.rawCart.clear()\n    this.setCheckoutContent()\n    this.clearInventoryItems()\n  }\n\n  setOrderTotal() {\n    const subtotal = [...this.cart].reduce((acc, item) => acc + item.price, 0)\n\n    this.hiddenTotalFieldTarget.value = subtotal\n\n    if (subtotal > 0) {\n      if (this.hasCreditCardContainerTarget) {\n        this.creditCardContainerTarget.classList.remove('hidden')\n        this.hasNoPaymentRequiredTarget && this.noPaymentRequiredTarget.classList.add('hidden')\n      } else {\n        this.submissionIsInvoicedTarget.classList.remove('hidden')\n      }\n    } else if (this.hasCreditCardContainerTarget) {\n      this.hideCreditCardInput()\n    } else {\n      this.submissionIsInvoicedTarget.classList.add('hidden')\n    }\n\n    const items = [...this.cart].map((item) => ({ type: item.type, id: item.id }))\n    const itemQueryString = new URLSearchParams({ items: JSON.stringify(items) })\n    post(`${this.hiddenTotalFieldTarget.getAttribute('data-calculation-path')}?${itemQueryString}`)\n      .then(async (response) => ({\n        status: response.status,\n        json: await response.json(),\n      }))\n      .then((data) => {\n        if (data.status === 200) {\n          if (this.hasSubtotalTarget) this.subtotalTarget.textContent = data.json.subtotal\n\n          for (const target of this.totalTargets) {\n            target.textContent = data.json.total\n          }\n          this.hiddenTotalFieldTarget.value = data.json.totalCents\n\n          this.toggleAdditionalChargesVisibility(data.json)\n\n          this.handleTaxResponse(data.json)\n          this.handleServiceFeeResponse(data.json)\n        } else {\n          this.alertsElement.textContent = data.text\n        }\n      })\n  }\n\n  ///\n  /// private\n  ///\n  setCheckoutContent() {\n    for (const target of this.checkoutTargets) {\n      target.textContent = ''\n\n      for (const item of this.cart) {\n        this.appendCartItem(target, item)\n      }\n    }\n  }\n\n  hideCreditCardInput() {\n    this.creditCardContainerTarget.classList.add('hidden')\n    this.hasNoPaymentRequiredTarget && this.noPaymentRequiredTarget.classList.remove('hidden')\n\n    this.creditCardContainerTarget.querySelector('iframe').src =\n      this.creditCardContainerTarget.querySelector('iframe').src\n\n    if (this.stripeCardElement) {\n      this.stripeCardElement.dispatchEvent(new Event('clear:stripe'))\n    }\n\n    if (this.usaEpayCardElement) {\n      this.usaEpayCardElement.dispatchEvent(new Event('clear:usaepay'))\n    }\n  }\n\n  appendCartItem(element, item) {\n    const cartItem = document.createElement('div')\n    const itemDesc = document.createElement('div')\n    const itemPrice = document.createElement('div')\n    cartItem.classList.add('item')\n    itemDesc.classList.add('item-description')\n    itemPrice.classList.add('item-price')\n\n    itemDesc.textContent = item.name\n    itemPrice.textContent = item.formatted_price\n\n    cartItem.appendChild(itemDesc)\n    cartItem.appendChild(itemPrice)\n    element.appendChild(cartItem)\n  }\n\n  clearInventoryItems() {\n    for (const item of this.inventoryItemTargets) {\n      item.checked = false\n    }\n  }\n\n  toggleAdditionalChargesVisibility(payload) {\n    if (!this.hasAdditionalChargesTarget) return\n\n    if (\n      payload.taxTotal.match(/\\d/g).join('') === '000' &&\n      (!this.hasServiceFeeTarget || payload.serviceFeeTotal.match(/\\d/g).join('') === '000')\n    ) {\n      this.additionalChargesTarget.classList.add('hidden')\n    } else {\n      this.additionalChargesTarget.classList.remove('hidden')\n    }\n  }\n\n  handleTaxResponse(payload) {\n    if (this.hasTaxLineItemTarget && payload.taxTotal.match(/\\d/g).join('') === '000') {\n      this.taxLineItemTarget.classList.add('hidden')\n    } else if (this.hasTaxLineItemTarget) {\n      this.taxLineItemTarget.classList.remove('hidden')\n    }\n    this.taxTotalTarget.textContent = payload.taxTotal\n  }\n\n  handleServiceFeeResponse(payload) {\n    if (!this.hasServiceFeeTarget) return\n\n    if (this.hasServiceFeeLineItemTarget && payload.serviceFeeTotal.match(/\\d/g).join('') === '000') {\n      this.serviceFeeLineItemTarget.classList.add('hidden')\n    } else if (this.hasServiceFeeLineItemTarget) {\n      this.serviceFeeLineItemTarget.classList.remove('hidden')\n    }\n    this.serviceFeeTarget.textContent = payload.serviceFeeTotal\n  }\n\n  get cart() {\n    return [...this.rawCart].map((item) => JSON.parse(item))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  connect() {\n    this.setNextDisabledState()\n  }\n\n  selectClassFromDropdown(event) {\n    event.preventDefault()\n  }\n\n  selectClassEvent(event) {\n    let calendarEvent = this.findCalEventFromTarget(event.target)\n    this.setSelectedClassAttributes(calendarEvent.dataset)\n\n    document.querySelector('#scheduler-next').disabled = false\n\n    for (const item of document.querySelectorAll('.calendar-event')) {\n      item.classList.remove('selected')\n    }\n    calendarEvent.classList.add('selected')\n  }\n\n  setNextDisabledState() {\n    let required = document.querySelector('#class_required').value\n    let items = document.querySelectorAll('.class-selection-menu .menu-item')\n\n    if (items.length === 0 && required === 'true') {\n      document.querySelector('#scheduler-next').disabled = false\n    } else {\n      document.querySelector('#scheduler-next').disabled = required === 'true'\n    }\n  }\n\n  //\n  // private\n  //\n  findCalEventFromTarget(target) {\n    // depending on if the user clicks the time or the space around it\n    if (target.hasAttribute('data-name')) {\n      return target\n    }\n\n    return target.closest('.calendar-event')\n  }\n\n  setSelectedClassAttributes(dataset) {\n    let className = document.querySelector('#selected-class-name')\n    className.textContent = dataset.name\n    let classDate = document.querySelector('#selected-class-date')\n    classDate.textContent = dataset.date\n    let classTime = document.querySelector('#selected-class-time')\n    classTime.textContent = dataset.time\n\n    let desc = document.querySelector('#selected-class-desc')\n    if (dataset.description) {\n      desc.textContent = dataset.description\n      desc.parentElement.classList.remove('hidden')\n    } else {\n      desc.parentElement.classList.add('hidden')\n    }\n\n    let instructor = document.querySelector('#selected-class-instructor')\n    if (dataset.instructor) {\n      instructor.textContent = dataset.instructor\n      instructor.classList.remove('hidden')\n    } else {\n      instructor.textContent = ''\n      instructor.classList.add('hidden')\n    }\n\n    document.querySelector('#scheduler_selected_class_object_type').value = dataset.type\n    document.querySelector('#scheduler_selected_class_object_id').value = dataset.id\n    document.querySelector('#scheduler_selected_class_date').value = dataset.date\n    document.querySelector('#scheduler_selected_class_time').value = dataset.time\n    document.querySelector('#scheduler_selected_class_name').value = dataset.name\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\n    'programIdField',\n    'membershipTemplateIdField',\n    'membershipTemplatePriceField',\n    'programName',\n    'membershipName',\n    'hiddenVault',\n    'saveVaultOption',\n    'saveVaultNoOption',\n  ]\n\n  revealPrograms(event) {\n    event.preventDefault()\n\n    const id = event.currentTarget.id.replace(/[^0-9]/g, '')\n    this.dontSignUpButton(id).classList.toggle('hidden')\n\n    this.toggleMembershipTemplates(event.currentTarget, id)\n  }\n\n  hidePrograms(event) {\n    event.preventDefault()\n\n    const id = event.currentTarget.id.replace(/[^0-9]/g, '')\n    this.signUpButton(id).classList.toggle('hidden')\n\n    this.toggleMembershipTemplates(event.currentTarget, id)\n  }\n\n  selectMembership(event) {\n    event.preventDefault()\n    const element = event.currentTarget\n    const id = element.id.replace(/[^0-9]/g, '')\n    this.membershipTemplateIdFieldTarget.value = id\n    this.membershipTemplatePriceFieldTarget.value = element.dataset.price\n\n    this.programIdFieldTarget.value = event.params.id\n\n    if (this.hasProgramNameTarget) {\n      this.programNameTarget.textContent = element.dataset.name\n      this.membershipNameTarget.textContent = element.dataset.membership\n    }\n\n    if (this.hasHiddenVaultTarget) {\n      if (element.dataset.recurringBilling === 'true') {\n        this.hiddenVaultTarget.value = true\n        this.saveVaultOptionTarget.classList.add('hidden')\n        this.saveVaultNoOptionTarget.classList.remove('hidden')\n      } else {\n        this.hiddenVaultTarget.value = false\n        this.saveVaultOptionTarget.classList.remove('hidden')\n        this.saveVaultNoOptionTarget.classList.add('hidden')\n      }\n    }\n\n    this.element.dispatchEvent(new Event('landing-page:update-order-total'))\n  }\n\n  ///\n  /// private\n  ///\n  toggleMembershipTemplates(button, id) {\n    document.querySelector(`#membership-options-for-${id}`).classList.toggle('hidden')\n\n    button.classList.toggle('hidden')\n  }\n\n  signUpButton(id) {\n    return document.querySelector(`#sign-up-${id}`)\n  }\n\n  dontSignUpButton(id) {\n    return document.querySelector(`#dont-sign-up-${id}`)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport intlTelInput from 'intl-tel-input'\n\nexport default class extends Controller {\n  static targets = ['requiredItem']\n  static outlets = ['signature', 'checkbox-signature', 'agreement-signatures']\n\n  _signatures = []\n\n  connect() {\n    // Fade out any success flashes\n    setTimeout(() => {\n      $('.alert-success').fadeOut('slow')\n    }, 2000)\n\n    const customPhoneField = document.querySelector('.custom-form-field input[type=tel].fancy')\n    if (customPhoneField) {\n      intlTelInput(customPhoneField, {\n        utilsScript: '/assets/intl-tel-input/utils.js',\n        formatOnDisplay: true,\n        hiddenInput: 'full_phone',\n        separateDialCode: true,\n        initialCountry: document.body.dataset.countryCode || 'us',\n      })\n    }\n  }\n\n  submit(event) {\n    const signed = this.signatures.every((signature) => signature.completed)\n\n    if (signed) {\n      const rawAgreement = document.querySelector('input#agreement')\n      const tokenFields = document.querySelectorAll('#agreement-content input.token-field')\n      for (const tokenField of tokenFields) {\n        const token = tokenField.dataset.token\n        rawAgreement.value = rawAgreement.value.replace(`((${token}))`, `${tokenField.value}`)\n      }\n\n      document.querySelector('#lp-submit').disabled = true\n\n      return true\n    }\n\n    this.reportSignatureValidity()\n\n    event.preventDefault()\n    event.stopPropagation()\n    return false\n  }\n\n  toggleRequired() {\n    const shouldBeRequired = !this.requiredItemTargets.some((i) => i.checked)\n\n    for (const input of this.requiredItemTargets) {\n      input.required = shouldBeRequired\n    }\n  }\n\n  reportSignatureValidity() {\n    this.agreementSignaturesOutlet.scrollToCurrent()\n    setTimeout(() => {\n      this.agreementSignaturesOutlet.flashValidity()\n    }, 250)\n  }\n\n  get agreementTokenFields() {\n    if (!this.hasAgreementSignaturesOutlet) return []\n\n    return [...this.agreementSignaturesOutlet.element.querySelectorAll('input[required]')]\n  }\n\n  get signatures() {\n    if (this._signatures.length) return this._signatures\n\n    const outlets = this.signatureOutlets.concat(this.checkboxSignatureOutlets)\n\n    outlets.sort((a, b) => {\n      if (a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING) {\n        return -1\n      }\n\n      return 1\n    })\n\n    this._signatures = outlets\n\n    return this._signatures\n  }\n}\n", "import { Turbo } from '@hotwired/turbo-rails'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['filterCheckbox', 'multiFilterCheckbox', 'expandButton', 'expandArea']\n\n  connect() {\n    const scrollableArea = this.expandAreaTarget.querySelector('.label-group')\n\n    if (scrollableArea.scrollHeight > scrollableArea.clientHeight) {\n      this.expandButtonTarget.classList.remove('hidden')\n    }\n  }\n\n  filter() {\n    const url = new URL(window.location)\n    const filters = this.selectedFilters\n\n    if (filters.length) {\n      url.searchParams.set('filters', filters)\n    } else {\n      url.searchParams.delete('filters')\n    }\n\n    Turbo.cache.clear()\n    Turbo.visit(url)\n  }\n\n  clear() {\n    const url = `${window.location.pathname}`\n\n    Turbo.cache.clear()\n    Turbo.visit(url)\n  }\n\n  expandCollapseFilters(event) {\n    const target = event.target.closest('.filters-area')\n\n    if (target.classList.contains('expanded')) {\n      target.classList.remove('expanded')\n    } else {\n      target.classList.add('expanded')\n    }\n  }\n\n  selectOneCheckbox(event) {\n    event.stopPropagation()\n  }\n\n  selectMultipleCheckboxes(event) {\n    event.stopPropagation()\n    const target = event.target.closest('.type-group')\n    const newState = !target.querySelector('input').checked\n    const subItems = target.querySelectorAll('.menu-sub-item')\n\n    for (const subItem of subItems) {\n      let checkbox = subItem.querySelector('input')\n      let icon = subItem.querySelector('svg')\n\n      checkbox.checked = newState\n      if (newState) {\n        icon.classList.remove('checkbox-disabled')\n      } else {\n        icon.classList.add('checkbox-disabled')\n      }\n    }\n  }\n\n  get selectedFilters() {\n    const filters = this.filterCheckboxTargets.filter((t) => t.checked).map((t) => t.value)\n\n    return filters\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  focus(event) {\n    event.preventDefault()\n\n    this.element.focus()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { createSortable } from '../helpers/sortable_helper'\n\n// This controller gets a little creative with the Stimulus API to\n// let us use Stimulus patterns with SortableJS.\n\n// TOOD: Do that same stuff to the DropSortableController at some point\nexport default class FormSortableController extends Controller {\n  static targets = ['item', 'hiddenInput', 'handle']\n  static values = {\n    options: Object,\n    write: Boolean,\n  }\n\n  connect() {\n    if (this.hasWriteValue) {\n      this.shouldWrite = this.writeValue\n    } else {\n      this.shouldWrite = true\n    }\n\n    const onEnd =\n      typeof this.optionsValue.onEndMethod === 'string'\n        ? this[this.optionsValue.onEndMethod]\n        : this.write.bind(this)\n\n    const options = {\n      onEnd,\n      draggable: '[data-form-sortable-target=\"item\"]',\n      ...this.optionsValue,\n    }\n\n    if (this.hasHandleTarget) {\n      options.handle = '[data-form-sortable-target=\"handle\"]'\n    }\n\n    createSortable(this.element, options)\n  }\n\n  itemTargetConnected() {\n    this.write()\n  }\n\n  ///\n  /// private\n  ///\n  write() {\n    if (!this.shouldWrite) return\n\n    for (const [index, input] of this.hiddenInputTargets.entries()) {\n      input.value = index\n    }\n\n    this.hiddenInputTargets[0].dispatchEvent(new Event('change'))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['spinner']\n\n  connect() {\n    if (this.shouldImmediatelyRemove) {\n      this.element.remove()\n      return\n    }\n\n    document.body.classList.add('overflow-hidden')\n\n    this.observer = new MutationObserver(this.mutate.bind(this))\n    this.observer.observe(document.documentElement, {\n      attributes: true,\n      attributeFilter: ['class'],\n      attributeOldValue: true,\n    })\n  }\n\n  mutate() {\n    if (document.documentElement.classList.contains('fontawesome-i2svg-active')) {\n      this.spinnerTarget.addEventListener(\n        'animationiteration',\n        () => {\n          this.spinnerTarget.classList.add('!animate-none')\n          this.element.classList.add('loading-fade')\n          this.element.addEventListener('animationend', () => {\n            document.body.classList.remove('overflow-hidden')\n            this.element.classList.add('opacity-0')\n            this.element.remove()\n          })\n        },\n        { once: true },\n      )\n\n      this.observer.disconnect()\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  get shouldImmediatelyRemove() {\n    return (\n      !document.body.hasAttribute('data-allow-loader') ||\n      document.body.classList.contains('classic-wrapper') ||\n      document.body.classList.contains('classic-wrapper-beta') ||\n      document.documentElement.classList.contains('fontawesome-i2svg-active') ||\n      window.matchMedia('(max-width: 767px)').matches ||\n      window.matchMedia('(display-mode: standalone)').matches\n    )\n  }\n}\n", "function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = _getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}\n\nfunction _get(target, property, receiver) {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    _get = Reflect.get;\n  } else {\n    _get = function _get(target, property, receiver) {\n      var base = _superPropBase(target, property);\n\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(receiver);\n      }\n\n      return desc.value;\n    };\n  }\n\n  return _get(target, property, receiver || target);\n}\n\nfunction set(target, property, value, receiver) {\n  if (typeof Reflect !== \"undefined\" && Reflect.set) {\n    set = Reflect.set;\n  } else {\n    set = function set(target, property, value, receiver) {\n      var base = _superPropBase(target, property);\n\n      var desc;\n\n      if (base) {\n        desc = Object.getOwnPropertyDescriptor(base, property);\n\n        if (desc.set) {\n          desc.set.call(receiver, value);\n          return true;\n        } else if (!desc.writable) {\n          return false;\n        }\n      }\n\n      desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n      if (desc) {\n        if (!desc.writable) {\n          return false;\n        }\n\n        desc.value = value;\n        Object.defineProperty(receiver, property, desc);\n      } else {\n        _defineProperty(receiver, property, value);\n      }\n\n      return true;\n    };\n  }\n\n  return set(target, property, value, receiver);\n}\n\nfunction _set(target, property, value, receiver, isStrict) {\n  var s = set(target, property, value, receiver || target);\n\n  if (!s && isStrict) {\n    throw new Error('failed to set property');\n  }\n\n  return value;\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nexport { _createClass as _, _classCallCheck as a, _objectWithoutProperties as b, _typeof as c, _inherits as d, _createSuper as e, _slicedToArray as f, _get as g, _getPrototypeOf as h, _set as i };\n", "import { c as _typeof } from '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/** Checks if value is string */\nfunction isString(str) {\n  return typeof str === 'string' || str instanceof String;\n}\n/**\n  Direction\n  @prop {string} NONE\n  @prop {string} LEFT\n  @prop {string} FORCE_LEFT\n  @prop {string} RIGHT\n  @prop {string} FORCE_RIGHT\n*/\n\nvar DIRECTION = {\n  NONE: 'NONE',\n  LEFT: 'LEFT',\n  FORCE_LEFT: 'FORCE_LEFT',\n  RIGHT: 'RIGHT',\n  FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/**\n  Direction\n  @enum {string}\n*/\n\n/** Returns next char index in direction */\nfunction indexInDirection(pos, direction) {\n  if (direction === DIRECTION.LEFT) --pos;\n  return pos;\n}\n/** Returns next char position in direction */\n\nfunction posInDirection(pos, direction) {\n  switch (direction) {\n    case DIRECTION.LEFT:\n    case DIRECTION.FORCE_LEFT:\n      return --pos;\n\n    case DIRECTION.RIGHT:\n    case DIRECTION.FORCE_RIGHT:\n      return ++pos;\n\n    default:\n      return pos;\n  }\n}\n/** */\n\nfunction forceDirection(direction) {\n  switch (direction) {\n    case DIRECTION.LEFT:\n      return DIRECTION.FORCE_LEFT;\n\n    case DIRECTION.RIGHT:\n      return DIRECTION.FORCE_RIGHT;\n\n    default:\n      return direction;\n  }\n}\n/** Escapes regular expression control chars */\n\nfunction escapeRegExp(str) {\n  return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n} // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\n\nfunction objectIncludes(b, a) {\n  if (a === b) return true;\n  var arrA = Array.isArray(a),\n      arrB = Array.isArray(b),\n      i;\n\n  if (arrA && arrB) {\n    if (a.length != b.length) return false;\n\n    for (i = 0; i < a.length; i++) {\n      if (!objectIncludes(a[i], b[i])) return false;\n    }\n\n    return true;\n  }\n\n  if (arrA != arrB) return false;\n\n  if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n    var dateA = a instanceof Date,\n        dateB = b instanceof Date;\n    if (dateA && dateB) return a.getTime() == b.getTime();\n    if (dateA != dateB) return false;\n    var regexpA = a instanceof RegExp,\n        regexpB = b instanceof RegExp;\n    if (regexpA && regexpB) return a.toString() == b.toString();\n    if (regexpA != regexpB) return false;\n    var keys = Object.keys(a); // if (keys.length !== Object.keys(b).length) return false;\n\n    for (i = 0; i < keys.length; i++) {\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    }\n\n    for (i = 0; i < keys.length; i++) {\n      if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n    }\n\n    return true;\n  } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n    return a.toString() === b.toString();\n  }\n\n  return false;\n}\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, indexInDirection, isString, objectIncludes, posInDirection };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\n\nvar ActionDetails = /*#__PURE__*/function () {\n  /** Current input value */\n\n  /** Current cursor position */\n\n  /** Old input value */\n\n  /** Old selection */\n  function ActionDetails(value, cursorPos, oldValue, oldSelection) {\n    _classCallCheck(this, ActionDetails);\n\n    this.value = value;\n    this.cursorPos = cursorPos;\n    this.oldValue = oldValue;\n    this.oldSelection = oldSelection; // double check if left part was changed (autofilling, other non-standard input triggers)\n\n    while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n      --this.oldSelection.start;\n    }\n  }\n  /**\n    Start changing position\n    @readonly\n  */\n\n\n  _createClass(ActionDetails, [{\n    key: \"startChangePos\",\n    get: function get() {\n      return Math.min(this.cursorPos, this.oldSelection.start);\n    }\n    /**\n      Inserted symbols count\n      @readonly\n    */\n\n  }, {\n    key: \"insertedCount\",\n    get: function get() {\n      return this.cursorPos - this.startChangePos;\n    }\n    /**\n      Inserted symbols\n      @readonly\n    */\n\n  }, {\n    key: \"inserted\",\n    get: function get() {\n      return this.value.substr(this.startChangePos, this.insertedCount);\n    }\n    /**\n      Removed symbols count\n      @readonly\n    */\n\n  }, {\n    key: \"removedCount\",\n    get: function get() {\n      // Math.max for opposite operation\n      return Math.max(this.oldSelection.end - this.startChangePos || // for Delete\n      this.oldValue.length - this.value.length, 0);\n    }\n    /**\n      Removed symbols\n      @readonly\n    */\n\n  }, {\n    key: \"removed\",\n    get: function get() {\n      return this.oldValue.substr(this.startChangePos, this.removedCount);\n    }\n    /**\n      Unchanged head symbols\n      @readonly\n    */\n\n  }, {\n    key: \"head\",\n    get: function get() {\n      return this.value.substring(0, this.startChangePos);\n    }\n    /**\n      Unchanged tail symbols\n      @readonly\n    */\n\n  }, {\n    key: \"tail\",\n    get: function get() {\n      return this.value.substring(this.startChangePos + this.insertedCount);\n    }\n    /**\n      Remove direction\n      @readonly\n    */\n\n  }, {\n    key: \"removeDirection\",\n    get: function get() {\n      if (!this.removedCount || this.insertedCount) return DIRECTION.NONE; // align right if delete at right or if range removed (event with backspace)\n\n      return this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos ? DIRECTION.RIGHT : DIRECTION.LEFT;\n    }\n  }]);\n\n  return ActionDetails;\n}();\n\nexport { ActionDetails as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/**\n  Provides details of changing model value\n  @param {Object} [details]\n  @param {string} [details.inserted] - Inserted symbols\n  @param {boolean} [details.skip] - Can skip chars\n  @param {number} [details.removeCount] - Removed symbols count\n  @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\n*/\nvar ChangeDetails = /*#__PURE__*/function () {\n  /** Inserted symbols */\n\n  /** Can skip chars */\n\n  /** Additional offset if any changes occurred before tail */\n\n  /** Raw inserted is used by dynamic mask */\n  function ChangeDetails(details) {\n    _classCallCheck(this, ChangeDetails);\n\n    Object.assign(this, {\n      inserted: '',\n      rawInserted: '',\n      skip: false,\n      tailShift: 0\n    }, details);\n  }\n  /**\n    Aggregate changes\n    @returns {ChangeDetails} `this`\n  */\n\n\n  _createClass(ChangeDetails, [{\n    key: \"aggregate\",\n    value: function aggregate(details) {\n      this.rawInserted += details.rawInserted;\n      this.skip = this.skip || details.skip;\n      this.inserted += details.inserted;\n      this.tailShift += details.tailShift;\n      return this;\n    }\n    /** Total offset considering all changes */\n\n  }, {\n    key: \"offset\",\n    get: function get() {\n      return this.tailShift + this.inserted.length;\n    }\n  }]);\n\n  return ChangeDetails;\n}();\n\nexport { ChangeDetails as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/** Provides details of continuous extracted tail */\nvar ContinuousTailDetails = /*#__PURE__*/function () {\n  /** Tail value as string */\n\n  /** Tail start position */\n\n  /** Start position */\n  function ContinuousTailDetails() {\n    var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var stop = arguments.length > 2 ? arguments[2] : undefined;\n\n    _classCallCheck(this, ContinuousTailDetails);\n\n    this.value = value;\n    this.from = from;\n    this.stop = stop;\n  }\n\n  _createClass(ContinuousTailDetails, [{\n    key: \"toString\",\n    value: function toString() {\n      return this.value;\n    }\n  }, {\n    key: \"extend\",\n    value: function extend(tail) {\n      this.value += String(tail);\n    }\n  }, {\n    key: \"appendTo\",\n    value: function appendTo(masked) {\n      return masked.append(this.toString(), {\n        tail: true\n      }).aggregate(masked._appendPlaceholder());\n    }\n  }, {\n    key: \"state\",\n    get: function get() {\n      return {\n        value: this.value,\n        from: this.from,\n        stop: this.stop\n      };\n    },\n    set: function set(state) {\n      Object.assign(this, state);\n    }\n  }, {\n    key: \"shiftBefore\",\n    value: function shiftBefore(pos) {\n      if (this.from >= pos || !this.value.length) return '';\n      var shiftChar = this.value[0];\n      this.value = this.value.slice(1);\n      return shiftChar;\n    }\n  }]);\n\n  return ContinuousTailDetails;\n}();\n\nexport { ContinuousTailDetails as default };\n", "/**\n * Applies mask on element.\n * @constructor\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\n * @param {Object} opts - Custom mask options\n * @return {InputMask}\n */\nfunction IMask(el) {\n  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  // currently available only for input-like elements\n  return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Supported mask type */\n\n/** Provides common masking stuff */\nvar Masked = /*#__PURE__*/function () {\n  // $Shape<MaskedOptions>; TODO after fix https://github.com/facebook/flow/issues/4773\n\n  /** @type {Mask} */\n\n  /** */\n  // $FlowFixMe no ideas\n\n  /** Transforms value before mask processing */\n\n  /** Validates if value is acceptable */\n\n  /** Does additional processing in the end of editing */\n\n  /** Format typed value to string */\n\n  /** Parse strgin to get typed value */\n\n  /** Enable characters overwriting */\n\n  /** */\n  function Masked(opts) {\n    _classCallCheck(this, Masked);\n\n    this._value = '';\n\n    this._update(Object.assign({}, Masked.DEFAULTS, opts));\n\n    this.isInitialized = true;\n  }\n  /** Sets and applies new options */\n\n\n  _createClass(Masked, [{\n    key: \"updateOptions\",\n    value: function updateOptions(opts) {\n      if (!Object.keys(opts).length) return;\n      this.withValueRefresh(this._update.bind(this, opts));\n    }\n    /**\n      Sets new options\n      @protected\n    */\n\n  }, {\n    key: \"_update\",\n    value: function _update(opts) {\n      Object.assign(this, opts);\n    }\n    /** Mask state */\n\n  }, {\n    key: \"state\",\n    get: function get() {\n      return {\n        _value: this.value\n      };\n    },\n    set: function set(state) {\n      this._value = state._value;\n    }\n    /** Resets value */\n\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this._value = '';\n    }\n    /** */\n\n  }, {\n    key: \"value\",\n    get: function get() {\n      return this._value;\n    },\n    set: function set(value) {\n      this.resolve(value);\n    }\n    /** Resolve new value */\n\n  }, {\n    key: \"resolve\",\n    value: function resolve(value) {\n      this.reset();\n      this.append(value, {\n        input: true\n      }, '');\n      this.doCommit();\n      return this.value;\n    }\n    /** */\n\n  }, {\n    key: \"unmaskedValue\",\n    get: function get() {\n      return this.value;\n    },\n    set: function set(value) {\n      this.reset();\n      this.append(value, {}, '');\n      this.doCommit();\n    }\n    /** */\n\n  }, {\n    key: \"typedValue\",\n    get: function get() {\n      return this.doParse(this.value);\n    },\n    set: function set(value) {\n      this.value = this.doFormat(value);\n    }\n    /** Value that includes raw user input */\n\n  }, {\n    key: \"rawInputValue\",\n    get: function get() {\n      return this.extractInput(0, this.value.length, {\n        raw: true\n      });\n    },\n    set: function set(value) {\n      this.reset();\n      this.append(value, {\n        raw: true\n      }, '');\n      this.doCommit();\n    }\n    /** */\n\n  }, {\n    key: \"isComplete\",\n    get: function get() {\n      return true;\n    }\n    /** Finds nearest input position in direction */\n\n  }, {\n    key: \"nearestInputPos\",\n    value: function nearestInputPos(cursorPos, direction) {\n      return cursorPos;\n    }\n    /** Extracts value in range considering flags */\n\n  }, {\n    key: \"extractInput\",\n    value: function extractInput() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      return this.value.slice(fromPos, toPos);\n    }\n    /** Extracts tail in range */\n\n  }, {\n    key: \"extractTail\",\n    value: function extractTail() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n    }\n    /** Appends tail */\n    // $FlowFixMe no ideas\n\n  }, {\n    key: \"appendTail\",\n    value: function appendTail(tail) {\n      if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n      return tail.appendTo(this);\n    }\n    /** Appends char */\n\n  }, {\n    key: \"_appendCharRaw\",\n    value: function _appendCharRaw(ch) {\n      if (!ch) return new ChangeDetails();\n      this._value += ch;\n      return new ChangeDetails({\n        inserted: ch,\n        rawInserted: ch\n      });\n    }\n    /** Appends char */\n\n  }, {\n    key: \"_appendChar\",\n    value: function _appendChar(ch) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var checkTail = arguments.length > 2 ? arguments[2] : undefined;\n      var consistentState = this.state;\n\n      var details = this._appendCharRaw(this.doPrepare(ch, flags), flags);\n\n      if (details.inserted) {\n        var consistentTail;\n        var appended = this.doValidate(flags) !== false;\n\n        if (appended && checkTail != null) {\n          // validation ok, check tail\n          var beforeTailState = this.state;\n\n          if (this.overwrite) {\n            consistentTail = checkTail.state;\n            checkTail.shiftBefore(this.value.length);\n          }\n\n          var tailDetails = this.appendTail(checkTail);\n          appended = tailDetails.rawInserted === checkTail.toString(); // if ok, rollback state after tail\n\n          if (appended && tailDetails.inserted) this.state = beforeTailState;\n        } // revert all if something went wrong\n\n\n        if (!appended) {\n          details = new ChangeDetails();\n          this.state = consistentState;\n          if (checkTail && consistentTail) checkTail.state = consistentTail;\n        }\n      }\n\n      return details;\n    }\n    /** Appends optional placeholder at end */\n\n  }, {\n    key: \"_appendPlaceholder\",\n    value: function _appendPlaceholder() {\n      return new ChangeDetails();\n    }\n    /** Appends symbols considering flags */\n    // $FlowFixMe no ideas\n\n  }, {\n    key: \"append\",\n    value: function append(str, flags, tail) {\n      if (!isString(str)) throw new Error('value should be string');\n      var details = new ChangeDetails();\n      var checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n      if (flags && flags.tail) flags._beforeTailState = this.state;\n\n      for (var ci = 0; ci < str.length; ++ci) {\n        details.aggregate(this._appendChar(str[ci], flags, checkTail));\n      } // append tail but aggregate only tailShift\n\n\n      if (checkTail != null) {\n        details.tailShift += this.appendTail(checkTail).tailShift; // TODO it's a good idea to clear state after appending ends\n        // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n        // this._resetBeforeTailState();\n      }\n\n      return details;\n    }\n    /** */\n\n  }, {\n    key: \"remove\",\n    value: function remove() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n      return new ChangeDetails();\n    }\n    /** Calls function and reapplies current value */\n\n  }, {\n    key: \"withValueRefresh\",\n    value: function withValueRefresh(fn) {\n      if (this._refreshing || !this.isInitialized) return fn();\n      this._refreshing = true;\n      var rawInput = this.rawInputValue;\n      var value = this.value;\n      var ret = fn();\n      this.rawInputValue = rawInput; // append lost trailing chars at end\n\n      if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n        this.append(value.slice(this.value.length), {}, '');\n      }\n\n      delete this._refreshing;\n      return ret;\n    }\n    /** */\n\n  }, {\n    key: \"runIsolated\",\n    value: function runIsolated(fn) {\n      if (this._isolated || !this.isInitialized) return fn(this);\n      this._isolated = true;\n      var state = this.state;\n      var ret = fn(this);\n      this.state = state;\n      delete this._isolated;\n      return ret;\n    }\n    /**\n      Prepares string before mask processing\n      @protected\n    */\n\n  }, {\n    key: \"doPrepare\",\n    value: function doPrepare(str) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return this.prepare ? this.prepare(str, this, flags) : str;\n    }\n    /**\n      Validates if value is acceptable\n      @protected\n    */\n\n  }, {\n    key: \"doValidate\",\n    value: function doValidate(flags) {\n      return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n    }\n    /**\n      Does additional processing in the end of editing\n      @protected\n    */\n\n  }, {\n    key: \"doCommit\",\n    value: function doCommit() {\n      if (this.commit) this.commit(this.value, this);\n    }\n    /** */\n\n  }, {\n    key: \"doFormat\",\n    value: function doFormat(value) {\n      return this.format ? this.format(value, this) : value;\n    }\n    /** */\n\n  }, {\n    key: \"doParse\",\n    value: function doParse(str) {\n      return this.parse ? this.parse(str, this) : str;\n    }\n    /** */\n\n  }, {\n    key: \"splice\",\n    value: function splice(start, deleteCount, inserted, removeDirection) {\n      var tailPos = start + deleteCount;\n      var tail = this.extractTail(tailPos);\n      var startChangePos = this.nearestInputPos(start, removeDirection);\n      var changeDetails = new ChangeDetails({\n        tailShift: startChangePos - start // adjust tailShift if start was aligned\n\n      }).aggregate(this.remove(startChangePos)).aggregate(this.append(inserted, {\n        input: true\n      }, tail));\n      return changeDetails;\n    }\n  }]);\n\n  return Masked;\n}();\nMasked.DEFAULTS = {\n  format: function format(v) {\n    return v;\n  },\n  parse: function parse(v) {\n    return v;\n  }\n};\nIMask.Masked = Masked;\n\nexport { Masked as default };\n", "import { isString } from '../core/utils.js';\nimport IMask from '../core/holder.js';\nimport '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/** Get Masked class by mask type */\n\nfunction maskedClass(mask) {\n  if (mask == null) {\n    throw new Error('mask property should be defined');\n  } // $FlowFixMe\n\n\n  if (mask instanceof RegExp) return IMask.MaskedRegExp; // $FlowFixMe\n\n  if (isString(mask)) return IMask.MaskedPattern; // $FlowFixMe\n\n  if (mask instanceof Date || mask === Date) return IMask.MaskedDate; // $FlowFixMe\n\n  if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber; // $FlowFixMe\n\n  if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic; // $FlowFixMe\n\n  if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask; // $FlowFixMe\n\n  if (mask instanceof Function) return IMask.MaskedFunction; // $FlowFixMe\n\n  if (mask instanceof IMask.Masked) return mask.constructor;\n  console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n  // $FlowFixMe\n\n  return IMask.Masked;\n}\n/** Creates new {@link Masked} depending on mask type */\n\nfunction createMask(opts) {\n  // $FlowFixMe\n  if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n  opts = Object.assign({}, opts);\n  var mask = opts.mask; // $FlowFixMe\n\n  if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n  var MaskedClass = maskedClass(mask);\n  if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n  return new MaskedClass(opts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass };\n", "import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../../_rollupPluginBabelHelpers-a0b34764.js';\nimport createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nvar _excluded = [\"mask\"];\nvar DEFAULT_INPUT_DEFINITIONS = {\n  '0': /\\d/,\n  'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n  // http://stackoverflow.com/a/22075070\n  '*': /./\n};\n/** */\n\nvar PatternInputDefinition = /*#__PURE__*/function () {\n  /** */\n\n  /** */\n\n  /** */\n\n  /** */\n\n  /** */\n\n  /** */\n  function PatternInputDefinition(opts) {\n    _classCallCheck(this, PatternInputDefinition);\n\n    var mask = opts.mask,\n        blockOpts = _objectWithoutProperties(opts, _excluded);\n\n    this.masked = createMask({\n      mask: mask\n    });\n    Object.assign(this, blockOpts);\n  }\n\n  _createClass(PatternInputDefinition, [{\n    key: \"reset\",\n    value: function reset() {\n      this._isFilled = false;\n      this.masked.reset();\n    }\n  }, {\n    key: \"remove\",\n    value: function remove() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n      if (fromPos === 0 && toPos >= 1) {\n        this._isFilled = false;\n        return this.masked.remove(fromPos, toPos);\n      }\n\n      return new ChangeDetails();\n    }\n  }, {\n    key: \"value\",\n    get: function get() {\n      return this.masked.value || (this._isFilled && !this.isOptional ? this.placeholderChar : '');\n    }\n  }, {\n    key: \"unmaskedValue\",\n    get: function get() {\n      return this.masked.unmaskedValue;\n    }\n  }, {\n    key: \"isComplete\",\n    get: function get() {\n      return Boolean(this.masked.value) || this.isOptional;\n    }\n  }, {\n    key: \"_appendChar\",\n    value: function _appendChar(str) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (this._isFilled) return new ChangeDetails();\n      var state = this.masked.state; // simulate input\n\n      var details = this.masked._appendChar(str, flags);\n\n      if (details.inserted && this.doValidate(flags) === false) {\n        details.inserted = details.rawInserted = '';\n        this.masked.state = state;\n      }\n\n      if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n        details.inserted = this.placeholderChar;\n      }\n\n      details.skip = !details.inserted && !this.isOptional;\n      this._isFilled = Boolean(details.inserted);\n      return details;\n    }\n  }, {\n    key: \"append\",\n    value: function append() {\n      var _this$masked;\n\n      return (_this$masked = this.masked).append.apply(_this$masked, arguments);\n    }\n  }, {\n    key: \"_appendPlaceholder\",\n    value: function _appendPlaceholder() {\n      var details = new ChangeDetails();\n      if (this._isFilled || this.isOptional) return details;\n      this._isFilled = true;\n      details.inserted = this.placeholderChar;\n      return details;\n    }\n  }, {\n    key: \"extractTail\",\n    value: function extractTail() {\n      var _this$masked2;\n\n      return (_this$masked2 = this.masked).extractTail.apply(_this$masked2, arguments);\n    }\n  }, {\n    key: \"appendTail\",\n    value: function appendTail() {\n      var _this$masked3;\n\n      return (_this$masked3 = this.masked).appendTail.apply(_this$masked3, arguments);\n    }\n  }, {\n    key: \"extractInput\",\n    value: function extractInput() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      var flags = arguments.length > 2 ? arguments[2] : undefined;\n      return this.masked.extractInput(fromPos, toPos, flags);\n    }\n  }, {\n    key: \"nearestInputPos\",\n    value: function nearestInputPos(cursorPos) {\n      var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n      var minPos = 0;\n      var maxPos = this.value.length;\n      var boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n\n      switch (direction) {\n        case DIRECTION.LEFT:\n        case DIRECTION.FORCE_LEFT:\n          return this.isComplete ? boundPos : minPos;\n\n        case DIRECTION.RIGHT:\n        case DIRECTION.FORCE_RIGHT:\n          return this.isComplete ? boundPos : maxPos;\n\n        case DIRECTION.NONE:\n        default:\n          return boundPos;\n      }\n    }\n  }, {\n    key: \"doValidate\",\n    value: function doValidate() {\n      var _this$masked4, _this$parent;\n\n      return (_this$masked4 = this.masked).doValidate.apply(_this$masked4, arguments) && (!this.parent || (_this$parent = this.parent).doValidate.apply(_this$parent, arguments));\n    }\n  }, {\n    key: \"doCommit\",\n    value: function doCommit() {\n      this.masked.doCommit();\n    }\n  }, {\n    key: \"state\",\n    get: function get() {\n      return {\n        masked: this.masked.state,\n        _isFilled: this._isFilled\n      };\n    },\n    set: function set(state) {\n      this.masked.state = state.masked;\n      this._isFilled = state._isFilled;\n    }\n  }]);\n\n  return PatternInputDefinition;\n}();\n\nexport { DEFAULT_INPUT_DEFINITIONS, PatternInputDefinition as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../../_rollupPluginBabelHelpers-a0b34764.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\n\nvar PatternFixedDefinition = /*#__PURE__*/function () {\n  /** */\n\n  /** */\n\n  /** */\n\n  /** */\n  function PatternFixedDefinition(opts) {\n    _classCallCheck(this, PatternFixedDefinition);\n\n    Object.assign(this, opts);\n    this._value = '';\n  }\n\n  _createClass(PatternFixedDefinition, [{\n    key: \"value\",\n    get: function get() {\n      return this._value;\n    }\n  }, {\n    key: \"unmaskedValue\",\n    get: function get() {\n      return this.isUnmasking ? this.value : '';\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      this._isRawInput = false;\n      this._value = '';\n    }\n  }, {\n    key: \"remove\",\n    value: function remove() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n      this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n      if (!this._value) this._isRawInput = false;\n      return new ChangeDetails();\n    }\n  }, {\n    key: \"nearestInputPos\",\n    value: function nearestInputPos(cursorPos) {\n      var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n      var minPos = 0;\n      var maxPos = this._value.length;\n\n      switch (direction) {\n        case DIRECTION.LEFT:\n        case DIRECTION.FORCE_LEFT:\n          return minPos;\n\n        case DIRECTION.NONE:\n        case DIRECTION.RIGHT:\n        case DIRECTION.FORCE_RIGHT:\n        default:\n          return maxPos;\n      }\n    }\n  }, {\n    key: \"extractInput\",\n    value: function extractInput() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n      var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n    }\n  }, {\n    key: \"isComplete\",\n    get: function get() {\n      return true;\n    }\n  }, {\n    key: \"_appendChar\",\n    value: function _appendChar(str) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var details = new ChangeDetails();\n      if (this._value) return details;\n      var appended = this.char === str[0];\n      var isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && !flags.tail;\n      if (isResolved) details.rawInserted = this.char;\n      this._value = details.inserted = this.char;\n      this._isRawInput = isResolved && (flags.raw || flags.input);\n      return details;\n    }\n  }, {\n    key: \"_appendPlaceholder\",\n    value: function _appendPlaceholder() {\n      var details = new ChangeDetails();\n      if (this._value) return details;\n      this._value = details.inserted = this.char;\n      return details;\n    }\n  }, {\n    key: \"extractTail\",\n    value: function extractTail() {\n      arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      return new ContinuousTailDetails('');\n    } // $FlowFixMe no ideas\n\n  }, {\n    key: \"appendTail\",\n    value: function appendTail(tail) {\n      if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n      return tail.appendTo(this);\n    }\n  }, {\n    key: \"append\",\n    value: function append(str, flags, tail) {\n      var details = this._appendChar(str, flags);\n\n      if (tail != null) {\n        details.tailShift += this.appendTail(tail).tailShift;\n      }\n\n      return details;\n    }\n  }, {\n    key: \"doCommit\",\n    value: function doCommit() {}\n  }, {\n    key: \"state\",\n    get: function get() {\n      return {\n        _value: this._value,\n        _isRawInput: this._isRawInput\n      };\n    },\n    set: function set(state) {\n      Object.assign(this, state);\n    }\n  }]);\n\n  return PatternFixedDefinition;\n}();\n\nexport { PatternFixedDefinition as default };\n", "import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../../_rollupPluginBabelHelpers-a0b34764.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nvar _excluded = [\"chunks\"];\n\nvar ChunksTailDetails = /*#__PURE__*/function () {\n  /** */\n  function ChunksTailDetails() {\n    var chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n    _classCallCheck(this, ChunksTailDetails);\n\n    this.chunks = chunks;\n    this.from = from;\n  }\n\n  _createClass(ChunksTailDetails, [{\n    key: \"toString\",\n    value: function toString() {\n      return this.chunks.map(String).join('');\n    } // $FlowFixMe no ideas\n\n  }, {\n    key: \"extend\",\n    value: function extend(tailChunk) {\n      if (!String(tailChunk)) return;\n      if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n      var lastChunk = this.chunks[this.chunks.length - 1];\n      var extendLast = lastChunk && (lastChunk.stop === tailChunk.stop || tailChunk.stop == null) && // if tail chunk goes just after last chunk\n      tailChunk.from === lastChunk.from + lastChunk.toString().length;\n\n      if (tailChunk instanceof ContinuousTailDetails) {\n        // check the ability to extend previous chunk\n        if (extendLast) {\n          // extend previous chunk\n          lastChunk.extend(tailChunk.toString());\n        } else {\n          // append new chunk\n          this.chunks.push(tailChunk);\n        }\n      } else if (tailChunk instanceof ChunksTailDetails) {\n        if (tailChunk.stop == null) {\n          // unwrap floating chunks to parent, keeping `from` pos\n          var firstTailChunk;\n\n          while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n            firstTailChunk = tailChunk.chunks.shift();\n            firstTailChunk.from += tailChunk.from;\n            this.extend(firstTailChunk);\n          }\n        } // if tail chunk still has value\n\n\n        if (tailChunk.toString()) {\n          // if chunks contains stops, then popup stop to container\n          tailChunk.stop = tailChunk.blockIndex;\n          this.chunks.push(tailChunk);\n        }\n      }\n    }\n  }, {\n    key: \"appendTo\",\n    value: function appendTo(masked) {\n      // $FlowFixMe\n      if (!(masked instanceof IMask.MaskedPattern)) {\n        var tail = new ContinuousTailDetails(this.toString());\n        return tail.appendTo(masked);\n      }\n\n      var details = new ChangeDetails();\n\n      for (var ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n        var chunk = this.chunks[ci];\n\n        var lastBlockIter = masked._mapPosToBlock(masked.value.length);\n\n        var stop = chunk.stop;\n        var chunkBlock = void 0;\n\n        if (stop != null && (!lastBlockIter || lastBlockIter.index <= stop)) {\n          if (chunk instanceof ChunksTailDetails || // for continuous block also check if stop is exist\n          masked._stops.indexOf(stop) >= 0) {\n            details.aggregate(masked._appendPlaceholder(stop));\n          }\n\n          chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n        }\n\n        if (chunkBlock) {\n          var tailDetails = chunkBlock.appendTail(chunk);\n          tailDetails.skip = false; // always ignore skip, it will be set on last\n\n          details.aggregate(tailDetails);\n          masked._value += tailDetails.inserted; // get not inserted chars\n\n          var remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n          if (remainChars) details.aggregate(masked.append(remainChars, {\n            tail: true\n          }));\n        } else {\n          details.aggregate(masked.append(chunk.toString(), {\n            tail: true\n          }));\n        }\n      }\n      return details;\n    }\n  }, {\n    key: \"state\",\n    get: function get() {\n      return {\n        chunks: this.chunks.map(function (c) {\n          return c.state;\n        }),\n        from: this.from,\n        stop: this.stop,\n        blockIndex: this.blockIndex\n      };\n    },\n    set: function set(state) {\n      var chunks = state.chunks,\n          props = _objectWithoutProperties(state, _excluded);\n\n      Object.assign(this, props);\n      this.chunks = chunks.map(function (cstate) {\n        var chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails(); // $FlowFixMe already checked above\n\n        chunk.state = cstate;\n        return chunk;\n      });\n    }\n  }, {\n    key: \"shiftBefore\",\n    value: function shiftBefore(pos) {\n      if (this.from >= pos || !this.chunks.length) return '';\n      var chunkShiftPos = pos - this.from;\n      var ci = 0;\n\n      while (ci < this.chunks.length) {\n        var chunk = this.chunks[ci];\n        var shiftChar = chunk.shiftBefore(chunkShiftPos);\n\n        if (chunk.toString()) {\n          // chunk still contains value\n          // but not shifted - means no more available chars to shift\n          if (!shiftChar) break;\n          ++ci;\n        } else {\n          // clean if chunk has no value\n          this.chunks.splice(ci, 1);\n        }\n\n        if (shiftChar) return shiftChar;\n      }\n\n      return '';\n    }\n  }]);\n\n  return ChunksTailDetails;\n}();\n\nexport { ChunksTailDetails as default };\n", "import { d as _inherits, e as _createSuper, _ as _createClass, a as _classCallCheck, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\n\nvar MaskedRegExp = /*#__PURE__*/function (_Masked) {\n  _inherits(MaskedRegExp, _Masked);\n\n  var _super = _createSuper(MaskedRegExp);\n\n  function MaskedRegExp() {\n    _classCallCheck(this, MaskedRegExp);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(MaskedRegExp, [{\n    key: \"_update\",\n    value:\n    /**\n      @override\n      @param {Object} opts\n    */\n    function _update(opts) {\n      if (opts.mask) opts.validate = function (value) {\n        return value.search(opts.mask) >= 0;\n      };\n\n      _get(_getPrototypeOf(MaskedRegExp.prototype), \"_update\", this).call(this, opts);\n    }\n  }]);\n\n  return MaskedRegExp;\n}(Masked);\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, b as _objectWithoutProperties, i as _set } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport { DIRECTION, forceDirection } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport PatternInputDefinition, { DEFAULT_INPUT_DEFINITIONS } from './pattern/input-definition.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\nvar _excluded = [\"_blocks\"];\n\n/**\n  Pattern mask\n  @param {Object} opts\n  @param {Object} opts.blocks\n  @param {Object} opts.definitions\n  @param {string} opts.placeholderChar\n  @param {boolean} opts.lazy\n*/\nvar MaskedPattern = /*#__PURE__*/function (_Masked) {\n  _inherits(MaskedPattern, _Masked);\n\n  var _super = _createSuper(MaskedPattern);\n\n  /** */\n\n  /** */\n\n  /** Single char for empty input */\n\n  /** Show placeholder only when needed */\n  function MaskedPattern() {\n    var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, MaskedPattern);\n\n    // TODO type $Shape<MaskedPatternOptions>={} does not work\n    opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n    return _super.call(this, Object.assign({}, MaskedPattern.DEFAULTS, opts));\n  }\n  /**\n    @override\n    @param {Object} opts\n  */\n\n\n  _createClass(MaskedPattern, [{\n    key: \"_update\",\n    value: function _update() {\n      var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n\n      _get(_getPrototypeOf(MaskedPattern.prototype), \"_update\", this).call(this, opts);\n\n      this._rebuildMask();\n    }\n    /** */\n\n  }, {\n    key: \"_rebuildMask\",\n    value: function _rebuildMask() {\n      var _this = this;\n\n      var defs = this.definitions;\n      this._blocks = [];\n      this._stops = [];\n      this._maskedBlocks = {};\n      var pattern = this.mask;\n      if (!pattern || !defs) return;\n      var unmaskingBlock = false;\n      var optionalBlock = false;\n\n      for (var i = 0; i < pattern.length; ++i) {\n        if (this.blocks) {\n          var _ret = function () {\n            var p = pattern.slice(i);\n            var bNames = Object.keys(_this.blocks).filter(function (bName) {\n              return p.indexOf(bName) === 0;\n            }); // order by key length\n\n            bNames.sort(function (a, b) {\n              return b.length - a.length;\n            }); // use block name with max length\n\n            var bName = bNames[0];\n\n            if (bName) {\n              // $FlowFixMe no ideas\n              var maskedBlock = createMask(Object.assign({\n                parent: _this,\n                lazy: _this.lazy,\n                placeholderChar: _this.placeholderChar,\n                overwrite: _this.overwrite\n              }, _this.blocks[bName]));\n\n              if (maskedBlock) {\n                _this._blocks.push(maskedBlock); // store block index\n\n\n                if (!_this._maskedBlocks[bName]) _this._maskedBlocks[bName] = [];\n\n                _this._maskedBlocks[bName].push(_this._blocks.length - 1);\n              }\n\n              i += bName.length - 1;\n              return \"continue\";\n            }\n          }();\n\n          if (_ret === \"continue\") continue;\n        }\n\n        var char = pattern[i];\n\n        var _isInput = (char in defs);\n\n        if (char === MaskedPattern.STOP_CHAR) {\n          this._stops.push(this._blocks.length);\n\n          continue;\n        }\n\n        if (char === '{' || char === '}') {\n          unmaskingBlock = !unmaskingBlock;\n          continue;\n        }\n\n        if (char === '[' || char === ']') {\n          optionalBlock = !optionalBlock;\n          continue;\n        }\n\n        if (char === MaskedPattern.ESCAPE_CHAR) {\n          ++i;\n          char = pattern[i];\n          if (!char) break;\n          _isInput = false;\n        }\n\n        var def = _isInput ? new PatternInputDefinition({\n          parent: this,\n          lazy: this.lazy,\n          placeholderChar: this.placeholderChar,\n          mask: defs[char],\n          isOptional: optionalBlock\n        }) : new PatternFixedDefinition({\n          char: char,\n          isUnmasking: unmaskingBlock\n        });\n\n        this._blocks.push(def);\n      }\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"state\",\n    get: function get() {\n      return Object.assign({}, _get(_getPrototypeOf(MaskedPattern.prototype), \"state\", this), {\n        _blocks: this._blocks.map(function (b) {\n          return b.state;\n        })\n      });\n    },\n    set: function set(state) {\n      var _blocks = state._blocks,\n          maskedState = _objectWithoutProperties(state, _excluded);\n\n      this._blocks.forEach(function (b, bi) {\n        return b.state = _blocks[bi];\n      });\n\n      _set(_getPrototypeOf(MaskedPattern.prototype), \"state\", maskedState, this, true);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      _get(_getPrototypeOf(MaskedPattern.prototype), \"reset\", this).call(this);\n\n      this._blocks.forEach(function (b) {\n        return b.reset();\n      });\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"isComplete\",\n    get: function get() {\n      return this._blocks.every(function (b) {\n        return b.isComplete;\n      });\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doCommit\",\n    value: function doCommit() {\n      this._blocks.forEach(function (b) {\n        return b.doCommit();\n      });\n\n      _get(_getPrototypeOf(MaskedPattern.prototype), \"doCommit\", this).call(this);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"unmaskedValue\",\n    get: function get() {\n      return this._blocks.reduce(function (str, b) {\n        return str += b.unmaskedValue;\n      }, '');\n    },\n    set: function set(unmaskedValue) {\n      _set(_getPrototypeOf(MaskedPattern.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"value\",\n    get: function get() {\n      // TODO return _value when not in change?\n      return this._blocks.reduce(function (str, b) {\n        return str += b.value;\n      }, '');\n    },\n    set: function set(value) {\n      _set(_getPrototypeOf(MaskedPattern.prototype), \"value\", value, this, true);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"appendTail\",\n    value: function appendTail(tail) {\n      return _get(_getPrototypeOf(MaskedPattern.prototype), \"appendTail\", this).call(this, tail).aggregate(this._appendPlaceholder());\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"_appendCharRaw\",\n    value: function _appendCharRaw(ch) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      var blockIter = this._mapPosToBlock(this.value.length);\n\n      var details = new ChangeDetails();\n      if (!blockIter) return details;\n\n      for (var bi = blockIter.index;; ++bi) {\n        var _block = this._blocks[bi];\n        if (!_block) break;\n\n        var blockDetails = _block._appendChar(ch, flags);\n\n        var skip = blockDetails.skip;\n        details.aggregate(blockDetails);\n        if (skip || blockDetails.rawInserted) break; // go next char\n      }\n\n      return details;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"extractTail\",\n    value: function extractTail() {\n      var _this2 = this;\n\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      var chunkTail = new ChunksTailDetails();\n      if (fromPos === toPos) return chunkTail;\n\n      this._forEachBlocksInRange(fromPos, toPos, function (b, bi, bFromPos, bToPos) {\n        var blockChunk = b.extractTail(bFromPos, bToPos);\n        blockChunk.stop = _this2._findStopBefore(bi);\n        blockChunk.from = _this2._blockStartPos(bi);\n        if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n        chunkTail.extend(blockChunk);\n      });\n\n      return chunkTail;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"extractInput\",\n    value: function extractInput() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      if (fromPos === toPos) return '';\n      var input = '';\n\n      this._forEachBlocksInRange(fromPos, toPos, function (b, _, fromPos, toPos) {\n        input += b.extractInput(fromPos, toPos, flags);\n      });\n\n      return input;\n    }\n  }, {\n    key: \"_findStopBefore\",\n    value: function _findStopBefore(blockIndex) {\n      var stopBefore;\n\n      for (var si = 0; si < this._stops.length; ++si) {\n        var stop = this._stops[si];\n        if (stop <= blockIndex) stopBefore = stop;else break;\n      }\n\n      return stopBefore;\n    }\n    /** Appends placeholder depending on laziness */\n\n  }, {\n    key: \"_appendPlaceholder\",\n    value: function _appendPlaceholder(toBlockIndex) {\n      var _this3 = this;\n\n      var details = new ChangeDetails();\n      if (this.lazy && toBlockIndex == null) return details;\n\n      var startBlockIter = this._mapPosToBlock(this.value.length);\n\n      if (!startBlockIter) return details;\n      var startBlockIndex = startBlockIter.index;\n      var endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n\n      this._blocks.slice(startBlockIndex, endBlockIndex).forEach(function (b) {\n        if (!b.lazy || toBlockIndex != null) {\n          // $FlowFixMe `_blocks` may not be present\n          var args = b._blocks != null ? [b._blocks.length] : [];\n\n          var bDetails = b._appendPlaceholder.apply(b, args);\n\n          _this3._value += bDetails.inserted;\n          details.aggregate(bDetails);\n        }\n      });\n\n      return details;\n    }\n    /** Finds block in pos */\n\n  }, {\n    key: \"_mapPosToBlock\",\n    value: function _mapPosToBlock(pos) {\n      var accVal = '';\n\n      for (var bi = 0; bi < this._blocks.length; ++bi) {\n        var _block2 = this._blocks[bi];\n        var blockStartPos = accVal.length;\n        accVal += _block2.value;\n\n        if (pos <= accVal.length) {\n          return {\n            index: bi,\n            offset: pos - blockStartPos\n          };\n        }\n      }\n    }\n    /** */\n\n  }, {\n    key: \"_blockStartPos\",\n    value: function _blockStartPos(blockIndex) {\n      return this._blocks.slice(0, blockIndex).reduce(function (pos, b) {\n        return pos += b.value.length;\n      }, 0);\n    }\n    /** */\n\n  }, {\n    key: \"_forEachBlocksInRange\",\n    value: function _forEachBlocksInRange(fromPos) {\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      var fn = arguments.length > 2 ? arguments[2] : undefined;\n\n      var fromBlockIter = this._mapPosToBlock(fromPos);\n\n      if (fromBlockIter) {\n        var toBlockIter = this._mapPosToBlock(toPos); // process first block\n\n\n        var isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n        var fromBlockStartPos = fromBlockIter.offset;\n        var fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].value.length;\n        fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n\n        if (toBlockIter && !isSameBlock) {\n          // process intermediate blocks\n          for (var bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n            fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n          } // process last block\n\n\n          fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n        }\n      }\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"remove\",\n    value: function remove() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n      var removeDetails = _get(_getPrototypeOf(MaskedPattern.prototype), \"remove\", this).call(this, fromPos, toPos);\n\n      this._forEachBlocksInRange(fromPos, toPos, function (b, _, bFromPos, bToPos) {\n        removeDetails.aggregate(b.remove(bFromPos, bToPos));\n      });\n\n      return removeDetails;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"nearestInputPos\",\n    value: function nearestInputPos(cursorPos) {\n      var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n      // TODO refactor - extract alignblock\n      var beginBlockData = this._mapPosToBlock(cursorPos) || {\n        index: 0,\n        offset: 0\n      };\n      var beginBlockOffset = beginBlockData.offset,\n          beginBlockIndex = beginBlockData.index;\n      var beginBlock = this._blocks[beginBlockIndex];\n      if (!beginBlock) return cursorPos;\n      var beginBlockCursorPos = beginBlockOffset; // if position inside block - try to adjust it\n\n      if (beginBlockCursorPos !== 0 && beginBlockCursorPos < beginBlock.value.length) {\n        beginBlockCursorPos = beginBlock.nearestInputPos(beginBlockOffset, forceDirection(direction));\n      }\n\n      var cursorAtRight = beginBlockCursorPos === beginBlock.value.length;\n      var cursorAtLeft = beginBlockCursorPos === 0; //  cursor is INSIDE first block (not at bounds)\n\n      if (!cursorAtLeft && !cursorAtRight) return this._blockStartPos(beginBlockIndex) + beginBlockCursorPos;\n      var searchBlockIndex = cursorAtRight ? beginBlockIndex + 1 : beginBlockIndex;\n\n      if (direction === DIRECTION.NONE) {\n        // NONE direction used to calculate start input position if no chars were removed\n        // FOR NONE:\n        // -\n        // input|any\n        // ->\n        //  any|input\n        // <-\n        //  filled-input|any\n        // check if first block at left is input\n        if (searchBlockIndex > 0) {\n          var blockIndexAtLeft = searchBlockIndex - 1;\n          var blockAtLeft = this._blocks[blockIndexAtLeft];\n          var blockInputPos = blockAtLeft.nearestInputPos(0, DIRECTION.NONE); // is input\n\n          if (!blockAtLeft.value.length || blockInputPos !== blockAtLeft.value.length) {\n            return this._blockStartPos(searchBlockIndex);\n          }\n        } // ->\n\n\n        var firstInputAtRight = searchBlockIndex;\n\n        for (var bi = firstInputAtRight; bi < this._blocks.length; ++bi) {\n          var blockAtRight = this._blocks[bi];\n\n          var _blockInputPos = blockAtRight.nearestInputPos(0, DIRECTION.NONE);\n\n          if (!blockAtRight.value.length || _blockInputPos !== blockAtRight.value.length) {\n            return this._blockStartPos(bi) + _blockInputPos;\n          }\n        } // <-\n        // find first non-fixed symbol\n\n\n        for (var _bi = searchBlockIndex - 1; _bi >= 0; --_bi) {\n          var _block3 = this._blocks[_bi];\n\n          var _blockInputPos2 = _block3.nearestInputPos(0, DIRECTION.NONE); // is input\n\n\n          if (!_block3.value.length || _blockInputPos2 !== _block3.value.length) {\n            return this._blockStartPos(_bi) + _block3.value.length;\n          }\n        }\n\n        return cursorPos;\n      }\n\n      if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n        // -\n        //  any|filled-input\n        // <-\n        //  any|first not empty is not-len-aligned\n        //  not-0-aligned|any\n        // ->\n        //  any|not-len-aligned or end\n        // check if first block at right is filled input\n        var firstFilledBlockIndexAtRight;\n\n        for (var _bi2 = searchBlockIndex; _bi2 < this._blocks.length; ++_bi2) {\n          if (this._blocks[_bi2].value) {\n            firstFilledBlockIndexAtRight = _bi2;\n            break;\n          }\n        }\n\n        if (firstFilledBlockIndexAtRight != null) {\n          var filledBlock = this._blocks[firstFilledBlockIndexAtRight];\n\n          var _blockInputPos3 = filledBlock.nearestInputPos(0, DIRECTION.RIGHT);\n\n          if (_blockInputPos3 === 0 && filledBlock.unmaskedValue.length) {\n            // filled block is input\n            return this._blockStartPos(firstFilledBlockIndexAtRight) + _blockInputPos3;\n          }\n        } // <-\n        // find this vars\n\n\n        var firstFilledInputBlockIndex = -1;\n        var firstEmptyInputBlockIndex; // TODO consider nested empty inputs\n\n        for (var _bi3 = searchBlockIndex - 1; _bi3 >= 0; --_bi3) {\n          var _block4 = this._blocks[_bi3];\n\n          var _blockInputPos4 = _block4.nearestInputPos(_block4.value.length, DIRECTION.FORCE_LEFT);\n\n          if (!_block4.value || _blockInputPos4 !== 0) firstEmptyInputBlockIndex = _bi3;\n\n          if (_blockInputPos4 !== 0) {\n            if (_blockInputPos4 !== _block4.value.length) {\n              // aligned inside block - return immediately\n              return this._blockStartPos(_bi3) + _blockInputPos4;\n            } else {\n              // found filled\n              firstFilledInputBlockIndex = _bi3;\n              break;\n            }\n          }\n        }\n\n        if (direction === DIRECTION.LEFT) {\n          // try find first empty input before start searching position only when not forced\n          for (var _bi4 = firstFilledInputBlockIndex + 1; _bi4 <= Math.min(searchBlockIndex, this._blocks.length - 1); ++_bi4) {\n            var _block5 = this._blocks[_bi4];\n\n            var _blockInputPos5 = _block5.nearestInputPos(0, DIRECTION.NONE);\n\n            var blockAlignedPos = this._blockStartPos(_bi4) + _blockInputPos5;\n\n            if (blockAlignedPos > cursorPos) break; // if block is not lazy input\n\n            if (_blockInputPos5 !== _block5.value.length) return blockAlignedPos;\n          }\n        } // process overflow\n\n\n        if (firstFilledInputBlockIndex >= 0) {\n          return this._blockStartPos(firstFilledInputBlockIndex) + this._blocks[firstFilledInputBlockIndex].value.length;\n        } // for lazy if has aligned left inside fixed and has came to the start - use start position\n\n\n        if (direction === DIRECTION.FORCE_LEFT || this.lazy && !this.extractInput() && !isInput(this._blocks[searchBlockIndex])) {\n          return 0;\n        }\n\n        if (firstEmptyInputBlockIndex != null) {\n          return this._blockStartPos(firstEmptyInputBlockIndex);\n        } // find first input\n\n\n        for (var _bi5 = searchBlockIndex; _bi5 < this._blocks.length; ++_bi5) {\n          var _block6 = this._blocks[_bi5];\n\n          var _blockInputPos6 = _block6.nearestInputPos(0, DIRECTION.NONE); // is input\n\n\n          if (!_block6.value.length || _blockInputPos6 !== _block6.value.length) {\n            return this._blockStartPos(_bi5) + _blockInputPos6;\n          }\n        }\n\n        return 0;\n      }\n\n      if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n        // ->\n        //  any|not-len-aligned and filled\n        //  any|not-len-aligned\n        // <-\n        //  not-0-aligned or start|any\n        var firstInputBlockAlignedIndex;\n        var firstInputBlockAlignedPos;\n\n        for (var _bi6 = searchBlockIndex; _bi6 < this._blocks.length; ++_bi6) {\n          var _block7 = this._blocks[_bi6];\n\n          var _blockInputPos7 = _block7.nearestInputPos(0, DIRECTION.NONE);\n\n          if (_blockInputPos7 !== _block7.value.length) {\n            firstInputBlockAlignedPos = this._blockStartPos(_bi6) + _blockInputPos7;\n            firstInputBlockAlignedIndex = _bi6;\n            break;\n          }\n        }\n\n        if (firstInputBlockAlignedIndex != null && firstInputBlockAlignedPos != null) {\n          for (var _bi7 = firstInputBlockAlignedIndex; _bi7 < this._blocks.length; ++_bi7) {\n            var _block8 = this._blocks[_bi7];\n\n            var _blockInputPos8 = _block8.nearestInputPos(0, DIRECTION.FORCE_RIGHT);\n\n            if (_blockInputPos8 !== _block8.value.length) {\n              return this._blockStartPos(_bi7) + _blockInputPos8;\n            }\n          }\n\n          return direction === DIRECTION.FORCE_RIGHT ? this.value.length : firstInputBlockAlignedPos;\n        }\n\n        for (var _bi8 = Math.min(searchBlockIndex, this._blocks.length - 1); _bi8 >= 0; --_bi8) {\n          var _block9 = this._blocks[_bi8];\n\n          var _blockInputPos9 = _block9.nearestInputPos(_block9.value.length, DIRECTION.LEFT);\n\n          if (_blockInputPos9 !== 0) {\n            var alignedPos = this._blockStartPos(_bi8) + _blockInputPos9;\n\n            if (alignedPos >= cursorPos) return alignedPos;\n            break;\n          }\n        }\n      }\n\n      return cursorPos;\n    }\n    /** Get block by name */\n\n  }, {\n    key: \"maskedBlock\",\n    value: function maskedBlock(name) {\n      return this.maskedBlocks(name)[0];\n    }\n    /** Get all blocks by name */\n\n  }, {\n    key: \"maskedBlocks\",\n    value: function maskedBlocks(name) {\n      var _this4 = this;\n\n      var indices = this._maskedBlocks[name];\n      if (!indices) return [];\n      return indices.map(function (gi) {\n        return _this4._blocks[gi];\n      });\n    }\n  }]);\n\n  return MaskedPattern;\n}(Masked);\nMaskedPattern.DEFAULTS = {\n  lazy: true,\n  placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\n\nfunction isInput(block) {\n  if (!block) return false;\n  var value = block.value;\n  return !value || block.nearestInputPos(0, DIRECTION.NONE) !== value.length;\n}\n\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, f as _slicedToArray } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\n\nvar MaskedRange = /*#__PURE__*/function (_MaskedPattern) {\n  _inherits(MaskedRange, _MaskedPattern);\n\n  var _super = _createSuper(MaskedRange);\n\n  function MaskedRange() {\n    _classCallCheck(this, MaskedRange);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(MaskedRange, [{\n    key: \"_matchFrom\",\n    get:\n    /**\n      Optionally sets max length of pattern.\n      Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n    */\n\n    /** Min bound */\n\n    /** Max bound */\n\n    /** */\n    function get() {\n      return this.maxLength - String(this.from).length;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"_update\",\n    value: function _update(opts) {\n      // TODO type\n      opts = Object.assign({\n        to: this.to || 0,\n        from: this.from || 0\n      }, opts);\n      var maxLength = String(opts.to).length;\n      if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n      opts.maxLength = maxLength;\n      var fromStr = String(opts.from).padStart(maxLength, '0');\n      var toStr = String(opts.to).padStart(maxLength, '0');\n      var sameCharsCount = 0;\n\n      while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) {\n        ++sameCharsCount;\n      }\n\n      opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n\n      _get(_getPrototypeOf(MaskedRange.prototype), \"_update\", this).call(this, opts);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"isComplete\",\n    get: function get() {\n      return _get(_getPrototypeOf(MaskedRange.prototype), \"isComplete\", this) && Boolean(this.value);\n    }\n  }, {\n    key: \"boundaries\",\n    value: function boundaries(str) {\n      var minstr = '';\n      var maxstr = '';\n\n      var _ref = str.match(/^(\\D*)(\\d*)(\\D*)/) || [],\n          _ref2 = _slicedToArray(_ref, 3),\n          placeholder = _ref2[1],\n          num = _ref2[2];\n\n      if (num) {\n        minstr = '0'.repeat(placeholder.length) + num;\n        maxstr = '9'.repeat(placeholder.length) + num;\n      }\n\n      minstr = minstr.padEnd(this.maxLength, '0');\n      maxstr = maxstr.padEnd(this.maxLength, '9');\n      return [minstr, maxstr];\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doPrepare\",\n    value: function doPrepare(str) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      str = _get(_getPrototypeOf(MaskedRange.prototype), \"doPrepare\", this).call(this, str, flags).replace(/\\D/g, '');\n      if (!this.autofix) return str;\n      var fromStr = String(this.from).padStart(this.maxLength, '0');\n      var toStr = String(this.to).padStart(this.maxLength, '0');\n      var val = this.value;\n      var prepStr = '';\n\n      for (var ci = 0; ci < str.length; ++ci) {\n        var nextVal = val + prepStr + str[ci];\n\n        var _this$boundaries = this.boundaries(nextVal),\n            _this$boundaries2 = _slicedToArray(_this$boundaries, 2),\n            minstr = _this$boundaries2[0],\n            maxstr = _this$boundaries2[1];\n\n        if (Number(maxstr) < this.from) prepStr += fromStr[nextVal.length - 1];else if (Number(minstr) > this.to) prepStr += toStr[nextVal.length - 1];else prepStr += str[ci];\n      }\n\n      return prepStr;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doValidate\",\n    value: function doValidate() {\n      var _get2;\n\n      var str = this.value;\n      var firstNonZero = str.search(/[^0]/);\n      if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n      var _this$boundaries3 = this.boundaries(str),\n          _this$boundaries4 = _slicedToArray(_this$boundaries3, 2),\n          minstr = _this$boundaries4[0],\n          maxstr = _this$boundaries4[1];\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return this.from <= Number(maxstr) && Number(minstr) <= this.to && (_get2 = _get(_getPrototypeOf(MaskedRange.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n    }\n  }]);\n\n  return MaskedRange;\n}(MaskedPattern);\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, f as _slicedToArray, g as _get, h as _getPrototypeOf, i as _set } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Date mask */\n\nvar MaskedDate = /*#__PURE__*/function (_MaskedPattern) {\n  _inherits(MaskedDate, _MaskedPattern);\n\n  var _super = _createSuper(MaskedDate);\n\n  /** Pattern mask for date according to {@link MaskedDate#format} */\n\n  /** Start date */\n\n  /** End date */\n\n  /** */\n\n  /**\n    @param {Object} opts\n  */\n  function MaskedDate(opts) {\n    _classCallCheck(this, MaskedDate);\n\n    return _super.call(this, Object.assign({}, MaskedDate.DEFAULTS, opts));\n  }\n  /**\n    @override\n  */\n\n\n  _createClass(MaskedDate, [{\n    key: \"_update\",\n    value: function _update(opts) {\n      if (opts.mask === Date) delete opts.mask;\n      if (opts.pattern) opts.mask = opts.pattern;\n      var blocks = opts.blocks;\n      opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); // adjust year block\n\n      if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n      if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n\n      if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\n        opts.blocks.m.from = opts.min.getMonth() + 1;\n        opts.blocks.m.to = opts.max.getMonth() + 1;\n\n        if (opts.blocks.m.from === opts.blocks.m.to) {\n          opts.blocks.d.from = opts.min.getDate();\n          opts.blocks.d.to = opts.max.getDate();\n        }\n      }\n\n      Object.assign(opts.blocks, blocks); // add autofix\n\n      Object.keys(opts.blocks).forEach(function (bk) {\n        var b = opts.blocks[bk];\n        if (!('autofix' in b)) b.autofix = opts.autofix;\n      });\n\n      _get(_getPrototypeOf(MaskedDate.prototype), \"_update\", this).call(this, opts);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doValidate\",\n    value: function doValidate() {\n      var _get2;\n\n      var date = this.date;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return (_get2 = _get(_getPrototypeOf(MaskedDate.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n    }\n    /** Checks if date is exists */\n\n  }, {\n    key: \"isDateExist\",\n    value: function isDateExist(str) {\n      return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n    }\n    /** Parsed Date */\n\n  }, {\n    key: \"date\",\n    get: function get() {\n      return this.typedValue;\n    },\n    set: function set(date) {\n      this.typedValue = date;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"typedValue\",\n    get: function get() {\n      return this.isComplete ? _get(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", this) : null;\n    },\n    set: function set(value) {\n      _set(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", value, this, true);\n    }\n  }]);\n\n  return MaskedDate;\n}(MaskedPattern);\nMaskedDate.DEFAULTS = {\n  pattern: 'd{.}`m{.}`Y',\n  format: function format(date) {\n    var day = String(date.getDate()).padStart(2, '0');\n    var month = String(date.getMonth() + 1).padStart(2, '0');\n    var year = date.getFullYear();\n    return [day, month, year].join('.');\n  },\n  parse: function parse(str) {\n    var _str$split = str.split('.'),\n        _str$split2 = _slicedToArray(_str$split, 3),\n        day = _str$split2[0],\n        month = _str$split2[1],\n        year = _str$split2[2];\n\n    return new Date(year, month - 1, day);\n  }\n};\n\nMaskedDate.GET_DEFAULT_BLOCKS = function () {\n  return {\n    d: {\n      mask: MaskedRange,\n      from: 1,\n      to: 31,\n      maxLength: 2\n    },\n    m: {\n      mask: MaskedRange,\n      from: 1,\n      to: 12,\n      maxLength: 2\n    },\n    Y: {\n      mask: MaskedRange,\n      from: 1900,\n      to: 9999\n    }\n  };\n};\n\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n", "import { _ as _createClass, a as _classCallCheck } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport IMask from '../core/holder.js';\n\n/**\n  Generic element API to use with mask\n  @interface\n*/\nvar MaskElement = /*#__PURE__*/function () {\n  function MaskElement() {\n    _classCallCheck(this, MaskElement);\n  }\n\n  _createClass(MaskElement, [{\n    key: \"selectionStart\",\n    get:\n    /** */\n\n    /** */\n\n    /** */\n\n    /** Safely returns selection start */\n    function get() {\n      var start;\n\n      try {\n        start = this._unsafeSelectionStart;\n      } catch (e) {}\n\n      return start != null ? start : this.value.length;\n    }\n    /** Safely returns selection end */\n\n  }, {\n    key: \"selectionEnd\",\n    get: function get() {\n      var end;\n\n      try {\n        end = this._unsafeSelectionEnd;\n      } catch (e) {}\n\n      return end != null ? end : this.value.length;\n    }\n    /** Safely sets element selection */\n\n  }, {\n    key: \"select\",\n    value: function select(start, end) {\n      if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n\n      try {\n        this._unsafeSelect(start, end);\n      } catch (e) {}\n    }\n    /** Should be overriden in subclasses */\n\n  }, {\n    key: \"_unsafeSelect\",\n    value: function _unsafeSelect(start, end) {}\n    /** Should be overriden in subclasses */\n\n  }, {\n    key: \"isActive\",\n    get: function get() {\n      return false;\n    }\n    /** Should be overriden in subclasses */\n\n  }, {\n    key: \"bindEvents\",\n    value: function bindEvents(handlers) {}\n    /** Should be overriden in subclasses */\n\n  }, {\n    key: \"unbindEvents\",\n    value: function unbindEvents() {}\n  }]);\n\n  return MaskElement;\n}();\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\n\nvar HTMLMaskElement = /*#__PURE__*/function (_MaskElement) {\n  _inherits(HTMLMaskElement, _MaskElement);\n\n  var _super = _createSuper(HTMLMaskElement);\n\n  /** Mapping between HTMLElement events and mask internal events */\n\n  /** HTMLElement to use mask on */\n\n  /**\n    @param {HTMLInputElement|HTMLTextAreaElement} input\n  */\n  function HTMLMaskElement(input) {\n    var _this;\n\n    _classCallCheck(this, HTMLMaskElement);\n\n    _this = _super.call(this);\n    _this.input = input;\n    _this._handlers = {};\n    return _this;\n  }\n  /** */\n  // $FlowFixMe https://github.com/facebook/flow/issues/2839\n\n\n  _createClass(HTMLMaskElement, [{\n    key: \"rootElement\",\n    get: function get() {\n      return this.input.getRootNode ? this.input.getRootNode() : document;\n    }\n    /**\n      Is element in focus\n      @readonly\n    */\n\n  }, {\n    key: \"isActive\",\n    get: function get() {\n      //$FlowFixMe\n      return this.input === this.rootElement.activeElement;\n    }\n    /**\n      Returns HTMLElement selection start\n      @override\n    */\n\n  }, {\n    key: \"_unsafeSelectionStart\",\n    get: function get() {\n      return this.input.selectionStart;\n    }\n    /**\n      Returns HTMLElement selection end\n      @override\n    */\n\n  }, {\n    key: \"_unsafeSelectionEnd\",\n    get: function get() {\n      return this.input.selectionEnd;\n    }\n    /**\n      Sets HTMLElement selection\n      @override\n    */\n\n  }, {\n    key: \"_unsafeSelect\",\n    value: function _unsafeSelect(start, end) {\n      this.input.setSelectionRange(start, end);\n    }\n    /**\n      HTMLElement value\n      @override\n    */\n\n  }, {\n    key: \"value\",\n    get: function get() {\n      return this.input.value;\n    },\n    set: function set(value) {\n      this.input.value = value;\n    }\n    /**\n      Binds HTMLElement events to mask internal events\n      @override\n    */\n\n  }, {\n    key: \"bindEvents\",\n    value: function bindEvents(handlers) {\n      var _this2 = this;\n\n      Object.keys(handlers).forEach(function (event) {\n        return _this2._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]);\n      });\n    }\n    /**\n      Unbinds HTMLElement events to mask internal events\n      @override\n    */\n\n  }, {\n    key: \"unbindEvents\",\n    value: function unbindEvents() {\n      var _this3 = this;\n\n      Object.keys(this._handlers).forEach(function (event) {\n        return _this3._toggleEventHandler(event);\n      });\n    }\n    /** */\n\n  }, {\n    key: \"_toggleEventHandler\",\n    value: function _toggleEventHandler(event, handler) {\n      if (this._handlers[event]) {\n        this.input.removeEventListener(event, this._handlers[event]);\n        delete this._handlers[event];\n      }\n\n      if (handler) {\n        this.input.addEventListener(event, handler);\n        this._handlers[event] = handler;\n      }\n    }\n  }]);\n\n  return HTMLMaskElement;\n}(MaskElement);\nHTMLMaskElement.EVENTS_MAP = {\n  selectionChange: 'keydown',\n  input: 'input',\n  drop: 'drop',\n  click: 'click',\n  focus: 'focus',\n  commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nvar HTMLContenteditableMaskElement = /*#__PURE__*/function (_HTMLMaskElement) {\n  _inherits(HTMLContenteditableMaskElement, _HTMLMaskElement);\n\n  var _super = _createSuper(HTMLContenteditableMaskElement);\n\n  function HTMLContenteditableMaskElement() {\n    _classCallCheck(this, HTMLContenteditableMaskElement);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(HTMLContenteditableMaskElement, [{\n    key: \"_unsafeSelectionStart\",\n    get:\n    /**\n      Returns HTMLElement selection start\n      @override\n    */\n    function get() {\n      var root = this.rootElement;\n      var selection = root.getSelection && root.getSelection();\n      return selection && selection.anchorOffset;\n    }\n    /**\n      Returns HTMLElement selection end\n      @override\n    */\n\n  }, {\n    key: \"_unsafeSelectionEnd\",\n    get: function get() {\n      var root = this.rootElement;\n      var selection = root.getSelection && root.getSelection();\n      return selection && this._unsafeSelectionStart + String(selection).length;\n    }\n    /**\n      Sets HTMLElement selection\n      @override\n    */\n\n  }, {\n    key: \"_unsafeSelect\",\n    value: function _unsafeSelect(start, end) {\n      if (!this.rootElement.createRange) return;\n      var range = this.rootElement.createRange();\n      range.setStart(this.input.firstChild || this.input, start);\n      range.setEnd(this.input.lastChild || this.input, end);\n      var root = this.rootElement;\n      var selection = root.getSelection && root.getSelection();\n\n      if (selection) {\n        selection.removeAllRanges();\n        selection.addRange(range);\n      }\n    }\n    /**\n      HTMLElement value\n      @override\n    */\n\n  }, {\n    key: \"value\",\n    get: function get() {\n      // $FlowFixMe\n      return this.input.textContent;\n    },\n    set: function set(value) {\n      this.input.textContent = value;\n    }\n  }]);\n\n  return HTMLContenteditableMaskElement;\n}(HTMLMaskElement);\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n", "import { _ as _createClass, a as _classCallCheck, b as _objectWithoutProperties } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport MaskedDate from '../masked/date.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport '../masked/pattern.js';\nimport '../core/change-details.js';\nimport '../masked/base.js';\nimport '../core/continuous-tail-details.js';\nimport '../masked/pattern/input-definition.js';\nimport '../masked/pattern/fixed-definition.js';\nimport '../masked/pattern/chunk-tail-details.js';\nimport '../masked/regexp.js';\nimport '../masked/range.js';\n\nvar _excluded = [\"mask\"];\n/** Listens to element events and controls changes between element and {@link Masked} */\n\nvar InputMask = /*#__PURE__*/function () {\n  /**\n    View element\n    @readonly\n  */\n\n  /**\n    Internal {@link Masked} model\n    @readonly\n  */\n\n  /**\n    @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\n    @param {Object} opts\n  */\n  function InputMask(el, opts) {\n    _classCallCheck(this, InputMask);\n\n    this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n    this.masked = createMask(opts);\n    this._listeners = {};\n    this._value = '';\n    this._unmaskedValue = '';\n    this._saveSelection = this._saveSelection.bind(this);\n    this._onInput = this._onInput.bind(this);\n    this._onChange = this._onChange.bind(this);\n    this._onDrop = this._onDrop.bind(this);\n    this._onFocus = this._onFocus.bind(this);\n    this._onClick = this._onClick.bind(this);\n    this.alignCursor = this.alignCursor.bind(this);\n    this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n\n    this._bindEvents(); // refresh\n\n\n    this.updateValue();\n\n    this._onChange();\n  }\n  /** Read or update mask */\n\n\n  _createClass(InputMask, [{\n    key: \"mask\",\n    get: function get() {\n      return this.masked.mask;\n    },\n    set: function set(mask) {\n      if (this.maskEquals(mask)) return;\n\n      if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n        this.masked.updateOptions({\n          mask: mask\n        });\n        return;\n      }\n\n      var masked = createMask({\n        mask: mask\n      });\n      masked.unmaskedValue = this.masked.unmaskedValue;\n      this.masked = masked;\n    }\n    /** Raw value */\n\n  }, {\n    key: \"maskEquals\",\n    value: function maskEquals(mask) {\n      return mask == null || mask === this.masked.mask || mask === Date && this.masked instanceof MaskedDate;\n    }\n  }, {\n    key: \"value\",\n    get: function get() {\n      return this._value;\n    },\n    set: function set(str) {\n      this.masked.value = str;\n      this.updateControl();\n      this.alignCursor();\n    }\n    /** Unmasked value */\n\n  }, {\n    key: \"unmaskedValue\",\n    get: function get() {\n      return this._unmaskedValue;\n    },\n    set: function set(str) {\n      this.masked.unmaskedValue = str;\n      this.updateControl();\n      this.alignCursor();\n    }\n    /** Typed unmasked value */\n\n  }, {\n    key: \"typedValue\",\n    get: function get() {\n      return this.masked.typedValue;\n    },\n    set: function set(val) {\n      this.masked.typedValue = val;\n      this.updateControl();\n      this.alignCursor();\n    }\n    /**\n      Starts listening to element events\n      @protected\n    */\n\n  }, {\n    key: \"_bindEvents\",\n    value: function _bindEvents() {\n      this.el.bindEvents({\n        selectionChange: this._saveSelection,\n        input: this._onInput,\n        drop: this._onDrop,\n        click: this._onClick,\n        focus: this._onFocus,\n        commit: this._onChange\n      });\n    }\n    /**\n      Stops listening to element events\n      @protected\n     */\n\n  }, {\n    key: \"_unbindEvents\",\n    value: function _unbindEvents() {\n      if (this.el) this.el.unbindEvents();\n    }\n    /**\n      Fires custom event\n      @protected\n     */\n\n  }, {\n    key: \"_fireEvent\",\n    value: function _fireEvent(ev) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      var listeners = this._listeners[ev];\n      if (!listeners) return;\n      listeners.forEach(function (l) {\n        return l.apply(void 0, args);\n      });\n    }\n    /**\n      Current selection start\n      @readonly\n    */\n\n  }, {\n    key: \"selectionStart\",\n    get: function get() {\n      return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n    }\n    /** Current cursor position */\n\n  }, {\n    key: \"cursorPos\",\n    get: function get() {\n      return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n    },\n    set: function set(pos) {\n      if (!this.el || !this.el.isActive) return;\n      this.el.select(pos, pos);\n\n      this._saveSelection();\n    }\n    /**\n      Stores current selection\n      @protected\n    */\n\n  }, {\n    key: \"_saveSelection\",\n    value: function _saveSelection() {\n      if (this.value !== this.el.value) {\n        console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n      }\n\n      this._selection = {\n        start: this.selectionStart,\n        end: this.cursorPos\n      };\n    }\n    /** Syncronizes model value from view */\n\n  }, {\n    key: \"updateValue\",\n    value: function updateValue() {\n      this.masked.value = this.el.value;\n      this._value = this.masked.value;\n    }\n    /** Syncronizes view from model value, fires change events */\n\n  }, {\n    key: \"updateControl\",\n    value: function updateControl() {\n      var newUnmaskedValue = this.masked.unmaskedValue;\n      var newValue = this.masked.value;\n      var isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n      this._unmaskedValue = newUnmaskedValue;\n      this._value = newValue;\n      if (this.el.value !== newValue) this.el.value = newValue;\n      if (isChanged) this._fireChangeEvents();\n    }\n    /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n\n  }, {\n    key: \"updateOptions\",\n    value: function updateOptions(opts) {\n      var mask = opts.mask,\n          restOpts = _objectWithoutProperties(opts, _excluded);\n\n      var updateMask = !this.maskEquals(mask);\n      var updateOpts = !objectIncludes(this.masked, restOpts);\n      if (updateMask) this.mask = mask;\n      if (updateOpts) this.masked.updateOptions(restOpts);\n      if (updateMask || updateOpts) this.updateControl();\n    }\n    /** Updates cursor */\n\n  }, {\n    key: \"updateCursor\",\n    value: function updateCursor(cursorPos) {\n      if (cursorPos == null) return;\n      this.cursorPos = cursorPos; // also queue change cursor for mobile browsers\n\n      this._delayUpdateCursor(cursorPos);\n    }\n    /**\n      Delays cursor update to support mobile browsers\n      @private\n    */\n\n  }, {\n    key: \"_delayUpdateCursor\",\n    value: function _delayUpdateCursor(cursorPos) {\n      var _this = this;\n\n      this._abortUpdateCursor();\n\n      this._changingCursorPos = cursorPos;\n      this._cursorChanging = setTimeout(function () {\n        if (!_this.el) return; // if was destroyed\n\n        _this.cursorPos = _this._changingCursorPos;\n\n        _this._abortUpdateCursor();\n      }, 10);\n    }\n    /**\n      Fires custom events\n      @protected\n    */\n\n  }, {\n    key: \"_fireChangeEvents\",\n    value: function _fireChangeEvents() {\n      this._fireEvent('accept', this._inputEvent);\n\n      if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n    }\n    /**\n      Aborts delayed cursor update\n      @private\n    */\n\n  }, {\n    key: \"_abortUpdateCursor\",\n    value: function _abortUpdateCursor() {\n      if (this._cursorChanging) {\n        clearTimeout(this._cursorChanging);\n        delete this._cursorChanging;\n      }\n    }\n    /** Aligns cursor to nearest available position */\n\n  }, {\n    key: \"alignCursor\",\n    value: function alignCursor() {\n      this.cursorPos = this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT);\n    }\n    /** Aligns cursor only if selection is empty */\n\n  }, {\n    key: \"alignCursorFriendly\",\n    value: function alignCursorFriendly() {\n      if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n\n      this.alignCursor();\n    }\n    /** Adds listener on custom event */\n\n  }, {\n    key: \"on\",\n    value: function on(ev, handler) {\n      if (!this._listeners[ev]) this._listeners[ev] = [];\n\n      this._listeners[ev].push(handler);\n\n      return this;\n    }\n    /** Removes custom event listener */\n\n  }, {\n    key: \"off\",\n    value: function off(ev, handler) {\n      if (!this._listeners[ev]) return this;\n\n      if (!handler) {\n        delete this._listeners[ev];\n        return this;\n      }\n\n      var hIndex = this._listeners[ev].indexOf(handler);\n\n      if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n      return this;\n    }\n    /** Handles view input event */\n\n  }, {\n    key: \"_onInput\",\n    value: function _onInput(e) {\n      this._inputEvent = e;\n\n      this._abortUpdateCursor(); // fix strange IE behavior\n\n\n      if (!this._selection) return this.updateValue();\n      var details = new ActionDetails( // new state\n      this.el.value, this.cursorPos, // old state\n      this.value, this._selection);\n      var oldRawValue = this.masked.rawInputValue;\n      var offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection).offset; // force align in remove direction only if no input chars were removed\n      // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n\n      var removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n      var cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n      this.updateControl();\n      this.updateCursor(cursorPos);\n      delete this._inputEvent;\n    }\n    /** Handles view change event and commits model value */\n\n  }, {\n    key: \"_onChange\",\n    value: function _onChange() {\n      if (this.value !== this.el.value) {\n        this.updateValue();\n      }\n\n      this.masked.doCommit();\n      this.updateControl();\n\n      this._saveSelection();\n    }\n    /** Handles view drop event, prevents by default */\n\n  }, {\n    key: \"_onDrop\",\n    value: function _onDrop(ev) {\n      ev.preventDefault();\n      ev.stopPropagation();\n    }\n    /** Restore last selection on focus */\n\n  }, {\n    key: \"_onFocus\",\n    value: function _onFocus(ev) {\n      this.alignCursorFriendly();\n    }\n    /** Restore last selection on focus */\n\n  }, {\n    key: \"_onClick\",\n    value: function _onClick(ev) {\n      this.alignCursorFriendly();\n    }\n    /** Unbind view events and removes element reference */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._unbindEvents(); // $FlowFixMe why not do so?\n\n\n      this._listeners.length = 0; // $FlowFixMe\n\n      delete this.el;\n    }\n  }]);\n\n  return InputMask;\n}();\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './pattern/input-definition.js';\nimport './factory.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/chunk-tail-details.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\n\nvar MaskedEnum = /*#__PURE__*/function (_MaskedPattern) {\n  _inherits(MaskedEnum, _MaskedPattern);\n\n  var _super = _createSuper(MaskedEnum);\n\n  function MaskedEnum() {\n    _classCallCheck(this, MaskedEnum);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(MaskedEnum, [{\n    key: \"_update\",\n    value:\n    /**\n      @override\n      @param {Object} opts\n    */\n    function _update(opts) {\n      // TODO type\n      if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length);\n\n      _get(_getPrototypeOf(MaskedEnum.prototype), \"_update\", this).call(this, opts);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doValidate\",\n    value: function doValidate() {\n      var _this = this,\n          _get2;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return this.enum.some(function (e) {\n        return e.indexOf(_this.unmaskedValue) >= 0;\n      }) && (_get2 = _get(_getPrototypeOf(MaskedEnum.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n    }\n  }]);\n\n  return MaskedEnum;\n}(MaskedPattern);\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, f as _slicedToArray, i as _set } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/**\n  Number mask\n  @param {Object} opts\n  @param {string} opts.radix - Single char\n  @param {string} opts.thousandsSeparator - Single char\n  @param {Array<string>} opts.mapToRadix - Array of single chars\n  @param {number} opts.min\n  @param {number} opts.max\n  @param {number} opts.scale - Digits after point\n  @param {boolean} opts.signed - Allow negative\n  @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\n  @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\n*/\nvar MaskedNumber = /*#__PURE__*/function (_Masked) {\n  _inherits(MaskedNumber, _Masked);\n\n  var _super = _createSuper(MaskedNumber);\n\n  /** Single char */\n\n  /** Single char */\n\n  /** Array of single chars */\n\n  /** */\n\n  /** */\n\n  /** Digits after point */\n\n  /** */\n\n  /** Flag to remove leading and trailing zeros in the end of editing */\n\n  /** Flag to pad trailing zeros after point in the end of editing */\n  function MaskedNumber(opts) {\n    _classCallCheck(this, MaskedNumber);\n\n    return _super.call(this, Object.assign({}, MaskedNumber.DEFAULTS, opts));\n  }\n  /**\n    @override\n  */\n\n\n  _createClass(MaskedNumber, [{\n    key: \"_update\",\n    value: function _update(opts) {\n      _get(_getPrototypeOf(MaskedNumber.prototype), \"_update\", this).call(this, opts);\n\n      this._updateRegExps();\n    }\n    /** */\n\n  }, {\n    key: \"_updateRegExps\",\n    value: function _updateRegExps() {\n      // use different regexp to process user input (more strict, input suffix) and tail shifting\n      var start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n      var midInput = '(0|([1-9]+\\\\d*))?';\n      var mid = '\\\\d*';\n      var end = (this.scale ? '(' + escapeRegExp(this.radix) + '\\\\d{0,' + this.scale + '})?' : '') + '$';\n      this._numberRegExpInput = new RegExp(start + midInput + end);\n      this._numberRegExp = new RegExp(start + mid + end);\n      this._mapToRadixRegExp = new RegExp('[' + this.mapToRadix.map(escapeRegExp).join('') + ']', 'g');\n      this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n    }\n    /** */\n\n  }, {\n    key: \"_removeThousandsSeparators\",\n    value: function _removeThousandsSeparators(value) {\n      return value.replace(this._thousandsSeparatorRegExp, '');\n    }\n    /** */\n\n  }, {\n    key: \"_insertThousandsSeparators\",\n    value: function _insertThousandsSeparators(value) {\n      // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n      var parts = value.split(this.radix);\n      parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n      return parts.join(this.radix);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doPrepare\",\n    value: function doPrepare(str) {\n      var _get2;\n\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      return (_get2 = _get(_getPrototypeOf(MaskedNumber.prototype), \"doPrepare\", this)).call.apply(_get2, [this, this._removeThousandsSeparators(str.replace(this._mapToRadixRegExp, this.radix))].concat(args));\n    }\n    /** */\n\n  }, {\n    key: \"_separatorsCount\",\n    value: function _separatorsCount(to) {\n      var extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var count = 0;\n\n      for (var pos = 0; pos < to; ++pos) {\n        if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n          ++count;\n          if (extendOnSeparators) to += this.thousandsSeparator.length;\n        }\n      }\n\n      return count;\n    }\n    /** */\n\n  }, {\n    key: \"_separatorsCountFromSlice\",\n    value: function _separatorsCountFromSlice() {\n      var slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n      return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"extractInput\",\n    value: function extractInput() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n      var flags = arguments.length > 2 ? arguments[2] : undefined;\n\n      var _this$_adjustRangeWit = this._adjustRangeWithSeparators(fromPos, toPos);\n\n      var _this$_adjustRangeWit2 = _slicedToArray(_this$_adjustRangeWit, 2);\n\n      fromPos = _this$_adjustRangeWit2[0];\n      toPos = _this$_adjustRangeWit2[1];\n      return this._removeThousandsSeparators(_get(_getPrototypeOf(MaskedNumber.prototype), \"extractInput\", this).call(this, fromPos, toPos, flags));\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"_appendCharRaw\",\n    value: function _appendCharRaw(ch) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!this.thousandsSeparator) return _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n      var prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n      var prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n\n      this._value = this._removeThousandsSeparators(this.value);\n\n      var appendDetails = _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n\n      this._value = this._insertThousandsSeparators(this._value);\n      var beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n      var beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n\n      appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n      appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n      return appendDetails;\n    }\n    /** */\n\n  }, {\n    key: \"_findSeparatorAround\",\n    value: function _findSeparatorAround(pos) {\n      if (this.thousandsSeparator) {\n        var searchFrom = pos - this.thousandsSeparator.length + 1;\n        var separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n        if (separatorPos <= pos) return separatorPos;\n      }\n\n      return -1;\n    }\n  }, {\n    key: \"_adjustRangeWithSeparators\",\n    value: function _adjustRangeWithSeparators(from, to) {\n      var separatorAroundFromPos = this._findSeparatorAround(from);\n\n      if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n\n      var separatorAroundToPos = this._findSeparatorAround(to);\n\n      if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n      return [from, to];\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"remove\",\n    value: function remove() {\n      var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n      var _this$_adjustRangeWit3 = this._adjustRangeWithSeparators(fromPos, toPos);\n\n      var _this$_adjustRangeWit4 = _slicedToArray(_this$_adjustRangeWit3, 2);\n\n      fromPos = _this$_adjustRangeWit4[0];\n      toPos = _this$_adjustRangeWit4[1];\n      var valueBeforePos = this.value.slice(0, fromPos);\n      var valueAfterPos = this.value.slice(toPos);\n\n      var prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n\n      this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n\n      var beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n\n      return new ChangeDetails({\n        tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n      });\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"nearestInputPos\",\n    value: function nearestInputPos(cursorPos, direction) {\n      if (!this.thousandsSeparator) return cursorPos;\n\n      switch (direction) {\n        case DIRECTION.NONE:\n        case DIRECTION.LEFT:\n        case DIRECTION.FORCE_LEFT:\n          {\n            var separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n\n            if (separatorAtLeftPos >= 0) {\n              var separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n\n              if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n                return separatorAtLeftPos;\n              }\n            }\n\n            break;\n          }\n\n        case DIRECTION.RIGHT:\n        case DIRECTION.FORCE_RIGHT:\n          {\n            var separatorAtRightPos = this._findSeparatorAround(cursorPos);\n\n            if (separatorAtRightPos >= 0) {\n              return separatorAtRightPos + this.thousandsSeparator.length;\n            }\n          }\n      }\n\n      return cursorPos;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doValidate\",\n    value: function doValidate(flags) {\n      var regexp = flags.input ? this._numberRegExpInput : this._numberRegExp; // validate as string\n\n      var valid = regexp.test(this._removeThousandsSeparators(this.value));\n\n      if (valid) {\n        // validate as number\n        var number = this.number;\n        valid = valid && !isNaN(number) && (this.min == null || this.min >= 0 || this.min <= this.number) && (this.max == null || this.max <= 0 || this.number <= this.max);\n      }\n\n      return valid && _get(_getPrototypeOf(MaskedNumber.prototype), \"doValidate\", this).call(this, flags);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doCommit\",\n    value: function doCommit() {\n      if (this.value) {\n        var number = this.number;\n        var validnum = number; // check bounds\n\n        if (this.min != null) validnum = Math.max(validnum, this.min);\n        if (this.max != null) validnum = Math.min(validnum, this.max);\n        if (validnum !== number) this.unmaskedValue = String(validnum);\n        var formatted = this.value;\n        if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n        if (this.padFractionalZeros) formatted = this._padFractionalZeros(formatted);\n        this._value = formatted;\n      }\n\n      _get(_getPrototypeOf(MaskedNumber.prototype), \"doCommit\", this).call(this);\n    }\n    /** */\n\n  }, {\n    key: \"_normalizeZeros\",\n    value: function _normalizeZeros(value) {\n      var parts = this._removeThousandsSeparators(value).split(this.radix); // remove leading zeros\n\n\n      parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, function (match, sign, zeros, num) {\n        return sign + num;\n      }); // add leading zero\n\n      if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n\n      if (parts.length > 1) {\n        parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n\n        if (!parts[1].length) parts.length = 1; // remove fractional\n      }\n\n      return this._insertThousandsSeparators(parts.join(this.radix));\n    }\n    /** */\n\n  }, {\n    key: \"_padFractionalZeros\",\n    value: function _padFractionalZeros(value) {\n      if (!value) return value;\n      var parts = value.split(this.radix);\n      if (parts.length < 2) parts.push('');\n      parts[1] = parts[1].padEnd(this.scale, '0');\n      return parts.join(this.radix);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"unmaskedValue\",\n    get: function get() {\n      return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, '.');\n    },\n    set: function set(unmaskedValue) {\n      _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", unmaskedValue.replace('.', this.radix), this, true);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"typedValue\",\n    get: function get() {\n      return Number(this.unmaskedValue);\n    },\n    set: function set(n) {\n      _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", String(n), this, true);\n    }\n    /** Parsed Number */\n\n  }, {\n    key: \"number\",\n    get: function get() {\n      return this.typedValue;\n    },\n    set: function set(number) {\n      this.typedValue = number;\n    }\n    /**\n      Is negative allowed\n      @readonly\n    */\n\n  }, {\n    key: \"allowNegative\",\n    get: function get() {\n      return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n    }\n  }]);\n\n  return MaskedNumber;\n}(Masked);\nMaskedNumber.DEFAULTS = {\n  radix: ',',\n  thousandsSeparator: '',\n  mapToRadix: ['.'],\n  scale: 2,\n  signed: false,\n  normalizeZeros: true,\n  padFractionalZeros: false\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\n\nvar MaskedFunction = /*#__PURE__*/function (_Masked) {\n  _inherits(MaskedFunction, _Masked);\n\n  var _super = _createSuper(MaskedFunction);\n\n  function MaskedFunction() {\n    _classCallCheck(this, MaskedFunction);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(MaskedFunction, [{\n    key: \"_update\",\n    value:\n    /**\n      @override\n      @param {Object} opts\n    */\n    function _update(opts) {\n      if (opts.mask) opts.validate = opts.mask;\n\n      _get(_getPrototypeOf(MaskedFunction.prototype), \"_update\", this).call(this, opts);\n    }\n  }]);\n\n  return MaskedFunction;\n}(Masked);\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n", "import { d as _inherits, e as _createSuper, a as _classCallCheck, _ as _createClass, g as _get, h as _getPrototypeOf, i as _set, b as _objectWithoutProperties } from '../_rollupPluginBabelHelpers-a0b34764.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../core/continuous-tail-details.js';\n\nvar _excluded = [\"compiledMasks\", \"currentMaskRef\", \"currentMask\"];\n\n/** Dynamic mask for choosing apropriate mask in run-time */\nvar MaskedDynamic = /*#__PURE__*/function (_Masked) {\n  _inherits(MaskedDynamic, _Masked);\n\n  var _super = _createSuper(MaskedDynamic);\n\n  /** Currently chosen mask */\n\n  /** Compliled {@link Masked} options */\n\n  /** Chooses {@link Masked} depending on input value */\n\n  /**\n    @param {Object} opts\n  */\n  function MaskedDynamic(opts) {\n    var _this;\n\n    _classCallCheck(this, MaskedDynamic);\n\n    _this = _super.call(this, Object.assign({}, MaskedDynamic.DEFAULTS, opts));\n    _this.currentMask = null;\n    return _this;\n  }\n  /**\n    @override\n  */\n\n\n  _createClass(MaskedDynamic, [{\n    key: \"_update\",\n    value: function _update(opts) {\n      _get(_getPrototypeOf(MaskedDynamic.prototype), \"_update\", this).call(this, opts);\n\n      if ('mask' in opts) {\n        // mask could be totally dynamic with only `dispatch` option\n        this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(function (m) {\n          return createMask(m);\n        }) : [];\n      }\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"_appendCharRaw\",\n    value: function _appendCharRaw(ch) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      var details = this._applyDispatch(ch, flags);\n\n      if (this.currentMask) {\n        details.aggregate(this.currentMask._appendChar(ch, flags));\n      }\n\n      return details;\n    }\n  }, {\n    key: \"_applyDispatch\",\n    value: function _applyDispatch() {\n      var appended = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n      var inputValue = this.rawInputValue;\n      var insertValue = flags.tail && flags._beforeTailState != null ? // $FlowFixMe - tired to fight with type system\n      flags._beforeTailState._rawInputValue : inputValue;\n      var tailValue = inputValue.slice(insertValue.length);\n      var prevMask = this.currentMask;\n      var details = new ChangeDetails();\n      var prevMaskState = prevMask && prevMask.state; // clone flags to prevent overwriting `_beforeTailState`\n\n      this.currentMask = this.doDispatch(appended, Object.assign({}, flags)); // restore state after dispatch\n\n      if (this.currentMask) {\n        if (this.currentMask !== prevMask) {\n          // if mask changed reapply input\n          this.currentMask.reset();\n\n          if (insertValue) {\n            // $FlowFixMe - it's ok, we don't change current mask above\n            var d = this.currentMask.append(insertValue, {\n              raw: true\n            });\n            details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n          }\n\n          if (tailValue) {\n            // $FlowFixMe - it's ok, we don't change current mask above\n            details.tailShift += this.currentMask.append(tailValue, {\n              raw: true,\n              tail: true\n            }).tailShift;\n          }\n        } else {\n          // Dispatch can do something bad with state, so\n          // restore prev mask state\n          this.currentMask.state = prevMaskState;\n        }\n      }\n\n      return details;\n    }\n  }, {\n    key: \"_appendPlaceholder\",\n    value: function _appendPlaceholder() {\n      var details = this._applyDispatch.apply(this, arguments);\n\n      if (this.currentMask) {\n        details.aggregate(this.currentMask._appendPlaceholder());\n      }\n\n      return details;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doDispatch\",\n    value: function doDispatch(appended) {\n      var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return this.dispatch(appended, this, flags);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doValidate\",\n    value: function doValidate() {\n      var _get2, _this$currentMask;\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return (_get2 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.currentMask || (_this$currentMask = this.currentMask).doValidate.apply(_this$currentMask, args));\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this.currentMask) this.currentMask.reset();\n      this.compiledMasks.forEach(function (m) {\n        return m.reset();\n      });\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"value\",\n    get: function get() {\n      return this.currentMask ? this.currentMask.value : '';\n    },\n    set: function set(value) {\n      _set(_getPrototypeOf(MaskedDynamic.prototype), \"value\", value, this, true);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"unmaskedValue\",\n    get: function get() {\n      return this.currentMask ? this.currentMask.unmaskedValue : '';\n    },\n    set: function set(unmaskedValue) {\n      _set(_getPrototypeOf(MaskedDynamic.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"typedValue\",\n    get: function get() {\n      return this.currentMask ? this.currentMask.typedValue : '';\n    } // probably typedValue should not be used with dynamic\n    ,\n    set: function set(value) {\n      var unmaskedValue = String(value); // double check it\n\n      if (this.currentMask) {\n        this.currentMask.typedValue = value;\n        unmaskedValue = this.currentMask.unmaskedValue;\n      }\n\n      this.unmaskedValue = unmaskedValue;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"isComplete\",\n    get: function get() {\n      return !!this.currentMask && this.currentMask.isComplete;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"remove\",\n    value: function remove() {\n      var details = new ChangeDetails();\n\n      if (this.currentMask) {\n        var _this$currentMask2;\n\n        details.aggregate((_this$currentMask2 = this.currentMask).remove.apply(_this$currentMask2, arguments)) // update with dispatch\n        .aggregate(this._applyDispatch());\n      }\n\n      return details;\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"state\",\n    get: function get() {\n      return Object.assign({}, _get(_getPrototypeOf(MaskedDynamic.prototype), \"state\", this), {\n        _rawInputValue: this.rawInputValue,\n        compiledMasks: this.compiledMasks.map(function (m) {\n          return m.state;\n        }),\n        currentMaskRef: this.currentMask,\n        currentMask: this.currentMask && this.currentMask.state\n      });\n    },\n    set: function set(state) {\n      var compiledMasks = state.compiledMasks,\n          currentMaskRef = state.currentMaskRef,\n          currentMask = state.currentMask,\n          maskedState = _objectWithoutProperties(state, _excluded);\n\n      this.compiledMasks.forEach(function (m, mi) {\n        return m.state = compiledMasks[mi];\n      });\n\n      if (currentMaskRef != null) {\n        this.currentMask = currentMaskRef;\n        this.currentMask.state = currentMask;\n      }\n\n      _set(_getPrototypeOf(MaskedDynamic.prototype), \"state\", maskedState, this, true);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"extractInput\",\n    value: function extractInput() {\n      var _this$currentMask3;\n\n      return this.currentMask ? (_this$currentMask3 = this.currentMask).extractInput.apply(_this$currentMask3, arguments) : '';\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"extractTail\",\n    value: function extractTail() {\n      var _this$currentMask4, _get3;\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return this.currentMask ? (_this$currentMask4 = this.currentMask).extractTail.apply(_this$currentMask4, args) : (_get3 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"extractTail\", this)).call.apply(_get3, [this].concat(args));\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"doCommit\",\n    value: function doCommit() {\n      if (this.currentMask) this.currentMask.doCommit();\n\n      _get(_getPrototypeOf(MaskedDynamic.prototype), \"doCommit\", this).call(this);\n    }\n    /**\n      @override\n    */\n\n  }, {\n    key: \"nearestInputPos\",\n    value: function nearestInputPos() {\n      var _this$currentMask5, _get4;\n\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n\n      return this.currentMask ? (_this$currentMask5 = this.currentMask).nearestInputPos.apply(_this$currentMask5, args) : (_get4 = _get(_getPrototypeOf(MaskedDynamic.prototype), \"nearestInputPos\", this)).call.apply(_get4, [this].concat(args));\n    }\n  }, {\n    key: \"overwrite\",\n    get: function get() {\n      return this.currentMask ? this.currentMask.overwrite : _get(_getPrototypeOf(MaskedDynamic.prototype), \"overwrite\", this);\n    },\n    set: function set(overwrite) {\n      console.warn('\"overwrite\" option is not available in dynamic mask, use this option in siblings');\n    }\n  }]);\n\n  return MaskedDynamic;\n}(Masked);\nMaskedDynamic.DEFAULTS = {\n  dispatch: function dispatch(appended, masked, flags) {\n    if (!masked.compiledMasks.length) return;\n    var inputValue = masked.rawInputValue; // simulate input\n\n    var inputs = masked.compiledMasks.map(function (m, index) {\n      m.reset();\n      m.append(inputValue, {\n        raw: true\n      });\n      m.append(appended, flags);\n      var weight = m.rawInputValue.length;\n      return {\n        weight: weight,\n        index: index\n      };\n    }); // pop masks with longer values first\n\n    inputs.sort(function (i1, i2) {\n      return i2.weight - i1.weight;\n    });\n    return masked.compiledMasks[inputs[0].index];\n  }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n", "import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\nimport '../_rollupPluginBabelHelpers-a0b34764.js';\n\n/** Mask pipe source and destination types */\n\nvar PIPE_TYPE = {\n  MASKED: 'value',\n  UNMASKED: 'unmaskedValue',\n  TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\n\nfunction createPipe(mask) {\n  var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PIPE_TYPE.MASKED;\n  var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PIPE_TYPE.MASKED;\n  var masked = createMask(mask);\n  return function (value) {\n    return masked.runIsolated(function (m) {\n      m[from] = value;\n      return m[to];\n    });\n  };\n}\n/** Pipes value through mask depending on mask type, source and destination options */\n\nfunction pipe(value) {\n  for (var _len = arguments.length, pipeArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    pipeArgs[_key - 1] = arguments[_key];\n  }\n\n  return createPipe.apply(void 0, pipeArgs)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n", "export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default } from './core/holder.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as createMask } from './masked/factory.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nimport './_rollupPluginBabelHelpers-a0b34764.js';\nimport './core/utils.js';\nimport './core/action-details.js';\nimport './core/change-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/input-definition.js';\nimport './masked/pattern/fixed-definition.js';\nimport './masked/pattern/chunk-tail-details.js';\n\ntry {\n  globalThis.IMask = IMask;\n} catch (e) {}\n", "import IMask from 'imask'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['price']\n\n  connect() {\n    const element = this.priceTarget\n    const maskOptions = {\n      mask: Number,\n      scale: 2,\n      padFractionalZeros: true,\n      normalizeZeros: true,\n      radix: '.',\n    }\n\n    IMask(element, maskOptions)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\n// TODO: Remove this when the Person Profiles are ready\nexport default class extends Controller {\n  static targets = ['submit']\n  static values = { path: String }\n\n  connect() {\n    useClickOutside(this)\n  }\n\n  // Sort of a hacky workaround to get the same\n  // click outside submit behavior as the other inline fields\n  clickOutside() {\n    this.submitTarget.click()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\nimport { removeExtraBackdrops } from '../helpers/modal_helper'\n\n// Weird wrapper controller that interacts with bootstrap\n// TODO: Move all the modals to not use bootstrap jQuery\nexport default class extends Controller {\n  connect() {\n    this.modal = $(this.element)\n    this.modal.modal('show')\n\n    removeExtraBackdrops()\n\n    if (document.querySelectorAll(\"span[data-toggle='tooltip'\").length > 0) {\n      document.querySelectorAll(\"span[data-toggle='tooltip'\").forEach(function (element) {\n        $(element).tooltip({ html: true, delay: { show: 250, hide: 100 } })\n      })\n    }\n\n    $(this.modal).one('hidden.bs.modal', function () {\n      this.closest('#modal').innerHTML = ''\n    })\n\n    document.addEventListener('turbo:submit-end', this.submit.bind(this))\n  }\n\n  disconnect() {\n    document.removeEventListener('turbo:submit-end', this.submit.bind(this))\n  }\n\n  submit(event) {\n    if (event.detail.success) {\n      // TODO: See whether or not we still need this with the new turbo update\n      if (event.detail.fetchResponse.response.redirected) {\n        Turbo.visit(event.detail.fetchResponse.response.url)\n      }\n\n      $(this.modal).modal('hide')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { get } from '../helpers/fetch_helper'\n\nexport default class extends Controller {\n  static targets = ['dark', 'default']\n\n  toggleTheme(event) {\n    const [key, value] = this.getKeyValue(event.currentTarget)\n\n    get(this.path(key, value))\n\n    if (this.isDark) {\n      document.body.classList.remove('dark')\n\n      // Text Editor\n      let textEditorComponents = document.querySelectorAll('.text-editor-component')\n      textEditorComponents.forEach((element) => {\n        element.classList.remove('trumbowyg-dark')\n      })\n\n      for (const target of this.darkTargets) {\n        target.classList.add('hidden')\n      }\n      for (const target of this.defaultTargets) {\n        target.classList.remove('hidden')\n      }\n\n      this.element.dataset.value = 'dark'\n    } else {\n      document.body.classList.add('dark')\n\n      for (const target of this.darkTargets) {\n        target.classList.remove('hidden')\n      }\n      for (const target of this.defaultTargets) {\n        target.classList.add('hidden')\n      }\n\n      // Text Editor\n      let textEditorComponents = document.querySelectorAll('.text-editor-component')\n      textEditorComponents.forEach((element) => {\n        element.classList.add('trumbowyg-dark')\n      })\n\n      this.element.dataset.value = 'default'\n    }\n  }\n\n  toggleProfileCollapse(event) {\n    const [key, value] = this.getKeyValue(event.currentTarget)\n\n    get(this.path(key, value))\n  }\n\n  ///\n  /// private\n  ///\n  getKeyValue(element) {\n    return [element.dataset.key, element.dataset.value]\n  }\n\n  path(key, value) {\n    return `/preferences/${key}/${value}`\n  }\n\n  get isDark() {\n    return document.body.classList.contains('dark')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['childContainer', 'radioBtnGroupSelector']\n  static values = { groupSelector: String, childSelector: String }\n\n  hideChildren() {\n    for (const child of this.childContainerTargets) {\n      child.classList.add('hidden')\n    }\n\n    if (this.childSelectorValue !== '') {\n      for (const selector of this.childSelectorValue.split(/\\s+/)) {\n        for (const child of document.querySelectorAll(selector)) {\n          child.classList.add('hidden')\n        }\n      }\n    }\n  }\n\n  showChildren() {\n    for (const child of this.childContainerTargets) {\n      child.classList.remove('hidden')\n    }\n\n    if (this.childSelectorValue !== '') {\n      for (const selector of this.childSelectorValue.split(/\\s+/)) {\n        for (const child of document.querySelectorAll(selector)) {\n          child.classList.remove('hidden')\n        }\n      }\n    }\n  }\n\n  toggleOn() {\n    this.radioButtonGroupController().hideAllChildren()\n\n    this.showChildren()\n  }\n\n  radioButtonGroupController() {\n    let radioBtnGroup = document.querySelector(this.groupSelectorValue)\n    return this.application.getControllerForElementAndIdentifier(radioBtnGroup, 'radio-btn-group')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['radioBtn']\n\n  hideAllChildren() {\n    for (const radioBtn of this.radioBtnTargets) {\n      let c = this.application.getControllerForElementAndIdentifier(radioBtn, 'radio-btn')\n      c.hideChildren()\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['programs']\n\n  connect() {\n    if (this.hasProgramsTarget) {\n      $(this.programsTarget).on('select2:select', this.updateNameSelector)\n    }\n  }\n\n  disconnect() {\n    if (this.hasProgramsTarget) {\n      $(this.programsTarget).off()\n    }\n  }\n\n  updateNameSelector() {\n    const frame = document.querySelector('#name-selector')\n\n    if (frame) {\n      const program_id = this.value\n      frame.src = `/calendar/class_events?program_id=${program_id}`\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['registrantList', 'showBtn', 'hideBtn']\n\n  showRegistrants() {\n    this.registrantListTarget.classList.remove('hidden')\n    this.hideBtnTarget.classList.remove('hidden')\n    this.showBtnTarget.classList.add('hidden')\n  }\n\n  hideRegistrants() {\n    this.registrantListTarget.classList.add('hidden')\n    this.hideBtnTarget.classList.add('hidden')\n    this.showBtnTarget.classList.remove('hidden')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = { path: String }\n\n  refreshToggler(event) {\n    const selected = event.target.innerText.toLowerCase()\n    const frame = document.querySelector('#event_toggler')\n\n    // These have to go to the new path, so that they can take the\n    // turbo frame out of the response, and then put it into the dom.\n    frame.src = `${this.pathValue}?selected=${selected}`\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['card']\n  static values = { url: String, placement: String }\n\n  show() {\n    if (this.hasCardTarget) {\n      this.cardTarget.classList.remove('hidden')\n    } else {\n      let loadingHovercard = this.buildHovercardWith(this.loadingContent())\n      this.element.appendChild(loadingHovercard)\n\n      fetch(this.urlValue)\n        .then((r) => r.text())\n        .then((html) => {\n          let newHovercard = this.buildHovercardWith(html)\n          let existingHovercard = this.element.querySelector('.hovercard')\n\n          existingHovercard.replaceWith(newHovercard)\n        })\n    }\n  }\n\n  hide() {\n    if (this.hasCardTarget) {\n      this.cardTarget.classList.add('hidden')\n    }\n  }\n\n  disconnect() {\n    if (this.hasCardTarget) {\n      this.cardTarget.remove()\n    }\n  }\n\n  loadingContent() {\n    return `\n    <div class='hovercard'>\n      <div class='placeholder-bar placeholder-bar-highlight'></div>\n      <div class='placeholder-row'>\n        <div class='placeholder-bar placeholder-bar-med'></div>\n        <div class='placeholder-bar placeholder-bar-lg'></div>\n      </div>\n      <div class='placeholder-bar'></div>\n      <div class='placeholder-bar'></div>\n      <div class='placeholder-row'>\n        <div class='placeholder-bar placeholder-bar-med'></div>\n        <div class='placeholder-bar placeholder-bar-lg placeholder-bar-highlight'></div>\n      </div>\n    </div>\n      `\n  }\n\n  buildHovercardWith(html) {\n    let fragment = document.createRange().createContextualFragment(html)\n\n    if (this.placementValue) {\n      fragment.querySelector('.hovercard').classList.add(this.placementValue)\n    }\n\n    return fragment\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n//\n// Membership Template Add/Edit modal\n//      a lot of conditional rendering and toggling of the form\n//      based on if the membership is individual or trial, or recurring billing or not\n//\nexport default class MembershipTemplatesController extends Controller {\n  static targets = ['recurringBillingHide', 'occurrencesHide', 'billingOptions', 'noChargeText', 'paymentReason']\n\n  hideRecurringBilling() {\n    this.hideNoCharge()\n    this.paymentReasonTarget.classList.add('col-span-3')\n    this.recurringBillingHideTarget.classList.add('hidden')\n    this.occurrencesHideTarget.classList.add('hidden')\n  }\n\n  showRecurringBilling() {\n    this.hideNoCharge()\n    this.paymentReasonTarget.classList.remove('col-span-3')\n    this.recurringBillingHideTarget.classList.remove('hidden')\n    this.occurrencesHideTarget.classList.remove('hidden')\n  }\n\n  hideNoCharge() {\n    this.billingOptionsTarget.classList.remove('hidden')\n    this.noChargeTextTarget.classList.add('hidden')\n  }\n\n  showNoCharge() {\n    this.billingOptionsTarget.classList.add('hidden')\n    this.noChargeTextTarget.classList.remove('hidden')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  updateCalendarDate(event) {\n    const date = event.target.dataset.date\n\n    document.dispatchEvent(new CustomEvent('calendar:updateCalendarDate', { detail: { date } }))\n  }\n}\n", "/* global initializeTooltips */\n// TODO: create an esm version of initializeTooltips so that we aren't\n// poluting our files with random globals.\n\nimport { Controller } from '@hotwired/stimulus'\nexport default class extends Controller {\n  static targets = ['table', 'tbody', 'infinity', 'spinner', 'footer', 'all', 'more']\n\n  showMore() {\n    if (this.moreTarget.classList.contains('disabled')) {\n      return\n    }\n\n    fetch(this.moreTarget.dataset.path, {\n      method: 'GET',\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        if (this.hasTbodyTarget) {\n          this.tbodyTarget.insertAdjacentHTML('beforeend', data.table_data)\n        } else {\n          this.tableTarget.insertAdjacentHTML('beforeend', data.table_data)\n        }\n\n        this.footerTarget.innerHTML = data.footer\n        initializeTooltips($(this.element.parentElement))\n      })\n  }\n\n  showAll() {\n    this.showMore()\n    this.allTarget.classList.add('disabled')\n    this.moreTarget.classList.add('disabled')\n\n    const that = this\n    ;(function onScroll() {\n      that.infinityTarget.addEventListener('scroll', function scroll() {\n        const bottom =\n          that.infinityTarget.scrollHeight - Math.abs(that.infinityTarget.scrollTop) >=\n          that.infinityTarget.offsetHeight\n\n        if (bottom) {\n          that.spinnerTarget.classList.remove('hidden')\n\n          if (that.moreTarget.parentElement.classList.contains('at-bottom')) {\n            that.spinnerTarget.classList.add('hidden')\n          } else {\n            that.infinityTarget.removeEventListener('scroll', scroll)\n            fetch(that.moreTarget.dataset.path, {\n              method: 'GET',\n            })\n              .then((response) => response.json())\n              .then((data) => {\n                initializeTooltips()\n                if (that.hasTbodyTarget) {\n                  that.tbodyTarget.insertAdjacentHTML('beforeend', data.table_data)\n                } else {\n                  that.tableTarget.insertAdjacentHTML('beforeend', data.table_data)\n                }\n                that.footerTarget.innerHTML = data.footer\n                that.allTarget.classList.add('disabled')\n                that.moreTarget.classList.add('disabled')\n                onScroll()\n              })\n          }\n        }\n\n        that.allTarget.classList.add('disabled')\n        that.moreTarget.classList.add('disabled')\n      })\n    })()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class PrettyCheckboxController extends Controller {\n  static targets = ['click', 'input', 'icon', 'selectAll', 'deselectAll']\n\n  connect() {\n    for (const t of this.clickTargets) {\n      t.addEventListener('click', function (e) {\n        let target = e.target.classList.contains('.menu-item') ? e.target : e.target.closest('.menu-item')\n\n        let input = target.querySelector('input[type=\"checkbox\"]')\n        let icon = target.querySelector('.fa-check')\n\n        input.checked = !input.checked\n        icon.classList.toggle('checkbox-disabled')\n      })\n    }\n  }\n\n  selectAll() {\n    this.selectAllTarget.classList.add('hidden')\n    this.deselectAllTarget.classList.remove('hidden')\n    for (const i of this.inputTargets) {\n      i.checked = true\n    }\n    for (const i of this.iconTargets) {\n      i.classList.remove('checkbox-disabled')\n    }\n  }\n\n  deselectAll() {\n    this.selectAllTarget.classList.remove('hidden')\n    this.deselectAllTarget.classList.add('hidden')\n    for (const i of this.inputTargets) {\n      i.checked = false\n    }\n    for (const i of this.iconTargets) {\n      i.classList.add('checkbox-disabled')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['ranks']\n\n  connect() {\n    if (this.hasRanksTarget) {\n      $(this.ranksTarget).on('select2:select', this.updateRankPreview)\n    }\n  }\n\n  disconnect() {\n    if (this.hasRanksTarget) {\n      $(this.ranksTarget).off()\n    }\n  }\n\n  updateRankPreview() {\n    // Since the eventListener in connect is called from jQuery,\n    // it modifies this, so that it is not the class itself, but the jQuery object,\n    // so we can't do any of the actual stimulus things here\n    const frame = document.querySelector('#program-ranks')\n\n    if (frame) {\n      if (this.value.split('_')[0] === 'from') {\n        const program_id = this.value.split('_')[1]\n        frame.src = `${window.location}/${program_id}/ranks`\n      } else {\n        frame.src = undefined\n        frame.innerHTML = ''\n      }\n    }\n  }\n}\n", "/**\n * Grays out the selected select2 option if it has a '' value, typically ones labeled \"None\"\n *\n * @param {HTMLElement} element - The select2 element whose option will be deemphasized\n * @example\n *  grayOutTheNone(myElement)\n */\nexport function grayOutTheNone(element) {\n  if ($(element).val() === '') {\n    $(element.nextElementSibling).addClass('none-selected')\n  } else {\n    $(element.nextElementSibling).removeClass('none-selected')\n  }\n}\n", "export function previewBeltGraphic($form) {\n  const formData = $form.serialize()\n  const path = `/settings/programs/ranks/preview_belt_graphic?${formData}`\n\n  var token = $('meta[name=\"csrf-token\"]').attr('content')\n  var html\n  $.ajax({\n    type: 'GET',\n    url: path,\n    beforeSend(xhr) {\n      xhr.setRequestHeader('X-CSRF-Token', token)\n    },\n    async: false,\n    complete(data) {\n      if (data.status === 200) html = data.responseText\n      else return false\n    },\n  })\n  return html\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { grayOutTheNone } from '../../helpers/gray_out_helper'\nimport { previewBeltGraphic } from '../../helpers/belt_graphic_preview_helper'\n\nfunction formChanged(element) {\n  const $form = $(element).parents('form.ranks-modal')\n  const html = previewBeltGraphic($form)\n\n  if (html) {\n    $form.find('.graphic-preview .preview-empty-message').addClass('hidden')\n    $form.find('.graphic-preview .preview').removeClass('hidden')\n  } else {\n    $form.find('.graphic-preview .preview-empty-message').removeClass('hidden')\n    $form.find('.graphic-preview .preview').addClass('hidden')\n  }\n\n  $form.find('.graphic-preview .preview').html(html)\n}\n\nexport default class extends Controller {\n  static targets = ['colorOptions', 'emblemOptions', 'dropdown', 'checkbox']\n\n  connect() {\n    if (this.hasEmblemOptionsTarget) {\n      this.emblemOptionsTargets.forEach((emblem) => {\n        $(emblem).on('select2:select', this.revealSubOptions)\n      })\n    }\n    if (this.hasColorOptionsTarget) {\n      $(this.colorOptionsTarget).on('select2:select', this.activateSecondOption)\n    }\n    if (this.hasDropdownTarget) {\n      this.dropdownTargets.forEach((dropdown) => {\n        grayOutTheNone(dropdown)\n        $(dropdown).on(\n          'select2:select',\n          (function (that, element) {\n            return function () {\n              that.formChangedSelect(element)\n            }\n          })(this, dropdown),\n        )\n      })\n    }\n    if (this.hasCheckboxTarget) {\n      this.checkboxTargets.forEach((checkbox) => {\n        $(checkbox).on(\n          'click',\n          (function (that, element) {\n            return function () {\n              that.formChangedCheckbox(element)\n            }\n          })(this, checkbox),\n        )\n      })\n    }\n  }\n\n  revealSubOptions(e) {\n    if (e.delegateTarget.value === '') {\n      $(this).parent().find('.emblem-option-selects').removeClass('revealed')\n    } else {\n      $(this).parent().find('.emblem-option-selects').addClass('revealed')\n      $(this).parent().find('.emblem-option-selects').addClass('fade-in')\n    }\n  }\n\n  activateSecondOption(e) {\n    if (e.delegateTarget.value === '') {\n      $(e.delegateTarget).parent().parent().find('.color-2-select').addClass('disabled')\n    } else {\n      $(e.delegateTarget).parent().parent().find('.color-2-select').removeClass('disabled')\n    }\n  }\n\n  formChangedSelect(element) {\n    grayOutTheNone(element)\n    formChanged(element)\n  }\n\n  formChangedCheckbox(element) {\n    formChanged(element)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class RecurringClassesController extends Controller {\n  static targets = ['classNameInput']\n\n  showClassOptions(event) {\n    if (event.target.type === 'checkbox') return\n\n    const classNameOptions = event.target.closest('.class-name-options-fields')\n    for (const classNameOption of classNameOptions.querySelectorAll('.class-name-option')) {\n      classNameOption.classList.add('hidden')\n    }\n\n    event.target.parentNode.querySelector('.class-name-option').classList.remove('hidden')\n  }\n}\n", "import { Turbo } from '@hotwired/turbo-rails'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class StudentsFilterController extends Controller {\n  static targets = ['programFilter', 'rankFilter']\n  static values = { frame: String }\n\n  // TODO: Rename this whole file or build it into a filter component\n  filter() {\n    const url = new URL(window.location)\n\n    if (this.checkedProgramTargets.length) {\n      url.searchParams.set(...this.programParams)\n    }\n\n    if (this.checkedRankTargets.length) {\n      url.searchParams.set(...this.rankParams)\n    }\n\n    if (this.hasFrameValue) {\n      const frame = document.querySelector(`#${this.frameValue}`)\n      frame.src = url\n    } else {\n      Turbo.cache.clear()\n      Turbo.visit(url)\n    }\n  }\n\n  clear() {\n    const url = `${window.location.pathname}`\n\n    Turbo.cache.clear()\n    Turbo.visit(url)\n  }\n\n  ///\n  /// private\n  ///\n\n  queryParams(targets) {\n    const ids = targets.map((target) => target.value)\n    const name = targets[0].id\n    return [name, ids]\n  }\n\n  get checkedRankTargets() {\n    return this.rankFilterTargets.filter((target) => target.checked)\n  }\n\n  get checkedProgramTargets() {\n    return this.programFilterTargets.filter((target) => target.checked)\n  }\n\n  get programParams() {\n    return this.queryParams(this.checkedProgramTargets)\n  }\n\n  get rankParams() {\n    return this.queryParams(this.checkedRankTargets)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  connect() {\n    if (this.element.classList.contains('select2-with-image')) {\n      let placeholderText = ''\n      if (this.element.dataset.placeholder) {\n        placeholderText = this.element.dataset.placeholder\n      }\n\n      $(this.element).select2({\n        theme: 'bootstrap',\n        templateSelection: this.templateImageOptions,\n        templateResult: this.templateImageOptions,\n        placeholder: placeholderText,\n        allowClear: true,\n        width: null,\n      })\n    } else if (this.element.classList.contains('select2-search')) {\n      let placeholderText = ''\n      if (this.element.dataset.placeholder) {\n        placeholderText = this.element.dataset.placeholder\n      }\n\n      $(this.element).select2({\n        theme: 'bootstrap',\n        placeholder: placeholderText,\n        allowClear: true,\n        width: null,\n      })\n    } else if (this.element.classList.contains('select2-checkmark')) {\n      $(this.element).select2({\n        theme: 'bootstrap',\n        width: null,\n        minimumResultsForSearch: Infinity,\n        templateResult(state) {\n          return $(\n            `<span class='select2--checkmark flex items-center'>\n              <i class='fas fa-check soft-hidden'></i>\n              <span class='ml-2'>${state.text}</span>\n            </span>`,\n          )\n        },\n      })\n    } else if (this.element.classList.contains('select2-people')) {\n      let searchType = this.element.dataset.searchType\n        ? this.element.dataset.searchType\n        : '[type:Student,Prospect]'\n\n      $(this.element).select2({\n        theme: 'bootstrap',\n        templateSelection: this.templateImageOptions,\n        templateResult: this.templateImageOptions,\n        escapeMarkup(markup) {\n          return markup\n        },\n        placeholder: $('.person-select-placeholder').html(),\n        ajax: {\n          url: '/select_search?format=json',\n          dataType: 'json',\n          data(params) {\n            var query = { query: `${searchType} ${params.term}` }\n\n            return query\n          },\n        },\n      })\n    } else {\n      $(this.element).select2({\n        theme: 'bootstrap',\n        width: null,\n        minimumResultsForSearch: Infinity,\n      })\n    }\n  }\n\n  templateImageOptions(state) {\n    if (!state.id) return state.text\n\n    let $state = $(`<span class=\"flex items-center\">${state.text}</span>`)\n    if ($(state.element).data('image') !== undefined) {\n      const image_data = $(state.element).data('image')\n      $state = $(`<span class=\"flex items-center\">\n                    <img src=\"${image_data}\" class=\"employee-image\" />\n                    ${state.text}\n                  </span>`)\n    }\n    if (state.image) {\n      $state = $(`<span class=\"flex items-center\">\n                    <img src=\"${state.image}\" class=\"employee-image\" />\n                    ${state.text}\n                  </span>`)\n    }\n    return $state\n  }\n\n  formatText(icon) {\n    return $(`<span><i class=\"fas ${$(icon.element).data('icon')}\"></i> ${icon.text}</span>`)\n  }\n}\n", "import IMask from 'imask'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  connect() {\n    const maskOptions = {\n      overwrite: true,\n      autofix: true,\n      mask: 'H:MM',\n      blocks: {\n        H: {\n          mask: Number,\n          placeholderChar: '0',\n          min: 1,\n          max: 12,\n          scale: 0,\n          normalizeZeros: true,\n        },\n        MM: {\n          mask: IMask.MaskedRange,\n          from: 0,\n          to: 59,\n          maxLength: 2,\n        },\n      },\n    }\n\n    IMask(this.element, maskOptions)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class ToggleClassController extends Controller {\n  static targets = ['element', 'required']\n  static values = { selector: String }\n  static classes = ['actionable']\n\n  connect() {\n    if (this.hasSelectorValue) {\n      this.toToggle = document.querySelector(this.selectorValue)\n    } else if (this.hasElementTarget) {\n      this.toToggle = this.elementTarget\n    } else {\n      this.toToggle = this.element\n    }\n\n    const eventId = this.toToggle.id || this.toToggle.classList[0]\n\n    this.addEvent = new Event(`add:${eventId}`)\n    this.removeEvent = new Event(`remove:${eventId}`)\n  }\n\n  add() {\n    this.toToggle.classList.add(this.actionableClass)\n    if (this.hasRequiredTarget) {\n      this.requiredTarget.required = false\n    }\n\n    document.dispatchEvent(this.addEvent)\n  }\n\n  remove() {\n    this.toToggle.classList.remove(this.actionableClass)\n    if (this.hasRequiredTarget) {\n      this.requiredTarget.required = true\n    }\n\n    document.dispatchEvent(this.removeEvent)\n  }\n\n  toggle() {\n    this.toToggle.classList.toggle(this.actionableClass)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static outlets = ['tom-select', 'collapse--component']\n  static targets = ['nextMembership', 'hiddenRank']\n  static values = { nextMembership: String }\n\n  handleProgramChange({ target }) {\n    this.disableAllRankDropdowns()\n\n    const rankDropdown = this.tomSelectOutlets.find(\n      (sel) => parseInt(sel.context.element.dataset.programId) === parseInt(target.value),\n    )\n    const allowEnable = rankDropdown.context.element.dataset.allowEnable === 'true'\n\n    const hiddenRank = this.hiddenRankTargets.find(\n      (sel) => parseInt(sel.dataset.programId) === parseInt(target.value),\n    )\n\n    if (allowEnable) {\n      rankDropdown.tomSelect.enable()\n    } else {\n      hiddenRank.disabled = false\n    }\n  }\n\n  selectNoProgram() {\n    this.disableAllRankDropdowns()\n  }\n\n  //\n  // private\n  //\n\n  disableAllRankDropdowns() {\n    this.tomSelectOutlets.forEach((rankDropdown) => {\n      rankDropdown.tomSelect.disable()\n    })\n    this.hiddenRankTargets.forEach((hiddenRank) => {\n      hiddenRank.disabled = true\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\n    'membershipAmount',\n    'membershipDueDate',\n    'membershipEndDate',\n    'taxRate',\n    'subtotal',\n    'salesTax',\n    'grandTotal',\n    'taxExempt',\n    'dateGroup',\n    'dateRadio',\n    'attendanceRadio',\n    'attendanceGroup',\n    'membershipAttendance',\n    'unlimitedRadio',\n    'toggleRegistrationFee',\n    'registrationFeeContainer',\n    'registrationFeeAmount',\n    'registrationFeeTaxRate',\n    'intervalDuration',\n  ]\n\n  static outlets = ['flatpickr']\n\n  static values = [\n    { name: 'taxExempt', type: Boolean, default: false },\n    { name: 'total', type: Number, default: 0 },\n    { name: 'subtotal', type: Number, default: 0 },\n    { name: 'salesTax', type: Number, default: 0 },\n  ]\n\n  toggleRegistrationFee({ params, target }) {\n    const parsedTemplateId = params.templateId.toString()\n    const registrationFeeInput = this.registrationFeeInput(parsedTemplateId)\n    const registrationFeeContainer = this.registrationFeeContainer(parsedTemplateId)\n    registrationFeeInput.disabled = !target.checked\n    registrationFeeContainer.classList.toggle('hidden')\n    this.updateTotals()\n  }\n\n  toggleTax() {\n    this.taxExemptValue = !this.taxExemptValue\n    this.taxExemptTargets.forEach((taxExemptTarget) => {\n      taxExemptTarget.value = this.taxExemptValue\n    })\n    this.updateTotals()\n  }\n\n  startDateChanged({ target }) {\n    this.updateTotals()\n    const endDateOutlet = this.endDateOutlet(target.dataset.templateId)\n    if (!endDateOutlet) return\n\n    const selectedDate = new Date(target.value)\n    if (endDateOutlet.element.disabled) {\n      this.setEndDate(selectedDate, endDateOutlet)\n    } else {\n      let newDate = new Date(selectedDate.getTime())\n      newDate.setDate(newDate.getDate() + 1)\n      endDateOutlet.fp.set('minDate', newDate.toISOString().slice(0, 10))\n    }\n  }\n\n  setEndDate(selectedDate, endDateOutlet) {\n    const intervalDurationElement = this.intervalDuration(endDateOutlet.element.dataset.templateId)\n    if (!intervalDurationElement) return\n    const intervalDuration = intervalDurationElement.value\n    const endDate = this.addIntervalToDate(selectedDate, intervalDuration)\n    endDateOutlet.fp.setDate(endDate.toISOString().slice(0, 10))\n  }\n\n  updateTotals() {\n    this.resetTotals()\n    this.membershipDueDateTargets.forEach((membershipDueDate) => {\n      if (this.isTodayValue(membershipDueDate.value)) {\n        const templateId = membershipDueDate.dataset.templateId\n        this.calculateTotals(templateId)\n      }\n    })\n    this.updateDisplay()\n  }\n\n  durationKindChange({ params: { templateId } }) {\n    const parsedTemplateId = templateId.toString()\n    if (this.dateRadio(parsedTemplateId).checked) {\n      this.handleDateRadioChange(parsedTemplateId)\n    } else if (this.attendanceRadio(parsedTemplateId).checked) {\n      this.handleAttendanceRadioChange(parsedTemplateId)\n    } else if (this.unlimitedRadio(parsedTemplateId).checked) {\n      this.handleUnlimitedRadioChange(parsedTemplateId)\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  calculateTotals(templateId) {\n    let value = this.amountForMembershipTemplate(templateId)\n    const taxRate = this.taxRateForMembershipTemplate(templateId)\n    const registrationFee = this.registrationFeeForMembershipTemplate(templateId)\n    const registrationFeeTaxRate = this.taxRateForRegistrationFee(templateId)\n    let taxAmount = value * taxRate\n    if (registrationFee) {\n      const registrationFeeTaxAmount = registrationFee * registrationFeeTaxRate\n      value += registrationFee\n      taxAmount += registrationFeeTaxAmount\n    }\n    this.subtotalValue += value\n    this.salesTaxValue += Math.round(taxAmount)\n    const total = value + taxAmount\n    this.totalValue += total\n  }\n\n  handleUnlimitedRadioChange(templateId) {\n    this.attendanceGroup(templateId).classList.add('hidden')\n    this.dateGroup(templateId).classList.add('hidden')\n    this.membershipEndDate(templateId).disabled = true\n    this.membershipEndDate(templateId).nextElementSibling.disabled = true\n    this.membershipAttendance(templateId).disabled = true\n  }\n\n  handleDateRadioChange(templateId) {\n    this.attendanceGroup(templateId).classList.add('hidden')\n    this.dateGroup(templateId).classList.remove('hidden')\n    this.membershipEndDate(templateId).disabled = false\n    this.membershipEndDate(templateId).nextElementSibling.disabled = false\n    this.membershipAttendance(templateId).disabled = true\n  }\n\n  handleAttendanceRadioChange(templateId) {\n    this.attendanceGroup(templateId).classList.remove('hidden')\n    this.dateGroup(templateId).classList.add('hidden')\n    this.membershipEndDate(templateId).disabled = true\n    this.membershipEndDate(templateId).nextElementSibling.disabled = true\n    this.membershipAttendance(templateId).disabled = false\n  }\n\n  // Early return in case the billing is turned off or we're on full page signup\n  // and haven't gotten there yet\n  updateDisplay() {\n    if (!this.hasSubtotalTarget) return\n    if (!this.hasSalesTaxTarget) return\n    if (!this.hasGrandTotalTarget) return\n    this.subtotalTarget.value = this.subtotalValue\n    this.salesTaxTarget.value = this.salesTaxValue\n    this.grandTotalTarget.value = this.totalValue\n  }\n\n  resetTotals() {\n    this.totalValue = 0\n    this.subtotalValue = 0\n    this.salesTaxValue = 0\n  }\n\n  taxRateForMembershipTemplate(templateId) {\n    const taxRateElement = this.taxRate(templateId)\n    if (!taxRateElement) return 0.0\n    return this.taxExemptValue ? 0.0 : parseFloat(taxRateElement.value)\n  }\n\n  taxRateForRegistrationFee(templateId) {\n    const taxRateElement = this.registrationFeeTaxRate(templateId)\n    if (!taxRateElement) return 0.0\n    return this.taxExemptValue ? 0.0 : parseFloat(taxRateElement.value)\n  }\n\n  amountForMembershipTemplate(templateId) {\n    const amountElement = this.membershipAmount(templateId)\n    if (!amountElement) return 0.0\n    return parseFloat(amountElement.value)\n  }\n\n  registrationFeeForMembershipTemplate(templateId) {\n    const registrationFeeInput = this.registrationFeeInput(templateId)\n    if (registrationFeeInput && !registrationFeeInput.disabled) {\n      const amount = this.registrationFeeInput(templateId).value\n      return parseFloat(amount)\n    }\n  }\n\n  isTodayValue(value) {\n    if (!value) return false\n\n    const beginningOfDay = new Date()\n    const valueDate = new Date(value)\n\n    beginningOfDay.setHours(0, 0, 0, 0)\n    return valueDate.toISOString().slice(0, 10) === beginningOfDay.toISOString().slice(0, 10)\n  }\n\n  endDateOutlet(templateId) {\n    return this.flatpickrOutlets.find(function (outlet) {\n      return (\n        outlet.element.dataset.templateId === templateId &&\n        outlet.element.dataset.calculateMembershipTotalsTarget === 'membershipEndDate'\n      )\n    })\n  }\n\n  addIntervalToDate(date, interval) {\n    const [value, unit] = interval.split(' ')\n    let newDate = new Date(date.getTime())\n    let momentDate = window.moment(newDate)\n    momentDate.add(value, unit)\n    return momentDate.toDate()\n  }\n\n  attendanceGroup(templateId) {\n    return this.attendanceGroupTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  dateGroup(templateId) {\n    return this.dateGroupTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  attendanceRadio(templateId) {\n    return this.attendanceRadioTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  dateRadio(templateId) {\n    return this.dateRadioTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  unlimitedRadio(templateId) {\n    return this.unlimitedRadioTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  registrationFeeInput(templateId) {\n    return this.registrationFeeAmountTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  registrationFeeContainer(templateId) {\n    return this.registrationFeeContainerTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  membershipDueDate(templateId) {\n    return this.membershipDueDateTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  membershipEndDate(templateId) {\n    return this.membershipEndDateTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  membershipAmount(templateId) {\n    return this.membershipAmountTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  membershipAttendance(templateId) {\n    return this.membershipAttendanceTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  taxRate(templateId) {\n    return this.taxRateTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  registrationFeeTaxRate(templateId) {\n    return this.registrationFeeTaxRateTargets.find((el) => el.dataset.templateId === templateId)\n  }\n\n  intervalDuration(templateId) {\n    return this.intervalDurationTargets.find((el) => el.dataset.templateId === templateId)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// This only works with a checkbox or radio buttons being the disabler at the moment\n// will add support for other element types as we need them\nexport default class extends Controller {\n  static targets = ['disabler', 'disablee']\n  static values = {\n    disable: { type: String, default: '0' },\n  }\n\n  connect() {\n    if (this.hasDisablerTarget) this.toggle(false)\n  }\n\n  toggle(shouldFocus = true) {\n    if (this.disablerTarget.type === 'checkbox' || this.disablerTarget.type === 'radio') {\n      this.disableeTargets.forEach((disablee) => {\n        disablee.disabled = !this.disablerTarget.checked\n      })\n    } else {\n      this.disableeTargets.forEach((disablee) => {\n        disablee.disabled = this.disablerTarget.value === this.disableValue\n      })\n    }\n    if (!this.disableeTarget.disabled && shouldFocus) this.disableeTarget.focus()\n    if (this.disablerTarget.disabled) this.disableeTarget.value = ''\n  }\n\n  betterToggle() {\n    this.disableeTarget.disabled = !this.disableeTarget.disabled\n  }\n\n  add() {\n    this.disableeTarget.disabled = true\n    if (this.disableeTarget.getAttribute('data-toggle-disable-remove-value') !== null) {\n      this.disableeTarget.value = ''\n      this.disableeTarget.dispatchEvent(new Event('change', { bubbles: true }))\n    }\n  }\n\n  remove() {\n    this.disableeTarget.disabled = false\n  }\n}\n", "export function elementIsFlatpickr(element) {\n  return (\n    (element.getAttribute('data-controller') || '').includes('flatpickr') ||\n    element.classList.contains('flatpickr-input')\n  )\n}\n", "import { elementIsVisible } from '../helpers/visibility_helper'\nimport { elementIsFlatpickr } from '../helpers/flatpickr_helper'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['submit', 'required', 'radioBtnGroup']\n\n  connect() {\n    this.checkForDisable()\n  }\n\n  requiredTargetConnected() {\n    this.change()\n  }\n\n  requiredTargetDisconnected() {\n    this.change()\n  }\n\n  change() {\n    this.checkForDisable()\n  }\n\n  checkForDisable() {\n    if (!this.hasSubmitTarget) return\n\n    if (this.requiredTargets.length === 0 || this.valid) {\n      this.submitTarget.disabled = false\n    } else {\n      this.submitTarget.disabled = true\n    }\n  }\n\n  isTargetBlank(el) {\n    if (el.disabled) return false\n    const blank = el.value === null || el.value === ''\n    return blank\n  }\n\n  get valid() {\n    if (this.hasBlankFormFields()) {\n      return false\n    }\n\n    if (!this.hasCheckedRadioButtons() || !this.hasCheckedCheckboxes()) {\n      return false\n    }\n\n    return true\n  }\n\n  hasBlankFormFields() {\n    if (this.formFields.length === 0) {\n      return false\n    }\n    return this.formFields.some(this.isTargetBlank)\n  }\n\n  hasCheckedRadioButtons() {\n    if (this.radioButtons.length === 0 || !this.radioButtons.some((el) => !el.disabled)) {\n      return true\n    }\n    return this.radioBtnGroupTargets.every((group) => {\n      const checkedRadios = group.querySelectorAll('input[type=\"radio\"]:checked')\n      return checkedRadios.length > 0\n    })\n  }\n\n  hasCheckedCheckboxes() {\n    return this.checkboxFieldsets.length === 0 ? true : this.checkedCheckboxes\n  }\n\n  get radioButtons() {\n    return this.requiredTargets.filter((target) => target.type === 'radio')\n  }\n\n  get checkboxFieldsets() {\n    return this.requiredTargets.filter((target) => target.tagName === 'FIELDSET')\n  }\n\n  get checkedCheckboxes() {\n    return this.checkboxFieldsets.every((fieldset) => {\n      const checkboxes = fieldset.querySelectorAll('input[type=\"checkbox\"]')\n      return Array.from(checkboxes).some((checkbox) => checkbox.checked)\n    })\n  }\n\n  get formFields() {\n    return this.requiredTargets.filter(\n      (target) =>\n        target.type !== 'radio' &&\n        target.tagName !== 'FIELDSET' &&\n        (elementIsVisible(target) || elementIsFlatpickr(target)),\n    )\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport TomSelect from 'tom-select'\n\nexport default class extends Controller {\n  static values = { relativeTo: String, selected: String }\n\n  connect() {\n    this.tomSelect = new TomSelect(this.element, { ...this.sharedOptions, ...this.extraOptions })\n\n    if (this.selectedValue) {\n      this.tomSelect.setValue(this.selectedValue?.split(','), true)\n    }\n\n    this.tomSelect.on('change', (value) => {\n      this.selectedValue = value\n    })\n\n    if (!this.hasRelativeToValue) return\n\n    const relativeTo = this.element.closest(this.relativeToValue)\n\n    if (!relativeTo) throw new Error(`Could not find relativeTo element: ${this.relativeToValue}`)\n\n    this.tomSelect.on('dropdown_open', (dropdown) => {\n      const { top: relativeToTop, left: relativeToLeft } = relativeTo.getBoundingClientRect()\n      const tsControl = this.tomSelect.control\n      const {\n        top: controlTop,\n        left: controlLeft,\n        width: controlWidth,\n        height: controlHeight,\n      } = tsControl.getBoundingClientRect()\n\n      dropdown.style.width = `${controlWidth}px`\n\n      dropdown.style.left = `${controlLeft - relativeToLeft}px`\n      dropdown.style.top = `${controlTop - relativeToTop + controlHeight}px`\n    })\n  }\n\n  disconnect() {\n    this.tomSelect.destroy()\n  }\n\n  ///\n  /// private\n  ///\n  get defaultOptions() {\n    return {\n      plugins: ['no_backspace_delete'],\n      controlInput: null,\n      maxItems: 1,\n      selectOnTab: true,\n      maxOptions: null,\n    }\n  }\n\n  get extraOptionsMap() {\n    return {\n      'tom-select-with-search': { search: true, create: true, createOnBlur: true },\n      'tom-select-with-search-no-create': { search: true, create: false, createOnBlur: false },\n      'tom-select-multi': { maxItems: null },\n      'tom-select-no-search': { search: false, render: { no_results: null } },\n    }\n  }\n\n  get sharedOptions() {\n    const selectedValue = this.selectedValue\n\n    return {\n      highlight: false,\n      plugins: ['remove_button'],\n      persist: false,\n      selectOnTab: true,\n      maxOptions: null,\n      onInitialize() {\n        this.wrapper.classList.remove('hidden')\n\n        if (this.control.classList.contains('tom-select-multi')) return\n\n        // We want other tomselects to be initialized before we set the value\n        setTimeout(() => {\n          this.addItem(selectedValue)\n        }, 50)\n      },\n    }\n  }\n\n  get extraOptions() {\n    if (this.element.classList.contains('tom-select-with-search')) {\n      return this.extraOptionsMap['tom-select-with-search']\n    } else if (this.element.classList.contains('tom-select-with-search-no-create')) {\n      return this.extraOptionsMap['tom-select-with-search-no-create']\n    } else if (this.element.classList.contains('tom-select-multi')) {\n      return this.extraOptionsMap['tom-select-multi']\n    } else if (this.element.classList.contains('tom-select-no-search')) {\n      return this.extraOptionsMap['tom-select-no-search']\n    }\n    return this.defaultOptions\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  connect() {\n    setTimeout(() => {\n      $(this.element).tooltip({ html: true, delay: { show: 250, hide: 100 }, trigger: 'hover' })\n    })\n  }\n\n  off() {\n    $(this.element).tooltip('hide')\n    $(this.element).tooltip('disable')\n  }\n\n  on() {\n    $(this.element).tooltip('enable')\n  }\n\n  swapText({ params: { text } }) {\n    $(this.element).attr('data-original-title', text).tooltip('fixTitle')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class extends Controller {\n  connect() {\n    useClickOutside(this)\n  }\n\n  addHTTPS() {\n    if (this.hasHTTP) return\n\n    this.element.value = `https://${this.element.value}`\n  }\n\n  clickOutside() {\n    if (!this.element.value) return\n\n    this.addHTTPS()\n  }\n\n  ///\n  /// private\n  ///\n\n  get hasHTTP() {\n    return this.element.value.match(/^https?:\\/\\//) || this.element.value.match(/^http:\\/\\//)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Takes a frame, and replaces the src of the frame with the frame src or window source + a query param generated\n// by the attached input field.\nexport default class extends Controller {\n  static values = { frame: String }\n\n  change(e) {\n    const input = e.target\n    const frame = document.querySelector(`#${this.frameValue}`)\n\n    let src = frame.src || window.location.href\n    const url = new URL(src)\n\n    let params = new URLSearchParams(url.search)\n    params.set(input.id, input.value)\n\n    frame.src = `${window.location.href}?${params.toString()}`\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['processPayment', 'processPaymentBtn']\n  static values = { submitPayment: Boolean }\n\n  connect() {\n    this.form = this.element\n    this.submitFooter = this.form.querySelector('.footer')\n\n    if (!this.submitPaymentValue) {\n      this.processPaymentBtnTarget.classList.add('hidden')\n    }\n  }\n\n  submitPayment() {\n    this.submitPaymentValue = true\n    this.processPaymentBtnTarget.classList.remove('hidden')\n    this.submitFooter.classList.add('hidden')\n  }\n\n  noPayment() {\n    this.submitPaymentValue = false\n    this.processPaymentBtnTarget.classList.add('hidden')\n    this.submitFooter.classList.remove('hidden')\n  }\n\n  paymentProcessingComponent() {\n    return this.application.getControllerForElementAndIdentifier(\n      this.processPaymentTarget,\n      'payment-methods--component',\n    )\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  connect() {\n    fetch(this.element.dataset.src)\n      .then((response) => response.blob())\n      .then((imageBlob) => {\n        const url = URL.createObjectURL(imageBlob)\n        this.loadImage(url)\n      })\n  }\n\n  // TODO: these should be targets instead of querySelectors\n  loadImage(src) {\n    this.element.querySelector('.loading').remove()\n\n    this.element.querySelector('img').src = src\n  }\n}\n", "export function setCookie(name, value, expires) {\n  if (expires) {\n    document.cookie = `${name}=${value}; expires=${expires.toUTCString()}`\n  } else {\n    document.cookie = `${name}=${value}; path=/`\n  }\n}\n\nexport function getCookie(name) {\n  const cookies = Object.fromEntries(\n    document.cookie.split(/; /).map((c) => {\n      const [key, v] = c.split('=', 2)\n      return [key, decodeURIComponent(v)]\n    }),\n  )\n  return cookies[name] || ''\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { getCookie, setCookie } from '../helpers/cookies'\n\nexport default class extends Controller {\n  static targets = ['install', 'iosPrompt', 'androidPrompt', 'modal']\n\n  connect() {\n    window.addEventListener('beforeinstallprompt', this.initializePrompt.bind(this))\n\n    if (!this.isAllowedToShowPrompt) {\n      this.destroy()\n      return\n    }\n\n    if (this.isAndroid) {\n      this.destroyIosPrompt()\n    }\n\n    if (this.isIos) {\n      this.destroyAndroidPrompt()\n    }\n\n    if (!this.shouldShowIosPrompt) return\n\n    this.showIosPrompt()\n  }\n\n  disconnect() {\n    window.removeEventListener('beforeinstallprompt', this.initializePrompt.bind(this))\n  }\n\n  dismissIosPrompt() {\n    setCookie(this.cookieName, 'true', this.softExpirationDate)\n\n    this.iosPromptTarget.classList.remove('open')\n    this.destroy()\n  }\n\n  hideIosPrompt() {\n    setCookie(this.cookieName, 'true', this.hardExpirationDate)\n\n    this.iosPromptTarget.classList.remove('open')\n    this.destroy()\n  }\n\n  dismissAndroidPrompt() {\n    setCookie(this.cookieName, 'true', this.softExpirationDate)\n\n    this.androidPromptTarget.classList.remove('open')\n    this.destroy()\n  }\n\n  hideAndroidPrompt() {\n    setCookie(this.cookieName, 'true', this.hardExpirationDate)\n\n    this.androidPromptTarget.classList.remove('open')\n    this.destroy()\n  }\n\n  showIosPrompt() {\n    if (!this.hasIosPromptTarget) return\n\n    this.iosPromptTarget.classList.add('open')\n    if (this.isNotSafari) {\n      this.iosPromptTarget.querySelector('#not-safari').classList.remove('hidden')\n    } else {\n      this.iosPromptTarget.querySelector('#safari').classList.remove('hidden')\n    }\n  }\n\n  showAndroidPrompt() {\n    if (!this.hasAndroidPromptTarget) return\n\n    this.androidPromptTarget.classList.add('open')\n  }\n\n  destroyIosPrompt() {\n    if (!this.hasIosPromptTarget) return\n\n    this.iosPromptTarget.remove()\n  }\n\n  destroyAndroidPrompt() {\n    if (!this.hasAndroidPromptTarget) return\n\n    this.androidPromptTarget.remove()\n  }\n\n  async install() {\n    if (this.deferredPrompt !== undefined) {\n      this.deferredPrompt.prompt()\n\n      const { outcome } = await this.deferredPrompt.userChoice\n\n      if (outcome === 'accepted') {\n        for (const target of this.installTargets) {\n          target.classList.add('hidden')\n\n          if (this.isAndroid) {\n            $(this.modalTarget).modal('show')\n            this.hideAndroidPrompt()\n          }\n        }\n      }\n\n      this.destroy()\n    }\n  }\n\n  initializePrompt(event) {\n    // Prevent Chrome 67 and earlier from automatically showing the prompt\n    event.preventDefault()\n\n    // Stash the event so it can be triggered later.\n    this.deferredPrompt = event\n\n    // Update UI notify the user they can add to home screen\n    for (const target of this.installTargets) {\n      target.classList.remove('hidden')\n    }\n\n    if (!this.isAllowedToShowPrompt) return\n\n    if (this.isAndroid) {\n      this.showAndroidPrompt()\n    }\n  }\n\n  destroy() {\n    if (this.hasAndroidPromptTarget) {\n      this.waitForAnimations(this.androidPromptTarget).then(() => {\n        this.androidPromptTarget.remove()\n      })\n    }\n\n    if (this.hasIosPromptTarget) {\n      this.waitForAnimations(this.iosPromptTarget).then(() => {\n        this.iosPromptTarget.remove()\n      })\n    }\n  }\n\n  async waitForAnimations(element) {\n    await Promise.all(element.getAnimations().map((animation) => animation.finished))\n  }\n\n  get isIos() {\n    return /iphone|ipad|ipod/.test(this.userAgent.toLowerCase())\n  }\n\n  get isNotSafari() {\n    return this.isIos && /CriOS|FxiOS/.test(this.userAgent)\n  }\n\n  get isAndroid() {\n    return /android/.test(this.userAgent.toLowerCase())\n  }\n\n  get shouldShowIosPrompt() {\n    return this.hasIosPromptTarget && this.isIos && !this.isStandalone\n  }\n\n  get softExpirationDate() {\n    const expirationDays = 3\n    const today = new Date()\n    const expirationDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() + expirationDays)\n    return expirationDate\n  }\n\n  get hardExpirationDate() {\n    const expirationYears = 10\n    const today = new Date()\n    const expirationDate = new Date(today.getFullYear() + expirationYears, today.getMonth(), today.getDate())\n\n    return expirationDate\n  }\n\n  get isAllowedToShowPrompt() {\n    const cookie = getCookie(this.cookieName)\n    return cookie !== 'true'\n  }\n\n  get cookieName() {\n    return 'kicksite_SuppressPWAInstallPrompt'\n  }\n\n  get userAgent() {\n    return window.navigator.userAgent\n  }\n\n  get isStandalone() {\n    return 'standalone' in window.navigator && window.navigator.standalone\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { post } from '../helpers/fetch_helper'\n\nexport default class extends Controller {\n  static values = { section: String, path: String }\n\n  connect() {\n    let user_agent = window.navigator.userAgent\n    let mobile = window.navigator.standalone\n\n    post('/beacon_transmissions', {\n      beacon_transmission: {\n        section: this.sectionValue,\n        path: this.pathValue,\n        user_agent,\n        mobile,\n      },\n    })\n\n    this.element.remove()\n  }\n}\n", "export const HOOKS = [\n    \"onChange\",\n    \"onClose\",\n    \"onDayCreate\",\n    \"onDestroy\",\n    \"onKeyDown\",\n    \"onMonthChange\",\n    \"onOpen\",\n    \"onParseConfig\",\n    \"onReady\",\n    \"onValueUpdate\",\n    \"onYearChange\",\n    \"onPreCalendarPosition\",\n];\nexport const defaults = {\n    _disable: [],\n    allowInput: false,\n    allowInvalidPreload: false,\n    altFormat: \"F j, Y\",\n    altInput: false,\n    altInputClass: \"form-control input\",\n    animate: typeof window === \"object\" &&\n        window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n    ariaDateFormat: \"F j, Y\",\n    autoFillDefaultTime: true,\n    clickOpens: true,\n    closeOnSelect: true,\n    conjunction: \", \",\n    dateFormat: \"Y-m-d\",\n    defaultHour: 12,\n    defaultMinute: 0,\n    defaultSeconds: 0,\n    disable: [],\n    disableMobile: false,\n    enableSeconds: false,\n    enableTime: false,\n    errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n    getWeek: (givenDate) => {\n        const date = new Date(givenDate.getTime());\n        date.setHours(0, 0, 0, 0);\n        date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n        var week1 = new Date(date.getFullYear(), 0, 4);\n        return (1 +\n            Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n                3 +\n                ((week1.getDay() + 6) % 7)) /\n                7));\n    },\n    hourIncrement: 1,\n    ignoredFocusElements: [],\n    inline: false,\n    locale: \"default\",\n    minuteIncrement: 5,\n    mode: \"single\",\n    monthSelectorType: \"dropdown\",\n    nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n    noCalendar: false,\n    now: new Date(),\n    onChange: [],\n    onClose: [],\n    onDayCreate: [],\n    onDestroy: [],\n    onKeyDown: [],\n    onMonthChange: [],\n    onOpen: [],\n    onParseConfig: [],\n    onReady: [],\n    onValueUpdate: [],\n    onYearChange: [],\n    onPreCalendarPosition: [],\n    plugins: [],\n    position: \"auto\",\n    positionElement: undefined,\n    prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n    shorthandCurrentMonth: false,\n    showMonths: 1,\n    static: false,\n    time_24hr: false,\n    weekNumbers: false,\n    wrap: false,\n};\n", "export const english = {\n    weekdays: {\n        shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        longhand: [\n            \"Sunday\",\n            \"Monday\",\n            \"Tuesday\",\n            \"Wednesday\",\n            \"Thursday\",\n            \"Friday\",\n            \"Saturday\",\n        ],\n    },\n    months: {\n        shorthand: [\n            \"Jan\",\n            \"Feb\",\n            \"Mar\",\n            \"Apr\",\n            \"May\",\n            \"Jun\",\n            \"Jul\",\n            \"Aug\",\n            \"Sep\",\n            \"Oct\",\n            \"Nov\",\n            \"Dec\",\n        ],\n        longhand: [\n            \"January\",\n            \"February\",\n            \"March\",\n            \"April\",\n            \"May\",\n            \"June\",\n            \"July\",\n            \"August\",\n            \"September\",\n            \"October\",\n            \"November\",\n            \"December\",\n        ],\n    },\n    daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    firstDayOfWeek: 0,\n    ordinal: (nth) => {\n        const s = nth % 100;\n        if (s > 3 && s < 21)\n            return \"th\";\n        switch (s % 10) {\n            case 1:\n                return \"st\";\n            case 2:\n                return \"nd\";\n            case 3:\n                return \"rd\";\n            default:\n                return \"th\";\n        }\n    },\n    rangeSeparator: \" to \",\n    weekAbbreviation: \"Wk\",\n    scrollTitle: \"Scroll to increment\",\n    toggleTitle: \"Click to toggle\",\n    amPM: [\"AM\", \"PM\"],\n    yearAriaLabel: \"Year\",\n    monthAriaLabel: \"Month\",\n    hourAriaLabel: \"Hour\",\n    minuteAriaLabel: \"Minute\",\n    time_24hr: false,\n};\nexport default english;\n", "export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n    let t;\n    return function () {\n        clearTimeout(t);\n        t = setTimeout(() => fn.apply(this, arguments), wait);\n    };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n", "export function toggleClass(elem, className, bool) {\n    if (bool === true)\n        return elem.classList.add(className);\n    elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n    const e = window.document.createElement(tag);\n    className = className || \"\";\n    content = content || \"\";\n    e.className = className;\n    if (content !== undefined)\n        e.textContent = content;\n    return e;\n}\nexport function clearNode(node) {\n    while (node.firstChild)\n        node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n    if (condition(node))\n        return node;\n    else if (node.parentNode)\n        return findParent(node.parentNode, condition);\n    return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n    const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n    if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n        numInput.type = \"number\";\n    }\n    else {\n        numInput.type = \"text\";\n        numInput.pattern = \"\\\\d*\";\n    }\n    if (opts !== undefined)\n        for (const key in opts)\n            numInput.setAttribute(key, opts[key]);\n    wrapper.appendChild(numInput);\n    wrapper.appendChild(arrowUp);\n    wrapper.appendChild(arrowDown);\n    return wrapper;\n}\nexport function getEventTarget(event) {\n    try {\n        if (typeof event.composedPath === \"function\") {\n            const path = event.composedPath();\n            return path[0];\n        }\n        return event.target;\n    }\n    catch (error) {\n        return event.target;\n    }\n}\n", "import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n    D: doNothing,\n    F: function (dateObj, monthName, locale) {\n        dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n    },\n    G: (dateObj, hour) => {\n        dateObj.setHours(parseFloat(hour));\n    },\n    H: (dateObj, hour) => {\n        dateObj.setHours(parseFloat(hour));\n    },\n    J: (dateObj, day) => {\n        dateObj.setDate(parseFloat(day));\n    },\n    K: (dateObj, amPM, locale) => {\n        dateObj.setHours((dateObj.getHours() % 12) +\n            12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n    },\n    M: function (dateObj, shortMonth, locale) {\n        dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n    },\n    S: (dateObj, seconds) => {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n    W: function (dateObj, weekNum, locale) {\n        const weekNumber = parseInt(weekNum);\n        const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n        date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n        return date;\n    },\n    Y: (dateObj, year) => {\n        dateObj.setFullYear(parseFloat(year));\n    },\n    Z: (_, ISODate) => new Date(ISODate),\n    d: (dateObj, day) => {\n        dateObj.setDate(parseFloat(day));\n    },\n    h: (dateObj, hour) => {\n        dateObj.setHours(parseFloat(hour));\n    },\n    i: (dateObj, minutes) => {\n        dateObj.setMinutes(parseFloat(minutes));\n    },\n    j: (dateObj, day) => {\n        dateObj.setDate(parseFloat(day));\n    },\n    l: doNothing,\n    m: (dateObj, month) => {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    n: (dateObj, month) => {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    s: (dateObj, seconds) => {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n    w: doNothing,\n    y: (dateObj, year) => {\n        dateObj.setFullYear(2000 + parseFloat(year));\n    },\n};\nexport const tokenRegex = {\n    D: \"(\\\\w+)\",\n    F: \"(\\\\w+)\",\n    G: \"(\\\\d\\\\d|\\\\d)\",\n    H: \"(\\\\d\\\\d|\\\\d)\",\n    J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n    K: \"\",\n    M: \"(\\\\w+)\",\n    S: \"(\\\\d\\\\d|\\\\d)\",\n    U: \"(.+)\",\n    W: \"(\\\\d\\\\d|\\\\d)\",\n    Y: \"(\\\\d{4})\",\n    Z: \"(.+)\",\n    d: \"(\\\\d\\\\d|\\\\d)\",\n    h: \"(\\\\d\\\\d|\\\\d)\",\n    i: \"(\\\\d\\\\d|\\\\d)\",\n    j: \"(\\\\d\\\\d|\\\\d)\",\n    l: \"(\\\\w+)\",\n    m: \"(\\\\d\\\\d|\\\\d)\",\n    n: \"(\\\\d\\\\d|\\\\d)\",\n    s: \"(\\\\d\\\\d|\\\\d)\",\n    u: \"(.+)\",\n    w: \"(\\\\d\\\\d|\\\\d)\",\n    y: \"(\\\\d{2})\",\n};\nexport const formats = {\n    Z: (date) => date.toISOString(),\n    D: function (date, locale, options) {\n        return locale.weekdays.shorthand[formats.w(date, locale, options)];\n    },\n    F: function (date, locale, options) {\n        return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n    },\n    G: function (date, locale, options) {\n        return pad(formats.h(date, locale, options));\n    },\n    H: (date) => pad(date.getHours()),\n    J: function (date, locale) {\n        return locale.ordinal !== undefined\n            ? date.getDate() + locale.ordinal(date.getDate())\n            : date.getDate();\n    },\n    K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n    M: function (date, locale) {\n        return monthToStr(date.getMonth(), true, locale);\n    },\n    S: (date) => pad(date.getSeconds()),\n    U: (date) => date.getTime() / 1000,\n    W: function (date, _, options) {\n        return options.getWeek(date);\n    },\n    Y: (date) => pad(date.getFullYear(), 4),\n    d: (date) => pad(date.getDate()),\n    h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n    i: (date) => pad(date.getMinutes()),\n    j: (date) => date.getDate(),\n    l: function (date, locale) {\n        return locale.weekdays.longhand[date.getDay()];\n    },\n    m: (date) => pad(date.getMonth() + 1),\n    n: (date) => date.getMonth() + 1,\n    s: (date) => date.getSeconds(),\n    u: (date) => date.getTime(),\n    w: (date) => date.getDay(),\n    y: (date) => String(date.getFullYear()).substring(2),\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n    const locale = overrideLocale || l10n;\n    if (config.formatDate !== undefined && !isMobile) {\n        return config.formatDate(dateObj, frmt, locale);\n    }\n    return frmt\n        .split(\"\")\n        .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n        ? formats[c](dateObj, locale, config)\n        : c !== \"\\\\\"\n            ? c\n            : \"\")\n        .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n    if (date !== 0 && !date)\n        return undefined;\n    const locale = customLocale || l10n;\n    let parsedDate;\n    const dateOrig = date;\n    if (date instanceof Date)\n        parsedDate = new Date(date.getTime());\n    else if (typeof date !== \"string\" &&\n        date.toFixed !== undefined)\n        parsedDate = new Date(date);\n    else if (typeof date === \"string\") {\n        const format = givenFormat || (config || defaults).dateFormat;\n        const datestr = String(date).trim();\n        if (datestr === \"today\") {\n            parsedDate = new Date();\n            timeless = true;\n        }\n        else if (/Z$/.test(datestr) ||\n            /GMT$/.test(datestr))\n            parsedDate = new Date(date);\n        else if (config && config.parseDate)\n            parsedDate = config.parseDate(date, format);\n        else {\n            parsedDate =\n                !config || !config.noCalendar\n                    ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n                    : new Date(new Date().setHours(0, 0, 0, 0));\n            let matched, ops = [];\n            for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                const token = format[i];\n                const isBackSlash = token === \"\\\\\";\n                const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                if (tokenRegex[token] && !escaped) {\n                    regexStr += tokenRegex[token];\n                    const match = new RegExp(regexStr).exec(date);\n                    if (match && (matched = true)) {\n                        ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n                            fn: revFormat[token],\n                            val: match[++matchIndex],\n                        });\n                    }\n                }\n                else if (!isBackSlash)\n                    regexStr += \".\";\n                ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n            }\n            parsedDate = matched ? parsedDate : undefined;\n        }\n    }\n    if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n        config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n        return undefined;\n    }\n    if (timeless === true)\n        parsedDate.setHours(0, 0, 0, 0);\n    return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n    if (timeless !== false) {\n        return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n            new Date(date2.getTime()).setHours(0, 0, 0, 0));\n    }\n    return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n    return (3600 * (date1.getHours() - date2.getHours()) +\n        60 * (date1.getMinutes() - date2.getMinutes()) +\n        date1.getSeconds() -\n        date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n    return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n    DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n    let hours = config.defaultHour;\n    let minutes = config.defaultMinute;\n    let seconds = config.defaultSeconds;\n    if (config.minDate !== undefined) {\n        const minHour = config.minDate.getHours();\n        const minMinutes = config.minDate.getMinutes();\n        const minSeconds = config.minDate.getSeconds();\n        if (hours < minHour) {\n            hours = minHour;\n        }\n        if (hours === minHour && minutes < minMinutes) {\n            minutes = minMinutes;\n        }\n        if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n            seconds = config.minDate.getSeconds();\n    }\n    if (config.maxDate !== undefined) {\n        const maxHr = config.maxDate.getHours();\n        const maxMinutes = config.maxDate.getMinutes();\n        hours = Math.min(hours, maxHr);\n        if (hours === maxHr)\n            minutes = Math.min(maxMinutes, minutes);\n        if (hours === maxHr && minutes === maxMinutes)\n            seconds = config.maxDate.getSeconds();\n    }\n    return { hours, minutes, seconds };\n}\n", "\"use strict\";\nif (typeof Object.assign !== \"function\") {\n    Object.assign = function (target, ...args) {\n        if (!target) {\n            throw TypeError(\"Cannot convert undefined or null to object\");\n        }\n        for (const source of args) {\n            if (source) {\n                Object.keys(source).forEach((key) => (target[key] = source[key]));\n            }\n        }\n        return target;\n    };\n}\n", "import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n    const self = {\n        config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n        l10n: English,\n    };\n    self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    self._handlers = [];\n    self.pluginElements = [];\n    self.loadedPlugins = [];\n    self._bind = bind;\n    self._setHoursFromDate = setHoursFromDate;\n    self._positionCalendar = positionCalendar;\n    self.changeMonth = changeMonth;\n    self.changeYear = changeYear;\n    self.clear = clear;\n    self.close = close;\n    self._createElement = createElement;\n    self.destroy = destroy;\n    self.isEnabled = isEnabled;\n    self.jumpToDate = jumpToDate;\n    self.open = open;\n    self.redraw = redraw;\n    self.set = set;\n    self.setDate = setDate;\n    self.toggle = toggle;\n    function setupHelperFunctions() {\n        self.utils = {\n            getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n                if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n                    return 29;\n                return self.l10n.daysInMonth[month];\n            },\n        };\n    }\n    function init() {\n        self.element = self.input = element;\n        self.isOpen = false;\n        parseConfig();\n        setupLocale();\n        setupInputs();\n        setupDates();\n        setupHelperFunctions();\n        if (!self.isMobile)\n            build();\n        bindEvents();\n        if (self.selectedDates.length || self.config.noCalendar) {\n            if (self.config.enableTime) {\n                setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n            }\n            updateValue(false);\n        }\n        setCalendarWidth();\n        const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n        if (!self.isMobile && isSafari) {\n            positionCalendar();\n        }\n        triggerEvent(\"onReady\");\n    }\n    function bindToInstance(fn) {\n        return fn.bind(self);\n    }\n    function setCalendarWidth() {\n        const config = self.config;\n        if (config.weekNumbers === false && config.showMonths === 1) {\n            return;\n        }\n        else if (config.noCalendar !== true) {\n            window.requestAnimationFrame(function () {\n                if (self.calendarContainer !== undefined) {\n                    self.calendarContainer.style.visibility = \"hidden\";\n                    self.calendarContainer.style.display = \"block\";\n                }\n                if (self.daysContainer !== undefined) {\n                    const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n                    self.daysContainer.style.width = daysWidth + \"px\";\n                    self.calendarContainer.style.width =\n                        daysWidth +\n                            (self.weekWrapper !== undefined\n                                ? self.weekWrapper.offsetWidth\n                                : 0) +\n                            \"px\";\n                    self.calendarContainer.style.removeProperty(\"visibility\");\n                    self.calendarContainer.style.removeProperty(\"display\");\n                }\n            });\n        }\n    }\n    function updateTime(e) {\n        if (self.selectedDates.length === 0) {\n            const defaultDate = self.config.minDate === undefined ||\n                compareDates(new Date(), self.config.minDate) >= 0\n                ? new Date()\n                : new Date(self.config.minDate.getTime());\n            const defaults = getDefaultHours(self.config);\n            defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n            self.selectedDates = [defaultDate];\n            self.latestSelectedDateObj = defaultDate;\n        }\n        if (e !== undefined && e.type !== \"blur\") {\n            timeWrapper(e);\n        }\n        const prevValue = self._input.value;\n        setHoursFromInputs();\n        updateValue();\n        if (self._input.value !== prevValue) {\n            self._debouncedChange();\n        }\n    }\n    function ampm2military(hour, amPM) {\n        return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n    }\n    function military2ampm(hour) {\n        switch (hour % 24) {\n            case 0:\n            case 12:\n                return 12;\n            default:\n                return hour % 12;\n        }\n    }\n    function setHoursFromInputs() {\n        if (self.hourElement === undefined || self.minuteElement === undefined)\n            return;\n        let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n            ? (parseInt(self.secondElement.value, 10) || 0) % 60\n            : 0;\n        if (self.amPM !== undefined) {\n            hours = ampm2military(hours, self.amPM.textContent);\n        }\n        const limitMinHours = self.config.minTime !== undefined ||\n            (self.config.minDate &&\n                self.minDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n                    0);\n        const limitMaxHours = self.config.maxTime !== undefined ||\n            (self.config.maxDate &&\n                self.maxDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n                    0);\n        if (limitMaxHours) {\n            const maxTime = self.config.maxTime !== undefined\n                ? self.config.maxTime\n                : self.config.maxDate;\n            hours = Math.min(hours, maxTime.getHours());\n            if (hours === maxTime.getHours())\n                minutes = Math.min(minutes, maxTime.getMinutes());\n            if (minutes === maxTime.getMinutes())\n                seconds = Math.min(seconds, maxTime.getSeconds());\n        }\n        if (limitMinHours) {\n            const minTime = self.config.minTime !== undefined\n                ? self.config.minTime\n                : self.config.minDate;\n            hours = Math.max(hours, minTime.getHours());\n            if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n                minutes = minTime.getMinutes();\n            if (minutes === minTime.getMinutes())\n                seconds = Math.max(seconds, minTime.getSeconds());\n        }\n        setHours(hours, minutes, seconds);\n    }\n    function setHoursFromDate(dateObj) {\n        const date = dateObj || self.latestSelectedDateObj;\n        if (date) {\n            setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n        }\n    }\n    function setHours(hours, minutes, seconds) {\n        if (self.latestSelectedDateObj !== undefined) {\n            self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n        }\n        if (!self.hourElement || !self.minuteElement || self.isMobile)\n            return;\n        self.hourElement.value = pad(!self.config.time_24hr\n            ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n            : hours);\n        self.minuteElement.value = pad(minutes);\n        if (self.amPM !== undefined)\n            self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n        if (self.secondElement !== undefined)\n            self.secondElement.value = pad(seconds);\n    }\n    function onYearInput(event) {\n        const eventTarget = getEventTarget(event);\n        const year = parseInt(eventTarget.value) + (event.delta || 0);\n        if (year / 1000 > 1 ||\n            (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n            changeYear(year);\n        }\n    }\n    function bind(element, event, handler, options) {\n        if (event instanceof Array)\n            return event.forEach((ev) => bind(element, ev, handler, options));\n        if (element instanceof Array)\n            return element.forEach((el) => bind(el, event, handler, options));\n        element.addEventListener(event, handler, options);\n        self._handlers.push({\n            remove: () => element.removeEventListener(event, handler),\n        });\n    }\n    function triggerChange() {\n        triggerEvent(\"onChange\");\n    }\n    function bindEvents() {\n        if (self.config.wrap) {\n            [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n                Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n            });\n        }\n        if (self.isMobile) {\n            setupMobile();\n            return;\n        }\n        const debouncedResize = debounce(onResize, 50);\n        self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n        if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n            bind(self.daysContainer, \"mouseover\", (e) => {\n                if (self.config.mode === \"range\")\n                    onMouseOver(getEventTarget(e));\n            });\n        bind(window.document.body, \"keydown\", onKeyDown);\n        if (!self.config.inline && !self.config.static)\n            bind(window, \"resize\", debouncedResize);\n        if (window.ontouchstart !== undefined)\n            bind(window.document, \"touchstart\", documentClick);\n        else\n            bind(window.document, \"mousedown\", documentClick);\n        bind(window.document, \"focus\", documentClick, { capture: true });\n        if (self.config.clickOpens === true) {\n            bind(self._input, \"focus\", self.open);\n            bind(self._input, \"click\", self.open);\n        }\n        if (self.daysContainer !== undefined) {\n            bind(self.monthNav, \"click\", onMonthNavClick);\n            bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n            bind(self.daysContainer, \"click\", selectDate);\n        }\n        if (self.timeContainer !== undefined &&\n            self.minuteElement !== undefined &&\n            self.hourElement !== undefined) {\n            const selText = (e) => getEventTarget(e).select();\n            bind(self.timeContainer, [\"increment\"], updateTime);\n            bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n            bind(self.timeContainer, \"click\", timeIncrement);\n            bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n            if (self.secondElement !== undefined)\n                bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n            if (self.amPM !== undefined) {\n                bind(self.amPM, \"click\", (e) => {\n                    updateTime(e);\n                    triggerChange();\n                });\n            }\n        }\n        if (self.config.allowInput) {\n            bind(self._input, \"blur\", onBlur);\n        }\n    }\n    function jumpToDate(jumpDate, triggerChange) {\n        const jumpTo = jumpDate !== undefined\n            ? self.parseDate(jumpDate)\n            : self.latestSelectedDateObj ||\n                (self.config.minDate && self.config.minDate > self.now\n                    ? self.config.minDate\n                    : self.config.maxDate && self.config.maxDate < self.now\n                        ? self.config.maxDate\n                        : self.now);\n        const oldYear = self.currentYear;\n        const oldMonth = self.currentMonth;\n        try {\n            if (jumpTo !== undefined) {\n                self.currentYear = jumpTo.getFullYear();\n                self.currentMonth = jumpTo.getMonth();\n            }\n        }\n        catch (e) {\n            e.message = \"Invalid date supplied: \" + jumpTo;\n            self.config.errorHandler(e);\n        }\n        if (triggerChange && self.currentYear !== oldYear) {\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        if (triggerChange &&\n            (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n            triggerEvent(\"onMonthChange\");\n        }\n        self.redraw();\n    }\n    function timeIncrement(e) {\n        const eventTarget = getEventTarget(e);\n        if (~eventTarget.className.indexOf(\"arrow\"))\n            incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n    }\n    function incrementNumInput(e, delta, inputElem) {\n        const target = e && getEventTarget(e);\n        const input = inputElem ||\n            (target && target.parentNode && target.parentNode.firstChild);\n        const event = createEvent(\"increment\");\n        event.delta = delta;\n        input && input.dispatchEvent(event);\n    }\n    function build() {\n        const fragment = window.document.createDocumentFragment();\n        self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n        self.calendarContainer.tabIndex = -1;\n        if (!self.config.noCalendar) {\n            fragment.appendChild(buildMonthNav());\n            self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n            if (self.config.weekNumbers) {\n                const { weekWrapper, weekNumbers } = buildWeeks();\n                self.innerContainer.appendChild(weekWrapper);\n                self.weekNumbers = weekNumbers;\n                self.weekWrapper = weekWrapper;\n            }\n            self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n            self.rContainer.appendChild(buildWeekdays());\n            if (!self.daysContainer) {\n                self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n                self.daysContainer.tabIndex = -1;\n            }\n            buildDays();\n            self.rContainer.appendChild(self.daysContainer);\n            self.innerContainer.appendChild(self.rContainer);\n            fragment.appendChild(self.innerContainer);\n        }\n        if (self.config.enableTime) {\n            fragment.appendChild(buildTime());\n        }\n        toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n        toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n        toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n        self.calendarContainer.appendChild(fragment);\n        const customAppend = self.config.appendTo !== undefined &&\n            self.config.appendTo.nodeType !== undefined;\n        if (self.config.inline || self.config.static) {\n            self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n            if (self.config.inline) {\n                if (!customAppend && self.element.parentNode)\n                    self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n                else if (self.config.appendTo !== undefined)\n                    self.config.appendTo.appendChild(self.calendarContainer);\n            }\n            if (self.config.static) {\n                const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n                if (self.element.parentNode)\n                    self.element.parentNode.insertBefore(wrapper, self.element);\n                wrapper.appendChild(self.element);\n                if (self.altInput)\n                    wrapper.appendChild(self.altInput);\n                wrapper.appendChild(self.calendarContainer);\n            }\n        }\n        if (!self.config.static && !self.config.inline)\n            (self.config.appendTo !== undefined\n                ? self.config.appendTo\n                : window.document.body).appendChild(self.calendarContainer);\n    }\n    function createDay(className, date, dayNumber, i) {\n        const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n        dayElement.dateObj = date;\n        dayElement.$i = i;\n        dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n        if (className.indexOf(\"hidden\") === -1 &&\n            compareDates(date, self.now) === 0) {\n            self.todayDateElem = dayElement;\n            dayElement.classList.add(\"today\");\n            dayElement.setAttribute(\"aria-current\", \"date\");\n        }\n        if (dateIsEnabled) {\n            dayElement.tabIndex = -1;\n            if (isDateSelected(date)) {\n                dayElement.classList.add(\"selected\");\n                self.selectedDateElem = dayElement;\n                if (self.config.mode === \"range\") {\n                    toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n                        compareDates(date, self.selectedDates[0], true) === 0);\n                    toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n                        compareDates(date, self.selectedDates[1], true) === 0);\n                    if (className === \"nextMonthDay\")\n                        dayElement.classList.add(\"inRange\");\n                }\n            }\n        }\n        else {\n            dayElement.classList.add(\"flatpickr-disabled\");\n        }\n        if (self.config.mode === \"range\") {\n            if (isDateInRange(date) && !isDateSelected(date))\n                dayElement.classList.add(\"inRange\");\n        }\n        if (self.weekNumbers &&\n            self.config.showMonths === 1 &&\n            className !== \"prevMonthDay\" &&\n            dayNumber % 7 === 1) {\n            self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n        }\n        triggerEvent(\"onDayCreate\", dayElement);\n        return dayElement;\n    }\n    function focusOnDayElem(targetNode) {\n        targetNode.focus();\n        if (self.config.mode === \"range\")\n            onMouseOver(targetNode);\n    }\n    function getFirstAvailableDay(delta) {\n        const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n        const endMonth = delta > 0 ? self.config.showMonths : -1;\n        for (let m = startMonth; m != endMonth; m += delta) {\n            const month = self.daysContainer.children[m];\n            const startIndex = delta > 0 ? 0 : month.children.length - 1;\n            const endIndex = delta > 0 ? month.children.length : -1;\n            for (let i = startIndex; i != endIndex; i += delta) {\n                const c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n                    return c;\n            }\n        }\n        return undefined;\n    }\n    function getNextAvailableDay(current, delta) {\n        const givenMonth = current.className.indexOf(\"Month\") === -1\n            ? current.dateObj.getMonth()\n            : self.currentMonth;\n        const endMonth = delta > 0 ? self.config.showMonths : -1;\n        const loopDelta = delta > 0 ? 1 : -1;\n        for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n            const month = self.daysContainer.children[m];\n            const startIndex = givenMonth - self.currentMonth === m\n                ? current.$i + delta\n                : delta < 0\n                    ? month.children.length - 1\n                    : 0;\n            const numMonthDays = month.children.length;\n            for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n                const c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 &&\n                    isEnabled(c.dateObj) &&\n                    Math.abs(current.$i - i) >= Math.abs(delta))\n                    return focusOnDayElem(c);\n            }\n        }\n        self.changeMonth(loopDelta);\n        focusOnDay(getFirstAvailableDay(loopDelta), 0);\n        return undefined;\n    }\n    function focusOnDay(current, offset) {\n        const dayFocused = isInView(document.activeElement || document.body);\n        const startElem = current !== undefined\n            ? current\n            : dayFocused\n                ? document.activeElement\n                : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n                    ? self.selectedDateElem\n                    : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n                        ? self.todayDateElem\n                        : getFirstAvailableDay(offset > 0 ? 1 : -1);\n        if (startElem === undefined) {\n            self._input.focus();\n        }\n        else if (!dayFocused) {\n            focusOnDayElem(startElem);\n        }\n        else {\n            getNextAvailableDay(startElem, offset);\n        }\n    }\n    function buildMonthDays(year, month) {\n        const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n        const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n        const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n        let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n        for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n        }\n        for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n        }\n        for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n            (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n            days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n        }\n        const dayContainer = createElement(\"div\", \"dayContainer\");\n        dayContainer.appendChild(days);\n        return dayContainer;\n    }\n    function buildDays() {\n        if (self.daysContainer === undefined) {\n            return;\n        }\n        clearNode(self.daysContainer);\n        if (self.weekNumbers)\n            clearNode(self.weekNumbers);\n        const frag = document.createDocumentFragment();\n        for (let i = 0; i < self.config.showMonths; i++) {\n            const d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n        }\n        self.daysContainer.appendChild(frag);\n        self.days = self.daysContainer.firstChild;\n        if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n            onMouseOver();\n        }\n    }\n    function buildMonthSwitch() {\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType !== \"dropdown\")\n            return;\n        const shouldBuildMonth = function (month) {\n            if (self.config.minDate !== undefined &&\n                self.currentYear === self.config.minDate.getFullYear() &&\n                month < self.config.minDate.getMonth()) {\n                return false;\n            }\n            return !(self.config.maxDate !== undefined &&\n                self.currentYear === self.config.maxDate.getFullYear() &&\n                month > self.config.maxDate.getMonth());\n        };\n        self.monthsDropdownContainer.tabIndex = -1;\n        self.monthsDropdownContainer.innerHTML = \"\";\n        for (let i = 0; i < 12; i++) {\n            if (!shouldBuildMonth(i))\n                continue;\n            const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n            month.value = new Date(self.currentYear, i).getMonth().toString();\n            month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n            month.tabIndex = -1;\n            if (self.currentMonth === i) {\n                month.selected = true;\n            }\n            self.monthsDropdownContainer.appendChild(month);\n        }\n    }\n    function buildMonth() {\n        const container = createElement(\"div\", \"flatpickr-month\");\n        const monthNavFragment = window.document.createDocumentFragment();\n        let monthElement;\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType === \"static\") {\n            monthElement = createElement(\"span\", \"cur-month\");\n        }\n        else {\n            self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n            self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n            bind(self.monthsDropdownContainer, \"change\", (e) => {\n                const target = getEventTarget(e);\n                const selectedMonth = parseInt(target.value, 10);\n                self.changeMonth(selectedMonth - self.currentMonth);\n                triggerEvent(\"onMonthChange\");\n            });\n            buildMonthSwitch();\n            monthElement = self.monthsDropdownContainer;\n        }\n        const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n        const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n        yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n        if (self.config.minDate) {\n            yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n        }\n        if (self.config.maxDate) {\n            yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n            yearElement.disabled =\n                !!self.config.minDate &&\n                    self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n        }\n        const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n        currentMonth.appendChild(monthElement);\n        currentMonth.appendChild(yearInput);\n        monthNavFragment.appendChild(currentMonth);\n        container.appendChild(monthNavFragment);\n        return {\n            container,\n            yearElement,\n            monthElement,\n        };\n    }\n    function buildMonths() {\n        clearNode(self.monthNav);\n        self.monthNav.appendChild(self.prevMonthNav);\n        if (self.config.showMonths) {\n            self.yearElements = [];\n            self.monthElements = [];\n        }\n        for (let m = self.config.showMonths; m--;) {\n            const month = buildMonth();\n            self.yearElements.push(month.yearElement);\n            self.monthElements.push(month.monthElement);\n            self.monthNav.appendChild(month.container);\n        }\n        self.monthNav.appendChild(self.nextMonthNav);\n    }\n    function buildMonthNav() {\n        self.monthNav = createElement(\"div\", \"flatpickr-months\");\n        self.yearElements = [];\n        self.monthElements = [];\n        self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n        self.prevMonthNav.innerHTML = self.config.prevArrow;\n        self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n        self.nextMonthNav.innerHTML = self.config.nextArrow;\n        buildMonths();\n        Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n            get: () => self.__hidePrevMonthArrow,\n            set(bool) {\n                if (self.__hidePrevMonthArrow !== bool) {\n                    toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hidePrevMonthArrow = bool;\n                }\n            },\n        });\n        Object.defineProperty(self, \"_hideNextMonthArrow\", {\n            get: () => self.__hideNextMonthArrow,\n            set(bool) {\n                if (self.__hideNextMonthArrow !== bool) {\n                    toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hideNextMonthArrow = bool;\n                }\n            },\n        });\n        self.currentYearElement = self.yearElements[0];\n        updateNavigationCurrentMonth();\n        return self.monthNav;\n    }\n    function buildTime() {\n        self.calendarContainer.classList.add(\"hasTime\");\n        if (self.config.noCalendar)\n            self.calendarContainer.classList.add(\"noCalendar\");\n        const defaults = getDefaultHours(self.config);\n        self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n        self.timeContainer.tabIndex = -1;\n        const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n        const hourInput = createNumberInput(\"flatpickr-hour\", {\n            \"aria-label\": self.l10n.hourAriaLabel,\n        });\n        self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n        const minuteInput = createNumberInput(\"flatpickr-minute\", {\n            \"aria-label\": self.l10n.minuteAriaLabel,\n        });\n        self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n        self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n        self.hourElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getHours()\n            : self.config.time_24hr\n                ? defaults.hours\n                : military2ampm(defaults.hours));\n        self.minuteElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getMinutes()\n            : defaults.minutes);\n        self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n        self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n        self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n        self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n        self.hourElement.setAttribute(\"maxlength\", \"2\");\n        self.minuteElement.setAttribute(\"min\", \"0\");\n        self.minuteElement.setAttribute(\"max\", \"59\");\n        self.minuteElement.setAttribute(\"maxlength\", \"2\");\n        self.timeContainer.appendChild(hourInput);\n        self.timeContainer.appendChild(separator);\n        self.timeContainer.appendChild(minuteInput);\n        if (self.config.time_24hr)\n            self.timeContainer.classList.add(\"time24hr\");\n        if (self.config.enableSeconds) {\n            self.timeContainer.classList.add(\"hasSeconds\");\n            const secondInput = createNumberInput(\"flatpickr-second\");\n            self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n            self.secondElement.value = pad(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getSeconds()\n                : defaults.seconds);\n            self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n            self.secondElement.setAttribute(\"min\", \"0\");\n            self.secondElement.setAttribute(\"max\", \"59\");\n            self.secondElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n            self.timeContainer.appendChild(secondInput);\n        }\n        if (!self.config.time_24hr) {\n            self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n                ? self.hourElement.value\n                : self.config.defaultHour) > 11)]);\n            self.amPM.title = self.l10n.toggleTitle;\n            self.amPM.tabIndex = -1;\n            self.timeContainer.appendChild(self.amPM);\n        }\n        return self.timeContainer;\n    }\n    function buildWeekdays() {\n        if (!self.weekdayContainer)\n            self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n        else\n            clearNode(self.weekdayContainer);\n        for (let i = self.config.showMonths; i--;) {\n            const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n            self.weekdayContainer.appendChild(container);\n        }\n        updateWeekdays();\n        return self.weekdayContainer;\n    }\n    function updateWeekdays() {\n        if (!self.weekdayContainer) {\n            return;\n        }\n        const firstDayOfWeek = self.l10n.firstDayOfWeek;\n        let weekdays = [...self.l10n.weekdays.shorthand];\n        if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n            weekdays = [\n                ...weekdays.splice(firstDayOfWeek, weekdays.length),\n                ...weekdays.splice(0, firstDayOfWeek),\n            ];\n        }\n        for (let i = self.config.showMonths; i--;) {\n            self.weekdayContainer.children[i].innerHTML = `\n      <span class='flatpickr-weekday'>\n        ${weekdays.join(\"</span><span class='flatpickr-weekday'>\")}\n      </span>\n      `;\n        }\n    }\n    function buildWeeks() {\n        self.calendarContainer.classList.add(\"hasWeeks\");\n        const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n        weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n        const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n        weekWrapper.appendChild(weekNumbers);\n        return {\n            weekWrapper,\n            weekNumbers,\n        };\n    }\n    function changeMonth(value, isOffset = true) {\n        const delta = isOffset ? value : value - self.currentMonth;\n        if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n            (delta > 0 && self._hideNextMonthArrow === true))\n            return;\n        self.currentMonth += delta;\n        if (self.currentMonth < 0 || self.currentMonth > 11) {\n            self.currentYear += self.currentMonth > 11 ? 1 : -1;\n            self.currentMonth = (self.currentMonth + 12) % 12;\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        buildDays();\n        triggerEvent(\"onMonthChange\");\n        updateNavigationCurrentMonth();\n    }\n    function clear(triggerChangeEvent = true, toInitial = true) {\n        self.input.value = \"\";\n        if (self.altInput !== undefined)\n            self.altInput.value = \"\";\n        if (self.mobileInput !== undefined)\n            self.mobileInput.value = \"\";\n        self.selectedDates = [];\n        self.latestSelectedDateObj = undefined;\n        if (toInitial === true) {\n            self.currentYear = self._initialDate.getFullYear();\n            self.currentMonth = self._initialDate.getMonth();\n        }\n        if (self.config.enableTime === true) {\n            const { hours, minutes, seconds } = getDefaultHours(self.config);\n            setHours(hours, minutes, seconds);\n        }\n        self.redraw();\n        if (triggerChangeEvent)\n            triggerEvent(\"onChange\");\n    }\n    function close() {\n        self.isOpen = false;\n        if (!self.isMobile) {\n            if (self.calendarContainer !== undefined) {\n                self.calendarContainer.classList.remove(\"open\");\n            }\n            if (self._input !== undefined) {\n                self._input.classList.remove(\"active\");\n            }\n        }\n        triggerEvent(\"onClose\");\n    }\n    function destroy() {\n        if (self.config !== undefined)\n            triggerEvent(\"onDestroy\");\n        for (let i = self._handlers.length; i--;) {\n            self._handlers[i].remove();\n        }\n        self._handlers = [];\n        if (self.mobileInput) {\n            if (self.mobileInput.parentNode)\n                self.mobileInput.parentNode.removeChild(self.mobileInput);\n            self.mobileInput = undefined;\n        }\n        else if (self.calendarContainer && self.calendarContainer.parentNode) {\n            if (self.config.static && self.calendarContainer.parentNode) {\n                const wrapper = self.calendarContainer.parentNode;\n                wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n                if (wrapper.parentNode) {\n                    while (wrapper.firstChild)\n                        wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n                    wrapper.parentNode.removeChild(wrapper);\n                }\n            }\n            else\n                self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n        }\n        if (self.altInput) {\n            self.input.type = \"text\";\n            if (self.altInput.parentNode)\n                self.altInput.parentNode.removeChild(self.altInput);\n            delete self.altInput;\n        }\n        if (self.input) {\n            self.input.type = self.input._type;\n            self.input.classList.remove(\"flatpickr-input\");\n            self.input.removeAttribute(\"readonly\");\n        }\n        [\n            \"_showTimeInput\",\n            \"latestSelectedDateObj\",\n            \"_hideNextMonthArrow\",\n            \"_hidePrevMonthArrow\",\n            \"__hideNextMonthArrow\",\n            \"__hidePrevMonthArrow\",\n            \"isMobile\",\n            \"isOpen\",\n            \"selectedDateElem\",\n            \"minDateHasTime\",\n            \"maxDateHasTime\",\n            \"days\",\n            \"daysContainer\",\n            \"_input\",\n            \"_positionElement\",\n            \"innerContainer\",\n            \"rContainer\",\n            \"monthNav\",\n            \"todayDateElem\",\n            \"calendarContainer\",\n            \"weekdayContainer\",\n            \"prevMonthNav\",\n            \"nextMonthNav\",\n            \"monthsDropdownContainer\",\n            \"currentMonthElement\",\n            \"currentYearElement\",\n            \"navigationCurrentMonth\",\n            \"selectedDateElem\",\n            \"config\",\n        ].forEach((k) => {\n            try {\n                delete self[k];\n            }\n            catch (_) { }\n        });\n    }\n    function isCalendarElem(elem) {\n        if (self.config.appendTo && self.config.appendTo.contains(elem))\n            return true;\n        return self.calendarContainer.contains(elem);\n    }\n    function documentClick(e) {\n        if (self.isOpen && !self.config.inline) {\n            const eventTarget = getEventTarget(e);\n            const isCalendarElement = isCalendarElem(eventTarget);\n            const isInput = eventTarget === self.input ||\n                eventTarget === self.altInput ||\n                self.element.contains(eventTarget) ||\n                (e.path &&\n                    e.path.indexOf &&\n                    (~e.path.indexOf(self.input) ||\n                        ~e.path.indexOf(self.altInput)));\n            const lostFocus = e.type === \"blur\"\n                ? isInput &&\n                    e.relatedTarget &&\n                    !isCalendarElem(e.relatedTarget)\n                : !isInput &&\n                    !isCalendarElement &&\n                    !isCalendarElem(e.relatedTarget);\n            const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n            if (lostFocus && isIgnored) {\n                if (self.timeContainer !== undefined &&\n                    self.minuteElement !== undefined &&\n                    self.hourElement !== undefined &&\n                    self.input.value !== \"\" &&\n                    self.input.value !== undefined) {\n                    updateTime();\n                }\n                self.close();\n                if (self.config &&\n                    self.config.mode === \"range\" &&\n                    self.selectedDates.length === 1) {\n                    self.clear(false);\n                    self.redraw();\n                }\n            }\n        }\n    }\n    function changeYear(newYear) {\n        if (!newYear ||\n            (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n            (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n            return;\n        const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n        self.currentYear = newYearNum || self.currentYear;\n        if (self.config.maxDate &&\n            self.currentYear === self.config.maxDate.getFullYear()) {\n            self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n        }\n        else if (self.config.minDate &&\n            self.currentYear === self.config.minDate.getFullYear()) {\n            self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n        }\n        if (isNewYear) {\n            self.redraw();\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n    }\n    function isEnabled(date, timeless = true) {\n        var _a;\n        const dateToCheck = self.parseDate(date, undefined, timeless);\n        if ((self.config.minDate &&\n            dateToCheck &&\n            compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n            (self.config.maxDate &&\n                dateToCheck &&\n                compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n            return false;\n        if (!self.config.enable && self.config.disable.length === 0)\n            return true;\n        if (dateToCheck === undefined)\n            return false;\n        const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n        for (let i = 0, d; i < array.length; i++) {\n            d = array[i];\n            if (typeof d === \"function\" &&\n                d(dateToCheck))\n                return bool;\n            else if (d instanceof Date &&\n                dateToCheck !== undefined &&\n                d.getTime() === dateToCheck.getTime())\n                return bool;\n            else if (typeof d === \"string\") {\n                const parsed = self.parseDate(d, undefined, true);\n                return parsed && parsed.getTime() === dateToCheck.getTime()\n                    ? bool\n                    : !bool;\n            }\n            else if (typeof d === \"object\" &&\n                dateToCheck !== undefined &&\n                d.from &&\n                d.to &&\n                dateToCheck.getTime() >= d.from.getTime() &&\n                dateToCheck.getTime() <= d.to.getTime())\n                return bool;\n        }\n        return !bool;\n    }\n    function isInView(elem) {\n        if (self.daysContainer !== undefined)\n            return (elem.className.indexOf(\"hidden\") === -1 &&\n                elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                self.daysContainer.contains(elem));\n        return false;\n    }\n    function onBlur(e) {\n        const isInput = e.target === self._input;\n        if (isInput &&\n            (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n            !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n            self.setDate(self._input.value, true, e.target === self.altInput\n                ? self.config.altFormat\n                : self.config.dateFormat);\n        }\n    }\n    function onKeyDown(e) {\n        const eventTarget = getEventTarget(e);\n        const isInput = self.config.wrap\n            ? element.contains(eventTarget)\n            : eventTarget === self._input;\n        const allowInput = self.config.allowInput;\n        const allowKeydown = self.isOpen && (!allowInput || !isInput);\n        const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n        if (e.keyCode === 13 && isInput) {\n            if (allowInput) {\n                self.setDate(self._input.value, true, eventTarget === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n                return eventTarget.blur();\n            }\n            else {\n                self.open();\n            }\n        }\n        else if (isCalendarElem(eventTarget) ||\n            allowKeydown ||\n            allowInlineKeydown) {\n            const isTimeObj = !!self.timeContainer &&\n                self.timeContainer.contains(eventTarget);\n            switch (e.keyCode) {\n                case 13:\n                    if (isTimeObj) {\n                        e.preventDefault();\n                        updateTime();\n                        focusAndClose();\n                    }\n                    else\n                        selectDate(e);\n                    break;\n                case 27:\n                    e.preventDefault();\n                    focusAndClose();\n                    break;\n                case 8:\n                case 46:\n                    if (isInput && !self.config.allowInput) {\n                        e.preventDefault();\n                        self.clear();\n                    }\n                    break;\n                case 37:\n                case 39:\n                    if (!isTimeObj && !isInput) {\n                        e.preventDefault();\n                        if (self.daysContainer !== undefined &&\n                            (allowInput === false ||\n                                (document.activeElement && isInView(document.activeElement)))) {\n                            const delta = e.keyCode === 39 ? 1 : -1;\n                            if (!e.ctrlKey)\n                                focusOnDay(undefined, delta);\n                            else {\n                                e.stopPropagation();\n                                changeMonth(delta);\n                                focusOnDay(getFirstAvailableDay(1), 0);\n                            }\n                        }\n                    }\n                    else if (self.hourElement)\n                        self.hourElement.focus();\n                    break;\n                case 38:\n                case 40:\n                    e.preventDefault();\n                    const delta = e.keyCode === 40 ? 1 : -1;\n                    if ((self.daysContainer &&\n                        eventTarget.$i !== undefined) ||\n                        eventTarget === self.input ||\n                        eventTarget === self.altInput) {\n                        if (e.ctrlKey) {\n                            e.stopPropagation();\n                            changeYear(self.currentYear - delta);\n                            focusOnDay(getFirstAvailableDay(1), 0);\n                        }\n                        else if (!isTimeObj)\n                            focusOnDay(undefined, delta * 7);\n                    }\n                    else if (eventTarget === self.currentYearElement) {\n                        changeYear(self.currentYear - delta);\n                    }\n                    else if (self.config.enableTime) {\n                        if (!isTimeObj && self.hourElement)\n                            self.hourElement.focus();\n                        updateTime(e);\n                        self._debouncedChange();\n                    }\n                    break;\n                case 9:\n                    if (isTimeObj) {\n                        const elems = [\n                            self.hourElement,\n                            self.minuteElement,\n                            self.secondElement,\n                            self.amPM,\n                        ]\n                            .concat(self.pluginElements)\n                            .filter((x) => x);\n                        const i = elems.indexOf(eventTarget);\n                        if (i !== -1) {\n                            const target = elems[i + (e.shiftKey ? -1 : 1)];\n                            e.preventDefault();\n                            (target || self._input).focus();\n                        }\n                    }\n                    else if (!self.config.noCalendar &&\n                        self.daysContainer &&\n                        self.daysContainer.contains(eventTarget) &&\n                        e.shiftKey) {\n                        e.preventDefault();\n                        self._input.focus();\n                    }\n                    break;\n                default:\n                    break;\n            }\n        }\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            switch (e.key) {\n                case self.l10n.amPM[0].charAt(0):\n                case self.l10n.amPM[0].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[0];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n                case self.l10n.amPM[1].charAt(0):\n                case self.l10n.amPM[1].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[1];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n            }\n        }\n        if (isInput || isCalendarElem(eventTarget)) {\n            triggerEvent(\"onKeyDown\", e);\n        }\n    }\n    function onMouseOver(elem) {\n        if (self.selectedDates.length !== 1 ||\n            (elem &&\n                (!elem.classList.contains(\"flatpickr-day\") ||\n                    elem.classList.contains(\"flatpickr-disabled\"))))\n            return;\n        const hoverDate = elem\n            ? elem.dateObj.getTime()\n            : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n        let containsDisabled = false;\n        let minRange = 0, maxRange = 0;\n        for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n            if (!isEnabled(new Date(t), true)) {\n                containsDisabled =\n                    containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n                if (t < initialDate && (!minRange || t > minRange))\n                    minRange = t;\n                else if (t > initialDate && (!maxRange || t < maxRange))\n                    maxRange = t;\n            }\n        }\n        for (let m = 0; m < self.config.showMonths; m++) {\n            const month = self.daysContainer.children[m];\n            for (let i = 0, l = month.children.length; i < l; i++) {\n                const dayElem = month.children[i], date = dayElem.dateObj;\n                const timestamp = date.getTime();\n                const outOfRange = (minRange > 0 && timestamp < minRange) ||\n                    (maxRange > 0 && timestamp > maxRange);\n                if (outOfRange) {\n                    dayElem.classList.add(\"notAllowed\");\n                    [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n                        dayElem.classList.remove(c);\n                    });\n                    continue;\n                }\n                else if (containsDisabled && !outOfRange)\n                    continue;\n                [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n                    dayElem.classList.remove(c);\n                });\n                if (elem !== undefined) {\n                    elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n                        ? \"startRange\"\n                        : \"endRange\");\n                    if (initialDate < hoverDate && timestamp === initialDate)\n                        dayElem.classList.add(\"startRange\");\n                    else if (initialDate > hoverDate && timestamp === initialDate)\n                        dayElem.classList.add(\"endRange\");\n                    if (timestamp >= minRange &&\n                        (maxRange === 0 || timestamp <= maxRange) &&\n                        isBetween(timestamp, initialDate, hoverDate))\n                        dayElem.classList.add(\"inRange\");\n                }\n            }\n        }\n    }\n    function onResize() {\n        if (self.isOpen && !self.config.static && !self.config.inline)\n            positionCalendar();\n    }\n    function open(e, positionElement = self._positionElement) {\n        if (self.isMobile === true) {\n            if (e) {\n                e.preventDefault();\n                const eventTarget = getEventTarget(e);\n                if (eventTarget) {\n                    eventTarget.blur();\n                }\n            }\n            if (self.mobileInput !== undefined) {\n                self.mobileInput.focus();\n                self.mobileInput.click();\n            }\n            triggerEvent(\"onOpen\");\n            return;\n        }\n        else if (self._input.disabled || self.config.inline) {\n            return;\n        }\n        const wasOpen = self.isOpen;\n        self.isOpen = true;\n        if (!wasOpen) {\n            self.calendarContainer.classList.add(\"open\");\n            self._input.classList.add(\"active\");\n            triggerEvent(\"onOpen\");\n            positionCalendar(positionElement);\n        }\n        if (self.config.enableTime === true && self.config.noCalendar === true) {\n            if (self.config.allowInput === false &&\n                (e === undefined ||\n                    !self.timeContainer.contains(e.relatedTarget))) {\n                setTimeout(() => self.hourElement.select(), 50);\n            }\n        }\n    }\n    function minMaxDateSetter(type) {\n        return (date) => {\n            const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n            const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n            if (dateObj !== undefined) {\n                self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n                    dateObj.getHours() > 0 ||\n                        dateObj.getMinutes() > 0 ||\n                        dateObj.getSeconds() > 0;\n            }\n            if (self.selectedDates) {\n                self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n                if (!self.selectedDates.length && type === \"min\")\n                    setHoursFromDate(dateObj);\n                updateValue();\n            }\n            if (self.daysContainer) {\n                redraw();\n                if (dateObj !== undefined)\n                    self.currentYearElement[type] = dateObj.getFullYear().toString();\n                else\n                    self.currentYearElement.removeAttribute(type);\n                self.currentYearElement.disabled =\n                    !!inverseDateObj &&\n                        dateObj !== undefined &&\n                        inverseDateObj.getFullYear() === dateObj.getFullYear();\n            }\n        };\n    }\n    function parseConfig() {\n        const boolOpts = [\n            \"wrap\",\n            \"weekNumbers\",\n            \"allowInput\",\n            \"allowInvalidPreload\",\n            \"clickOpens\",\n            \"time_24hr\",\n            \"enableTime\",\n            \"noCalendar\",\n            \"altInput\",\n            \"shorthandCurrentMonth\",\n            \"inline\",\n            \"static\",\n            \"enableSeconds\",\n            \"disableMobile\",\n        ];\n        const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n        const formats = {};\n        self.config.parseDate = userConfig.parseDate;\n        self.config.formatDate = userConfig.formatDate;\n        Object.defineProperty(self.config, \"enable\", {\n            get: () => self.config._enable,\n            set: (dates) => {\n                self.config._enable = parseDateRules(dates);\n            },\n        });\n        Object.defineProperty(self.config, \"disable\", {\n            get: () => self.config._disable,\n            set: (dates) => {\n                self.config._disable = parseDateRules(dates);\n            },\n        });\n        const timeMode = userConfig.mode === \"time\";\n        if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n            const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n            formats.dateFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                    : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n        }\n        if (userConfig.altInput &&\n            (userConfig.enableTime || timeMode) &&\n            !userConfig.altFormat) {\n            const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n            formats.altFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                    : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n        }\n        Object.defineProperty(self.config, \"minDate\", {\n            get: () => self.config._minDate,\n            set: minMaxDateSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxDate\", {\n            get: () => self.config._maxDate,\n            set: minMaxDateSetter(\"max\"),\n        });\n        const minMaxTimeSetter = (type) => (val) => {\n            self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n        };\n        Object.defineProperty(self.config, \"minTime\", {\n            get: () => self.config._minTime,\n            set: minMaxTimeSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxTime\", {\n            get: () => self.config._maxTime,\n            set: minMaxTimeSetter(\"max\"),\n        });\n        if (userConfig.mode === \"time\") {\n            self.config.noCalendar = true;\n            self.config.enableTime = true;\n        }\n        Object.assign(self.config, formats, userConfig);\n        for (let i = 0; i < boolOpts.length; i++)\n            self.config[boolOpts[i]] =\n                self.config[boolOpts[i]] === true ||\n                    self.config[boolOpts[i]] === \"true\";\n        HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n            self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n        });\n        self.isMobile =\n            !self.config.disableMobile &&\n                !self.config.inline &&\n                self.config.mode === \"single\" &&\n                !self.config.disable.length &&\n                !self.config.enable &&\n                !self.config.weekNumbers &&\n                /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n        for (let i = 0; i < self.config.plugins.length; i++) {\n            const pluginConf = self.config.plugins[i](self) || {};\n            for (const key in pluginConf) {\n                if (HOOKS.indexOf(key) > -1) {\n                    self.config[key] = arrayify(pluginConf[key])\n                        .map(bindToInstance)\n                        .concat(self.config[key]);\n                }\n                else if (typeof userConfig[key] === \"undefined\")\n                    self.config[key] = pluginConf[key];\n            }\n        }\n        if (!userConfig.altInputClass) {\n            self.config.altInputClass =\n                getInputElem().className + \" \" + self.config.altInputClass;\n        }\n        triggerEvent(\"onParseConfig\");\n    }\n    function getInputElem() {\n        return self.config.wrap\n            ? element.querySelector(\"[data-input]\")\n            : element;\n    }\n    function setupLocale() {\n        if (typeof self.config.locale !== \"object\" &&\n            typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n            self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n        self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n            ? self.config.locale\n            : self.config.locale !== \"default\"\n                ? flatpickr.l10ns[self.config.locale]\n                : undefined));\n        tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n        const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n        if (userConfig.time_24hr === undefined &&\n            flatpickr.defaultConfig.time_24hr === undefined) {\n            self.config.time_24hr = self.l10n.time_24hr;\n        }\n        self.formatDate = createDateFormatter(self);\n        self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    }\n    function positionCalendar(customPositionElement) {\n        if (typeof self.config.position === \"function\") {\n            return void self.config.position(self, customPositionElement);\n        }\n        if (self.calendarContainer === undefined)\n            return;\n        triggerEvent(\"onPreCalendarPosition\");\n        const positionElement = customPositionElement || self._positionElement;\n        const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n            (configPosVertical !== \"below\" &&\n                distanceFromBottom < calendarHeight &&\n                inputBounds.top > calendarHeight);\n        const top = window.pageYOffset +\n            inputBounds.top +\n            (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n        toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n        toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n        if (self.config.inline)\n            return;\n        let left = window.pageXOffset + inputBounds.left;\n        let isCenter = false;\n        let isRight = false;\n        if (configPosHorizontal === \"center\") {\n            left -= (calendarWidth - inputBounds.width) / 2;\n            isCenter = true;\n        }\n        else if (configPosHorizontal === \"right\") {\n            left -= calendarWidth - inputBounds.width;\n            isRight = true;\n        }\n        toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n        toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n        toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n        const right = window.document.body.offsetWidth -\n            (window.pageXOffset + inputBounds.right);\n        const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n        const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n        toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n        if (self.config.static)\n            return;\n        self.calendarContainer.style.top = `${top}px`;\n        if (!rightMost) {\n            self.calendarContainer.style.left = `${left}px`;\n            self.calendarContainer.style.right = \"auto\";\n        }\n        else if (!centerMost) {\n            self.calendarContainer.style.left = \"auto\";\n            self.calendarContainer.style.right = `${right}px`;\n        }\n        else {\n            const doc = getDocumentStyleSheet();\n            if (doc === undefined)\n                return;\n            const bodyWidth = window.document.body.offsetWidth;\n            const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n            const centerBefore = \".flatpickr-calendar.centerMost:before\";\n            const centerAfter = \".flatpickr-calendar.centerMost:after\";\n            const centerIndex = doc.cssRules.length;\n            const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n            toggleClass(self.calendarContainer, \"rightMost\", false);\n            toggleClass(self.calendarContainer, \"centerMost\", true);\n            doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n            self.calendarContainer.style.left = `${centerLeft}px`;\n            self.calendarContainer.style.right = \"auto\";\n        }\n    }\n    function getDocumentStyleSheet() {\n        let editableSheet = null;\n        for (let i = 0; i < document.styleSheets.length; i++) {\n            const sheet = document.styleSheets[i];\n            try {\n                sheet.cssRules;\n            }\n            catch (err) {\n                continue;\n            }\n            editableSheet = sheet;\n            break;\n        }\n        return editableSheet != null ? editableSheet : createStyleSheet();\n    }\n    function createStyleSheet() {\n        const style = document.createElement(\"style\");\n        document.head.appendChild(style);\n        return style.sheet;\n    }\n    function redraw() {\n        if (self.config.noCalendar || self.isMobile)\n            return;\n        buildMonthSwitch();\n        updateNavigationCurrentMonth();\n        buildDays();\n    }\n    function focusAndClose() {\n        self._input.focus();\n        if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n            navigator.msMaxTouchPoints !== undefined) {\n            setTimeout(self.close, 0);\n        }\n        else {\n            self.close();\n        }\n    }\n    function selectDate(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        const isSelectable = (day) => day.classList &&\n            day.classList.contains(\"flatpickr-day\") &&\n            !day.classList.contains(\"flatpickr-disabled\") &&\n            !day.classList.contains(\"notAllowed\");\n        const t = findParent(getEventTarget(e), isSelectable);\n        if (t === undefined)\n            return;\n        const target = t;\n        const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n        const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n            selectedDate.getMonth() >\n                self.currentMonth + self.config.showMonths - 1) &&\n            self.config.mode !== \"range\";\n        self.selectedDateElem = target;\n        if (self.config.mode === \"single\")\n            self.selectedDates = [selectedDate];\n        else if (self.config.mode === \"multiple\") {\n            const selectedIndex = isDateSelected(selectedDate);\n            if (selectedIndex)\n                self.selectedDates.splice(parseInt(selectedIndex), 1);\n            else\n                self.selectedDates.push(selectedDate);\n        }\n        else if (self.config.mode === \"range\") {\n            if (self.selectedDates.length === 2) {\n                self.clear(false, false);\n            }\n            self.latestSelectedDateObj = selectedDate;\n            self.selectedDates.push(selectedDate);\n            if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n                self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n        }\n        setHoursFromInputs();\n        if (shouldChangeMonth) {\n            const isNewYear = self.currentYear !== selectedDate.getFullYear();\n            self.currentYear = selectedDate.getFullYear();\n            self.currentMonth = selectedDate.getMonth();\n            if (isNewYear) {\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            triggerEvent(\"onMonthChange\");\n        }\n        updateNavigationCurrentMonth();\n        buildDays();\n        updateValue();\n        if (!shouldChangeMonth &&\n            self.config.mode !== \"range\" &&\n            self.config.showMonths === 1)\n            focusOnDayElem(target);\n        else if (self.selectedDateElem !== undefined &&\n            self.hourElement === undefined) {\n            self.selectedDateElem && self.selectedDateElem.focus();\n        }\n        if (self.hourElement !== undefined)\n            self.hourElement !== undefined && self.hourElement.focus();\n        if (self.config.closeOnSelect) {\n            const single = self.config.mode === \"single\" && !self.config.enableTime;\n            const range = self.config.mode === \"range\" &&\n                self.selectedDates.length === 2 &&\n                !self.config.enableTime;\n            if (single || range) {\n                focusAndClose();\n            }\n        }\n        triggerChange();\n    }\n    const CALLBACKS = {\n        locale: [setupLocale, updateWeekdays],\n        showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n        minDate: [jumpToDate],\n        maxDate: [jumpToDate],\n        clickOpens: [\n            () => {\n                if (self.config.clickOpens === true) {\n                    bind(self._input, \"focus\", self.open);\n                    bind(self._input, \"click\", self.open);\n                }\n                else {\n                    self._input.removeEventListener(\"focus\", self.open);\n                    self._input.removeEventListener(\"click\", self.open);\n                }\n            },\n        ],\n    };\n    function set(option, value) {\n        if (option !== null && typeof option === \"object\") {\n            Object.assign(self.config, option);\n            for (const key in option) {\n                if (CALLBACKS[key] !== undefined)\n                    CALLBACKS[key].forEach((x) => x());\n            }\n        }\n        else {\n            self.config[option] = value;\n            if (CALLBACKS[option] !== undefined)\n                CALLBACKS[option].forEach((x) => x());\n            else if (HOOKS.indexOf(option) > -1)\n                self.config[option] = arrayify(value);\n        }\n        self.redraw();\n        updateValue(true);\n    }\n    function setSelectedDate(inputDate, format) {\n        let dates = [];\n        if (inputDate instanceof Array)\n            dates = inputDate.map((d) => self.parseDate(d, format));\n        else if (inputDate instanceof Date || typeof inputDate === \"number\")\n            dates = [self.parseDate(inputDate, format)];\n        else if (typeof inputDate === \"string\") {\n            switch (self.config.mode) {\n                case \"single\":\n                case \"time\":\n                    dates = [self.parseDate(inputDate, format)];\n                    break;\n                case \"multiple\":\n                    dates = inputDate\n                        .split(self.config.conjunction)\n                        .map((date) => self.parseDate(date, format));\n                    break;\n                case \"range\":\n                    dates = inputDate\n                        .split(self.l10n.rangeSeparator)\n                        .map((date) => self.parseDate(date, format));\n                    break;\n                default:\n                    break;\n            }\n        }\n        else\n            self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n        self.selectedDates = (self.config.allowInvalidPreload\n            ? dates\n            : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n        if (self.config.mode === \"range\")\n            self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n    }\n    function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n        if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n            return self.clear(triggerChange);\n        setSelectedDate(date, format);\n        self.latestSelectedDateObj =\n            self.selectedDates[self.selectedDates.length - 1];\n        self.redraw();\n        jumpToDate(undefined, triggerChange);\n        setHoursFromDate();\n        if (self.selectedDates.length === 0) {\n            self.clear(false);\n        }\n        updateValue(triggerChange);\n        if (triggerChange)\n            triggerEvent(\"onChange\");\n    }\n    function parseDateRules(arr) {\n        return arr\n            .slice()\n            .map((rule) => {\n            if (typeof rule === \"string\" ||\n                typeof rule === \"number\" ||\n                rule instanceof Date) {\n                return self.parseDate(rule, undefined, true);\n            }\n            else if (rule &&\n                typeof rule === \"object\" &&\n                rule.from &&\n                rule.to)\n                return {\n                    from: self.parseDate(rule.from, undefined),\n                    to: self.parseDate(rule.to, undefined),\n                };\n            return rule;\n        })\n            .filter((x) => x);\n    }\n    function setupDates() {\n        self.selectedDates = [];\n        self.now = self.parseDate(self.config.now) || new Date();\n        const preloadedDate = self.config.defaultDate ||\n            ((self.input.nodeName === \"INPUT\" ||\n                self.input.nodeName === \"TEXTAREA\") &&\n                self.input.placeholder &&\n                self.input.value === self.input.placeholder\n                ? null\n                : self.input.value);\n        if (preloadedDate)\n            setSelectedDate(preloadedDate, self.config.dateFormat);\n        self._initialDate =\n            self.selectedDates.length > 0\n                ? self.selectedDates[0]\n                : self.config.minDate &&\n                    self.config.minDate.getTime() > self.now.getTime()\n                    ? self.config.minDate\n                    : self.config.maxDate &&\n                        self.config.maxDate.getTime() < self.now.getTime()\n                        ? self.config.maxDate\n                        : self.now;\n        self.currentYear = self._initialDate.getFullYear();\n        self.currentMonth = self._initialDate.getMonth();\n        if (self.selectedDates.length > 0)\n            self.latestSelectedDateObj = self.selectedDates[0];\n        if (self.config.minTime !== undefined)\n            self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n        if (self.config.maxTime !== undefined)\n            self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n        self.minDateHasTime =\n            !!self.config.minDate &&\n                (self.config.minDate.getHours() > 0 ||\n                    self.config.minDate.getMinutes() > 0 ||\n                    self.config.minDate.getSeconds() > 0);\n        self.maxDateHasTime =\n            !!self.config.maxDate &&\n                (self.config.maxDate.getHours() > 0 ||\n                    self.config.maxDate.getMinutes() > 0 ||\n                    self.config.maxDate.getSeconds() > 0);\n    }\n    function setupInputs() {\n        self.input = getInputElem();\n        if (!self.input) {\n            self.config.errorHandler(new Error(\"Invalid input element specified\"));\n            return;\n        }\n        self.input._type = self.input.type;\n        self.input.type = \"text\";\n        self.input.classList.add(\"flatpickr-input\");\n        self._input = self.input;\n        if (self.config.altInput) {\n            self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n            self._input = self.altInput;\n            self.altInput.placeholder = self.input.placeholder;\n            self.altInput.disabled = self.input.disabled;\n            self.altInput.required = self.input.required;\n            self.altInput.tabIndex = self.input.tabIndex;\n            self.altInput.type = \"text\";\n            self.input.setAttribute(\"type\", \"hidden\");\n            if (!self.config.static && self.input.parentNode)\n                self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n        }\n        if (!self.config.allowInput)\n            self._input.setAttribute(\"readonly\", \"readonly\");\n        self._positionElement = self.config.positionElement || self._input;\n    }\n    function setupMobile() {\n        const inputType = self.config.enableTime\n            ? self.config.noCalendar\n                ? \"time\"\n                : \"datetime-local\"\n            : \"date\";\n        self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n        self.mobileInput.tabIndex = 1;\n        self.mobileInput.type = inputType;\n        self.mobileInput.disabled = self.input.disabled;\n        self.mobileInput.required = self.input.required;\n        self.mobileInput.placeholder = self.input.placeholder;\n        self.mobileFormatStr =\n            inputType === \"datetime-local\"\n                ? \"Y-m-d\\\\TH:i:S\"\n                : inputType === \"date\"\n                    ? \"Y-m-d\"\n                    : \"H:i:S\";\n        if (self.selectedDates.length > 0) {\n            self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n        }\n        if (self.config.minDate)\n            self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n        if (self.config.maxDate)\n            self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n        if (self.input.getAttribute(\"step\"))\n            self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n        self.input.type = \"hidden\";\n        if (self.altInput !== undefined)\n            self.altInput.type = \"hidden\";\n        try {\n            if (self.input.parentNode)\n                self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n        }\n        catch (_a) { }\n        bind(self.mobileInput, \"change\", (e) => {\n            self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n            triggerEvent(\"onChange\");\n            triggerEvent(\"onClose\");\n        });\n    }\n    function toggle(e) {\n        if (self.isOpen === true)\n            return self.close();\n        self.open(e);\n    }\n    function triggerEvent(event, data) {\n        if (self.config === undefined)\n            return;\n        const hooks = self.config[event];\n        if (hooks !== undefined && hooks.length > 0) {\n            for (let i = 0; hooks[i] && i < hooks.length; i++)\n                hooks[i](self.selectedDates, self.input.value, self, data);\n        }\n        if (event === \"onChange\") {\n            self.input.dispatchEvent(createEvent(\"change\"));\n            self.input.dispatchEvent(createEvent(\"input\"));\n        }\n    }\n    function createEvent(name) {\n        const e = document.createEvent(\"Event\");\n        e.initEvent(name, true, true);\n        return e;\n    }\n    function isDateSelected(date) {\n        for (let i = 0; i < self.selectedDates.length; i++) {\n            if (compareDates(self.selectedDates[i], date) === 0)\n                return \"\" + i;\n        }\n        return false;\n    }\n    function isDateInRange(date) {\n        if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n            return false;\n        return (compareDates(date, self.selectedDates[0]) >= 0 &&\n            compareDates(date, self.selectedDates[1]) <= 0);\n    }\n    function updateNavigationCurrentMonth() {\n        if (self.config.noCalendar || self.isMobile || !self.monthNav)\n            return;\n        self.yearElements.forEach((yearElement, i) => {\n            const d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                self.monthElements[i].textContent =\n                    monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n            }\n            else {\n                self.monthsDropdownContainer.value = d.getMonth().toString();\n            }\n            yearElement.value = d.getFullYear().toString();\n        });\n        self._hidePrevMonthArrow =\n            self.config.minDate !== undefined &&\n                (self.currentYear === self.config.minDate.getFullYear()\n                    ? self.currentMonth <= self.config.minDate.getMonth()\n                    : self.currentYear < self.config.minDate.getFullYear());\n        self._hideNextMonthArrow =\n            self.config.maxDate !== undefined &&\n                (self.currentYear === self.config.maxDate.getFullYear()\n                    ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n                    : self.currentYear > self.config.maxDate.getFullYear());\n    }\n    function getDateStr(format) {\n        return self.selectedDates\n            .map((dObj) => self.formatDate(dObj, format))\n            .filter((d, i, arr) => self.config.mode !== \"range\" ||\n            self.config.enableTime ||\n            arr.indexOf(d) === i)\n            .join(self.config.mode !== \"range\"\n            ? self.config.conjunction\n            : self.l10n.rangeSeparator);\n    }\n    function updateValue(triggerChange = true) {\n        if (self.mobileInput !== undefined && self.mobileFormatStr) {\n            self.mobileInput.value =\n                self.latestSelectedDateObj !== undefined\n                    ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n                    : \"\";\n        }\n        self.input.value = getDateStr(self.config.dateFormat);\n        if (self.altInput !== undefined) {\n            self.altInput.value = getDateStr(self.config.altFormat);\n        }\n        if (triggerChange !== false)\n            triggerEvent(\"onValueUpdate\");\n    }\n    function onMonthNavClick(e) {\n        const eventTarget = getEventTarget(e);\n        const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n        const isNextMonth = self.nextMonthNav.contains(eventTarget);\n        if (isPrevMonth || isNextMonth) {\n            changeMonth(isPrevMonth ? -1 : 1);\n        }\n        else if (self.yearElements.indexOf(eventTarget) >= 0) {\n            eventTarget.select();\n        }\n        else if (eventTarget.classList.contains(\"arrowUp\")) {\n            self.changeYear(self.currentYear + 1);\n        }\n        else if (eventTarget.classList.contains(\"arrowDown\")) {\n            self.changeYear(self.currentYear - 1);\n        }\n    }\n    function timeWrapper(e) {\n        e.preventDefault();\n        const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            self.amPM.textContent =\n                self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n        }\n        const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n            (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n        let newValue = curValue + step * delta;\n        if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n            const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n            if (newValue < min) {\n                newValue =\n                    max +\n                        newValue +\n                        int(!isHourElem) +\n                        (int(isHourElem) && int(!self.amPM));\n                if (isMinuteElem)\n                    incrementNumInput(undefined, -1, self.hourElement);\n            }\n            else if (newValue > max) {\n                newValue =\n                    input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n                if (isMinuteElem)\n                    incrementNumInput(undefined, 1, self.hourElement);\n            }\n            if (self.amPM &&\n                isHourElem &&\n                (step === 1\n                    ? newValue + curValue === 23\n                    : Math.abs(newValue - curValue) > step)) {\n                self.amPM.textContent =\n                    self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n            }\n            input.value = pad(newValue);\n        }\n    }\n    init();\n    return self;\n}\nfunction _flatpickr(nodeList, config) {\n    const nodes = Array.prototype.slice\n        .call(nodeList)\n        .filter((x) => x instanceof HTMLElement);\n    const instances = [];\n    for (let i = 0; i < nodes.length; i++) {\n        const node = nodes[i];\n        try {\n            if (node.getAttribute(\"data-fp-omit\") !== null)\n                continue;\n            if (node._flatpickr !== undefined) {\n                node._flatpickr.destroy();\n                node._flatpickr = undefined;\n            }\n            node._flatpickr = FlatpickrInstance(node, config || {});\n            instances.push(node._flatpickr);\n        }\n        catch (e) {\n            console.error(e);\n        }\n    }\n    return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n    typeof HTMLCollection !== \"undefined\" &&\n    typeof NodeList !== \"undefined\") {\n    HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n    HTMLElement.prototype.flatpickr = function (config) {\n        return _flatpickr([this], config);\n    };\n}\nvar flatpickr = function (selector, config) {\n    if (typeof selector === \"string\") {\n        return _flatpickr(window.document.querySelectorAll(selector), config);\n    }\n    else if (selector instanceof Node) {\n        return _flatpickr([selector], config);\n    }\n    else {\n        return _flatpickr(selector, config);\n    }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n    en: Object.assign({}, English),\n    default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n    flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n    flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n    jQuery.fn.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n}\nDate.prototype.fp_incr = function (days) {\n    return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n    window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "/*\nStimulus 3.0.0\nCopyright \u00A9 2021 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            }\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map;\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach(eventListener => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach(eventListener => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values())\n            .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map;\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions).sort().forEach(key => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName: matches[2],\n        eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n        identifier: matches[5],\n        methodName: matches[7]\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n    constructor(element, index, descriptor) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n    }\n    static forToken(token) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content));\n    }\n    toString() {\n        const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n    }\n    get params() {\n        if (this.eventTarget instanceof Element) {\n            return this.getParamsFromEventTargetAttributes(this.eventTarget);\n        }\n        else {\n            return {};\n        }\n    }\n    getParamsFromEventTargetAttributes(eventTarget) {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n        const attributes = Array.from(eventTarget.attributes);\n        attributes.forEach(({ name, value }) => {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                Object.assign(params, { [camelize(key)]: typecast(value) });\n            }\n        });\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n}\nconst defaultEventNames = {\n    \"a\": e => \"click\",\n    \"button\": e => \"click\",\n    \"form\": e => \"submit\",\n    \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n    \"select\": e => \"change\",\n    \"textarea\": e => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        if (this.willBeInvokedByEvent(event)) {\n            this.invokeWithEvent(event);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set;\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, childList: true, subtree: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(node, attributeName) {\n        const element = node;\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map;\n        this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map(attribute => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some(set => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([key, values]) => values.has(value))\n            .map(([key, values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map;\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap;\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach(token => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach(token => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens)\n            .findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString.trim().split(/\\s+/).filter(content => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap;\n        this.valuesByTokenByElement = new WeakMap;\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map;\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map;\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    start() {\n        this.stringMapObserver.start();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            const value = descriptor.reader(rawValue);\n            let oldValue = rawOldValue;\n            if (rawOldValue) {\n                oldValue = descriptor.reader(rawOldValue);\n            }\n            changedMethod.call(this.receiver, value, oldValue);\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach(key => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap;\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            this.delegate.targetConnected(element, name);\n        }\n    }\n    disconnectTarget(element, name) {\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            this.delegate.targetDisconnected(element, name);\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n        return values;\n    }, new Set));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [\n            ...Object.getOwnPropertyNames(object),\n            ...Object.getOwnPropertySymbols(object)\n        ];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended }\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () { this.a.call(this); };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b;\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor)\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap;\n        this.connectedContexts = new Set;\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap;\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set;\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target\n            || this.findTarget(targetName)\n            || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName)\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n    }\n    findElement(selector) {\n        return this.element.matches(selector)\n            ? this.element\n            : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...this.element.matches(selector) ? [this.element] : [],\n            ...this.queryElements(selector).filter(this.containsElement)\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap;\n        this.scopeReferenceCounts = new WeakMap;\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map;\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap;\n        this.modulesByIdentifier = new Map;\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find(context => context.element == element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach(scope => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach(scope => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: identifier => `data-${identifier}-target`\n};\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n    }\n    static start(element, schema) {\n        const application = new Application(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        if (controllerConstructor.shouldLoad) {\n            this.load({ identifier, controllerConstructor });\n        }\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach(definition => this.router.loadDefinition(definition));\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map(context => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise(resolve => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            }\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            }\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            }\n        }\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            }\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            }\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            }\n        }\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            }\n        }\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            }\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            }\n        }\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition]) {\n    return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array: return \"array\";\n        case Boolean: return \"boolean\";\n        case Number: return \"number\";\n        case Object: return \"object\";\n        case String: return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\": return \"boolean\";\n        case \"number\": return \"number\";\n        case \"string\": return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(typeObject) {\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    if (typeFromObject) {\n        const defaultValueType = parseValueTypeDefault(typeObject.default);\n        if (typeFromObject !== defaultValueType) {\n            throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n        }\n        return typeFromObject;\n    }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n    const typeFromObject = parseValueTypeObject(typeDefinition);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(typeDefinition);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n        get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n        reader: readers[type],\n        writer: writers[type] || writers.default\n    };\n}\nconst defaultValuesByType = {\n    get array() { return []; },\n    boolean: false,\n    number: 0,\n    get object() { return {}; },\n    string: \"\"\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(\"Expected array\");\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || value == \"false\");\n    },\n    number(value) {\n        return Number(value);\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(\"Expected object\");\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    }\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "export const kebabCase = string =>\n  string\n    .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n    .replace(/[\\s_]+/g, \"-\")\n    .toLowerCase();\n\nexport const capitalize = string => {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n};\n", "const booleanOptions = [\n  'allowInput',\n  'altInput',\n  'animate',\n  'clickOpens',\n  'closeOnSelect',\n  'disableMobile',\n  'enableSeconds',\n  'enableTime',\n  'inline',\n  'noCalendar',\n  'shorthandCurrentMonth',\n  'static',\n  'time_24hr',\n  'weekNumbers',\n  'wrap'\n]\n\nconst stringOptions = [\n  'altInputClass',\n  'conjunction',\n  'mode',\n  'nextArrow',\n  'position',\n  'prevArrow',\n  'monthSelectorType'\n]\n\nconst numberOptions = [\n  'defaultHour',\n  'defaultMinute',\n  'defaultSeconds',\n  'hourIncrement',\n  'minuteIncrement',\n  'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n  string: stringOptions,\n  boolean: booleanOptions,\n  date: dateOptions,\n  array: arrayOptions,\n  number: numberOptions,\n  arrayOrString: arrayOrStringOptions\n}\n", "export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n", "export const elements = [\n  'calendarContainer',\n  'currentYearElement',\n  'days',\n  'daysContainer',\n  'input',\n  'nextMonthNav',\n  'monthNav',\n  'prevMonthNav',\n  'rContainer',\n  'selectedDateElem',\n  'todayDateElem',\n  'weekdayContainer'\n]\n", "export const mapping = {\n  '%Y': 'Y',\n  '%y': 'y',\n  '%C': 'Y',\n  '%m': 'm',\n  '%-m': 'n',\n  '%_m': 'n',\n  '%B': 'F',\n  '%^B': 'F',\n  '%b': 'M',\n  '%^b': 'M',\n  '%h': 'M',\n  '%^h': 'M',\n  '%d': 'd',\n  '%-d': 'j',\n  '%e': 'j',\n  '%H': 'H',\n  '%k': 'H',\n  '%I': 'h',\n  '%l': 'h',\n  '%-l': 'h',\n  '%P': 'K',\n  '%p': 'K',\n  '%M': 'i',\n  '%S': 'S',\n  '%A': 'l',\n  '%a': 'D',\n  '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n  Object.keys(mapping)\n    .join('|')\n    .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n  'g'\n)\n\nexport const convertDateFormat = (format) => {\n  return format.replace(strftimeRegex, (match) => {\n    return mapping[match]\n  })\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n  static targets = ['instance']\n\n  initialize() {\n    this.config = {}\n  }\n\n  connect() {\n    this._initializeEvents()\n    this._initializeOptions()\n    this._initializeDateFormats()\n\n    this.fp = flatpickr(this.flatpickrElement, {\n      ...this.config\n    })\n\n    this._initializeElements()\n  }\n\n  disconnect() {\n    const value = this.inputTarget.value\n    this.fp.destroy()\n    this.inputTarget.value = value\n  }\n\n  _initializeEvents() {\n    events.forEach((event) => {\n      if (this[event]) {\n        const hook = `on${capitalize(event)}`\n        this.config[hook] = this[event].bind(this)\n      }\n    })\n  }\n\n  _initializeOptions() {\n    Object.keys(options).forEach((optionType) => {\n      const optionsCamelCase = options[optionType]\n      optionsCamelCase.forEach((option) => {\n        const optionKebab = kebabCase(option)\n        if (this.data.has(optionKebab)) {\n          this.config[option] = this[`_${optionType}`](optionKebab)\n        }\n      })\n    })\n    this._handleDaysOfWeek()\n  }\n\n  _handleDaysOfWeek() {\n    if (this.config.disableDaysOfWeek) {\n      this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n      this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n    }\n\n    if (this.config.enableDaysOfWeek) {\n      this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n      this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n    }\n  }\n\n  _validateDaysOfWeek(days) {\n    if (Array.isArray(days)) {\n      return days.map((day) => parseInt(day))\n    } else {\n      console.error('days of week must be a valid array')\n      return []\n    }\n  }\n\n  _disable(date) {\n    const disabledDays = this.config.disableDaysOfWeek\n    return disabledDays.includes(date.getDay())\n  }\n\n  _enable(date) {\n    const enabledDays = this.config.enableDaysOfWeek\n    return enabledDays.includes(date.getDay())\n  }\n\n  _initializeDateFormats() {\n    dateFormats.forEach((dateFormat) => {\n      if (this.data.has(dateFormat)) {\n        this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n      }\n    })\n  }\n\n  _initializeElements() {\n    elements.forEach((element) => {\n      this[`${element}Target`] = this.fp[element]\n    })\n  }\n\n  _string(option) {\n    return this.data.get(option)\n  }\n\n  _date(option) {\n    return this.data.get(option)\n  }\n\n  _boolean(option) {\n    return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n  }\n\n  _array(option) {\n    return JSON.parse(this.data.get(option))\n  }\n\n  _number(option) {\n    return parseInt(this.data.get(option))\n  }\n\n  _arrayOrString(option) {\n    const val = this.data.get(option)\n    try {\n      return JSON.parse(val)\n    } catch (e) {\n      return val\n    }\n  }\n\n  get flatpickrElement() {\n    return (this.hasInstanceTarget && this.instanceTarget) || this.element\n  }\n}\n\nexport default StimulusFlatpickr\n", "import Flatpickr from 'stimulus-flatpickr'\nimport monthSelectPlugin from 'flatpickr/dist/plugins/monthSelect/index'\n\nexport default class extends Flatpickr {\n  static values = { required: Boolean }\n\n  connect() {\n    if (this.element.dataset.flatpickrMode === 'month') {\n      this.config = {\n        plugins: [\n          new monthSelectPlugin({\n            shorthand: 'true',\n            altFormat: 'F Y',\n          }),\n        ],\n      }\n    } else {\n      this.config = {\n        allowInput: this.requiredValue,\n      }\n    }\n\n    super.connect()\n\n    if (this.requiredValue) {\n      this.inputTarget.nextElementSibling.onkeydown = () => false\n    }\n  }\n}\n", "/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n    Object.keys(src).forEach((key) => {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nconst ssrDocument = {\n    body: {},\n    addEventListener() { },\n    removeEventListener() { },\n    activeElement: {\n        blur() { },\n        nodeName: '',\n    },\n    querySelector() {\n        return null;\n    },\n    querySelectorAll() {\n        return [];\n    },\n    getElementById() {\n        return null;\n    },\n    createEvent() {\n        return {\n            initEvent() { },\n        };\n    },\n    createElement() {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute() { },\n            getElementsByTagName() {\n                return [];\n            },\n        };\n    },\n    createElementNS() {\n        return {};\n    },\n    importNode() {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nfunction getDocument() {\n    const doc = typeof document !== 'undefined' ? document : {};\n    extend(doc, ssrDocument);\n    return doc;\n}\n\nconst ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState() { },\n        pushState() { },\n        go() { },\n        back() { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener() { },\n    removeEventListener() { },\n    getComputedStyle() {\n        return {\n            getPropertyValue() {\n                return '';\n            },\n        };\n    },\n    Image() { },\n    Date() { },\n    screen: {},\n    setTimeout() { },\n    clearTimeout() { },\n    matchMedia() {\n        return {};\n    },\n    requestAnimationFrame(callback) {\n        if (typeof setTimeout === 'undefined') {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame(id) {\n        if (typeof setTimeout === 'undefined') {\n            return;\n        }\n        clearTimeout(id);\n    },\n};\nfunction getWindow() {\n    const win = typeof window !== 'undefined' ? window : {};\n    extend(win, ssrWindow);\n    return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n", "/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n  const proto = obj.__proto__;\n  Object.defineProperty(obj, '__proto__', {\n    get() {\n      return proto;\n    },\n\n    set(value) {\n      proto.__proto__ = value;\n    }\n\n  });\n}\n\nclass Dom7 extends Array {\n  constructor(items) {\n    if (typeof items === 'number') {\n      super(items);\n    } else {\n      super(...(items || []));\n      makeReactive(this);\n    }\n  }\n\n}\n\nfunction arrayFlat(arr = []) {\n  const res = [];\n  arr.forEach(el => {\n    if (Array.isArray(el)) {\n      res.push(...arrayFlat(el));\n    } else {\n      res.push(el);\n    }\n  });\n  return res;\n}\nfunction arrayFilter(arr, callback) {\n  return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n  const uniqueArray = [];\n\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n  if (typeof selector !== 'string') {\n    return [selector];\n  }\n\n  const a = [];\n  const res = context.querySelectorAll(selector);\n\n  for (let i = 0; i < res.length; i += 1) {\n    a.push(res[i]);\n  }\n\n  return a;\n}\n\nfunction $(selector, context) {\n  const window = getWindow();\n  const document = getDocument();\n  let arr = [];\n\n  if (!context && selector instanceof Dom7) {\n    return selector;\n  }\n\n  if (!selector) {\n    return new Dom7(arr);\n  }\n\n  if (typeof selector === 'string') {\n    const html = selector.trim();\n\n    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n      let toCreate = 'div';\n      if (html.indexOf('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.add(...classNames);\n  });\n  return this;\n}\n\nfunction removeClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.remove(...classNames);\n  });\n  return this;\n}\n\nfunction toggleClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    classNames.forEach(className => {\n      el.classList.toggle(className);\n    });\n  });\n}\n\nfunction hasClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  return arrayFilter(this, el => {\n    return classNames.filter(className => el.classList.contains(className)).length > 0;\n  }).length > 0;\n}\n\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  } // Set attrs\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n\n  return this;\n}\n\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction data(key, value) {\n  let el;\n\n  if (typeof value === 'undefined') {\n    el = this[0];\n    if (!el) return undefined; // Get value\n\n    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n      return el.dom7ElementDataStorage[key];\n    }\n\n    const dataKey = el.getAttribute(`data-${key}`);\n\n    if (dataKey) {\n      return dataKey;\n    }\n\n    return undefined;\n  } // Set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n\n  return this;\n}\n\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\n\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n\n  if (el.dataset) {\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      const attr = el.attributes[i];\n\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n\n  return dataset;\n}\n\nfunction val(value) {\n  if (typeof value === 'undefined') {\n    // get value\n    const el = this[0];\n    if (!el) return undefined;\n\n    if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n      const values = [];\n\n      for (let i = 0; i < el.selectedOptions.length; i += 1) {\n        values.push(el.selectedOptions[i].value);\n      }\n\n      return values;\n    }\n\n    return el.value;\n  } // set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n\n  return this;\n}\n\nfunction value(value) {\n  return this.val(value);\n}\n\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transform = transform;\n  }\n\n  return this;\n}\n\nfunction transition(duration) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n  }\n\n  return this;\n}\n\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n      const parents = $(target).parents(); // eslint-disable-line\n\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    listener.apply(this, eventData);\n  }\n\n  const events = eventType.split(' ');\n  let j;\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n  const events = eventType.split(' ');\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n  const window = getWindow();\n  const events = args[0].split(' ');\n  const eventData = args[1];\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n\n      if (window.CustomEvent) {\n        const evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true\n        });\n        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n        el.dispatchEvent(evt);\n        el.dom7EventData = [];\n        delete el.dom7EventData;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction transitionEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction animationEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('animationend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('animationend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction width() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\n\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n\n    return this[0].offsetWidth;\n  }\n\n  return null;\n}\n\nfunction height() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\n\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n\n    return this[0].offsetHeight;\n  }\n\n  return null;\n}\n\nfunction offset() {\n  if (this.length > 0) {\n    const window = getWindow();\n    const document = getDocument();\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: box.top + scrollTop - clientTop,\n      left: box.left + scrollLeft - clientLeft\n    };\n  }\n\n  return null;\n}\n\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n\n  return this;\n}\n\nfunction show() {\n  const window = getWindow();\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n\n  return this;\n}\n\nfunction styles() {\n  const window = getWindow();\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\n\nfunction css(props, value) {\n  const window = getWindow();\n  let i;\n\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      // .css('width')\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      // .css({ width: '100px' })\n      for (i = 0; i < this.length; i += 1) {\n        for (const prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n\n      return this;\n    }\n  }\n\n  if (arguments.length === 2 && typeof props === 'string') {\n    // .css('width', '100px')\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction each(callback) {\n  if (!callback) return this;\n  this.forEach((el, index) => {\n    callback.apply(el, [el, index]);\n  });\n  return this;\n}\n\nfunction filter(callback) {\n  const result = arrayFilter(this, callback);\n  return $(result);\n}\n\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n\n  return this;\n}\n\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    return this[0] ? this[0].textContent.trim() : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n\n  return this;\n}\n\nfunction is(selector) {\n  const window = getWindow();\n  const document = getDocument();\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n    compareWith = $(selector);\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  if (selector === document) {\n    return el === document;\n  }\n\n  if (selector === window) {\n    return el === window;\n  }\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  return false;\n}\n\nfunction index() {\n  let child = this[0];\n  let i;\n\n  if (child) {\n    i = 0; // eslint-disable-next-line\n\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n\n    return i;\n  }\n\n  return undefined;\n}\n\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n\n  if (index > length - 1) {\n    return $([]);\n  }\n\n  if (index < 0) {\n    const returnIndex = length + index;\n    if (returnIndex < 0) return $([]);\n    return $([this[returnIndex]]);\n  }\n\n  return $([this[index]]);\n}\n\nfunction append(...els) {\n  let newChild;\n  const document = getDocument();\n\n  for (let k = 0; k < els.length; k += 1) {\n    newChild = els[k];\n\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\n\nfunction prepend(newChild) {\n  const document = getDocument();\n  let i;\n  let j;\n\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n\n  return this;\n}\n\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\n\nfunction insertBefore(selector) {\n  const before = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\n\nfunction insertAfter(selector) {\n  const after = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\n\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return $([this[0].nextElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n\n    el = next;\n  }\n\n  return $(nextEls);\n}\n\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return $([el.previousElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (el.previousElementSibling) return $([el.previousElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n\n    el = prev;\n  }\n\n  return $(prevEls);\n}\n\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n\n  return $(parents);\n}\n\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n\n      parent = parent.parentNode;\n    }\n  }\n\n  return $(parents);\n}\n\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n\n  if (typeof selector === 'undefined') {\n    return $([]);\n  }\n\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n\n  return closest;\n}\n\nfunction find(selector) {\n  const foundElements = [];\n\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n\n  return $(foundElements);\n}\n\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].children;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector || $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n\n  return $(children);\n}\n\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n\n  return this;\n}\n\nfunction detach() {\n  return this.remove();\n}\n\nfunction add(...els) {\n  const dom = this;\n  let i;\n  let j;\n\n  for (i = 0; i < els.length; i += 1) {\n    const toAdd = $(els[i]);\n\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom.push(toAdd[j]);\n    }\n  }\n\n  return dom;\n}\n\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n\n      el.textContent = '';\n    }\n  }\n\n  return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n  const window = getWindow();\n  let [left, top, duration, easing, callback] = args;\n\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n\n  if (typeof easing === 'undefined') easing = 'swing';\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n\n    let scrollLeft; // eslint-disable-line\n\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n\n    if (animateTop) {\n      currentTop = el.scrollTop;\n\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n\n    if (!duration) return;\n\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n      let done;\n      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      window.requestAnimationFrame(render);\n    }\n\n    window.requestAnimationFrame(render);\n  });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n  const window = getWindow();\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing' // or 'linear'\n\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n\n    }, initialParams),\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - Math.cos(progress * Math.PI) / 2;\n      }\n\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n\n      return progress;\n    },\n\n    stop() {\n      if (a.frameId) {\n        window.cancelAnimationFrame(a.frameId);\n      }\n\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n\n    done(complete) {\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n\n      const elements = []; // Define & Cache Initials & Units\n\n      a.elements.each((el, index) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n        elements[index] = {\n          container: el\n        };\n        Object.keys(props).forEach(prop => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue\n          };\n        });\n      });\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress; // let el;\n\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n\n        if (startTime === null) {\n          startTime = time;\n        }\n\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n        }\n\n        elements.forEach(element => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach(prop => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const {\n              initialValue,\n              finalValue,\n              unit\n            } = el[prop];\n            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n            const currentValue = el[prop].currentValue;\n\n            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return; // Then call\n\n        a.frameId = window.requestAnimationFrame(render);\n      }\n\n      a.frameId = window.requestAnimationFrame(render);\n      return a;\n    }\n\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n  function eventHandler(...args) {\n    if (typeof args[0] === 'undefined') {\n      for (let i = 0; i < this.length; i += 1) {\n        if (noTrigger.indexOf(name) < 0) {\n          if (name in this[i]) this[i][name]();else {\n            $(this[i]).trigger(name);\n          }\n        }\n      }\n\n      return this;\n    }\n\n    return this.on(name, ...args);\n  }\n\n  return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n", "import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove\n};\nObject.keys(Methods).forEach(methodName => {\n  Object.defineProperty($.fn, methodName, {\n    value: Methods[methodName],\n    writable: true\n  });\n});\nexport default $;", "import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {// no getter for object\n    }\n\n    try {\n      delete object[key];\n    } catch (e) {// something got wrong\n    }\n  });\n}\n\nfunction nextTick(callback, delay = 0) {\n  return setTimeout(callback, delay);\n}\n\nfunction now() {\n  return Date.now();\n}\n\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n\n  if (!style) {\n    style = el.style;\n  }\n\n  return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el, null);\n\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    } // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n\n\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n\n  return curTransform || 0;\n}\n\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n  const to = Object(args[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[i];\n\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n\n  return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n  swiper,\n  targetPosition,\n  side\n}) {\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n\n  const animate = () => {\n    time = new Date().getTime();\n\n    if (startTime === null) {\n      startTime = time;\n    }\n\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n\n  animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };", "import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n    passiveListener: function checkPassiveListener() {\n      let supportsPassive = false;\n\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          }\n\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {// No support\n      }\n\n      return supportsPassive;\n    }(),\n    gestures: function checkGestures() {\n      return 'ongesturestart' in window;\n    }()\n  };\n}\n\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n\n  return support;\n}\n\nexport { getSupport };", "import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n  userAgent\n} = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  } // Android\n\n\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  } // Export object\n\n\n  return device;\n}\n\nfunction getDevice(overrides = {}) {\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n\n  return deviceCached;\n}\n\nexport { getDevice };", "import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n\n  return {\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\n\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n\n  return browser;\n}\n\nexport { getBrowser };", "import { getWindow } from 'ssr-window';\nexport default function Resize({\n  swiper,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  let observer = null;\n\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      const {\n        width,\n        height\n      } = swiper;\n      let newWidth = width;\n      let newHeight = height;\n      entries.forEach(({\n        contentBoxSize,\n        contentRect,\n        target\n      }) => {\n        if (target && target !== swiper.el) return;\n        newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n        newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n      });\n\n      if (newWidth !== width || newHeight !== height) {\n        resizeHandler();\n      }\n    });\n    observer.observe(swiper.el);\n  };\n\n  const removeObserver = () => {\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}", "import { getWindow } from 'ssr-window';\nexport default function Observer({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const observers = [];\n  const window = getWindow();\n\n  const attach = (target, options = {}) => {\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n\n  const init = () => {\n    if (!swiper.params.observer) return;\n\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    } // Observe container\n\n\n    attach(swiper.$el[0], {\n      childList: swiper.params.observeSlideChildren\n    }); // Observe wrapper\n\n    attach(swiper.$wrapperEl[0], {\n      attributes: false\n    });\n  };\n\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}", "/* eslint-disable no-underscore-dangle */\nexport default {\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n\n      handler.apply(self, args);\n    }\n\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n\n  onAny(handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n\n    return self;\n  },\n\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n\n    return self;\n  },\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n};", "export default function updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  } // Subtract paddings\n\n\n  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}", "import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n  const swiper = this;\n\n  function getDirectionLabel(property) {\n    if (swiper.isHorizontal()) {\n      return property;\n    } // prettier-ignore\n\n\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n  }\n\n  const params = swiper.params;\n  const {\n    $wrapperEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween; // reset margins\n\n  if (rtl) slides.css({\n    marginLeft: '',\n    marginBottom: '',\n    marginTop: ''\n  });else slides.css({\n    marginRight: '',\n    marginBottom: '',\n    marginTop: ''\n  }); // reset cssMode offsets\n\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n  }\n\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n  if (gridEnabled) {\n    swiper.grid.initSlides(slidesLength);\n  } // Calc slides\n\n\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n\n      const slideStyles = getComputedStyle(slide[0]);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide[0];\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n\n    slidesSizesGrid.push(slideSize);\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({\n      width: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (params.setWrapperSize) {\n    $wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  } // Remove last grid elements depending on width\n\n\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n\n    snapGrid = newSlidesGrid;\n\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode) return true;\n\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n\n      return true;\n    }).css({\n      [key]: `${spaceBetween}px`\n    });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n}", "export default function updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n    }\n\n    return swiper.slides.eq(index)[0];\n  }; // Find slides currently in view\n\n\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  } // Find new height from highest slide in view\n\n\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  } // Update Height\n\n\n  if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}", "export default function updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}", "import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate; // Visible Slides\n\n  slides.removeClass(params.slideVisibleClass);\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n      slides.eq(i).addClass(params.slideVisibleClass);\n    }\n\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}", "export default function updateProgress(translate) {\n  const swiper = this;\n\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n\n  Object.assign(swiper, {\n    progress,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}", "export default function updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    $wrapperEl,\n    activeIndex,\n    realIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n  let activeSlide;\n\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  } // Active classes\n\n\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n    }\n  } // Next Slide\n\n\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  } // Prev Slide\n\n\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n    }\n\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n    }\n  }\n\n  swiper.emitSlidesClasses();\n}", "export default function updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid,\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    } // Normalize slideIndex\n\n\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n\n    return;\n  } // Get real index\n\n\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n  Object.assign(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}", "import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  let slideIndex;\n\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}", "import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};", "import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    $wrapperEl\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}", "export default function setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    $wrapperEl,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}", "export default function minTranslate() {\n  return -this.snapGrid[0];\n}", "export default function maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}", "import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n\n    if (!swiper.animating) {\n      swiper.animating = true;\n\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}", "import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};", "export default function setTransition(duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}", "export default function transitionEmit({\n  swiper,\n  runCallbacks,\n  direction,\n  step\n}) {\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n\n  swiper.emit(`transition${step}`);\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n\n    swiper.emit(`slideChangeTransition${step}`);\n\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}", "import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}", "import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}", "import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};", "import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n  if (typeof index !== 'number' && typeof index !== 'string') {\n    throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n  }\n\n  if (typeof index === 'string') {\n    /**\n     * The `index` argument converted from `string` to `number`.\n     * @type {number}\n     */\n    const indexAsNumber = parseInt(index, 10);\n    /**\n     * Determines whether the `index` argument is a valid `number`\n     * after being converted from the `string` type.\n     * @type {boolean}\n     */\n\n    const isValidNumber = isFinite(indexAsNumber);\n\n    if (!isValidNumber) {\n      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n    } // Knowing that the converted `index` is a valid number,\n    // we can update the original argument's value.\n\n\n    index = indexAsNumber;\n  }\n\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex]; // Update progress\n\n  swiper.updateProgress(translate); // Normalize slideIndex\n\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  } // Directions locks\n\n\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n    swiper.updateActiveIndex(slideIndex); // Update Height\n\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n\n    swiper.updateSlidesClasses();\n\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n\n    return false;\n  }\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._swiperImmediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n\n    swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n    swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n  }\n\n  return true;\n}", "export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    animating,\n    enabled,\n    params\n  } = swiper;\n  if (!enabled) return swiper;\n  let perGroup = params.slidesPerGroup;\n\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix(); // eslint-disable-next-line\n\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    animating,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return swiper;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix(); // eslint-disable-next-line\n\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n\n  let prevIndex = 0;\n\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n\n  if (params.rewind && swiper.isBeginning) {\n    return swiper.slideTo(swiper.slides.length - 1, speed, runCallbacks, internal);\n  }\n\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}", "import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}", "import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    $wrapperEl\n  } = swiper; // Remove duplicated slides\n\n  const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n  let slides = $selector.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $selector.append(blankNode);\n      }\n\n      slides = $selector.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((el, index) => {\n    const slide = $(el);\n\n    if (index < swiper.loopedSlides) {\n      appendSlides.push(el);\n    }\n\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n      prependSlides.push(el);\n    }\n\n    slide.attr('data-swiper-slide-index', index);\n  });\n\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}", "export default function loopFix() {\n  const swiper = this;\n  swiper.emit('beforeLoopFix');\n  const {\n    activeIndex,\n    slides,\n    loopedSlides,\n    allowSlidePrev,\n    allowSlideNext,\n    snapGrid,\n    rtlTranslate: rtl\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n  if (activeIndex < loopedSlides) {\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  swiper.emit('loopFix');\n}", "export default function loopDestroy() {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    slides\n  } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}", "import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};", "export default function setGrabCursor(moving) {\n  const swiper = this;\n  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}", "export default function unsetGrabCursor() {\n  const swiper = this;\n\n  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}", "import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n  setGrabCursor,\n  unsetGrabCursor\n};", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    return found || __closestFrom(el.getRootNode().host);\n  }\n\n  return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n    $targetEl = $(event.path[0]);\n  }\n\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n    swiper.allowClick = true;\n    return;\n  }\n\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n    } else {\n      return;\n    }\n  }\n\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n    if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n      e.preventDefault();\n    }\n  }\n\n  swiper.emit('touchStart', e);\n}", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n\n    return;\n  }\n\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n\n    return;\n  }\n\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n\n  if (!data.startMoving) {\n    return;\n  }\n\n  swiper.allowClick = false;\n\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop && !params.cssMode) {\n      swiper.loopFix();\n    }\n\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n\n    data.allowMomentumBounce = false; // Grab Cursor\n\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n\n    swiper.emit('sliderFirstMove', e);\n  }\n\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n\n  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  } // Directions locks\n\n\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  } // Threshold\n\n\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  } // Update progress\n\n\n  swiper.updateProgress(data.currentTranslate); // Update translate\n\n  swiper.setTranslate(data.currentTranslate);\n}", "import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n\n  data.allowTouchCallbacks = false;\n\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  } // Return Grab Cursor\n\n\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  } // Time diff\n\n\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n    swiper.emit('tap click', e);\n\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  } // Find current slide\n\n\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  } // Find current slide size\n\n\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}", "export default function onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return; // Breakpoints\n\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  } // Save locks\n\n\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper; // Disable locks on resize\n\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  } // Return locks after resize\n\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}", "export default function onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}", "export default function onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  } // eslint-disable-next-line\n\n\n  if (swiper.translate === -0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}", "import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    touchEvents,\n    el,\n    wrapperEl,\n    device,\n    support\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method; // Touch Events\n\n  if (!support.touch) {\n    el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n      passive: false,\n      capture\n    } : capture);\n    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n    if (touchEvents.cancel) {\n      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n    }\n  } // Prevent Links Clicks\n\n\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  } // Resize handler\n\n\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n};\n\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    support\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  if (support.touch && !dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n\n  events(swiper, 'on');\n}\n\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\n\nexport default {\n  attachEvents,\n  detachEvents\n};", "import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n  const swiper = this;\n  const {\n    activeIndex,\n    initialized,\n    loopedSlides = 0,\n    params,\n    $el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n\n  if (wasMultiRow && !isMultiRow) {\n    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    $el.addClass(`${params.containerModifierClass}grid`);\n\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      $el.addClass(`${params.containerModifierClass}grid-column`);\n    }\n\n    swiper.emitContainerClasses();\n  }\n\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n\n  if (needsReLoop && initialized) {\n    swiper.loopDestroy();\n    swiper.loopCreate();\n    swiper.updateSlides();\n    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n  }\n\n  swiper.emit('breakpoint', breakpointParams);\n}", "import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n\n  return breakpoint || 'max';\n}", "import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n  setBreakpoint,\n  getBreakpoint\n};", "function prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\n\nexport default function addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    $el,\n    device,\n    support\n  } = swiper; // prettier-ignore\n\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'pointer-events': !support.touch\n  }, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  $el.addClass([...classNames].join(' '));\n  swiper.emitContainerClasses();\n}", "export default function removeClasses() {\n  const swiper = this;\n  const {\n    $el,\n    classNames\n  } = swiper;\n  $el.removeClass(classNames.join(' '));\n  swiper.emitContainerClasses();\n}", "import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n  addClasses,\n  removeClasses\n};", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n  const window = getWindow();\n  let image;\n\n  function onReady() {\n    if (callback) callback();\n  }\n\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n\n      if (sizes) {\n        image.sizes = sizes;\n      }\n\n      if (srcset) {\n        image.srcset = srcset;\n      }\n\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}", "export default function preloadImages() {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n  }\n}", "import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n  loadImage,\n  preloadImages\n};", "function checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\n\nexport default {\n  checkOverflow\n};", "export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n  loopPreventsSlide: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};", "import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj = {}) {\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n\n    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        auto: true\n      };\n    }\n\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}", "/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n  constructor(...args) {\n    let el;\n    let params;\n\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    if (params.el && $(params.el).length > 1) {\n      const swipers = [];\n      $(params.el).each(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    } // Swiper Instance\n\n\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    }); // Extend defaults with modules params\n\n    const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params); // add event listeners\n\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    } // Save Dom lib\n\n\n    swiper.$ = $; // Extend Swiper\n\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEvents: function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3]\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2]\n        };\n        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }(),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper'); // Init\n\n    if (swiper.params.init) {\n      swiper.init();\n    } // Return app instance\n\n\n    return swiper;\n  }\n\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    swiper.emit('enable');\n  }\n\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n\n    swiper.emit('disable');\n  }\n\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.each(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n\n  slidesPerViewDynamic(view = 'current', exact = false) {\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper; // Breakpoints\n\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n\n    let translated;\n\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n      setTranslate();\n\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n\n      if (!translated) {\n        setTranslate();\n      }\n    }\n\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n\n    swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.each(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n\n  mount(el) {\n    const swiper = this;\n    if (swiper.mounted) return true; // Find el\n\n    const $el = $(el || swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return false;\n    }\n\n    el.swiper = swiper;\n\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n        res.children = options => $el.children(options);\n\n        return res;\n      }\n\n      return $el.children(getWrapperSelector());\n    }; // Find Wrapper\n\n\n    let $wrapperEl = getWrapper();\n\n    if ($wrapperEl.length === 0 && swiper.params.createElements) {\n      const document = getDocument();\n      const wrapper = document.createElement('div');\n      $wrapperEl = $(wrapper);\n      wrapper.className = swiper.params.wrapperClass;\n      $el.append(wrapper);\n      $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n        $wrapperEl.append(slideEl);\n      });\n    }\n\n    Object.assign(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n    });\n    return true;\n  }\n\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit'); // Set breakpoint\n\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    } // Add Classes\n\n\n    swiper.addClasses(); // Create loop\n\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    } // Update size\n\n\n    swiper.updateSize(); // Update slides\n\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    } // Set Grab Cursor\n\n\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    } // Slide To Initial Slide\n\n\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    } // Attach events\n\n\n    swiper.attachEvents(); // Init Flag\n\n    swiper.initialized = true; // Emit\n\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params,\n      $el,\n      $wrapperEl,\n      slides\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy'); // Init Flag\n\n    swiper.initialized = false; // Detach events\n\n    swiper.detachEvents(); // Destroy loop\n\n    if (params.loop) {\n      swiper.loopDestroy();\n    } // Cleanup styles\n\n\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n\n      if (slides && slides.length) {\n        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy'); // Detach emitter events\n\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      deleteProps(swiper);\n    }\n\n    swiper.destroyed = true;\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n\n    Swiper.installModule(module);\n    return Swiper;\n  }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;", "import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n\n    const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  }\n\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = slidesPerGroup + addSlidesBefore;\n    }\n\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n\n      swiper.updateProgress();\n      return;\n    }\n\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n\n          return slidesToRender;\n        }()\n      });\n\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      }\n\n      return;\n    }\n\n    const prependIndexes = [];\n    const appendIndexes = [];\n\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n\n    appendIndexes.forEach(index => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach(index => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  }\n\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n\n    update(true);\n  }\n\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    swiper.virtual.slides = swiper.params.virtual.slides;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n\n    if (!swiper.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}", "/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40; // Directions locks\n\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false; // Check that swiper should be inside of visible area of window\n\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n\n      const $el = swiper.$el;\n      const swiperWidth = $el[0].clientWidth;\n      const swiperHeight = $el[0].clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n          inView = true;\n        }\n      }\n\n      if (!inView) return undefined;\n    }\n\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n\n    emit('keyPress', kc);\n    return undefined;\n  }\n\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}", "/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n    // Legacy\n\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    } // side scrolling on FF with DOMMouseScroll\n\n\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    } // Fall-back if spin cannot be determined\n\n\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    } // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n\n\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    } // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n\n\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    } // If you got here is because an animation has been triggered so store the current time\n\n\n    lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n    return false;\n  }\n\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n\n    return false;\n  }\n\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta; // Get the scroll positions\n\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      }; // Keep the most recent events\n\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      } // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n\n\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        } // Emit event\n\n\n        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n\n  function events(method) {\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    target[method]('mouseenter', handleMouseEnter);\n    target[method]('mouseleave', handleMouseLeave);\n    target[method]('wheel', handle);\n  }\n\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n\n    if (swiper.mousewheel.enabled) return false;\n    events('on');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n\n    if (!swiper.mousewheel.enabled) return false;\n    events('off');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}", "import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  const document = getDocument();\n\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n        if (!element) {\n          element = document.createElement('div');\n          element.className = checkProps[key];\n          swiper.$el.append(element);\n        }\n\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n\n  return params;\n}", "import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    $nextEl: null,\n    prevEl: null,\n    $prevEl: null\n  };\n\n  function getEl(el) {\n    let $el;\n\n    if (el) {\n      $el = $(el);\n\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n        $el = swiper.$el.find(el);\n      }\n    }\n\n    return $el;\n  }\n\n  function toggleEl($el, disabled) {\n    const params = swiper.params.navigation;\n\n    if ($el && $el.length > 0) {\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      }\n    }\n  }\n\n  function update() {\n    // Update Navigation Buttons\n    if (swiper.params.loop) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n  }\n\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n  }\n\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    const $nextEl = getEl(params.nextEl);\n    const $prevEl = getEl(params.prevEl);\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', onNextClick);\n    }\n\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', onPrevClick);\n    }\n\n    Object.assign(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0]\n    });\n\n    if (!swiper.enabled) {\n      if ($nextEl) $nextEl.addClass(params.lockClass);\n      if ($prevEl) $prevEl.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  }\n\n  on('init', () => {\n    init();\n    update();\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl) {\n      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n\n    if ($prevEl) {\n      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n  });\n  on('click', (_s, e) => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    const targetEl = e.target;\n\n    if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n\n      if ($nextEl) {\n        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n      } else if ($prevEl) {\n        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n\n      if ($nextEl) {\n        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if ($prevEl) {\n        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n    }\n  });\n  Object.assign(swiper.navigation, {\n    update,\n    init,\n    destroy\n  });\n}", "export default function classesToSelector(classes = '') {\n  return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}", "import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    $el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n  }\n\n  function setSideBullets($bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n  }\n\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el; // Current/Total\n\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\n\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    } // Types\n\n\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n\n      if (params.dynamicBullets) {\n        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n\n      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n      if ($el.length > 1) {\n        bullets.each(bullet => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n\n            if (bulletIndex === firstIndex) {\n              setSideBullets($bullet, 'prev');\n            }\n\n            if (bulletIndex === lastIndex) {\n              setSideBullets($bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              setSideBullets($firstDisplayedBullet, 'prev');\n              setSideBullets($lastDisplayedBullet, 'next');\n            }\n          } else {\n            setSideBullets($firstDisplayedBullet, 'prev');\n            setSideBullets($lastDisplayedBullet, 'next');\n          }\n        }\n      }\n\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n\n      $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      emit('paginationRender', $el[0]);\n    } else {\n      emit('paginationUpdate', $el[0]);\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  }\n\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n    }\n\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type !== 'custom') {\n      emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  }\n\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n      if ($el.length > 1) {\n        $el = $el.filter(el => {\n          if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n          return true;\n        });\n      }\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n    $el.addClass(params.modifierClass + swiper.params.direction);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      dynamicBulletIndex = 0;\n\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Object.assign(swiper.pagination, {\n      $el,\n      el: $el[0]\n    });\n\n    if (!swiper.enabled) {\n      $el.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const $el = swiper.pagination.$el;\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    $el.removeClass(params.modifierClass + swiper.params.direction);\n    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n\n  on('init', () => {\n    init();\n    render();\n    update();\n  });\n  on('activeIndexChange', () => {\n    if (swiper.params.loop) {\n      update();\n    } else if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    if (!swiper.params.loop) {\n      update();\n    }\n  });\n  on('slidesLengthChange', () => {\n    if (swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('snapGridLengthChange', () => {\n    if (!swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.pagination;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const {\n      $el\n    } = swiper.pagination;\n\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n\n      $el.toggleClass(swiper.params.pagination.hiddenClass);\n    }\n  });\n  Object.assign(swiper.pagination, {\n    render,\n    update,\n    init,\n    destroy\n  });\n}", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag'\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null,\n    $el: null,\n    $dragEl: null\n  };\n\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl,\n      progress\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n\n    if (rtl) {\n      newPos = -newPos;\n\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n\n    if (params.hide) {\n      clearTimeout(timeout);\n      $el[0].style.opacity = 1;\n      timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  }\n\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  }\n\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function getPointerPosition(e) {\n    if (swiper.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n    }\n\n    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n  }\n\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    $el.transition(0);\n\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n\n    emit('scrollbarDragStart', e);\n  }\n\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    emit('scrollbarDragMove', e);\n  }\n\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n\n    emit('scrollbarDragEnd', e);\n\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n\n  function events(method) {\n    const {\n      scrollbar,\n      touchEventsTouch,\n      touchEventsDesktop,\n      params,\n      support\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = support.passiveListener && params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n    if (!support.touch) {\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n    } else {\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n    }\n  }\n\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el) return;\n    events('on');\n  }\n\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el) return;\n    events('off');\n  }\n\n  function init() {\n    const {\n      scrollbar,\n      $el: $swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let $el = $(params.el);\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Object.assign(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0]\n    });\n\n    if (params.draggable) {\n      enableDraggable();\n    }\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function destroy() {\n    disableDraggable();\n  }\n\n  on('init', () => {\n    init();\n    updateSize();\n    setTranslate();\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.scrollbar;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  Object.assign(swiper.scrollbar, {\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}", "import $ from '../../shared/dom.js';\nexport default function Parallax({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      $el[0].style.opacity = currentOpacity;\n    }\n\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      slides,\n      progress,\n      snapGrid\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n      setTransform(el, progress);\n    });\n    slides.each((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n        setTransform(el, slideProgress);\n      });\n    });\n  };\n\n  const setTransition = (duration = swiper.params.speed) => {\n    const {\n      $el\n    } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n      const $parallaxEl = $(parallaxEl);\n      let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      $parallaxEl.transition(parallaxDuration);\n    });\n  };\n\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let gesturesEnabled;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const gesture = {\n    $slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    $imageEl: undefined,\n    $imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n\n      scale = value;\n    }\n\n  });\n\n  function getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  } // Events\n\n\n  function onGestureStart(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureTouched = true;\n      gesture.scaleStart = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n\n    isScaling = true;\n  }\n\n  function onGestureChange(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureMoved = true;\n      gesture.scaleMove = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n      if (e.type === 'gesturechange') onGestureStart(e);\n      return;\n    }\n\n    if (support.gestures) {\n      zoom.scale = e.scale * currentScale;\n    } else {\n      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    }\n\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function onGestureEnd(e) {\n    const device = swiper.device;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (!fakeGestureTouched || !fakeGestureMoved) {\n        return;\n      }\n\n      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n        return;\n      }\n\n      fakeGestureTouched = false;\n      fakeGestureMoved = false;\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  }\n\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  }\n\n  function onTouchMove(e) {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n    } // Define if we need image drag\n\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n\n    e.stopPropagation();\n    image.isMoved = true;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    } // Velocity\n\n\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY; // Define if we need image drag\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  }\n\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (e && e.target) {\n        gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      }\n\n      if (!gesture.$slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n        } else {\n          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n        }\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left + window.scrollX;\n      offsetY = gesture.$slideEl.offset().top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  } // Toggle Zoom\n\n\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n\n  function getListeners() {\n    const support = swiper.support;\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = support.passiveListener ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  function getSlideSelector() {\n    return `.${swiper.params.slideClass}`;\n  }\n\n  function toggleGestures(method) {\n    const {\n      passiveListener\n    } = getListeners();\n    const slideSelector = getSlideSelector();\n    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n  }\n\n  function enableGestures() {\n    if (gesturesEnabled) return;\n    gesturesEnabled = true;\n    toggleGestures('on');\n  }\n\n  function disableGestures() {\n    if (!gesturesEnabled) return;\n    gesturesEnabled = false;\n    toggleGestures('off');\n  } // Attach/Detach Events\n\n\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const support = swiper.support;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    const support = swiper.support;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd(e);\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    lazy: {\n      checkInView: false,\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n      scrollingElement: '',\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader'\n    }\n  });\n  swiper.lazy = {};\n  let scrollHandlerAttached = false;\n  let initialImageLoaded = false;\n\n  function loadInSlide(index, loadInDuplicate = true) {\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images.push($slideEl[0]);\n    }\n\n    if ($images.length === 0) return;\n    $images.each(imageEl => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each(sourceEl => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n\n        emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  }\n\n  function load() {\n    const {\n      $wrapperEl,\n      params: swiperParams,\n      slides,\n      activeIndex\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n    let slidesPerView = swiperParams.slidesPerView;\n\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n\n      return $(slideEl).index();\n    }\n\n    if (!initialImageLoaded) initialImageLoaded = true;\n\n    if (swiper.params.watchSlidesProgress) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) loadInSlide(i);\n      }\n    } else {\n      loadInSlide(activeIndex);\n    }\n\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        } // Prev Slides\n\n\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  }\n\n  function checkInViewOnLoad() {\n    const window = getWindow();\n    if (!swiper || swiper.destroyed) return;\n    const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n    const isWindow = $scrollElement[0] === window;\n    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n    const swiperOffset = swiper.$el.offset();\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let inView = false;\n    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n    const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n    for (let i = 0; i < swiperCoord.length; i += 1) {\n      const point = swiperCoord[i];\n\n      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n        inView = true;\n      }\n    }\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n\n    if (inView) {\n      load();\n      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n    } else if (!scrollHandlerAttached) {\n      scrollHandlerAttached = true;\n      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n    }\n  }\n\n  on('beforeInit', () => {\n    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n      swiper.params.preloadImages = false;\n    }\n  });\n  on('init', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('scroll', () => {\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n      load();\n    }\n  });\n  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('transitionStart', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n        if (swiper.params.lazy.checkInView) {\n          checkInViewOnLoad();\n        } else {\n          load();\n        }\n      }\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('slideChange', () => {\n    const {\n      lazy,\n      cssMode,\n      watchSlidesProgress,\n      touchReleaseOnEdges,\n      resistanceRatio\n    } = swiper.params;\n\n    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n      load();\n    }\n  });\n  Object.assign(swiper.lazy, {\n    load,\n    loadInSlide\n  });\n}", "/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n\n    }\n  });\n  swiper.controller = {\n    control: undefined\n  };\n\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n\n        return maxIndex;\n      };\n    }();\n\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2\u2212x1) \u00D7 (y3\u2212y1)) \u00F7 (x3\u2212x1) + y1\n\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n\n    return this;\n  } // xxx: for now i will just save one spline function to to\n\n\n  function getInterpolateFunction(c) {\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  }\n\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n\n      if (duration !== 0) {\n        c.transitionStart();\n\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n\n          c.transitionEnd();\n        });\n      }\n    }\n\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n\n  on('beforeInit', () => {\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}", "import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group'\n    }\n  });\n  let liveRegion = null;\n\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  }\n\n  function getRandomNumber(size = 16) {\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n\n  function makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n  }\n\n  function makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n  }\n\n  function addElRole($el, role) {\n    $el.attr('role', role);\n  }\n\n  function addElRoleDescription($el, description) {\n    $el.attr('aria-roledescription', description);\n  }\n\n  function addElControls($el, controls) {\n    $el.attr('aria-controls', controls);\n  }\n\n  function addElLabel($el, label) {\n    $el.attr('aria-label', label);\n  }\n\n  function addElId($el, id) {\n    $el.attr('id', id);\n  }\n\n  function addElLive($el, live) {\n    $el.attr('aria-live', live);\n  }\n\n  function disableEl($el) {\n    $el.attr('aria-disabled', true);\n  }\n\n  function enableEl($el) {\n    $el.attr('aria-disabled', false);\n  }\n\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const $targetEl = $(e.target);\n\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n\n    if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n      $targetEl[0].click();\n    }\n  }\n\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        disableEl($prevEl);\n        makeElNotFocusable($prevEl);\n      } else {\n        enableEl($prevEl);\n        makeElFocusable($prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        disableEl($nextEl);\n        makeElNotFocusable($nextEl);\n      } else {\n        enableEl($nextEl);\n        makeElFocusable($nextEl);\n      }\n    }\n  }\n\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.each(bulletEl => {\n      const $bulletEl = $(bulletEl);\n\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable($bulletEl);\n\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole($bulletEl, 'button');\n          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n        }\n      }\n\n      if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n        $bulletEl.attr('aria-current', 'true');\n      } else {\n        $bulletEl.removeAttr('aria-current');\n      }\n    });\n  }\n\n  const initNavEl = ($el, wrapperId, message) => {\n    makeElFocusable($el);\n\n    if ($el[0].tagName !== 'BUTTON') {\n      addElRole($el, 'button');\n      $el.on('keydown', onEnterOrSpaceKey);\n    }\n\n    addElLabel($el, message);\n    addElControls($el, wrapperId);\n  };\n\n  function init() {\n    const params = swiper.params.a11y;\n    swiper.$el.append(liveRegion); // Container\n\n    const $containerEl = swiper.$el;\n\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n    }\n\n    if (params.containerMessage) {\n      addElLabel($containerEl, params.containerMessage);\n    } // Wrapper\n\n\n    const $wrapperEl = swiper.$wrapperEl;\n    const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId($wrapperEl, wrapperId);\n    addElLive($wrapperEl, live); // Slide\n\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n    }\n\n    addElRole($(swiper.slides), params.slideRole);\n    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n    swiper.slides.each((slideEl, index) => {\n      const $slideEl = $(slideEl);\n      const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n      const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n      addElLabel($slideEl, ariaLabelMessage);\n    }); // Navigation\n\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl && $nextEl.length) {\n      initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    }\n  }\n\n  function destroy() {\n    if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl) {\n      $nextEl.off('keydown', onEnterOrSpaceKey);\n    }\n\n    if ($prevEl) {\n      $prevEl.off('keydown', onEnterOrSpaceKey);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    }\n  }\n\n  on('beforeInit', () => {\n    liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n    updateNavigation();\n  });\n  on('toEdge', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('fromEdge', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}", "import { getWindow } from 'ssr-window';\nexport default function History({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides'\n    }\n  });\n  let initialized = false;\n  let paths = {};\n\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n\n    const slide = swiper.slides.eq(index);\n    let value = slugify(slide.attr('data-history'));\n\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key}/${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n\n    const currentState = window.history.state;\n\n    if (currentState && currentState.value === value) {\n      return;\n    }\n\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = slugify(slide.attr('data-history'));\n\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n  };\n\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) return;\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  const destroy = () => {\n    const window = getWindow();\n\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n  swiper,\n  extendParams,\n  emit,\n  on\n}) {\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false\n    }\n  });\n\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  };\n\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n      emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      emit('hashSet');\n    }\n  };\n\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n\n    if (hash) {\n      const speed = 0;\n\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', onHashChange);\n    }\n  };\n\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', onHashChange);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}", "/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  let timeout;\n  swiper.autoplay = {\n    running: false,\n    paused: false\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n\n  function run() {\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n\n    clearTimeout(timeout);\n    timeout = nextTick(() => {\n      let autoplayResult;\n\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          emit('autoplay');\n        } else {\n          stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.isEnd) {\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n        emit('autoplay');\n      } else {\n        stop();\n      }\n\n      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n        run();\n      }\n    }, delay);\n  }\n\n  function start() {\n    if (typeof timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    emit('autoplayStart');\n    run();\n    return true;\n  }\n\n  function stop() {\n    if (!swiper.autoplay.running) return false;\n    if (typeof timeout === 'undefined') return false;\n\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = undefined;\n    }\n\n    swiper.autoplay.running = false;\n    emit('autoplayStop');\n    return true;\n  }\n\n  function pause(speed) {\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (timeout) clearTimeout(timeout);\n    swiper.autoplay.paused = true;\n\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      run();\n    } else {\n      ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n      });\n    }\n  }\n\n  function onVisibilityChange() {\n    const document = getDocument();\n\n    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n      pause();\n    }\n\n    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n      run();\n      swiper.autoplay.paused = false;\n    }\n  }\n\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n    if (e.target !== swiper.$wrapperEl[0]) return;\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n    swiper.autoplay.paused = false;\n\n    if (!swiper.autoplay.running) {\n      stop();\n    } else {\n      run();\n    }\n  }\n\n  function onMouseEnter() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n    } else {\n      pause();\n    }\n\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n  }\n\n  function onMouseLeave() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      return;\n    }\n\n    swiper.autoplay.paused = false;\n    run();\n  }\n\n  function attachMouseEvents() {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.$el.on('mouseenter', onMouseEnter);\n      swiper.$el.on('mouseleave', onMouseLeave);\n    }\n  }\n\n  function detachMouseEvents() {\n    swiper.$el.off('mouseenter', onMouseEnter);\n    swiper.$el.off('mouseleave', onMouseLeave);\n  }\n\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      start();\n      const document = getDocument();\n      document.addEventListener('visibilitychange', onVisibilityChange);\n      attachMouseEvents();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.autoplay.running) {\n      if (internal || !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.pause(speed);\n      } else {\n        stop();\n      }\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.autoplay.running) {\n      if (swiper.params.autoplay.disableOnInteraction) {\n        stop();\n      } else {\n        pause();\n      }\n    }\n  });\n  on('touchEnd', () => {\n    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n      run();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n\n    if (swiper.autoplay.running) {\n      stop();\n    }\n\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  });\n  Object.assign(swiper.autoplay, {\n    pause,\n    run,\n    start,\n    stop\n  });\n}", "import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix(); // eslint-disable-next-line\n\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n    }\n\n    swiper.slideTo(slideToIndex);\n  }\n\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        } // Find actual thumbs index to slide to\n\n\n        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n        if (typeof prevThumbsIndex === 'undefined') {\n          newThumbsIndex = nextThumbsIndex;\n        } else if (typeof nextThumbsIndex === 'undefined') {\n          newThumbsIndex = prevThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = nextThumbsIndex;\n        } else {\n          newThumbsIndex = prevThumbsIndex;\n        }\n\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    } // Activate thumbs\n\n\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  }\n\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    init();\n    update(true);\n  });\n  on('slideChange update resize observerUpdate', () => {\n    if (!swiper.thumbs.swiper) return;\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    if (swiperCreated && thumbsSwiper) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}", "import { now } from '../../shared/utils.js';\nexport default function freeMode({\n  swiper,\n  extendParams,\n  emit,\n  once\n}) {\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n\n  function onTouchMove() {\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper; // Velocity\n\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n\n  function onTouchEnd({\n    currentPos\n  }) {\n    const {\n      params,\n      $wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper; // Time diff\n\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n\n      return;\n    }\n\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        } // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n\n\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n\n        newPosition = -newPosition;\n      }\n\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      } // Fix duration\n\n\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}", "export default function Grid({\n  swiper,\n  extendParams\n}) {\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    slidesPerRow = slidesNumberEvenToRows / rows;\n    numFullColumns = Math.floor(slidesLength / rows);\n\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n  };\n\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup,\n      spaceBetween\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid; // Set slides order\n\n    let newSlideOrderIndex;\n    let column;\n    let row;\n\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.css({\n        '-webkit-order': newSlideOrderIndex,\n        order: newSlideOrderIndex\n      });\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n\n    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n  };\n\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      spaceBetween,\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.$wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n    });\n\n    if (centeredSlides) {\n      snapGrid.splice(0, snapGrid.length);\n      const newSlidesGrid = [];\n\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}", "export default function appendSlide(slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n}", "export default function prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  let newActiveIndex = activeIndex + 1;\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  swiper.slideTo(newActiveIndex, 0, false);\n}", "export default function addSlide(index, slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  const baseLength = swiper.slides.length;\n\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}", "export default function removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}", "export default function removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n\n  swiper.removeSlide(slidesIndexes);\n}", "import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n  swiper\n}) {\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}", "export default function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n}", "export default function effectTarget(effectParams, $slideEl) {\n  if (effectParams.transformEl) {\n    return $slideEl.find(effectParams.transformEl).css({\n      'backface-visibility': 'hidden',\n      '-webkit-backface-visibility': 'hidden'\n    });\n  }\n\n  return $slideEl;\n}", "export default function effectVirtualTransitionEnd({\n  swiper,\n  duration,\n  transformEl,\n  allSlides\n}) {\n  const {\n    slides,\n    activeIndex,\n    $wrapperEl\n  } = swiper;\n\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let $transitionEndTarget;\n\n    if (allSlides) {\n      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n    } else {\n      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n    }\n\n    $transitionEndTarget.transitionEnd(() => {\n      if (eventTriggered) return;\n      if (!swiper || swiper.destroyed) return;\n      eventTriggered = true;\n      swiper.animating = false;\n      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n      for (let i = 0; i < triggerEvents.length; i += 1) {\n        $wrapperEl.trigger(triggerEvents[i]);\n      }\n    });\n  }\n}", "import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    fadeEffect: {\n      crossFade: false,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.css({\n        opacity: slideOpacity\n      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.fadeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}", "import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      $el,\n      $wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n\n        $cubeShadowEl.css({\n          height: `${swiperWidth}px`\n        });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n\n      $slideEl.transform(transform);\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n\n    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  };\n\n  const setTransition = duration => {\n    const {\n      $el,\n      slides\n    } = swiper;\n    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  };\n\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}", "import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n  if (!$shadowEl.length) {\n    $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n    $shadowContainer.append($shadowEl);\n  }\n\n  return $shadowEl;\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if (shadowBefore.length === 0) {\n          shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n        }\n\n        if (shadowAfter.length === 0) {\n          shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n        }\n\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.flipEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth; // Each slide offset from center\n\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n        }\n\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.coverflowEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n  };\n\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    creativeEffect: {\n      transformEl: null,\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      $wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      } // set translate\n\n\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      }); // set rotates\n\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n      if (custom && data.shadow || !custom) {\n        let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0 && data.shadow) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform).css({\n        opacity: opacityString\n      });\n\n      if (data.origin) {\n        $targetEl.css('transform-origin', data.origin);\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.creativeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = swiper.translate;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = $slideEl[0].swiperSlideOffset;\n\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n      }\n\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -2 * progress;\n      let tXAdd = 8 - Math.abs(progress) * 0.75;\n      const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (i === activeIndex || i === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${rotate}deg)\n        scale(${scaleString})\n      `;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.cardsEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}", "/**\n * Swiper 7.4.1\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: December 24, 2021\n */\n\nimport Swiper from './core/core.js';\nexport { default as Swiper, default } from './core/core.js';\nimport Virtual from './modules/virtual/virtual.js';\nimport Keyboard from './modules/keyboard/keyboard.js';\nimport Mousewheel from './modules/mousewheel/mousewheel.js';\nimport Navigation from './modules/navigation/navigation.js';\nimport Pagination from './modules/pagination/pagination.js';\nimport Scrollbar from './modules/scrollbar/scrollbar.js';\nimport Parallax from './modules/parallax/parallax.js';\nimport Zoom from './modules/zoom/zoom.js';\nimport Lazy from './modules/lazy/lazy.js';\nimport Controller from './modules/controller/controller.js';\nimport A11y from './modules/a11y/a11y.js';\nimport History from './modules/history/history.js';\nimport HashNavigation from './modules/hash-navigation/hash-navigation.js';\nimport Autoplay from './modules/autoplay/autoplay.js';\nimport Thumbs from './modules/thumbs/thumbs.js';\nimport FreeMode from './modules/free-mode/free-mode.js';\nimport Grid from './modules/grid/grid.js';\nimport Manipulation from './modules/manipulation/manipulation.js';\nimport EffectFade from './modules/effect-fade/effect-fade.js';\nimport EffectCube from './modules/effect-cube/effect-cube.js';\nimport EffectFlip from './modules/effect-flip/effect-flip.js';\nimport EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js';\nimport EffectCreative from './modules/effect-creative/effect-creative.js';\nimport EffectCards from './modules/effect-cards/effect-cards.js';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n", "var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nimport { Controller } from \"@hotwired/stimulus\";\nimport Swiper from \"swiper/bundle\";\nclass src_default extends Controller {\n  connect() {\n    this.swiper = new Swiper(this.element, __spreadValues(__spreadValues({}, this.defaultOptions), this.optionsValue));\n  }\n  disconnect() {\n    this.swiper.destroy();\n    this.swiper = void 0;\n  }\n  get defaultOptions() {\n    return {};\n  }\n}\nsrc_default.values = {\n  options: Object\n};\nexport { src_default as default };\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class extends Controller {\n  static targets = ['item', 'opener']\n  static values = { ignore: String }\n  static outlets = ['tooltip']\n\n  connect() {\n    document.addEventListener('turbo:before-render', this.clickOutside.bind(this))\n\n    useClickOutside(this)\n  }\n\n  disconnect() {\n    document.removeEventListener('turbo:before-render', this.clickOutside.bind(this))\n  }\n\n  toggle() {\n    if (this.isOpen) {\n      this.close()\n    } else {\n      this.open()\n    }\n  }\n\n  open() {\n    this.tooltipOutlets.forEach((tooltip) => {\n      tooltip.off()\n    })\n\n    this.element.classList.remove('collapsed')\n    this.openerTarget.classList.add('active')\n  }\n\n  close() {\n    this.tooltipOutlets.forEach((tooltip) => {\n      tooltip.on()\n    })\n\n    this.collapseExpandedItems(true)\n    this.element.classList.add('collapsed')\n    this.openerTarget.classList.remove('active')\n  }\n\n  clickOutside(event) {\n    if (!this.isOpen) return\n\n    if (this.hasIgnoreValue) {\n      const ignoreElement = document.querySelector(this.ignoreValue)\n      if (ignoreElement && (event.target === ignoreElement || ignoreElement.contains(event.target))) {\n        return\n      }\n    }\n\n    this.element.classList.add('collapsed')\n    this.openerTarget.classList.remove('active')\n\n    this.tooltipOutlets.forEach((tooltip) => {\n      tooltip.on()\n    })\n\n    for (const item of this.notCollapsedItems) {\n      item.classList.add('collapsed', 'in')\n\n      setTimeout(() => {\n        item.classList.remove('in')\n      }, 10)\n    }\n  }\n\n  expandCollapseItem(event) {\n    let clickedItem = event.target.closest('li')\n\n    if (clickedItem.classList.contains('collapsed')) {\n      this.collapseExpandedItems()\n      clickedItem.classList.remove('collapsed')\n    } else {\n      clickedItem.classList.add('collapsed')\n    }\n  }\n\n  collapseExpandedItems(heckin_fast) {\n    let classes = heckin_fast ? ['collapsed', 'in'] : ['collapsed']\n    for (const item of this.notCollapsedItems) {\n      item.classList.add(...classes)\n    }\n  }\n\n  get notCollapsedItems() {\n    return this.itemTargets.filter((item) => !item.classList.contains('collapsed'))\n  }\n\n  get isOpen() {\n    return !this.element.classList.contains('collapsed')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['collapseElement', 'ignoreElement']\n\n  beginToggle(event) {\n    if (this.ignoreClick(event)) return\n\n    this.collapseElementTarget.classList.remove('hidden')\n    this.dispatch('going', { detail: { collapsed: this.element.classList.contains('collapsed') } })\n\n    setTimeout(() => {\n      this.element.classList.add('going')\n      this.element.classList.toggle('collapsed')\n    })\n  }\n\n  completeToggle() {\n    this.element.classList.remove('going')\n\n    this.dispatch('complete', { detail: { collapsed: this.element.classList.contains('collapsed') } })\n  }\n\n  open() {\n    this.element.classList.remove('collapsed')\n  }\n\n  close() {\n    this.element.classList.add('collapsed')\n  }\n\n  ignoreClick(event) {\n    let ignore = false\n\n    if (event.target.tagName === 'A' || event.target.tagName === 'BUTTON') ignore = true\n\n    this.ignoreElementTargets.forEach((element) => {\n      if (element === event.target || element === event.target.parentElement) ignore = true\n    })\n\n    return ignore\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  connect() {\n    // these have to be jquery because bootstrap uses jquery events\n    $(this.element).on('hide.bs.dropdown', this.hideAllSubmenus.bind(this))\n  }\n\n  disconnect() {\n    $(this.element).off('hide.bs.dropdown', this.hideAllSubmenus.bind(this))\n  }\n\n  showSubmenu({ currentTarget, params: { submenuId } }) {\n    this.hideAllSubmenus()\n\n    const submenu = document.querySelector(`#${submenuId}`)\n\n    submenu.classList.remove('hidden')\n    submenu.classList.add('!block')\n    submenu.setAttribute('data-open', '')\n\n    const { top: itemTop, width: itemWidth } = currentTarget.getBoundingClientRect()\n    const parentMenuTop = currentTarget.closest('.dropdown-menu').getBoundingClientRect().top\n    const { height: toggleHeight } = this.element.getBoundingClientRect()\n\n    submenu.style.left = `${itemWidth}px`\n    submenu.style.top = `${toggleHeight + itemTop - parentMenuTop}px`\n  }\n\n  hideSubmenu({ params: { submenuId } }) {\n    const submenu = document.querySelector(`#${submenuId}`)\n    const mouseInSubmenu = submenu.matches(':hover')\n\n    if (mouseInSubmenu) return\n\n    submenu.classList.add('hidden')\n    submenu.classList.remove('!block')\n    submenu.removeAttribute('data-open')\n  }\n\n  hideAllSubmenus() {\n    const submenus = this.element.querySelectorAll('.dropdown-submenu[data-open]')\n\n    submenus.forEach((submenu) => {\n      submenu.classList.add('hidden')\n      submenu.classList.remove('!block')\n      submenu.removeAttribute('data-open')\n    })\n  }\n\n  stopPropagation(event) {\n    event.stopPropagation()\n  }\n}\n", "import { useClickOutside } from 'stimulus-use'\nimport ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['tray', 'dialog', 'close', 'open']\n\n  connect() {\n    useClickOutside(this, { element: this.dialogTarget, events: ['mousedown'] })\n\n    this.positionDialog()\n  }\n\n  open() {\n    this.dialogTarget.hidden = false\n    this.dialogTarget.classList.add('block')\n    this.trayTarget.classList.add('open')\n    this.closeTarget.classList.remove('hidden')\n    this.openTarget.classList.add('hidden')\n    this.openTarget.parentElement.classList.add('z-[1004]')\n\n    document.body.classList.add('overflow-hidden')\n  }\n\n  close() {\n    if (!this.trayTarget.classList.contains('open')) return\n\n    this.trayTarget.classList.remove('open')\n    this.trayTarget.classList.add('going')\n    document.body.classList.remove('overflow-hidden')\n\n    this.trayTarget.addEventListener(\n      'transitionend',\n      () => {\n        this.trayTarget.classList.remove('going')\n        this.dialogTarget.hidden = true\n      },\n      { once: true },\n    )\n\n    this.trayTarget.classList.remove('open')\n    this.closeTarget.classList.add('hidden')\n    this.openTarget.classList.remove('hidden')\n    this.openTarget.parentElement.classList.remove('z-[1004]')\n  }\n\n  disconnect() {\n    this.close()\n  }\n\n  ///\n  /// private\n  ///\n\n  positionDialog() {\n    const closeParent = this.closeTarget.parentElement\n    const rect = closeParent.getBoundingClientRect()\n\n    this.dialogTarget.style.top = `${rect.bottom}px`\n    this.dialogTarget.style.maxHeight = `calc(100dvh - ${rect.bottom}px - 10%)`\n  }\n\n  clickOutside(event) {\n    if (getComputedStyle(this.dialogTarget).visibility === 'hidden') return\n\n    if (this.isUserback(event)) return\n\n    if (this.isModal(event)) return\n\n    const calendars = Array.from(document.querySelectorAll('.flatpickr-calendar'))\n    const hasTarget = calendars.filter((calendar) => calendar.contains(event.target))\n\n    if (hasTarget.length !== 0) return\n\n    this.close()\n  }\n\n  isModal({ target }) {\n    return target.closest('.modal')\n  }\n\n  isUserback({ target }) {\n    if (target.tagName === 'UBDIV') return true\n\n    const toolbar = target.closest('utoolbar')\n\n    if (toolbar) return true\n\n    const overlay = target.closest('.userback-overlay')\n\n    if (overlay) return true\n\n    return false\n  }\n}\n", "/* eslint-disable no-undef */\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['autocomplete', 'id', 'street', 'city', 'state', 'zip', 'country', 'lat', 'lng']\n  static values = { message: String }\n\n  initialize() {\n    // A bit unfortunate that we have to do this, but Google doesn't have an NPM version of the maps API\n    // that is meant to run in the browser so we have to pull it from the global scope :(\n    this.autocomplete = new google.maps.places.Autocomplete(this.autocompleteTarget, { types: ['address'] })\n    this.autocomplete.addListener('place_changed', this.placeChanged.bind(this))\n  }\n\n  clearHiddenFields(event) {\n    this.streetTarget.removeAttribute('value')\n    this.cityTarget.removeAttribute('value')\n    this.stateTarget.removeAttribute('value')\n    this.zipTarget.removeAttribute('value')\n    this.countryTarget.removeAttribute('value')\n    this.latTarget.removeAttribute('value')\n    this.lngTarget.removeAttribute('value')\n\n    if (event.target.value === '') {\n      this.autocompleteTarget.setCustomValidity('')\n    } else if (this.autocompleteTarget.checkValidity()) {\n      this.autocompleteTarget.setCustomValidity(this.messageValue)\n    }\n\n    this.dispatch('input')\n  }\n\n  ///\n  /// private\n  ///\n  placeChanged() {\n    const place = this.autocomplete.getPlace()\n    if (place.geometry) {\n      this.autocompleteTarget.value = place.formatted_address\n    }\n\n    const [street, city, state, zip, country] = this.parseComponent(place.address_components)\n\n    this.streetTarget.value = street\n    this.cityTarget.value = city\n    this.stateTarget.value = state\n    this.zipTarget.value = zip\n    this.countryTarget.value = country\n    this.latTarget.value = place.geometry.location.lat()\n    this.lngTarget.value = place.geometry.location.lng()\n\n    this.autocompleteTarget.setCustomValidity('')\n    this.dispatch('input')\n    this.zipTarget.dispatchEvent(new Event('change', { bubbles: true }))\n  }\n\n  // A function that takes a Google API Places address component array and returns an array of strings\n  // for the street, city, state, zip, and country fields.\n  parseComponent(components) {\n    const street_number = components.find((component) => component.types.includes('street_number'))\n    const route = components.find((component) => component.types.includes('route'))\n    const city = components.find((component) => component.types.includes('locality'))\n    const state = components.find((component) => component.types.includes('administrative_area_level_1'))\n    const zip = components.find((component) => component.types.includes('postal_code'))\n    const country = components.find((component) => component.types.includes('country'))\n\n    return [\n      street_number && route ? `${street_number.long_name} ${route.long_name}` : '',\n      city ? city.long_name : '',\n      state ? state.long_name : '',\n      zip ? zip.long_name : '',\n      country ? country.long_name : '',\n    ]\n  }\n\n  get validInput() {\n    return Boolean(this.latTarget.value) && Boolean(this.lngTarget.value)\n  }\n\n  get submitButton() {\n    return this.element.closest('form').querySelector('input[type=\"submit\"]')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['input', 'form', 'image']\n\n  edit() {\n    this.inputTarget.click()\n  }\n\n  update() {\n    const file = this.inputTarget.files[0]\n    const url = URL.createObjectURL(file)\n\n    this.imageTarget.src = url\n  }\n\n  submit() {\n    this.formTarget.requestSubmit()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\n    'newCard',\n    'existingCard',\n    'existingCards',\n    'processPaymentBtn',\n    'processPaymentIcon',\n    'token',\n    'tokenizer',\n  ]\n\n  static values = { billingForm: String, formId: String }\n\n  connect() {\n    // If we have vaults, we want to default to not tokenize, since they'll be showing\n    this.tokenize = !this.hasExistingCardsTarget\n    this.originalProcessText = this.processPaymentBtnTarget.innerText\n  }\n\n  process() {\n    this.disableBtn()\n\n    this.billingProviderController.setPaymentToken(this.tokenize, this.tokenTarget).then((success) => {\n      if (success) {\n        this.parentForm.requestSubmit()\n      } else {\n        this.enableBtn()\n      }\n    })\n  }\n\n  disableBtn() {\n    this.processPaymentBtnTarget.disabled = true\n\n    let nodes = this.processPaymentBtnTarget.childNodes\n    let textNode = [...nodes].find((child) => child.nodeType === Node.TEXT_NODE)\n    textNode.data = this.processPaymentBtnTarget.dataset.disableWith\n\n    this.processPaymentIconTarget.classList.remove('hidden')\n  }\n\n  enableBtn() {\n    this.processPaymentBtnTarget.disabled = false\n\n    let nodes = this.processPaymentBtnTarget.childNodes\n    let textNode = [...nodes].find((child) => child.nodeType === Node.TEXT_NODE)\n    textNode.data = this.originalProcessText\n\n    this.processPaymentIconTarget.classList.add('hidden')\n  }\n\n  addNew() {\n    this.tokenize = true\n    this.transitionIn(this.newCardTarget)\n    this.transitionOut(this.existingCardsTarget)\n  }\n\n  existingCards(e) {\n    this.tokenize = false\n    this.transitionIn(this.existingCardsTarget)\n\n    if (this.existingCardTargets.length > 0) {\n      let inputNode = this.existingCardTargets[0]\n      inputNode.checked = true\n    }\n\n    this.transitionOut(this.newCardTarget)\n\n    e.preventDefault()\n  }\n\n  //\n  // private\n  //\n  transitionIn(target) {\n    target.classList.add('in')\n    target.classList.remove('out')\n  }\n\n  transitionOut(target) {\n    target.classList.add('out')\n    target.classList.remove('in')\n  }\n\n  get parentForm() {\n    return document.querySelector(`#${this.formIdValue}`)\n  }\n\n  get billingProviderController() {\n    let kebabBilling = this.billingFormValue\n      .replace(/([a-z])([A-Z])/g, '$1-$2')\n      .replace(/[\\s_]+/g, '-')\n      .toLowerCase()\n    let controller_name = `${kebabBilling}-form--component`\n    return this.application.getControllerForElementAndIdentifier(this.tokenizerTarget, controller_name)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['token', 'tokenizer']\n  static values = { provider: String, formId: String }\n\n  connect() {\n    this.billingProviderController.mountCard()\n  }\n\n  get parentForm() {\n    return this.element.closest('form')\n  }\n\n  get billingProviderController() {\n    let controllerName = this.providerValue\n      .replace(/([a-z])([A-Z])/g, '$1-$2')\n      .replace(/[\\s_]+/g, '-')\n      .toLowerCase()\n    return this.application.getControllerForElementAndIdentifier(this.parentForm, controllerName)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\n\nexport default class extends Controller {\n  static values = { intent: String }\n\n  saveCard(event) {\n    event.target.disabled = true\n\n    this.confirmSetupIntent().then((success) => {\n      if (success) {\n        let parentForm = document.querySelector(`#new-card`)\n        parentForm.requestSubmit()\n      } else {\n        event.target.disabled = false\n      }\n    })\n  }\n\n  confirmSetupIntent() {\n    let card = this.card\n    let opts = {}\n    let name = document.getElementById('stripe-cardholder-name')\n\n    opts.payment_method = {\n      card,\n      billing_details: {\n        name: name.value,\n      },\n    }\n\n    return this.stripe.confirmCardSetup(this.intentValue, opts).then(function (result) {\n      if (result.error) {\n        var errorElement = document.getElementById('stripe-card-errors')\n        errorElement.textContent = result.error.message\n        return false\n      }\n\n      $('input#credit-card-token').val(result.setupIntent.payment_method)\n      return true\n    })\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  setPaymentToken(tokenize, _tokenTarget) {\n    let card = this.card\n    let opts = {}\n    if (document.querySelector('.save-vault input') && document.querySelector('.save-vault input').checked) {\n      opts.setup_future_usage = 'off_session'\n    }\n\n    if (tokenize) {\n      opts.payment_method = { card }\n    } else {\n      let vault = document.querySelector('.vaults:checked').dataset.reference\n      opts.payment_method = vault\n    }\n\n    return this.stripe.confirmCardPayment(this.intentValue, opts).then(function (result) {\n      if (result.error) {\n        const errorElement = document.getElementById('stripe-card-errors')\n        errorElement.textContent = result.error.message\n        return false\n      }\n\n      $('input#credit-card-token').val(result.paymentIntent.id)\n      return true\n    })\n  }\n\n  connect() {\n    const STRIPE_PUBLIC_KEY = $('#stripe-account-token').data('public-key')\n    const STRIPE_ACCOUNT_TOKEN = $('#stripe-account-token').data('account')\n\n    // NOTE: This is dumb\n    let secondaryColor = Pallette.black\n\n    if ($('body.dark').length) {\n      secondaryColor = Pallette.white\n    }\n\n    const invalidColor = Pallette.red\n\n    // eslint-disable-next-line no-undef\n    this.stripe = Stripe(STRIPE_PUBLIC_KEY, { stripeAccount: STRIPE_ACCOUNT_TOKEN })\n    let elements = this.stripe.elements()\n    this.card = elements.create('card', {\n      iconStyle: 'solid',\n      style: {\n        base: {\n          iconColor: secondaryColor,\n          color: secondaryColor,\n          lineHeight: '36px',\n          fontFamily: '\"Hind Vadodara\", sans-serif',\n          fontSize: '19px',\n          textTransform: 'uppercase',\n\n          '::placeholder': { color: '#aeaeab' },\n        },\n        invalid: {\n          iconColor: invalidColor,\n          color: invalidColor,\n        },\n      },\n    })\n    this.card.mount('#stripe-card-form')\n\n    this.card.addEventListener('change', function (event) {\n      const displayError = document.getElementById('stripe-card-errors')\n      if (event.error) {\n        displayError.textContent = event.error.message\n      } else {\n        displayError.textContent = ''\n      }\n    })\n\n    document.querySelector('#stripe-card-form').addEventListener('clear:stripe', () => {\n      this.card.clear()\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nexport default class extends Controller {\n  saveCard(event) {\n    event.target.disabled = true\n\n    this.setPaymentToken(true).then((success) => {\n      if (success) {\n        let parentForm = document.querySelector(`#new-card`)\n        parentForm.requestSubmit()\n      } else {\n        event.target.disabled = false\n      }\n    })\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  setPaymentToken(tokenize, _tokenTarget) {\n    if (!tokenize) return Promise.resolve(true)\n\n    this.tokenizer.submission = (resp) => {\n      this.element.dispatchEvent(new CustomEvent('tokenized', { detail: resp }))\n    }\n\n    this.tokenizer.submit()\n\n    return new Promise((resolve) => {\n      this.element.addEventListener('tokenized', function (result) {\n        if (result.detail.status === 'success') {\n          $('#credit-card-token').val(result.detail.token)\n          resolve(true)\n        } else if (result.detail.status === 'validation') {\n          document.getElementById('basys-card-errors').innerHTML = 'Invalid card information'\n          resolve(false)\n        } else {\n          $('#basys-card-errors').html(result.detail.msg)\n          resolve(false)\n        }\n      })\n    })\n  }\n\n  connect() {\n    // NOTE: This is dumb\n    let secondaryColor = Pallette.black\n\n    if ($('body.dark').length) {\n      secondaryColor = Pallette.white\n    }\n\n    const invalidColor = Pallette.red\n    const basysPublicKey = $('#basys-account-token').data('public-key')\n\n    // eslint-disable-next-line no-undef\n    this.tokenizer = new Tokenizer({\n      apikey: basysPublicKey,\n      container: document.querySelector('#basys-card-form'),\n      onLoad() {\n        $('.basys-form-component .hidden').removeClass('hidden')\n        $('#loading').addClass('hidden')\n      },\n      settings: {\n        payment: { placeholderCreditCard: 'CARD NUMBER' },\n        styles: {\n          '.payment input': {\n            border: `solid 2px ${Pallette.secondaryDark}`,\n            'border-radius': '5px',\n\n            'padding-top': '20px',\n            'padding-bottom': '20px',\n\n            'background-color': 'transparent',\n            color: secondaryColor,\n            'line-height': '36px',\n            'font-family': '\"Hind Vadodara\", sans-serif',\n            'font-size': '19px',\n            'text-transform': 'uppercase',\n          },\n\n          '.payment .cc input': {\n            'padding-top': '20px',\n            'padding-bottom': '20px',\n          },\n\n          '.payment input.invalid': { border: `solid 2px ${invalidColor}` },\n        },\n      },\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nexport default class extends Controller {\n  static values = { publicToken: String }\n\n  saveCard(event) {\n    event.target.disabled = true\n\n    this.setPaymentToken(true).then((success) => {\n      if (success) {\n        let parentForm = document.querySelector(`#new-card`)\n        parentForm.requestSubmit()\n      } else {\n        event.target.disabled = false\n      }\n    })\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  setPaymentToken(tokenize, tokenTarget) {\n    if (!tokenize) return Promise.resolve(true)\n\n    return this.client\n      .getPaymentKey(this.paymentCard)\n      .then(function (result) {\n        $('input#credit-card-token').val(result)\n        return true\n      })\n      .catch(function () {\n        return false\n      })\n  }\n\n  connect() {\n    var USA_EPAY_PUBLIC_TOKEN = this.publicTokenValue\n      ? this.publicTokenValue\n      : $('#usa-epay-public-token').data('public-token')\n\n    if (USA_EPAY_PUBLIC_TOKEN === undefined) throw new Error('No public_token found.')\n\n    // NOTE: This is dumb\n    let secondaryColor = Pallette.black\n\n    if ($('body.dark').length) {\n      secondaryColor = Pallette.white\n    }\n\n    const invalidColor = Pallette.red\n\n    // eslint-disable-next-line no-undef\n    this.client = new usaepay.Client(USA_EPAY_PUBLIC_TOKEN)\n    this.paymentCard = this.client.createPaymentCardEntry()\n    var style = {\n      base: {\n        backgroundColor: 'transparent',\n        color: secondaryColor,\n        lineHeight: '36px',\n        fontFamily: '\"Hind Vadodara\", sans-serif',\n        fontSize: '19px',\n        textTransform: 'uppercase',\n        height: '36px',\n        border: `solid 2px ${Pallette.secondaryDark} !important`,\n        borderRadius: '5px !important',\n        padding: '20px 10px !important',\n        marginRight: '5px',\n      },\n      // eslint-disable-next-line max-len\n      '{}\\n.payjs-input-icon { display: none; }  @media (max-width: 767px) { #payjs-cnum { width: 100%; padding-left: 0; } #payjs-cvv { min-width: 3em; } #payjs-exp { min-width: 3.5em; } }':\n        '',\n      invalid: { color: invalidColor },\n    }\n    this.paymentCard.generateHTML(style)\n\n    if ($('#usa-epay-card-form').html() === '') {\n      this.paymentCard.addHTML('usa-epay-card-form')\n    }\n\n    this.paymentCard.addEventListener('error', function (errorMessage) {\n      var errorContainer = document.getElementById('usa-epay-card-errors')\n      errorContainer.textContent = errorMessage\n    })\n\n    document.querySelector('#usa-epay-card-form').addEventListener('clear:usaepay', () => {\n      this.innerHTML = ''\n      this.paymentCard.addHTML('usa-epay-card-form')\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['input', 'show', 'hide']\n\n  showPassword() {\n    this.inputTarget.type = 'text'\n    this.showTarget.classList.add('hidden')\n    this.hideTarget.classList.remove('hidden')\n  }\n\n  hidePassword() {\n    this.inputTarget.type = 'password'\n    this.showTarget.classList.remove('hidden')\n    this.hideTarget.classList.add('hidden')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport intlTelInput from 'intl-tel-input'\n\nexport default class extends Controller {\n  static values = { name: String }\n  static targets = ['input']\n\n  connect() {\n    this.intlTelInput = intlTelInput(this.inputTarget, {\n      utilsScript: '/assets/intl-tel-input/utils.js',\n      formatOnDisplay: true,\n      separateDialCode: true,\n      hiddenInput: this.nameValue,\n      initialCountry: document.body.dataset.countryCode || 'us',\n    })\n  }\n\n  disconnect() {\n    this.inputTarget.value = this.intlTelInput.getNumber()\n    this.intlTelInput.destroy()\n  }\n\n  setHiddenInput() {\n    this.inputTarget.nextElementSibling.value = this.intlTelInput.getNumber()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { useClickOutside } from 'stimulus-use'\n\nexport default class extends Controller {\n  static targets = ['real', 'fake']\n\n  connect() {\n    useClickOutside(this)\n  }\n\n  reveal() {\n    this.fakeTarget.classList.toggle('hidden')\n    this.realTarget.classList.toggle('hidden')\n  }\n\n  clickOutside() {\n    this.fakeTarget.classList.remove('hidden')\n    this.realTarget.classList.add('hidden')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = { percentage: Number }\n\n  connect() {\n    setTimeout(() => {\n      this.element.style.setProperty('--value', this.percentageValue || 0)\n    }, 200)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport TomSelect from 'tom-select'\n\nexport default class extends Controller {\n  static values = {\n    type: String,\n    statuses: String,\n    placeholder: String,\n    polymorphic: Boolean,\n    selectedType: { type: String, default: 'Person' },\n  }\n\n  initialize() {\n    this.tomSelect = new TomSelect(this.element, {\n      search: true,\n      persist: false,\n      highlight: false,\n      addPrecedence: true,\n      selectOnTab: true,\n      valueField: 'id',\n      labelField: 'text',\n      searchField: 'text',\n      placeholder: this.placeholderValue,\n      load: this.load.bind(this),\n      render: {\n        item: this.renderItem.bind(this),\n        option: this.renderOption,\n        loading: this.renderLoading,\n      },\n    })\n  }\n\n  connect() {\n    this.tomSelect.clearOptions()\n  }\n\n  updateType(pluralType) {\n    if (pluralType === 'families') {\n      this.type = 'Family'\n      return\n    }\n\n    this.type = 'Person'\n  }\n\n  ///\n  /// private\n  ///\n  set type(value) {\n    // This is kind of stupid but like.. whatever\n    this.selectedTypeValue = value\n    this.element.nextElementSibling.nextElementSibling.value = value\n  }\n\n  load(query, callback) {\n    const url = this.path(query)\n\n    fetch(url)\n      .then((response) => response.json())\n      .then((data) => {\n        callback(data.results)\n      })\n      .catch(() => callback())\n  }\n\n  // Doing this in the render call is supremely stupid but\n  // the actual tom-select callbacks just.. like don't work?\n  renderItem(item, escape) {\n    if (this.polymorphicValue) {\n      this.updateType(item.type)\n    }\n\n    return `<span class=\"flex gap-1 items-center\">\n              <img src=\"${escape(item.image)}\" class=\"employee-image !w-4 !h-4\" />\n              ${escape(item.text)}\n            </span>`\n  }\n\n  renderOption(item, escape) {\n    return `<span class=\"flex gap-2 items-center\">\n              <img src=\"${escape(item.image)}\" class=\"employee-image !w-10 !h-10\" />\n              ${escape(item.text)}\n            </span>`\n  }\n\n  renderLoading() {\n    return `<i class=\"fa-solid fa-spinner-third fa-spin fa-2x flex mx-auto\"></i>`\n  }\n\n  path(query) {\n    const url = new URL(this.currentUrl)\n    url.pathname = 'select_search'\n    url.searchParams.set('format', 'json')\n    url.searchParams.set('query', query)\n    url.searchParams.set('types', this.typeValue)\n    url.searchParams.set('statuses', this.statusesValue)\n\n    return url.toString()\n  }\n\n  get currentUrl() {\n    return `${window.location.protocol}//${window.location.host}`\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { setCookie } from '../../javascript/helpers/cookies'\n\n// TODO: Eventually dashboard modules should probably all use these?\nexport default class extends Controller {\n  static values = { cookieName: String }\n\n  connect() {\n    this.element.addEventListener('collapse--component:complete', this.setPreference.bind(this))\n  }\n\n  disconnect() {\n    this.element.removeEventListener('collapse--component:complete', this.setPreference)\n  }\n\n  ///\n  /// private\n  ///\n  setPreference(event) {\n    const expirationYears = 10\n    const today = new Date()\n    const expirationDate = new Date(today.getFullYear() + expirationYears, today.getMonth(), today.getDate())\n\n    setCookie(this.cookieNameValue, !event.detail.collapsed, expirationDate)\n  }\n}\n", "import { useClickOutside, useHotkeys } from 'stimulus-use'\nimport ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['dialog']\n  static values = { turbo: Boolean, closable: { default: true, type: Boolean } }\n\n  connect() {\n    if (this.closableValue) {\n      useClickOutside(this, { element: this.dialogTarget, events: ['mousedown'] })\n      useHotkeys(this, { esc: [this.hide.bind(this)] })\n    }\n\n    // We have to wait for the modal to get rendered in the\n    // DOM before we can actually show it\n    if (this.turboValue) {\n      window.FontAwesome?.dom?.i2svg()\n      setTimeout(this.show.bind(this), this.delay)\n    }\n  }\n\n  show() {\n    this.hideAllTooltips()\n\n    const currentWidth = document.body.offsetWidth\n\n    this.element.classList.add('open')\n\n    this.waitForAnimations(this.element, () => {\n      this.focus(this.element.querySelector('[autofocus]'))\n    })\n\n    document.body.style.marginRight = `${document.body.offsetWidth - currentWidth}px`\n  }\n\n  confirm() {\n    this.element.classList.remove('open', 'in')\n\n    this.waitForAnimations(this.element, () => {\n      this.element.dispatchEvent(new CustomEvent('modal:hidden', { detail: { finished: true } }))\n    })\n  }\n\n  hide() {\n    this.element.classList.remove('open', 'in')\n\n    this.waitForAnimations(this.element, () => {\n      this.element.dispatchEvent(new CustomEvent('modal:hidden', { detail: { finished: false } }))\n    })\n\n    document.body.style.marginRight = null\n  }\n\n  clickOutside(event) {\n    // Otherwise this gets called for hidden modals like the confirm modal\n    if (getComputedStyle(this.dialogTarget).visibility === 'hidden') return\n    if (event.target.clientWidth < event.offsetX) return\n\n    if (this.isUserback(event)) return\n    if (event.target.closest('.pac-container')) return\n\n    const calendars = Array.from(document.querySelectorAll('.flatpickr-calendar'))\n    const hasTarget = calendars.filter((calendar) => calendar.contains(event.target))\n\n    if (hasTarget.length === 0) {\n      this.hide()\n    }\n  }\n\n  ///\n  /// private\n  ///\n  hideAllTooltips() {\n    const tooltips = document.querySelectorAll('.tooltip')\n\n    for (const tooltip of [...tooltips]) {\n      tooltip.remove()\n    }\n  }\n\n  isUserback({ target }) {\n    if (target.tagName === 'UBDIV') return true\n\n    const toolbar = target.closest('utoolbar')\n\n    if (toolbar) return true\n\n    const overlay = target.closest('.userback-overlay')\n\n    if (overlay) return true\n\n    return false\n  }\n\n  get delay() {\n    return 100\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['dialog']\n\n  connect() {\n    this.submitCallback = this.submit.bind(this)\n    this.modalHiddenCallback = this.delete.bind(this)\n    this.renderCallback = this.render.bind(this)\n\n    this.element.addEventListener('modal:hidden', this.modalHiddenCallback, true)\n\n    document.addEventListener('turbo:before-frame-render', this.renderCallback, true)\n  }\n\n  disconnect() {\n    this.element.removeEventListener('modal:hidden', this.modalHiddenCallback, true)\n    document.removeEventListener('turbo:submit-end', this.submitCallback, true)\n    document.removeEventListener('turbo:before-frame-render', this.renderCallback, true)\n  }\n\n  ///\n  /// private\n  ///\n  addSubmitListener() {\n    document.addEventListener('turbo:submit-end', this.submitCallback, true)\n  }\n\n  submit(event) {\n    if (event.detail.success) {\n      this.hide()\n    }\n  }\n\n  render({ detail }) {\n    const defaultRendering = detail.render\n\n    detail.render = async (currentElement, newElement) => {\n      if (!currentElement.matches('#modal')) {\n        await defaultRendering(currentElement, newElement)\n        return\n      }\n\n      const newDialogClasses = newElement.querySelector('.modal-dialog').classList\n      const oldContent = currentElement.querySelector('.modal-content')\n      const newContent = newElement.querySelector('.modal-content')\n\n      this.dialogTarget.classList.remove(...this.dialogTarget.classList)\n      this.dialogTarget.classList.add(...newDialogClasses)\n\n      await defaultRendering(oldContent, newContent)\n\n      window.FontAwesome?.dom?.i2svg()\n    }\n  }\n\n  hide() {\n    this.element.classList.remove('open', 'in')\n\n    this.waitForAnimations(this.element, () => {\n      this.element.dispatchEvent(new CustomEvent('modal:hidden', { detail: { finished: false } }))\n    })\n\n    document.body.style.marginRight = null\n  }\n\n  delete() {\n    this.element.remove()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  disconnect() {\n    document.removeEventListener('turbo:submit-end', this.submitCallback, true)\n  }\n\n  hide() {\n    this.element.classList.remove('open', 'in')\n\n    Promise.all(this.element.getAnimations().map((animation) => animation.finished)).then(() => {\n      document.dispatchEvent(new Event('modal:hidden'))\n    })\n  }\n\n  submit(event) {\n    if (event.detail.success) {\n      this.hide()\n    }\n  }\n\n  submitAndHide() {\n    this.submitCallback = this.submit.bind(this)\n    document.addEventListener('turbo:submit-end', this.submitCallback, true)\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['editable', 'display', 'hiddenInput', 'wrapper', 'counter', 'error']\n  static values = { max: Number }\n\n  connect() {\n    this.editableText = this.hiddenText\n    this.displayHTML = this.constructDisplayHTML(this.hiddenText)\n    this.counterText = this.hiddenText.length\n\n    if (this.isSingleLine) {\n      this.updateScrollCallback = this.updateScroll.bind(this)\n      this.addScrollSyncEvents()\n    }\n  }\n\n  disconnect() {\n    if (this.isSingleLine) {\n      this.removeScrollSyncEvents()\n    }\n  }\n\n  update() {\n    const text = this.editableText\n\n    this.hiddenText = text\n    this.counterText = this.hiddenText.length\n    this.displayHTML = this.constructDisplayHTML(text)\n\n    if (this.isSingleLine) {\n      this.displayTarget.scrollLeft = this.displayTarget.scrollWidth\n    }\n\n    this.validate(text)\n  }\n\n  clear() {\n    this.editableText = ''\n    this.update()\n  }\n\n  ///\n  /// private\n  ///\n  validate(text) {\n    if (this.hasErrorTarget) return\n\n    if (this.maxValue < text.length) {\n      this.makeInvalid()\n    } else {\n      this.makeValid()\n    }\n  }\n\n  makeInvalid() {\n    this.editableTarget.classList.add('!input-danger')\n    this.wrapperTarget.classList.add('!text-danger-600')\n\n    this.vibrate(50)\n  }\n\n  makeValid() {\n    this.editableTarget.classList.remove('!input-danger')\n    this.wrapperTarget.classList.remove('!text-danger-600')\n  }\n\n  constructDisplayHTML(text) {\n    const unhighlighted = this.clean(text.substr(0, this.maxValue))\n    const highlighted = `<span class='bg-danger-600/50'>${this.clean(text.substr(this.maxValue))}</span>`\n\n    return `${unhighlighted}${highlighted}`\n  }\n\n  clean(text) {\n    return text.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\n/g, '<br>')\n  }\n\n  addScrollSyncEvents() {\n    const events = ['blur', 'change', 'focus', 'input', 'keydown', 'keyup', 'scroll']\n\n    for (const event of events) {\n      this.editableTarget.addEventListener(event, this.updateScrollCallback, true)\n    }\n  }\n\n  removeScrollSyncEvents() {\n    const events = ['blur', 'change', 'focus', 'input', 'keydown', 'keyup', 'scroll']\n\n    for (const event of events) {\n      this.editableTarget.removeEventListener(event, this.updateScrollCallback, true)\n    }\n  }\n\n  updateScroll() {\n    requestAnimationFrame(() => {\n      this.displayTarget.scrollLeft = this.editableTarget.scrollLeft\n    })\n  }\n\n  get isSingleLine() {\n    return this.editableTarget.tagName === 'INPUT'\n  }\n\n  get editableText() {\n    if (this.isSingleLine) return this.editableTarget.value\n\n    return this.editableTarget.innerText\n  }\n\n  set editableText(text) {\n    if (this.isSingleLine) {\n      this.editableTarget.value = text\n    } else {\n      this.editableTarget.innerText = text\n    }\n  }\n\n  get hiddenText() {\n    return this.hiddenInputTarget.value\n  }\n\n  set hiddenText(text) {\n    this.hiddenInputTarget.value = text\n  }\n\n  set counterText(text) {\n    this.counterTarget.innerText = text\n  }\n\n  set displayHTML(text) {\n    this.displayTarget.innerHTML = text\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['hiddenText', 'cta', 'ellipsis', 'overflowEllipsis']\n  static values = { expand: String, collapse: String }\n\n  connect() {\n    this.hidden = true\n  }\n\n  toggleFullDisplay(e) {\n    e.preventDefault()\n\n    this.hidden = !this.hidden\n    if (this.hidden) {\n      this.ctaText = this.expandValue\n    } else {\n      this.ctaText = this.collapseValue\n    }\n  }\n\n  ///\n  /// private\n  ///\n  get hidden() {\n    return this.hiddenTextTarget.hidden\n  }\n\n  set hidden(hidden) {\n    this.hiddenTextTarget.hidden = hidden\n\n    if (this.hasOverflowEllipsisTarget) {\n      this.overflowEllipsisTarget.hidden = hidden\n    }\n\n    this.ellipsisTarget.hidden = !hidden\n  }\n\n  set ctaText(text) {\n    this.ctaTarget.innerHTML = text\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\nexport default class extends Controller {\n  static targets = ['categoryFilter']\n  static values = {\n    frame: String,\n    selectedFilters: Object,\n    path: String,\n  }\n\n  initialize() {\n    this.initializeSelectedFilters()\n  }\n\n  handleCheck(e) {\n    if (e.target.checked) {\n      this.addToFilters(e.params)\n    } else {\n      this.removeFromFilters(e.params)\n    }\n  }\n\n  filter() {\n    const url = this.hasPathValue ? new URL(this.pathValue) : new URL(window.location)\n\n    if (Object.keys(this.selectedFiltersValue).length) {\n      let searchParams = new URLSearchParams(this.selectedFiltersValue).toString()\n      url.search = searchParams\n    }\n\n    if (this.hasFrameValue) {\n      const frame = document.querySelector(`#${this.frameValue}`)\n      frame.src = url\n    } else {\n      Turbo.cache.clear()\n      Turbo.visit(url)\n    }\n  }\n\n  clear() {\n    const url = `${window.location.pathname}`\n\n    Turbo.cache.clear()\n    Turbo.visit(url)\n  }\n\n  ///\n  /// private\n  ///\n  initializeSelectedFilters() {\n    for (let i = 0; i < this.checkedCategoryTargets.length; i++) {\n      let dataset = this.checkedCategoryTargets[i].dataset\n      this.addToFilters({\n        category: dataset['filter-ComponentCategoryParam'],\n        value: dataset['filter-ComponentValueParam'],\n      })\n    }\n  }\n\n  addToFilters(params) {\n    let currentSelectedFilters = this.selectedFiltersValue\n    if (params.category in currentSelectedFilters) {\n      currentSelectedFilters[params.category].push(params.value.toString())\n    } else {\n      currentSelectedFilters[params.category] = [params.value.toString()]\n    }\n\n    this.selectedFiltersValue = currentSelectedFilters\n  }\n\n  removeFromFilters(params) {\n    let currentSelectedFilters = this.selectedFiltersValue\n    let category = currentSelectedFilters[params.category]\n    category = category.filter((item) => item !== params.value.toString())\n    if (category.length === 0) {\n      delete currentSelectedFilters[params.category]\n    } else {\n      currentSelectedFilters[params.category] = category\n    }\n\n    this.selectedFiltersValue = currentSelectedFilters\n  }\n\n  get checkedCategoryTargets() {\n    return this.categoryFilterTargets.filter((target) => target.checked)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['container', 'slide']\n\n  left() {\n    const tip = this.slideTarget\n    const width = tip.clientWidth\n    this.containerTarget.scrollLeft -= width\n  }\n\n  right() {\n    const tip = this.slideTarget\n    const width = tip.clientWidth\n    this.containerTarget.scrollLeft += width\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  selectClassEvent(event) {\n    let calendarEvent = this.findCalEventFromTarget(event.target)\n    this.setSelectedClassAttributes(calendarEvent.dataset)\n\n    for (const item of document.querySelectorAll('.calendar-event')) {\n      item.classList.remove('selected')\n    }\n    calendarEvent.classList.add('selected')\n  }\n\n  //\n  // private\n  //\n  // TODO: This just does the same thing as event.currentTarget so it should get removed\n  findCalEventFromTarget(target) {\n    // depending on if the user clicks the time or the space around it\n    if (target.hasAttribute('data-name')) {\n      return target\n    }\n\n    return target.closest('.calendar-event')\n  }\n\n  // TODO: These should proabably be handled by targets rather than id selectors\n  setSelectedClassAttributes(dataset) {\n    document.querySelector('#selected-class-name').textContent = dataset.name\n    document.querySelector('#selected-class-date').textContent = dataset.date\n    document.querySelector('#selected-class-time').textContent = dataset.time\n\n    if (dataset.description) {\n      document.querySelector('#selected-class-desc').textContent = dataset.description\n    }\n\n    if (dataset.instructor) {\n      document.querySelector('#selected-class-instructor').textContent = dataset.instructor\n    } else {\n      document.querySelector('#selected-class-instructor').textContent = ''\n    }\n\n    document.querySelector('#scheduler_params_selected_class_object_type').value = dataset.type\n    document.querySelector('#scheduler_params_selected_class_object_id').value = dataset.id\n    document.querySelector('#scheduler_params_selected_class_date').value = dataset.date\n\n    $('.add-new button.btn.btn-primary').removeAttr('disabled')\n    $('.add-new button.btn.btn-primary').removeClass('hidden')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { initializeTooltips } from '../../../../vendor/assets/javascripts/voltage'\nimport {\n  initializeStudentAttendanceLog,\n  initializeStudentStatusDropdowns,\n  initializeStudentRestore,\n} from '../../../assets/javascripts/school/students'\nimport { initializeSelectAllCheckboxes } from '../../../assets/javascripts/forms'\n\n// TODO: Remove this when the student list is un-bad-ified\nexport default class extends Controller {\n  connect() {\n    initializeTooltips($(this.element))\n    initializeStudentStatusDropdowns($(this.element))\n    initializeStudentAttendanceLog($(this.element))\n    initializeSelectAllCheckboxes($(\"input.select-all-item[type='checkbox']\"), true)\n    initializeStudentRestore($('.student-restore'))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['location']\n\n  connect() {\n    if (this.scrollOffset > 0) {\n      this.element.scrollTo({ top: this.scrollOffset })\n    }\n  }\n\n  get top() {\n    return this.element.getBoundingClientRect().top\n  }\n\n  get distances() {\n    return this.locationTargets.map((locationTarget) => locationTarget.getBoundingClientRect().top - this.top)\n  }\n\n  get scrollOffset() {\n    return Math.min(...this.distances) - 10\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['input']\n  static values = { on: String, off: String }\n\n  toggle() {\n    this.inputTarget.value = this.inputTarget.value === this.onValue ? this.offValue : this.onValue\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['frame']\n  static values = { on: String, off: String, id: String }\n\n  toggle(event) {\n    Promise.all(event.target.getAnimations().map((animation) => animation.finished)).then(() => {\n      this.frame.src = this.isOn ? this.offValue : this.onValue\n    })\n  }\n\n  ///\n  /// private\n  ///\n  get isOn() {\n    return !this.frame.src || this.frame.src.includes(this.onValue)\n  }\n\n  get frame() {\n    if (this.hasFrameTarget) {\n      return this.frameTarget\n    }\n\n    if (this.hasIdValue) {\n      return document.querySelector(`#${this.idValue}`)\n    }\n\n    return this.element\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['input']\n\n  copy() {\n    const isHidden = this.inputTarget.classList.contains('hidden')\n\n    if (isHidden) {\n      this.inputTarget.classList.remove('hidden')\n    }\n\n    let textValue = ''\n    if (this.inputTarget.tagName === 'INPUT' || this.inputTarget.tagName === 'TEXTAREA') {\n      this.inputTarget.select()\n      textValue = this.inputTarget.value\n    } else {\n      textValue = this.inputTarget.innerText.trim()\n    }\n\n    // NOTE: This doesn't work without HTTPS, the other method is deprecated\n    navigator.clipboard.writeText(textValue)\n\n    if (isHidden) {\n      this.inputTarget.classList.add('hidden')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\n// Eventually this should be replaced with purely turbo\n// but since the Student Profile modules use tables, we can't put\n// turbo frames in them, so we have to click view more a lot of times\nexport default class extends Controller {\n  static targets = ['more', 'infinity', 'spinner']\n\n  viewAll(event) {\n    this.spinnerTarget.classList.remove('hidden')\n    event.target.disabled = true\n\n    this.fetchMore()\n\n    this.keepDisabled = true\n    this.shouldViewAll = true\n  }\n\n  moreTargetConnected(element) {\n    if (this.keepDisabled) {\n      element.disabled = true\n    }\n\n    this.requestSent = false\n  }\n\n  scroll() {\n    if (!this.shouldViewAll) return\n\n    const bottom =\n      this.infinityTarget.scrollHeight - Math.abs(this.infinityTarget.scrollTop) >=\n      this.infinityTarget.offsetHeight - 500\n\n    if (bottom && this.hasMoreTarget && !this.requestSent) {\n      this.requestSent = true\n      this.fetchMore()\n    }\n\n    if (bottom && !this.hasMoreTarget) {\n      this.spinnerTarget.classList.add('hidden')\n      this.shouldViewAll = false\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  fetchMore() {\n    this.moreTarget.disabled = false\n\n    this.moreTarget.click()\n\n    this.moreTarget.disabled = true\n  }\n\n  get keepDisabled() {\n    return this._keepDisabled\n  }\n\n  set keepDisabled(_keepDisabled) {\n    this._keepDisabled = _keepDisabled\n  }\n\n  get shouldViewAll() {\n    return this._shouldViewAll\n  }\n\n  set shouldViewAll(_shouldViewAll) {\n    this._shouldViewAll = _shouldViewAll\n  }\n\n  get requestSent() {\n    return this._requestSent\n  }\n\n  set requestSent(_requestSent) {\n    this._requestSent = _requestSent\n  }\n}\n", "/* eslint-env jquery */\n\n/* global initializeDropdownTabs */\n/* global initializeTooltips */\n/* global initializeAdditionalInfoModalContent */\n/* global findCheckedCheckBoxes */\n/* global initializeSelectAllCheckboxes */\n/* global Turbo */\n\n/* eslint no-use-before-define: 0 */\n\nfunction transitionPersonIntoDisabledState() {\n  'use strict'\n\n  var checkedCheckBoxes = findCheckedCheckBoxes()\n\n  var bulkCheckbox = $('input#select-all')\n  if (bulkCheckbox.is(':checked')) {\n    bulkCheckbox.hide()\n    bulkCheckbox.prop('checked', false)\n    bulkCheckbox.parent().prepend('<div class=\"spinner spinner-grow\" />')\n  }\n  checkedCheckBoxes.parent().html('<div class=\"spinner spinner-grow\" />')\n}\n\nfunction findCheckedPersonIds(checkedCheckBoxes) {\n  'use strict'\n\n  var personIds = []\n\n  checkedCheckBoxes.each(function () {\n    let personId = this.dataset.personId\n    personIds.push(personId)\n  })\n\n  return personIds\n}\n\nfunction handleAdditionalInfoNeededUpdateProspectResponse(container, path, button, data) {\n  'use strict'\n\n  $('#update-prospect-modal').html(data.responseText)\n  initializeAdditionalInfoModalContent()\n  $('#update-prospect-modal').modal('show')\n  $('#update-prospect-modal').on('hidden.bs.modal', function () {\n    $('#update-prospect-modal').unbind()\n  })\n  $('#update-prospect-modal')\n    .find('form')\n    .on('ajax:complete', function (e) {\n      if (e.originalEvent.detail[0].status === 200) {\n        updateProspectLeadState(container, path, button)\n      } else {\n        $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n      }\n\n      $('#update-prospect-modal').modal('hide')\n    })\n}\n\nfunction handleUpdateProspectLeadStateResponse(container, path, button, data) {\n  'use strict'\n\n  if (data.status === 200) {\n    if ($(container).length > 0) {\n      container.fadeOut('fast', function () {\n        $('#update-prospect-modal').unbind()\n        $('#update-prospect-modal').modal('hide')\n\n        container.html(data.responseText)\n        initializeTooltips(container)\n        initializeDropdownTabs($(this))\n        initializeProspectLeadStateDropdowns(container)\n        initializeSelectAllCheckboxes(container.find(\"input.select-all-item[type='checkbox']\"), false)\n        initializeAssignedToFields(container)\n        initializeProspectNoting($(this))\n        container.fadeIn('fast')\n      })\n    } else {\n      $('#update-prospect-modal').unbind()\n      $('#update-prospect-modal').modal('hide')\n      Turbo.visit(window.location.toString(), { action: 'replace' })\n    }\n  } else if (data.status === 400) {\n    handleAdditionalInfoNeededUpdateProspectResponse(container, path, button, data)\n  } else if (data.status === 401) {\n    $('#global-alerts').append(data.responseText)\n    return false\n  } else if (data.status === 404) {\n    $('#global-alerts').append(data.responseText)\n    return false\n  } else {\n    $('#global-alerts').append(data.responseText)\n    return false\n  }\n\n  return true\n}\n\nfunction updateProspectLeadState(container, path, button) {\n  'use strict'\n\n  button.attr('disabled', true)\n\n  var token = $('meta[name=\"csrf-token\"]').attr('content')\n  $.ajax({\n    type: 'PUT',\n    url: path,\n    beforeSend(xhr) {\n      xhr.setRequestHeader('X-CSRF-Token', token)\n    },\n    complete(data) {\n      return handleUpdateProspectLeadStateResponse(container, path, button, data)\n    },\n  })\n}\n\nexport function initializeProspectLeadStateDropdowns(parent) {\n  'use strict'\n\n  $(parent)\n    .find('.status-modifier .dropdown-tabs-menu li a')\n    .on('voltage:dropdown-tabs:selected', function () {\n      const $this = $(this)\n      const $target = $this.closest('.prospect-wrapper')\n      const path = $this.data('path')\n      if (!path) return\n\n      const $parentButton = $this.closest('.dropdown-tabs').find('button')\n\n      return updateProspectLeadState($target, path, $parentButton)\n    })\n}\n\nexport function initializeAssignedToFields(parent) {\n  'use strict'\n\n  $(parent)\n    .find('.employee-image.employee-blank, .employee-image.employee-edit')\n    .on('click', function () {\n      var $this = $(this)\n      var path = $this.data('path')\n      $('#update-prospect-modal').html('<div class=\"spinner spinner-grow center\" />')\n      $('#update-prospect-modal').modal('show')\n      $('#update-prospect-modal').on('hidden.bs.modal', function () {\n        $('#update-prospect-modal').unbind()\n      })\n      $.ajax({\n        type: 'GET',\n        url: path,\n        complete(data) {\n          $('#update-prospect-modal').html(data.responseText)\n          initializeAdditionalInfoModalContent()\n          $('#update-prospect-modal')\n            .find('form')\n            .on('ajax:complete', function (e) {\n              if (e.originalEvent.detail[0].status !== 200) {\n                $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n              }\n\n              $('#update-prospect-modal').modal('hide')\n            })\n        },\n      })\n\n      return false\n    })\n}\n\nexport function initializeProspectNoting(parent) {\n  'use strict'\n\n  $(parent)\n    .find('.prospect-note')\n    .on('click', function () {\n      var $this = $(this)\n      var path = $this.data('path')\n      $('#update-prospect-modal').html('<div class=\"spinner spinner-grow center\" />')\n      $('#update-prospect-modal').modal('show')\n      $('#update-prospect-modal').on('hidden.bs.modal', function () {\n        $('#update-prospect-modal').unbind()\n      })\n      $.ajax({\n        type: 'GET',\n        url: path,\n        complete(data) {\n          $('#update-prospect-modal').html(data.responseText)\n          initializeAdditionalInfoModalContent()\n          $('#update-prospect-modal')\n            .find('form')\n            .on('ajax:complete', function (e) {\n              if (e.originalEvent.detail[0].status !== 200) {\n                $('#global-alerts').append(e.originalEvent.detail[0].responseText)\n              }\n\n              $('#update-prospect-modal').modal('hide')\n            })\n        },\n      })\n\n      return false\n    })\n\n  handleTruncatedProspectNotes()\n\n  $(window).resize(function () {\n    handleTruncatedProspectNotes()\n  })\n}\n\n// Makes the dynamic \"Read More\" logic on a Prospect Note work\nfunction handleTruncatedProspectNotes() {\n  'use strict'\n\n  var ps = document.querySelectorAll('.prospect-note p')\n  ps.forEach(function (p) {\n    // Note :: Without the -1, this logic will not work for FireFox v.68\n    // For whatever reason, the FF browser is always off-by-one.\n    p.classList[p.scrollHeight - 1 > p.offsetHeight ? 'add' : 'remove']('truncated')\n  })\n}\n\nfunction initializeProspectDelete(element) {\n  'use strict'\n\n  $(element).on('click', function (e) {\n    e.preventDefault()\n    var path = element.data('path')\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n    $.ajax({\n      type: 'DELETE',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      complete(data) {\n        if (data.status === 400) {\n          $('#update-prospect-modal').html('<div class=\"spinner spinner-grow center\" />')\n          $('#update-prospect-modal').modal('show')\n          $('#update-prospect-modal').on('hidden.bs.modal', function () {\n            $('#update-prospect-modal').unbind()\n          })\n          $('#update-prospect-modal').html(data.responseText)\n          return false\n        }\n        $('#global-alerts').append(data.responseText)\n        return false\n      },\n    })\n    return true\n  })\n}\n\nfunction initializeBulkEdit(element) {\n  $(element).on('click', function () {\n    var bulkAction = $(this).data('bulk-action')\n    var path = $(this).data('path')\n    var checkedCheckBoxes = findCheckedCheckBoxes()\n    var selectedPersonIds = findCheckedPersonIds(checkedCheckBoxes)\n\n    transitionPersonIntoDisabledState()\n    $.ajax({\n      type: 'POST',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n      },\n      data: {\n        personIds: selectedPersonIds,\n        bulkAction,\n      },\n      complete(data) {\n        if (data.status !== 200) $('#global-alerts').append(data.responseText)\n\n        return false\n      },\n    })\n  })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  let checkBoxes = document.querySelectorAll(\"input.select-all-item[type='checkbox']\")\n  initializeSelectAllCheckboxes($(checkBoxes), true)\n  let bulkActions = document.querySelectorAll('.execute-bulk-action')\n  initializeBulkEdit(bulkActions)\n\n  $('#prospects').on('turbo:frame-render', function () {\n    checkBoxes = document.querySelectorAll(\"input.select-all-item[type='checkbox']\")\n    initializeSelectAllCheckboxes($(checkBoxes), true)\n    bulkActions = document.querySelectorAll('.execute-bulk-action')\n    initializeBulkEdit(bulkActions)\n  })\n\n  initializeProspectLeadStateDropdowns($('#prospect-profile.panel.left-sidebar'))\n  initializeProspectDelete($('#prospect-delete'))\n  initializeProspectDelete($('#prospect-delete-also'))\n})\n", "import { Controller } from '@hotwired/stimulus'\nimport { initializeTooltips, initializeDropdownTabs } from '../../../../vendor/assets/javascripts/voltage'\nimport { initializeSelectAllCheckboxes } from '../../../assets/javascripts/forms'\nimport {\n  initializeProspectLeadStateDropdowns,\n  initializeProspectNoting,\n  initializeAssignedToFields,\n} from '../../../assets/javascripts/school/prospects'\n\nexport default class extends Controller {\n  connect() {\n    initializeTooltips($(this.element))\n    initializeDropdownTabs($(this.element))\n    initializeProspectLeadStateDropdowns($(this.element))\n    initializeAssignedToFields($(this.element))\n    initializeProspectNoting($(this.element))\n    initializeSelectAllCheckboxes($(\"input.select-all-item[type='checkbox']\"), true)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['fieldset', 'body', 'clearableSelect']\n\n  add() {\n    const newFieldset = this.fieldset.cloneNode(true)\n    const newInputs = newFieldset.querySelectorAll('input')\n    const newSelects = newFieldset.querySelectorAll('select')\n\n    for (const input of [...newInputs, ...newSelects]) {\n      input.name = input.name.replace(/\\d+/, this.number)\n\n      if (input.getAttribute('data-duplicate-fieldset-ignore') !== null) continue\n\n      // This might not work in 100% of cases, but for the most part it should, but it clears errors and adjust labels\n      this.adjustFor(input)\n      this.removeError(input)\n      this.resetValue(input)\n\n      if (input.getAttribute('data-duplicate-fieldset-default') !== null) {\n        input.value = input.dataset.duplicateFieldsetDefault\n      }\n    }\n\n    this.cleanSelects(newFieldset)\n    this.bodyTarget.appendChild(newFieldset)\n\n    for (const select of this.clearableSelectTargets) {\n      select.lastChild.remove()\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  adjustFor(input) {\n    const id = input.getAttribute('id')\n    if (!id) return\n\n    // This ensuredly just doesn't work for ToggleComponents, but we'll cross that bridge when we get there\n    const label = input.closest('label')\n\n    if (!label) return\n\n    const { newId } = this\n\n    label.setAttribute('for', newId)\n    input.id = newId\n  }\n\n  removeError(input) {\n    const nextSibling = input.nextElementSibling\n    if (nextSibling?.classList?.contains('text-danger-600') && input.classList.contains('input-danger')) {\n      nextSibling.remove()\n    }\n    input.classList.remove('input-danger')\n  }\n\n  // This surely will need more logic to handle more complex cases, but I can't think of any right now\n  resetValue(input) {\n    const type = input.type\n\n    if (type === 'checkbox' && (input.name.includes('_destroy') || input.dataset.clearable)) {\n      input.checked = false\n    } else {\n      input.value = ''\n    }\n\n    if (input.getAttribute('data-duplicate-fieldset-disabled') === null) {\n      input.classList.remove('disabled')\n      input.removeAttribute('readonly')\n    }\n  }\n\n  cleanSelects(newFieldset) {\n    const wrappers = newFieldset.querySelectorAll('.ts-wrapper')\n    for (const wrapper of wrappers) {\n      wrapper.remove()\n    }\n    const selects = newFieldset.querySelectorAll('select')\n    for (const select of selects) {\n      select.classList.remove('tomselected', 'ts-hidden-accessible')\n    }\n  }\n\n  get fieldset() {\n    // Grabs the last one in case ordering matters\n    return this.fieldsetTargets[this.fieldsetTargets.length - 1]\n  }\n\n  get number() {\n    return this.fieldsetTargets.length\n  }\n\n  get newId() {\n    return Math.random().toString(16).substring(2, 12)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = {\n    sortType: { type: String, default: 'Number' },\n    sortDirection: { type: String, default: 'desc' },\n  }\n\n  connect() {\n    this.sortChildren()\n  }\n\n  ///\n  /// private\n  ///\n\n  sortChildren() {\n    if (this.childrenSorted) return\n\n    this.children.sort(this.compare.bind(this)).forEach((child) => this.element.appendChild(child))\n  }\n\n  compare(left, right) {\n    const leftCode = this.parse(left.getAttribute('data-sort-code')) || 0\n    const rightCode = this.parse(right.getAttribute('data-sort-code')) || 0\n\n    if (leftCode < rightCode) return this.sortDirectionValue === 'asc' ? -1 : 1\n    if (leftCode > rightCode) return this.sortDirectionValue === 'asc' ? 1 : -1\n    return 0\n  }\n\n  parse(value) {\n    if (this.sortTypeValue === 'Number') return parseFloat(value)\n    if (this.sortTypeValue === 'String') return value\n  }\n\n  get children() {\n    return Array.from(this.element.children)\n  }\n\n  get childrenSorted() {\n    let [left, ...rights] = this.children\n\n    for (const right of rights) {\n      if (this.compare(left, right) > 0) return false\n\n      left = right\n    }\n    return true\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { enableApplyToPreviewButton } from '../../assets/javascripts/school/bizbuilders'\n\nexport default class extends Controller {\n  connect() {\n    $('.trumbo-editor')\n      .trumbowyg({\n        btns: [\n          ['undo', 'redo'],\n          ['formatting'],\n          ['strong', 'em', 'del'],\n          ['foreColor', 'backColor'],\n          ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'],\n          ['unorderedList', 'orderedList'],\n          ['horizontalRule'],\n          ['indent', 'outdent'],\n          ['removeformat'],\n          ['link', 'upload'],\n        ],\n        plugins: {\n          upload: {\n            serverPath: '/files.js',\n            headers: {\n              'X-CSRF-Token': $(\"meta[name='csrf-token']\").attr('content'),\n              'X-Requested-With': 'XMLHttpRequest',\n            },\n            fileFieldName: 'file',\n            urlPropertyName: 'url',\n          },\n        },\n        svgPath: this.element.dataset.iconsPath,\n        removeformatPasted: true,\n      })\n      .on('tbwchange', function () {\n        if ($('#landing-page-form .apply-btn').length) enableApplyToPreviewButton()\n      })\n  }\n\n  disconnect() {\n    $('.trumbo-editor').trumbowyg('destroy')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  submit() {\n    this.element.requestSubmit()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = {\n    title: String,\n    newTitle: String,\n    style: String,\n    newStyle: String,\n    delay: Number,\n    immediate: Boolean,\n  }\n\n  connect() {\n    if (this.immediateValue) {\n      this.transition()\n    }\n  }\n\n  transition() {\n    this.style = this.newStyleValue\n    this.title = this.newTitleValue\n\n    setTimeout(() => {\n      this.style = this.styleValue\n      this.title = this.titleValue\n    }, this.delayValue)\n  }\n\n  ///\n  /// private\n  ///\n\n  set style(_style) {\n    if (!this.hasNewStyleValue) return\n\n    this.element.classList.remove(this.styleValue)\n    this.element.classList.remove(this.newStyleValue)\n    this.element.classList.add(_style)\n  }\n\n  set title(_title) {\n    if (!this.hasNewTitleValue) return\n\n    this.element.innerText = _title\n  }\n}\n", "import AutoSortController from '../../javascript/controllers/auto_sort_controller'\nimport { useMutation } from 'stimulus-use'\n\nexport default class extends AutoSortController {\n  static values = { scroll: Boolean }\n\n  initialize() {\n    useMutation(this, { childList: true })\n  }\n\n  mutate(entries) {\n    this.sortChildren()\n\n    if (this.scrollValue) {\n      const mutation = entries[0]\n      const addedNodes = Array.from(mutation.addedNodes)\n\n      if (addedNodes.length > 0) {\n        addedNodes[0].scrollIntoView({ behavior: 'smooth' })\n      }\n    }\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\nimport { useMutation } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n  static targets = ['display', 'hiddenInput']\n  static values = { code: String, max: Number, exponent: Number }\n\n  VALID_KEYS = ['Backspace', 'Enter', 'Tab', '0', 'ArrowLeft', 'ArrowRight']\n\n  connect() {\n    this.displayValue = this.hiddenValue || '0'\n    this.update(false)\n\n    useMutation(this, { element: this.hiddenInputTarget, attributes: true, attributeFilter: ['value'] })\n  }\n\n  denyInvalidKeys(event) {\n    if (this.validKey(event.key)) return\n\n    event.preventDefault()\n  }\n\n  mutate() {\n    this.displayValue = this.constructDisplayValue(this.hiddenValue)\n  }\n\n  focus(event) {\n    setTimeout(() => {\n      const input = event.target\n      input.selectionStart = input.value.length\n      input.selectionEnd = input.value.length\n      input.focus()\n    }, 0)\n  }\n\n  update(dispatch = true) {\n    this.hiddenValue = parseInt(this.displayValue.match(/\\d+/g)?.join('')) || 0\n    this.capHiddenValue()\n    this.displayValue = this.constructDisplayValue(this.hiddenValue)\n\n    if (dispatch) this.dispatch('change')\n  }\n\n  maxValueChanged() {\n    this.capHiddenValue()\n    this.displayValue = this.constructDisplayValue(this.hiddenValue)\n  }\n\n  ///\n  /// private\n  ///\n  validKey(key) {\n    return this.VALID_KEYS.includes(key) || !isNaN(key)\n  }\n\n  capHiddenValue() {\n    if (this.hiddenValue > this.maxValue) {\n      this.hiddenValue = this.maxValue\n      this.vibrate(100)\n    }\n  }\n\n  constructDisplayValue(text) {\n    if (text === '') return ''\n\n    const options = {\n      minimumFractionDigits: this.exponentValue,\n      maximumFractionDigits: this.exponentValue,\n    }\n    const result = new Intl.NumberFormat(this.codeValue, options).format(parseFloat(text) * this.subunitMultiplier)\n\n    return result\n  }\n\n  get subunitMultiplier() {\n    return 10 ** -this.exponentValue\n  }\n\n  get hiddenValue() {\n    return this.hiddenInputTarget.value\n  }\n\n  set hiddenValue(text) {\n    this.hiddenInputTarget.value = text\n  }\n\n  get displayValue() {\n    return this.displayTarget.value\n  }\n\n  set displayValue(text) {\n    this.displayTarget.value = text\n    this.displayTarget.size = text.length || 1\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['input']\n  static values = { digits: Number }\n\n  VALID_KEYS = ['Backspace', 'Enter', 'Tab', '0', 'ArrowLeft', 'ArrowRight']\n\n  connect() {\n    this.update()\n  }\n\n  denyInvalidKeys(event) {\n    if (this.validKey(event.key)) return\n\n    event.preventDefault()\n  }\n\n  update() {\n    // Takes xx.yyy -> xxyyy\n    const withoutDecimal = parseInt(this.value.match(/\\d+/g)?.join('')) || 0\n    this.value = this.constructDisplayValue(withoutDecimal)\n  }\n\n  ///\n  /// private\n  ///\n  validKey(key) {\n    return this.VALID_KEYS.includes(key) || !isNaN(key)\n  }\n\n  constructDisplayValue(text) {\n    if (text === '') return ''\n\n    // Takes xxyyy -> xx.yyy\n    const result = (parseFloat(text) / 10 ** this.digitsValue).toFixed(this.digitsValue)\n\n    if (parseFloat(result) >= 100) return (100.0).toFixed(this.digitsValue)\n\n    return result\n  }\n\n  get value() {\n    return this.inputTarget.value\n  }\n\n  set value(text) {\n    this.inputTarget.value = text\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = { min: Number, max: Number }\n\n  deny(event) {\n    if (event.key !== '.') return\n\n    event.preventDefault()\n  }\n\n  clamp() {\n    const value = this.element.value\n    if (value === '') return\n\n    if (this.hasMaxValue && value > this.maxValue) {\n      this.element.value = this.maxValue\n    }\n\n    if (value !== this.element.value) {\n      this.element.dispatchEvent(new Event('change'))\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['input', 'requiredField']\n\n  // Need to trigger this upon connecting or else it causes weird behavior\n  connect() {\n    this.change()\n  }\n\n  change() {\n    if (this.inputTarget.checked) {\n      this.requiredFieldTarget.required = true\n    } else {\n      this.requiredFieldTarget.required = false\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['selectContainer', 'hiddenContainer', 'hiddenField', 'required']\n  static values = {\n    show: { type: String, default: '-1' },\n  }\n\n  connect() {\n    if (this.hasSelectContainerTarget) this.change()\n  }\n\n  change() {\n    if (this.selectContainerTarget.value === this.showValue) {\n      this.hiddenContainerTarget.classList.remove('hidden')\n      if (this.hasRequiredTarget) {\n        this.requiredTarget.required = true\n      }\n    } else {\n      this.hiddenContainerTarget.classList.add('hidden')\n      if (this.hasRequiredTarget) {\n        this.requiredTarget.required = false\n      }\n    }\n  }\n}\n", "function isEven(num) {\n  return num % 2 === 0\n}\n\nexport function roundHalfEven(num) {\n  const strNm = num.toString()\n  const decimalIndex = strNm.indexOf('.')\n\n  if (decimalIndex === -1) {\n    return num\n  }\n\n  const [integer, decimal] = strNm.split('.').map((i) => parseInt(i))\n\n  if (decimal !== 5) {\n    return Math.round(num)\n  }\n\n  if (isEven(integer)) {\n    return integer\n  }\n\n  return integer + 1\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { roundHalfEven } from '../helpers/rounding_helper'\n\nexport default class extends Controller {\n  static targets = [\n    'quantity',\n    'description',\n    'amountCents',\n    'amountCentsHidden',\n    'amount',\n    'taxRate',\n    'taxTotal',\n    'paymentReasonId',\n    'itemId',\n    'itemType',\n    'inventoryItemId',\n    'itemName',\n    'uncategorizedId',\n  ]\n\n  static values = {\n    admin: { type: Boolean, default: false },\n    defaultTaxRate: { type: String, default: '0' },\n  }\n\n  useTax = true\n\n  connect() {\n    this.updateAmount()\n  }\n\n  // when an inventory item is selected\n  populate({ target }) {\n    const option = target.options[target.selectedIndex]\n\n    if (!option.dataset.id && !option.value) {\n      this.resetValues()\n\n      return\n    }\n\n    if (!option.dataset.id) {\n      this.populateWithoutId(option)\n\n      return\n    }\n\n    if (option.dataset.paymentReasonId) {\n      this.populatePaymentReason(option)\n    }\n\n    if (option.dataset.amountCents) {\n      this.populateAmountCents(option)\n    }\n\n    this.disableFields()\n  }\n\n  disableFields() {\n    const paymentReasonSelect = this.paymentReasonIdTarget.nextSibling.querySelector('.ts-control')\n    paymentReasonSelect.classList.add('disabled')\n    paymentReasonSelect.setAttribute('tabindex', '-1')\n    this.paymentReasonIdTarget.nextSibling.classList.add('cursor-not-allowed')\n    this.paymentReasonIdTarget.nextSibling.classList.remove('cursor-pointer')\n    if (!this.adminValue) this.amountCentsTarget.setAttribute('readonly', 'true')\n    if (!this.adminValue) this.amountCentsTarget.setAttribute('tabindex', '-1')\n    if (!this.adminValue) this.amountCentsTarget.classList.add('disabled')\n  }\n\n  enableFields() {\n    const paymentReasonSelect = this.paymentReasonIdTarget.nextSibling.querySelector('.ts-control')\n    this.paymentReasonIdTarget.tomselect.clear()\n    this.paymentReasonIdTarget.tomselect.load('')\n    this.paymentReasonIdTarget.tomselect.setValue(this.uncategorizedIdTarget.value)\n    paymentReasonSelect.removeAttribute('tabindex')\n    paymentReasonSelect.classList.remove('disabled')\n    this.paymentReasonIdTarget.nextSibling.classList.add('cursor-pointer')\n    this.paymentReasonIdTarget.nextSibling.classList.remove('cursor-not-allowed')\n    this.amountCentsTarget.removeAttribute('readonly')\n    this.amountCentsTarget.removeAttribute('tabindex')\n    this.amountCentsTarget.classList.remove('disabled')\n    this.resetValues()\n  }\n\n  resetValues() {\n    this.amountCentsHiddenTarget.value = 0\n    this.taxRateTarget.value = 0\n    this.amountTarget.value = 0\n    this.taxTotalTarget.value = 0\n    this.taxTotalTarget.dispatchEvent(new Event('change', { bubbles: true }))\n  }\n\n  // when the price(amountCentsHidden) or quantity has changed update the amount\n  updateAmount() {\n    const quantity = this.quantityTarget.value\n    const price = this.amountCentsHiddenTarget.value\n    const amountField = quantity * parseFloat(price)\n    this.amountTarget.value = amountField\n\n    if (this.useTax) {\n      const option = this.descriptionTarget.options[this.descriptionTarget.selectedIndex]\n      let taxRate = 0\n      if (option.dataset.id) {\n        taxRate = option.dataset.taxRate\n        this.calculateTax(taxRate)\n        this.taxRateTarget.value = taxRate\n      } else {\n        taxRate = parseFloat(this.defaultTaxRateValue)\n        this.taxRateTarget.value = taxRate\n        this.calculateTax(taxRate)\n      }\n    } else {\n      this.taxRateTarget.value = 0\n      this.taxTotalTarget.value = 0\n    }\n\n    this.amountTarget.dispatchEvent(new Event('change', { bubbles: true }))\n  }\n\n  toggleTax() {\n    this.useTax = !this.useTax\n  }\n\n  ///\n  /// private\n  ///\n  calculateTax(taxRate) {\n    this.taxTotalTarget.value = roundHalfEven((taxRate / 100) * this.amountTarget.value, 0)\n  }\n\n  populateWithoutId(option) {\n    if (this.hasItemNameTarget) {\n      this.itemNameTarget.value = option.value\n    }\n\n    this.enableFields()\n  }\n\n  populatePaymentReason(option) {\n    let control = this.paymentReasonIdTarget.tomselect\n    control.addOption({ value: option.dataset.paymentReasonId })\n    control.addItem(option.dataset.paymentReasonId)\n  }\n\n  populateAmountCents(option) {\n    this.amountCentsHiddenTarget.value = option.dataset.amountCents\n\n    if (this.hasItemIdTarget) {\n      this.itemIdTarget.value = option.dataset.id\n      this.itemTypeTarget.value = 'InventoryItem'\n    }\n    if (this.hasInventoryItemIdTarget) {\n      this.inventoryItemIdTarget.value = option.dataset.id\n    }\n\n    this.itemNameTarget.value = option.dataset.name\n    this.taxRateTarget.value = option.dataset.taxRate\n    this.updateAmount()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['amount', 'taxTotal', 'subtotal', 'salesTax', 'grandTotal']\n  static outlets = ['line-item-calculate']\n\n  useTax = true\n\n  lineItemCalculateOutletConnected(outlet) {\n    outlet.useTax = this.useTax\n  }\n\n  calculate() {\n    if (this.amountTargets.length === 0) return\n\n    this.subtotalTarget.value = this.subtotal\n    this.salesTaxTarget.value = this.salesTax\n    this.grandTotalTarget.value = this.grandTotal\n  }\n\n  toggleTax() {\n    this.useTax = !this.useTax\n\n    for (const outlet of this.lineItemCalculateOutlets) {\n      outlet.toggleTax()\n      outlet.updateAmount()\n    }\n\n    this.calculate()\n  }\n\n  get subtotal() {\n    const value = this.amountTargets\n      .filter((target) => !target.closest('.form-fields').querySelector('.swap-checkbox')?.checked)\n      .map((target) => parseFloat(target.value) || 0)\n      .reduce((accumulator, currentValue) => accumulator + currentValue, 0)\n\n    return Math.round(value)\n  }\n\n  get salesTax() {\n    if (!this.useTax) return 0\n\n    const value = this.taxTotalTargets\n      .filter((target) => !target.closest('.form-fields').querySelector('.swap-checkbox')?.checked)\n      .map((target) => parseFloat(target.value) || 0)\n      .reduce((accumulator, currentValue) => accumulator + currentValue, 0)\n\n    return Math.round(value)\n  }\n\n  get grandTotal() {\n    return Math.round(this.subtotal + this.salesTax)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['issueDate', 'terms', 'dueDate', 'termsSpecified']\n\n  calculate() {\n    const theDate = new Date(this.issueDateTarget.value.replaceAll('-', '/'))\n    theDate.setDate(theDate.getDate() + this.terms)\n\n    const dueDate = theDate.toLocaleDateString(undefined, {\n      weekday: 'long',\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric',\n    })\n    this.dueDateTarget.value = dueDate\n  }\n\n  get terms() {\n    const index = this.termsTarget.options.selectedIndex\n    let termsOffset = parseInt(this.termsTarget.options[index].value)\n\n    // -1 if a Custom Term was selected\n    if (termsOffset === -1) {\n      termsOffset = parseInt(this.termsSpecifiedTarget.value) || 0\n    }\n\n    if (termsOffset < 1) {\n      return termsOffset\n    }\n    return termsOffset - 1\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['due', 'hiddenValue']\n  static values = { total: Number }\n\n  updateChangeDue() {\n    if (this.totalValue < this.hiddenValueTarget.value) {\n      this.dueTarget.value = this.hiddenValueTarget.value - this.totalValue\n    } else {\n      this.dueTarget.value = 0\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { getStream } from '../helpers/fetch_helper'\n\nexport default class extends Controller {\n  static values = { streamUrl: String, params: String }\n\n  fetchStream({ target }) {\n    if (target.tagName === 'SELECT') {\n      getStream(this.constructUrl(target.selectedOptions[0].value))\n      return\n    }\n\n    getStream(this.constructUrl(target.value))\n  }\n\n  ///\n  /// private\n  ///\n  constructUrl(value) {\n    const base = `${this.streamUrlValue}/${value}`\n\n    if (this.hasParamsValue) {\n      return `${base}?${this.paramsValue}`\n    }\n\n    return base\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['sourceType', 'source']\n  static values = { provider: String, submitBtnId: String, purpose: String }\n\n  connect() {\n    this.submitCallback = this.submit.bind(this)\n\n    this.bindSubmit()\n  }\n\n  bindSubmit() {\n    this.element.addEventListener('submit', this.submitCallback, true)\n  }\n\n  unbindSubmit() {\n    this.element.removeEventListener('submit', this.submitCallback, true)\n  }\n\n  // eslint-disable-next-line complexity\n  submit(event) {\n    this.disableSubmit()\n    if (\n      this.sourceIsManual ||\n      this.sourceIsCheck ||\n      this.sourceIsAch ||\n      this.weHaveAToken ||\n      this.weHaveAVaultAndWeAreNotStripe ||\n      this.weAreStripeAndHaveConfirmedSetupIntent ||\n      this.weAreAStripeVaultThatHasBeenProcessed\n    ) {\n      return true\n    }\n\n    event.preventDefault()\n    // This is pretty gross but Stripe is the only one that doesn't require actually making a payment to\n    // save the card\n    if (this.weAreStripe) {\n      this.handleStripeSubmit(event)\n    } else {\n      this.handleNonStripeSubmit()\n    }\n  }\n\n  //\n  // PRIVATE\n  //\n\n  handleStripeSubmit(event) {\n    if (this.purposeValue === 'pay') {\n      this.setPaymentToken(this.sourceIsToken, this.sourceElement)\n    } else {\n      this.billingProviderController.saveCard(event, this.sourceElement)\n    }\n  }\n\n  handleNonStripeSubmit() {\n    this.setPaymentToken(this.sourceIsToken, this.sourceElement)\n  }\n\n  setPaymentToken(sourceIsToken, sourceElement) {\n    this.billingProviderController.setPaymentToken(sourceIsToken, sourceElement).then((success) => {\n      if (success) {\n        this.element.requestSubmit()\n      } else {\n        // eslint-disable-next-line no-console\n        console.log('tokenizer: tokenization failed')\n        this.enableSubmit()\n      }\n    })\n  }\n\n  //\n  // private\n  //\n\n  disableSubmit() {\n    this.submitButton.disabled = true\n  }\n\n  enableSubmit() {\n    this.submitButton.disabled = false\n  }\n\n  get sourceElement() {\n    if (this.sourceTypeTarget.value === 'token') {\n      return this.sourceTarget\n    }\n    return this.sourceTargets.filter((i) => i.checked)[0]\n  }\n\n  get submitButton() {\n    return document.querySelector(`[form=\"${this.element.id}\"]`)\n  }\n\n  get billingProviderController() {\n    let controllerName = this.providerValue\n      .replace(/([a-z])([A-Z])/g, '$1-$2')\n      .replace(/[\\s_]+/g, '-')\n      .toLowerCase()\n    return this.application.getControllerForElementAndIdentifier(this.element, controllerName)\n  }\n\n  get sourceIsManual() {\n    return this.sourceTypeTarget.value === 'manual'\n  }\n\n  get sourceIsCheck() {\n    return this.sourceTypeTarget.value === 'check'\n  }\n\n  get sourceIsAch() {\n    return this.sourceTypeTarget.value === 'ach'\n  }\n\n  get sourceIsVault() {\n    return this.sourceTypeTarget.value === 'vault'\n  }\n\n  get sourceIsToken() {\n    return this.sourceTypeTarget.value === 'token'\n  }\n\n  get weHaveAToken() {\n    return this.sourceIsToken && this.hasSourceTarget && this.sourceTarget.value\n  }\n\n  get weAreStripe() {\n    return this.providerValue === 'Stripe'\n  }\n\n  get weHaveAVaultAndWeAreNotStripe() {\n    return this.sourceIsVault && this.providerValue !== 'Stripe'\n  }\n\n  get weAreStripeAndHaveConfirmedSetupIntent() {\n    return this.weAreStripe && this.billingProviderController.confirmedValue\n  }\n\n  get weAreAStripeVaultThatHasBeenProcessed() {\n    // We've already processed the submission once and confirmed the payment from a pm\n    // back into a payment intent, so we gucci\n    return this.weAreStripe && this.sourceIsVault && this.sourceElement.value.includes('::')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nimport { post } from '../helpers/fetch_helper'\n\nexport default class extends Controller {\n  static values = { intent: String, confirmed: Boolean }\n  static targets = ['savePaymentMethod', 'cardholderName']\n  static outlets = ['searchable-person-field']\n\n  saveCard(event, tokenTarget) {\n    event.target.disabled = true\n\n    this.confirmSetupIntent(tokenTarget).then((success) => {\n      if (success) {\n        this.element.closest('form').requestSubmit()\n      } else {\n        event.target.disabled = false\n      }\n    })\n  }\n\n  confirmSetupIntent(tokenTarget) {\n    let card = this.card\n    let opts = {}\n    let cardholderName = this.cardholderNameTargets.map((t) => t.value).join(' ')\n\n    opts.payment_method = {\n      card,\n      billing_details: {\n        name: cardholderName,\n      },\n    }\n\n    return this.stripe.confirmCardSetup(this.intentValue, opts).then((result) => {\n      if (result.error) {\n        var errorElement = document.getElementById('stripe-card-errors')\n        errorElement.textContent = result.error.message\n        return false\n      }\n      tokenTarget.value = result.setupIntent.id\n      this.confirmedValue = true\n      if (document.getElementById('input#credit-card-token')) {\n        document.getElementById('input#credit-card-token').value = result.setupIntent.payment_method\n      }\n      return true\n    })\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  setPaymentToken(tokenize, tokenTarget) {\n    let card = this.card\n    let opts = {}\n    if (this.hasSavePaymentMethodTarget && this.savePaymentMethodTarget.checked) {\n      opts.setup_future_usage = 'off_session'\n    }\n\n    if (tokenize) {\n      opts.payment_method = { card }\n    } else {\n      // Token target is the vault ID if we're not tokenizing\n      // TODO what if it's not set for some reason?\n      opts.payment_method = tokenTarget.dataset.reference\n    }\n\n    return this.stripe.confirmCardPayment(this.intentValue, opts).then(function (result) {\n      if (result.error) {\n        let errorElement = document.getElementById('stripe-card-errors')\n        if (!errorElement) {\n          errorElement = document.getElementById('errors')\n        }\n        errorElement.textContent = result.error.message\n        return false\n      }\n\n      // Token target is the vault ID if we're not tokenizing\n      if (tokenize) {\n        tokenTarget.value = result.paymentIntent.id\n      } else {\n        tokenTarget.value += `::${result.paymentIntent.id}`\n      }\n\n      return true\n    })\n  }\n\n  connect() {\n    const STRIPE_PUBLIC_KEY = document.getElementById('stripe-account-token').dataset.publicKey\n    const STRIPE_ACCOUNT_TOKEN = document.getElementById('stripe-account-token').dataset.account\n\n    // eslint-disable-next-line no-undef\n    this.stripe = Stripe(STRIPE_PUBLIC_KEY, { stripeAccount: STRIPE_ACCOUNT_TOKEN })\n\n    if (document.getElementById('stripe-card-form')) {\n      this.mountCard()\n    }\n  }\n\n  generateSetupIntent({ currentTarget }) {\n    const url = '/setup_intents'\n    const payerId = currentTarget.value || currentTarget.dataset.payerId\n    let payerType\n    if (this.hasSearchablePersonFieldOutlet) {\n      payerType = this.searchablePersonFieldOutlet.selectedTypeValue\n    } else {\n      payerType = currentTarget.dataset.payerType\n    }\n\n    post(url, { payer_id: payerId, payer_type: payerType })\n      .then((response) => response.json())\n      .then((data) => {\n        this.intentValue = data.intent.client_secret\n        this.cardholderNameTarget.value = data.payer_name\n      })\n  }\n\n  mountCard() {\n    // NOTE: This is dumb\n    let secondaryColor = Pallette.black\n\n    if (document.querySelector('body.dark')) {\n      secondaryColor = Pallette.white\n    }\n\n    const invalidColor = Pallette.red\n\n    let elements = this.stripe.elements()\n    this.card = elements.create('card', {\n      iconStyle: 'solid',\n      style: {\n        base: {\n          iconColor: secondaryColor,\n          color: secondaryColor,\n          lineHeight: '36px',\n          fontFamily: '\"Hind Vadodara\", sans-serif',\n          fontSize: '19px',\n          textTransform: 'uppercase',\n\n          '::placeholder': { color: '#aeaeab' },\n        },\n        invalid: {\n          iconColor: invalidColor,\n          color: invalidColor,\n        },\n      },\n    })\n    this.card.mount('#stripe-card-form')\n\n    this.card.addEventListener('change', function (event) {\n      const displayError = document.getElementById('stripe-card-errors')\n      if (event.error) {\n        displayError.textContent = event.error.message\n      } else {\n        displayError.textContent = ''\n      }\n    })\n\n    document.querySelector('#stripe-card-form').addEventListener('clear:stripe', () => {\n      this.card.clear()\n    })\n  }\n\n  //\n  // private\n  //\n\n  set intentValue(value) {\n    this.data.set('intentValue', value)\n  }\n\n  set confirmedValue(value) {\n    this.data.set('confirmedValue', value)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nexport default class extends Controller {\n  static targets = ['token']\n\n  saveCard(event) {\n    event.target.disabled = true\n\n    this.setPaymentToken(true, this.tokenTarget).then((success) => {\n      if (success) {\n        this.parentForm.requestSubmit()\n      } else {\n        event.target.disabled = false\n      }\n    })\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  setPaymentToken(tokenize, tokenTarget) {\n    if (!tokenize) return Promise.resolve(true)\n\n    this.tokenizer.submission = (resp) => {\n      this.element.dispatchEvent(new CustomEvent('tokenized', { detail: resp }))\n    }\n\n    this.tokenizer.submit()\n\n    return new Promise((resolve) => {\n      this.element.addEventListener('tokenized', function (result) {\n        if (result.detail.status === 'success') {\n          tokenTarget.value = result.detail.token\n          let event = new Event('change')\n          tokenTarget.dispatchEvent(event)\n          resolve(true)\n        } else if (result.detail.status === 'validation') {\n          document.getElementById('basys-card-errors').innerHTML = 'Invalid card information'\n          resolve(false)\n        } else {\n          document.getElementById('basys-card-errors').innerHTML = result.detail.msg\n          resolve(false)\n        }\n      })\n    })\n  }\n\n  mountCard() {\n    // NOTE: This is dumb\n    this.submitButton.disabled = true\n    let secondaryColor = Pallette.black\n\n    if (document.querySelector('body.dark')) {\n      secondaryColor = Pallette.white\n    }\n\n    const invalidColor = Pallette.red\n    const basysPublicKey = document.getElementById('basys-account-token').dataset.publicKey\n\n    const self = this\n    // eslint-disable-next-line no-undef\n    this.tokenizer = new Tokenizer({\n      apikey: basysPublicKey,\n      container: document.querySelector('#basys-card-form'),\n      onLoad() {\n        for (const element of document.querySelectorAll('.basys-form-component .hidden')) {\n          element.classList.remove('hidden')\n        }\n\n        document.querySelector('#loading').classList.add('hidden')\n\n        self.submitButton.disabled = false\n      },\n      settings: {\n        payment: { placeholderCreditCard: 'CARD NUMBER' },\n        styles: {\n          '.payment input': {\n            border: `solid 2px ${Pallette.secondaryDark}`,\n            'border-radius': '5px',\n\n            'padding-top': '20px',\n            'padding-bottom': '20px',\n\n            'background-color': 'transparent',\n            color: secondaryColor,\n            'line-height': '36px',\n            'font-family': '\"Hind Vadodara\", sans-serif',\n            'font-size': '19px',\n            'text-transform': 'uppercase',\n          },\n\n          '.payment .cc input': {\n            'padding-top': '20px',\n            'padding-bottom': '20px',\n          },\n\n          '.payment input.invalid': { border: `solid 2px ${invalidColor}` },\n        },\n      },\n    })\n  }\n\n  get parentForm() {\n    return this.element.closest('form')\n  }\n\n  get submitButton() {\n    const formId = this.parentForm.id\n\n    return document.querySelector(`[form=\"${formId}\"]`)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Pallette } from '../../../vendor/assets/javascripts/voltage-themes/pallette'\nexport default class extends Controller {\n  static values = { publicToken: String }\n  static targets = ['token']\n\n  saveCard(event) {\n    event.target.disabled = true\n\n    this.setPaymentToken(true, this.tokenTarget).then((success) => {\n      if (success) {\n        let parentForm = document.querySelector(`#new-card`)\n        parentForm.requestSubmit()\n      } else {\n        event.target.disabled = false\n      }\n    })\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  setPaymentToken(tokenize, tokenTarget) {\n    if (!tokenize) return Promise.resolve(true)\n\n    return this.client\n      .getPaymentKey(this.paymentCard)\n      .then(function (result) {\n        tokenTarget.value = result\n        return true\n      })\n      .catch(function () {\n        return false\n      })\n  }\n\n  connect() {\n    var USA_EPAY_PUBLIC_TOKEN = this.publicTokenValue\n      ? this.publicTokenValue\n      : document.getElementById('usa-epay-public-token').dataset.publicToken\n\n    if (USA_EPAY_PUBLIC_TOKEN === undefined) throw new Error('No public_token found.')\n\n    // eslint-disable-next-line no-undef\n    this.client = new usaepay.Client(USA_EPAY_PUBLIC_TOKEN)\n\n    if (document.querySelector('#usa-epay-card-form')) {\n      this.mountCard()\n    }\n  }\n\n  mountCard() {\n    // NOTE: This is dumb\n    let secondaryColor = Pallette.black\n\n    if (document.querySelector('body.dark')) {\n      secondaryColor = Pallette.white\n    }\n\n    const invalidColor = Pallette.red\n\n    // eslint-disable-next-line no-undef\n    this.paymentCard = this.client.createPaymentCardEntry()\n    var style = {\n      base: {\n        backgroundColor: 'transparent',\n        color: secondaryColor,\n        lineHeight: '36px',\n        fontFamily: '\"Hind Vadodara\", sans-serif',\n        fontSize: '19px',\n        textTransform: 'uppercase',\n        height: '36px',\n        border: `solid 2px ${Pallette.secondaryDark} !important`,\n        borderRadius: '5px !important',\n        padding: '20px 10px !important',\n        minWidth: '90px',\n        marginRight: '5px',\n      },\n      // eslint-disable-next-line max-len\n      '{}\\n.payjs-input-icon { display: none; } #payjs-container { display: flex; justify-content: space-between; } @media (max-width: 767px) { #payjs-cnum { padding-left: 0; } #payjs-cvv { width: 4em; min-width: 0px !important; } #payjs-exp { width: 4em; } }':\n        '',\n      invalid: { color: invalidColor },\n    }\n    this.paymentCard.generateHTML(style)\n\n    if (!document.getElementById('usa-epay-card-form').value) {\n      this.paymentCard.addHTML('usa-epay-card-form')\n    }\n\n    this.paymentCard.addEventListener('error', function (errorMessage) {\n      var errorContainer = document.getElementById('usa-epay-card-errors')\n      errorContainer.textContent = errorMessage\n    })\n\n    document.querySelector('#usa-epay-card-form').addEventListener('clear:usaepay', () => {\n      this.innerHTML = ''\n      this.paymentCard.addHTML('usa-epay-card-form')\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['iframe']\n  static values = { onLoad: Boolean }\n\n  connect() {\n    if (this.onLoadValue) window.print()\n  }\n\n  print() {\n    this.iframeTarget.contentWindow.print()\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  // There is a tacit assumption that the sumTarget is a MoneyField and the distributeToTargets\n  // use the Money stimulus controller to allow for ease of use.\n  static targets = ['sum', 'allSelector', 'selector', 'distributeTo', 'amountRemaining', 'clearedCheck']\n  static values = { max: { type: Number, default: 0 }, start: { type: Number, default: 0 } }\n\n  connect() {\n    this.constructItems()\n    this.sumTarget.parentElement.setAttribute('data-money-field--component-max-value', this.maxValue)\n    this.sumValue = this.startValue\n\n    if (!this.hasSelectorTarget) {\n      for (const item of this.items) {\n        item.select()\n      }\n    }\n\n    this.updateAllSelected()\n    this.distribute()\n  }\n\n  distribute() {\n    const distributeSum = (totalRemaining, item) => {\n      const remaining = totalRemaining - item.amount\n\n      if (remaining > 0) {\n        item.select()\n        item.distributed = item.amount\n        return remaining\n      }\n\n      const amount = remaining + item.amount\n\n      if (amount > 0) {\n        item.distributed = amount\n      } else {\n        item.distributed = 0\n      }\n\n      return 0\n    }\n\n    this.selectedItems.reduce(distributeSum, this.sumTarget.value)\n\n    this.render()\n  }\n\n  select_all({ target }) {\n    const checked = target.checked\n\n    for (const element of this.selectorTargets) {\n      element.checked = checked\n      this.select({ target: element, render: false })\n    }\n\n    this.render()\n  }\n\n  select({ target, render = true }) {\n    const checked = target.checked\n    const item = this.items.find((i) => i.id === parseInt(target.dataset.id))\n\n    if (checked) {\n      item.select()\n\n      this.resetSelectedItems()\n    } else {\n      item.unselect()\n      item.distributed = 0\n\n      this.allSelectorTarget.checked = false\n    }\n\n    this.updateAllSelected()\n    this.updateSumAndMax()\n\n    if (render) this.render()\n  }\n\n  ///\n  /// private\n  ///\n  render() {\n    for (const item of this.items) {\n      if (!item.distributeToElement) continue\n\n      item.distributeToElement.dataset.moneyAmountValue = item.distributed\n\n      item.distributeToElement.classList.remove('text-kicksite-yellow-600')\n      item.distributeToElement.classList.remove('text-success-400')\n      item.distributeToElement.classList.remove('text-danger-600')\n      item.clearedCheckElement.classList.remove('invisible')\n      item.amountRemainingElement.classList.remove('line-through')\n\n      if (item.cleared) {\n        item.amountRemainingElement.classList.add('line-through')\n        item.distributeToElement.classList.add('text-success-400')\n\n        continue\n      }\n\n      item.clearedCheckElement.classList.add('invisible')\n\n      if (!item.selected) continue\n\n      if (item.distributed > 0) {\n        item.distributeToElement.classList.add('text-kicksite-yellow-600')\n\n        continue\n      }\n\n      item.distributeToElement.classList.add('text-danger-600')\n    }\n  }\n\n  constructItems() {\n    this.items = []\n    for (const element of this.distributeToTargets) {\n      const amount = parseFloat(element.dataset.amount) || 0\n      const item = new Item(parseInt(element.dataset.id), false, amount)\n\n      item.distributeToElement = element\n      item.selectorElement = this.selectorTargets.find((sel) => sel.dataset.id === item.id.toString())\n      item.amountRemainingElement = this.amountRemainingTargets.find(\n        (amt) => amt.dataset.id === item.id.toString(),\n      )\n      item.clearedCheckElement = this.clearedCheckTargets.find((check) => check.dataset.id === item.id.toString())\n\n      this.items.push(item)\n    }\n  }\n\n  updateAllSelected() {\n    if (!this.hasAllSelectorTarget) return\n\n    const allSelected = this.items.every((i) => i.selected)\n\n    this.allSelectorTarget.checked = allSelected\n  }\n\n  updateSumAndMax() {\n    this.maxValue = this.selectedItems.reduce((total, i) => total + i.amount, 0)\n    this.sumTarget.parentElement.setAttribute('data-money-field--component-max-value', this.maxValue)\n    this.sumValue = this.selectedItems.reduce((total, i) => total + i.distributed, 0)\n  }\n\n  resetSelectedItems() {\n    for (const selectedItem of this.selectedItems) {\n      selectedItem.distributed = selectedItem.amount\n    }\n  }\n\n  get selectedItems() {\n    return this.items.filter((i) => i.selected)\n  }\n\n  get items() {\n    return this._items\n  }\n\n  set items(value) {\n    this._items = value\n  }\n\n  get sumValue() {\n    return this._sum\n  }\n\n  set sumValue(value) {\n    if (value < 0) value = 0\n    if (value > this.maxValue) value = this.maxValue\n\n    this.sumTarget.value = value\n    this._sum = value\n  }\n}\n\nclass Item {\n  constructor(id, selected, amount, distributed = 0) {\n    this.id = id\n    this.selected = selected || false\n    this.amount = amount\n    this._distributed = distributed\n    this.cleared = false\n  }\n\n  select() {\n    this.selected = true\n  }\n\n  unselect() {\n    this.selected = false\n  }\n\n  get distributed() {\n    return this._distributed\n  }\n\n  set distributed(value) {\n    if (value >= this.amount) {\n      this.cleared = true\n    } else {\n      this.cleared = false\n    }\n\n    this._distributed = value\n  }\n\n  get selectorElement() {\n    return this._selectorElement\n  }\n\n  set selectorElement(value) {\n    this._selectorElement = value\n\n    if (!this._selectorElement) return\n\n    this.selected = this._selectorElement.checked\n  }\n\n  get distributeToElement() {\n    return this._distributedToElement\n  }\n\n  set distributeToElement(value) {\n    this._distributedToElement = value\n  }\n\n  get amountRemainingElement() {\n    return this._amountRemainingElement\n  }\n\n  set amountRemainingElement(value) {\n    this._amountRemainingElement = value\n  }\n\n  get clearedCheckElement() {\n    return this._clearedCheckElement\n  }\n\n  set clearedCheckElement(value) {\n    this._clearedCheckElement = value\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static values = { code: String, exponent: Number, amount: { type: Number, default: 0 } }\n\n  format() {\n    const options = {\n      minimumFractionDigits: this.exponentValue,\n      maximumFractionDigits: this.exponentValue,\n      style: 'currency',\n      currency: this.codeValue,\n      currencyDisplay: 'narrowSymbol',\n    }\n    const result = new Intl.NumberFormat(this.codeValue, options).format(\n      parseFloat(this.amountValue) * this.subunitMultiplier,\n    )\n\n    this.element.innerText = result\n  }\n\n  amountValueChanged() {\n    this.format()\n  }\n\n  get subunitMultiplier() {\n    return 10 ** -this.exponentValue\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['lineItem']\n\n  remove({ target }) {\n    if (this.lineItemTargets.length === 1) {\n      const newInputs = this.lineItemTarget.querySelectorAll('input')\n\n      for (const input of newInputs) {\n        if (input.getAttribute('data-duplicate-fieldset-ignore') !== null) continue\n\n        this.resetValues(input)\n      }\n      this.cleanSelects()\n    } else {\n      target.closest('.form-fields').remove()\n      this.lineItemTarget.dispatchEvent(new Event('change', { bubbles: true }))\n    }\n  }\n\n  resetValues(input) {\n    if (input.getAttribute('data-duplicate-fieldset-disabled') === null) {\n      input.classList.remove('disabled')\n      input.removeAttribute('readonly')\n      input.value = ''\n      input.dispatchEvent(new Event('change', { bubbles: true }))\n    }\n  }\n\n  cleanSelects() {\n    const selects = this.lineItemTarget.querySelectorAll('select')\n    for (const select of selects) {\n      select.tomselect.clear()\n      select.tomselect.load('')\n      select.nextSibling.classList.add('cursor-pointer')\n      select.nextSibling.querySelector('.ts-control').classList.remove('disabled')\n    }\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['autopay', 'save']\n\n  displayPreexistingBillings(event) {\n    if (event.target.value) {\n      const payerType = document.querySelector(\"input[name='recurring_billing[payer_type]']\").value\n      const payerId = event.target.value\n\n      let params = new URLSearchParams()\n      params.set('payer_id', payerId)\n      params.set('payer_type', payerType)\n\n      const src = `/recurring_billings/new?${params.toString()}`\n      const frame = 'additional_recurring_billings'\n      this.setFrame({ params: { frame, src } })\n    }\n  }\n\n  toggleAutopayModalSubmission(event) {\n    if (event.target.checked) {\n      this.autopayTarget.classList.remove('hidden')\n      this.saveTarget.classList.add('hidden')\n    } else {\n      this.autopayTarget.classList.add('hidden')\n      this.saveTarget.classList.remove('hidden')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\n    'hiddenField',\n    'display',\n    'drop',\n    'innerCanvas',\n    'outerCanvas',\n    'cropCanvas',\n    'fileField',\n    'error',\n    'zoomSliderWrapper',\n    'zoomSlider',\n  ]\n\n  static values = { disablesSubmit: { type: Boolean, default: true } }\n\n  dragging = false\n  _dragStart = { x: 0, y: 0 }\n\n  _cameraOffset = { x: 0, y: 0 }\n  cameraZoom = 1\n  lastZoom = 1\n\n  DRAGPAN_SENSITIVITY = 0.25\n  MAX_ZOOM = 5\n  MIN_ZOOM = 0.25\n  MIN_ZOOM_SCALE_FACTOR = 0.1\n\n  SCROLL_SENSITIVITY = 0.0005\n\n  connect() {\n    this.displayCtx = this.innerCanvasTarget.getContext('2d')\n    this.cropCtx = this.cropCanvasTarget.getContext('2d')\n    this.outsideCtx = this.outerCanvasTarget.getContext('2d')\n\n    this.addDisplayListeners()\n\n    this.drawing = false\n\n    if (this.disablesSubmitValue) {\n      this.submitButton = document.querySelector(`[form=${this.element.closest('form').id}`)\n      this.submitButton.disabled = true\n    }\n  }\n\n  disconnect() {\n    this.removeDisplayListeners()\n  }\n\n  selectFile() {\n    this.hiddenFieldTarget.click()\n  }\n\n  async dropFile(event) {\n    event.preventDefault()\n\n    const file = event.dataTransfer.files[0]\n\n    await this.displayFile(file)\n  }\n\n  async fileSelected() {\n    const file = this.hiddenFieldTarget.files[0]\n\n    await this.displayFile(file)\n  }\n\n  setZoomFromSlider() {\n    const zoom = parseFloat(this.zoomSliderTarget.value)\n\n    this.cameraZoom = zoom\n\n    this.drawFrame()\n  }\n\n  crop() {\n    const matrix = this.displayCtx.getTransform()\n\n    // We have to cut and paste the 300x300 piece of the image from the source image into the cropCanvas\n    // So, since the source image is scaled to a max of 800px, we first need to grab the scale factor,\n    // to go from the visible canvas coordinates to the source image coordinates\n    // Then, we can can directly grab the offset from the top left of the source image from its transform matrix\n    // and use all of that to draw the cropped image into the cropCanvas\n    const sourceX = matrix.e\n    const sourceY = matrix.f\n\n    const sourceWidth = this.cropCanvasTarget.width * this.visibleToSourceScale.x\n    const sourceHeight = this.cropCanvasTarget.height * this.visibleToSourceScale.y\n\n    this.cropCtx.clearRect(0, 0, this.cropCanvasTarget.width, this.cropCanvasTarget.height)\n    this.cropCtx.drawImage(\n      this.innerCanvasTarget,\n      sourceX,\n      sourceY,\n      sourceWidth,\n      sourceHeight,\n      0,\n      0,\n      this.cropCanvasTarget.width,\n      this.cropCanvasTarget.height,\n    )\n\n    this.cropCanvasTarget.toBlob((blob) => {\n      const file = new File([blob], 'avatar.png', { type: 'image/png' })\n      const dataTransfer = new DataTransfer()\n      dataTransfer.items.add(file)\n\n      this.fileFieldTarget.files = dataTransfer.files\n    })\n  }\n\n  reset() {\n    if (this.nextFrame) {\n      cancelAnimationFrame(this.nextFrame)\n      this.drawing = false\n    }\n\n    this.displayCtx.resetTransform()\n    this.outsideCtx.resetTransform()\n    this.cropCtx.resetTransform()\n\n    this.displayCtx.clearRect(0, 0, 10000, 10000)\n    this.outsideCtx.clearRect(0, 0, 10000, 10000)\n    this.cropCtx.clearRect(0, 0, 10000, 10000)\n\n    this.cameraZoom = 1\n    this.lastZoom = 1\n    this._cameraOffset = { x: 0, y: 0 }\n    this._dragStart = { x: 0, y: 0 }\n    this.dragging = false\n\n    this.zoomSliderTarget.value = 1\n\n    this.fileFieldTarget.value = null\n    this.hiddenFieldTarget.value = null\n\n    if (this.disablesSubmitValue) {\n      this.submitButton.disabled = true\n    }\n\n    this.errorTarget.classList.add('hidden')\n\n    this.displayTarget.classList.add('hidden')\n    this.dropTarget.classList.remove('hidden')\n    this.zoomSliderWrapperTarget.classList.remove('flex')\n    this.zoomSliderWrapperTarget.classList.add('hidden')\n  }\n\n  ///\n  /// private\n  ///\n\n  draw() {\n    if (!this.drawing) {\n      cancelAnimationFrame(this.nextFrame)\n      this.nextFrame = null\n      return\n    }\n\n    this.drawFrame()\n    this.nextFrame = requestAnimationFrame(this.draw.bind(this))\n  }\n\n  drawFrame() {\n    // This has to be hard coded to a big number to handle zooming and panning\n    this.displayCtx.clearRect(0, 0, 10000, 10000)\n\n    this.displayCtx.save()\n    this.displayCtx.scale(this.cameraZoom, this.cameraZoom)\n    this.displayCtx.translate(this.cameraOffset.x, this.cameraOffset.y)\n    this.displayCtx.drawImage(this.image, 0, 0)\n    this.displayCtx.restore()\n\n    this.outsideCtx.clearRect(0, 0, 10000, 10000)\n\n    this.outsideCtx.save()\n    this.outsideCtx.globalAlpha = 0.35\n    this.outsideCtx.scale(this.cameraZoom, this.cameraZoom)\n    this.outsideCtx.translate(this.cameraOffset.x, this.cameraOffset.y)\n    this.outsideCtx.drawImage(this.image, 0, 0)\n    this.outsideCtx.restore()\n\n    this.crop()\n  }\n\n  displayFile(file) {\n    try {\n      const fileReader = new FileReader()\n      fileReader.onload = () => {\n        this.image = new Image()\n        this.image.onload = this.start.bind(this)\n        this.image.src = fileReader.result\n      }\n\n      fileReader.readAsDataURL(file)\n\n      this.errorTarget.classList.add('hidden')\n    } catch {\n      this.errorTarget.classList.remove('hidden')\n    }\n  }\n\n  start() {\n    this.innerCanvasTarget.width = this.image.width\n    this.innerCanvasTarget.height = this.image.height\n\n    this.outerCanvasTarget.width = this.image.width\n    this.outerCanvasTarget.height = this.image.height\n\n    this.displayCtx.resetTransform()\n    this.outsideCtx.resetTransform()\n\n    this.displayCtx.drawImage(this.image, 0, 0)\n    this.outsideCtx.drawImage(this.image, 0, 0)\n\n    this.dropTarget.classList.add('hidden')\n    this.displayTarget.classList.remove('hidden')\n    this.zoomSliderWrapperTarget.classList.remove('hidden')\n    this.zoomSliderWrapperTarget.classList.add('flex')\n\n    const boundingRect = this.innerCanvasTarget.getBoundingClientRect()\n    const scale = {\n      x: this.innerCanvasTarget.width / boundingRect.width,\n      y: this.innerCanvasTarget.height / boundingRect.height,\n    }\n\n    this.visibleToSourceScale = scale\n\n    this.dragging = false\n    this._dragStart = { x: 0, y: 0 }\n    this._cameraOffset = {\n      x: -this.image.width / 2 + (this.cropCanvasTarget.width / 2) * this.visibleToSourceScale.x,\n      y: -this.image.height / 2 + (this.cropCanvasTarget.height / 2) * this.visibleToSourceScale.y,\n    }\n    this.cameraZoom = 1\n\n    if (this.disablesSubmitValue) {\n      this.submitButton.disabled = false\n    }\n\n    this.drawFrame()\n  }\n\n  startDrag(event) {\n    this.dragging = true\n\n    this.dragStart = this.getPosition(event)\n\n    this.drawing = true\n    this.draw()\n  }\n\n  stopDrag() {\n    this.dragging = false\n    this.lastZoom = this.cameraZoom\n\n    this.drawing = false\n  }\n\n  drag(event) {\n    if (!this.dragging) return\n\n    this.cameraOffset = this.getPosition(event)\n  }\n\n  zoom(event) {\n    event.preventDefault()\n\n    if (this.dragging) return\n\n    const zoomAmount = event.deltaY * this.SCROLL_SENSITIVITY\n\n    // Clamp the zoom amount to the min and max zoom\n    this.cameraZoom = Math.max(this.MIN_ZOOM, Math.min(this.MAX_ZOOM, this.cameraZoom + zoomAmount))\n    this.zoomSliderTarget.value = this.cameraZoom\n\n    this.drawFrame()\n  }\n\n  pinchZoom(event) {\n    event.preventDefault()\n\n    const touch1 = event.touches[0]\n    const touch2 = event.touches[1]\n\n    // sqrt isnt really needed here and is expensive\n    const distance = (touch1.clientX - touch2.clientX) ** 2 + (touch1.clientY - touch2.clientY) ** 2\n\n    if (!this.initialPinchDistance) {\n      this.initialPinchDistance = distance\n      return\n    }\n\n    if (this.dragging) return\n\n    const zoomFactor = distance / this.initialPinchDistance\n\n    this.cameraZoom = Math.max(this.MIN_ZOOM, Math.min(this.MAX_ZOOM, this.lastZoom * zoomFactor))\n    this.zoomSliderTarget.value = this.cameraZoom\n\n    this.drawFrame()\n  }\n\n  touch(event, singleTouchHandler) {\n    if (!event.touches) return\n\n    event.preventDefault()\n\n    if (event.touches.length === 1) {\n      singleTouchHandler(event)\n      return\n    }\n\n    if (!(event.touches.length === 2 && event.type === 'touchmove')) return\n\n    this.dragging = false\n\n    this.pinchZoom(event)\n  }\n\n  getPosition(event) {\n    const rect = this.innerCanvasTarget.getBoundingClientRect()\n    const inverseMatrix = this.displayCtx.getTransform().inverse()\n    const clientPosition = this.clientPosition(event)\n\n    const position = {\n      x: (clientPosition.x - rect.left) * this.visibleToSourceScale.x,\n      y: (clientPosition.y - rect.top) * this.visibleToSourceScale.y,\n    }\n\n    // All this does is take the position of the mouse and transform it from being in\n    // screen space coordinates to the source image coordinates (with 0,0 at the top left of the image)\n    return {\n      x: inverseMatrix.a * position.x + inverseMatrix.c * position.y + inverseMatrix.e,\n      y: inverseMatrix.b * position.x + inverseMatrix.d * position.y + inverseMatrix.f,\n    }\n  }\n\n  clientPosition(event) {\n    if (event.touches) {\n      return {\n        x: event.touches[0].clientX,\n        y: event.touches[0].clientY,\n      }\n    }\n\n    return {\n      x: event.clientX,\n      y: event.clientY,\n    }\n  }\n\n  addDisplayListeners() {\n    this.mouseDownListener = this.startDrag.bind(this)\n    this.mouseUpListener = this.stopDrag.bind(this)\n    this.mouseMoveListener = this.drag.bind(this)\n    this.mouseLeaveListener = this.stopDrag.bind(this)\n\n    this.zoomListener = this.zoom.bind(this)\n\n    this.touchStartListener = (event) => {\n      this.touch(event, this.startDrag.bind(this))\n    }\n    this.touchEndListener = (event) => {\n      this.initialPinchDistance = null\n      this.touch(event, this.stopDrag.bind(this))\n    }\n    this.touchMoveListener = (event) => {\n      this.touch(event, this.drag.bind(this))\n    }\n\n    this.displayTarget.addEventListener('mousedown', this.mouseDownListener)\n    this.displayTarget.addEventListener('mouseup', this.mouseUpListener)\n    this.displayTarget.addEventListener('mousemove', this.mouseMoveListener)\n    this.displayTarget.addEventListener('mouseleave', this.mouseLeaveListener)\n\n    this.displayTarget.addEventListener('touchstart', this.touchStartListener)\n    this.displayTarget.addEventListener('touchend', this.touchEndListener)\n    this.displayTarget.addEventListener('touchmove', this.touchMoveListener)\n\n    this.displayTarget.addEventListener('wheel', this.zoomListener)\n  }\n\n  removeDisplayListeners() {\n    this.displayTarget.removeEventListener('mousedown', this.mouseDownListener)\n    this.displayTarget.removeEventListener('mouseup', this.mouseUpListener)\n    this.displayTarget.removeEventListener('mousemove', this.mouseMoveListener)\n    this.displayTarget.removeEventListener('mouseleave', this.mouseLeaveListener)\n\n    this.displayTarget.removeEventListener('touchstart', this.touchStartListener)\n    this.displayTarget.removeEventListener('touchend', this.touchEndListener)\n    this.displayTarget.removeEventListener('touchmove', this.touchMoveListener)\n\n    this.displayTarget.removeEventListener('wheel', this.zoomListener)\n  }\n\n  get zoomScaleFactor() {\n    const normalized = (this.cameraZoom - this.MIN_ZOOM) / (this.MAX_ZOOM - this.MIN_ZOOM)\n\n    return Math.max(this.MIN_ZOOM_SCALE_FACTOR, normalized)\n  }\n\n  get dragStart() {\n    return this._dragStart\n  }\n\n  set dragStart({ x, y }) {\n    this._dragStart = {\n      x: (this.DRAGPAN_SENSITIVITY * x) / this.zoomScaleFactor - this.cameraOffset.x,\n      y: (this.DRAGPAN_SENSITIVITY * y) / this.zoomScaleFactor - this.cameraOffset.y,\n    }\n  }\n\n  get cameraOffset() {\n    return this._cameraOffset\n  }\n\n  set cameraOffset({ x, y }) {\n    this._cameraOffset = {\n      x: (this.DRAGPAN_SENSITIVITY * x) / this.zoomScaleFactor - this.dragStart.x,\n      y: (this.DRAGPAN_SENSITIVITY * y) / this.zoomScaleFactor - this.dragStart.y,\n    }\n  }\n\n  get visibleToSourceScale() {\n    return this._scale\n  }\n\n  set visibleToSourceScale(scale) {\n    this._scale = scale\n  }\n}\n", "// Action Cable provides the framework to deal with WebSockets in Rails.\n// You can generate new channels where WebSocket features live using the `bin/rails generate channel` command.\n\nimport { createConsumer } from '@rails/actioncable'\n\nexport default createConsumer()\n", "import ApplicationController from './application_controller'\nimport consumer from '../channels/consumer'\n\nexport default class extends ApplicationController {\n  static targets = [\n    'progress',\n    'count',\n    'processingIcon',\n    'successIcon',\n    'sendingMessage',\n    'sentMessage',\n    'allFailedMessage',\n    'failureIcon',\n    'failedPeople',\n    'failureMessage',\n    'failureCount',\n    'failureSingular',\n    'failurePlural',\n    'confirmationEmail',\n  ]\n\n  static values = { current: Number, max: Number, channel: String }\n\n  completed = false\n  total = 0\n  failures = 0\n  failedPeopleHoldingCell = []\n\n  connect() {\n    this.channel = this.createChannel(this)\n\n    this.alertsFrame.classList.add('hidden')\n\n    document.addEventListener(\n      'turbo:submit-end',\n      () => {\n        this.dispatch('begin-action', { bubbles: true })\n      },\n      { once: true },\n    )\n  }\n\n  failedPeopleTargetConnected() {\n    if (this.failedPeopleHoldingCell.length > 0) {\n      this.failureMessageTarget.classList.remove('hidden')\n    }\n\n    if (this.failedPeopleHoldingCell.length === 1) {\n      this.failureSingularTarget.classList.remove('hidden')\n      this.failurePluralTarget.classList.add('hidden')\n    } else {\n      this.failureSingularTarget.classList.add('hidden')\n      this.failurePluralTarget.classList.remove('hidden')\n    }\n\n    this.failureCountTarget.textContent = this.failedPeopleHoldingCell.length\n\n    for (const html of this.failedPeopleHoldingCell) {\n      this.failedPeopleTarget.insertAdjacentHTML('beforeend', html)\n    }\n\n    this.failedPeopleHoldingCell = []\n  }\n\n  progressTargetConnected() {\n    this.displayProgress()\n\n    if (this.completed) {\n      this.displaySuccess()\n\n      this.displayProgressFailures()\n    }\n  }\n\n  disconnect() {\n    this.channel.unsubscribe()\n\n    this.resetAlerts()\n    this.alertsFrame.classList.remove('hidden')\n  }\n\n  ///\n  /// private\n  ///\n\n  createChannel(self) {\n    return consumer.subscriptions.create(this.channelValue, {\n      received: (data) => {\n        if (data.status === 'success') {\n          self.incrementProgress()\n        } else if (data.status === 'failure') {\n          self.displayFailedPeople(data.entity_html)\n        } else if (data.status === 'complete') {\n          self.completed = true\n          self.total = data.total\n          self.failures = data.failures\n\n          self.displayCompletion()\n          self.displayProgressFailures()\n        }\n      },\n    })\n  }\n\n  incrementProgress() {\n    this.currentValue += 1\n\n    this.displayProgress()\n  }\n\n  displayProgress() {\n    if (!this.hasProgressTarget) return\n\n    if (this.currentValue >= this.maxValue) {\n      this.displaySuccess()\n    }\n\n    this.progressTarget.setAttribute('value', this.currentValue)\n\n    this.countTarget.textContent = this.currentValue\n  }\n\n  displaySuccess() {\n    if (!this.hasProcessingIconTarget) return\n\n    this.sendingMessageTarget.classList.add('hidden')\n    this.sentMessageTarget.classList.remove('hidden')\n\n    this.processingIconTarget.addEventListener(\n      'animationiteration',\n      () => {\n        this.processingIconTarget.classList.add('hidden')\n        this.successIconTarget.classList.remove('hidden')\n\n        this.successIconTarget.classList.add('opacity-100')\n        this.successIconTarget.classList.remove('opacity-0')\n      },\n      { once: true },\n    )\n  }\n\n  displayFailure() {\n    this.sendingMessageTarget.classList.add('hidden')\n    this.allFailedMessageTarget.classList.remove('hidden')\n\n    this.processingIconTarget.addEventListener(\n      'animationiteration',\n      () => {\n        this.processingIconTarget.classList.add('hidden')\n        this.failureIconTarget.classList.remove('hidden')\n\n        this.failureIconTarget.classList.add('opacity-100')\n        this.failureIconTarget.classList.remove('opacity-0')\n      },\n      { once: true },\n    )\n\n    if (this.hasConfirmationEmailTarget) {\n      this.displayConfirmationText()\n    }\n  }\n\n  displayCompletion() {\n    if (this.total === this.failures) {\n      this.displayFailure()\n    } else {\n      this.displaySuccess()\n    }\n  }\n\n  displayFailedPeople(personHtml) {\n    if (this.hasFailedPeopleTarget) {\n      this.failureMessageTarget.classList.remove('hidden')\n      this.failedPeopleTarget.insertAdjacentHTML('beforeend', personHtml)\n\n      this.failureCountTarget.textContent = this.failedPeopleTarget.children.length\n\n      if (this.failedPeopleTarget.children.length === 1) {\n        this.failureSingularTarget.classList.remove('hidden')\n        this.failurePluralTarget.classList.add('hidden')\n      } else {\n        this.failureSingularTarget.classList.add('hidden')\n        this.failurePluralTarget.classList.remove('hidden')\n      }\n    } else {\n      this.failedPeopleHoldingCell.push(personHtml)\n    }\n\n    if (this.hasConfirmationEmailTarget) {\n      this.displayConfirmationText()\n    }\n  }\n\n  displayProgressFailures() {\n    if (!this.hasProgressTarget) return\n    if (this.failures === 0) return\n\n    this.progressTarget.classList.add('progress-with-failures')\n  }\n\n  displayConfirmationText() {\n    this.confirmationEmailTarget.classList.remove('hidden')\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['selector', 'active', 'inactive', 'frozen']\n  static values = ['active', 'inactive', 'frozen']\n\n  connect() {\n    this.showRelevantMessage()\n  }\n\n  showRelevantMessage() {\n    const selected = this.selectorTarget.options[this.selectorTarget.selectedIndex].value\n\n    this.activeTarget.classList.add('hidden')\n    this.inactiveTarget.classList.add('hidden')\n    this.frozenTarget.classList.add('hidden')\n\n    if (selected === 'active') {\n      this.activeTarget.classList.remove('hidden')\n    } else if (selected === 'inactive') {\n      this.inactiveTarget.classList.remove('hidden')\n    } else if (selected === 'frozen') {\n      this.frozenTarget.classList.remove('hidden')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  remove() {\n    this.element.style.display = 'none'\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static outlets = ['filterable-list--action']\n  static targets = ['entityCheckbox', 'banner', 'anchor', 'list', 'pagination']\n\n  static values = { selectedEntities: { type: Array, default: [] }, allEntities: Array, perPage: Number }\n\n  connect() {\n    document.addEventListener(\n      'DOMContentLoaded',\n      () => {\n        window.FontAwesome.dom.watch()\n      },\n      { once: true },\n    )\n\n    this.renderCallback = this.render.bind(this)\n    this.beginActionCallback = this.deselectAllEntities.bind(this)\n    document.addEventListener('turbo:before-frame-render', this.renderCallback)\n    document.addEventListener('quick-action-progress:begin-action', this.beginActionCallback)\n  }\n\n  disconnect() {\n    window.FontAwesome.dom.watch()\n\n    document.removeEventListener('turbo:before-frame-render', this.renderCallback)\n    document.removeEventListener('quick-action-progress:begin-action', this.beginActionCallback)\n  }\n\n  render(event) {\n    if (!document.startViewTransition) return\n\n    event.preventDefault()\n\n    document.startViewTransition(() => {\n      event.detail.resume()\n    })\n  }\n\n  entityCheckboxTargetConnected(element) {\n    const value = parseInt(element.value)\n\n    if (!this.selectedEntitiesValue.includes(value)) return\n\n    element.checked = true\n  }\n\n  enableSelection({ detail: { applyFilters, bannerText } }) {\n    this.enableAllCheckboxes()\n\n    if (bannerText) {\n      this.bannerTarget.innerText = bannerText\n      this.bannerTarget.classList.remove('hidden')\n      setTimeout(() => {\n        this.bannerTarget.classList.add('opacity-100')\n        this.bannerTarget.classList.remove('opacity-0')\n      }, 10)\n    } else {\n      this.bannerTarget.classList.remove('opacity-100')\n      this.bannerTarget.classList.add('opacity-0')\n\n      this.waitForAnimations(this.bannerTarget, () => {\n        this.bannerTarget.classList.add('hidden')\n      })\n    }\n\n    if (applyFilters) {\n      this.applyFilters()\n    }\n  }\n\n  disableSelection({ detail: { applyFilters } }) {\n    this.disableAllCheckboxes()\n    this.selectedEntitiesValue = []\n\n    if (applyFilters) {\n      this.applyFilters()\n    }\n\n    this.bannerTarget.classList.remove('opacity-100')\n    this.bannerTarget.classList.add('opacity-0')\n\n    this.waitForAnimations(this.bannerTarget, () => {\n      this.bannerTarget.classList.add('hidden')\n    })\n  }\n\n  toggleEntitySelected({ params: { id } }) {\n    if (this.selectedEntitiesValue.includes(id)) {\n      this.selectedEntitiesValue = this.selectedEntitiesValue.filter((entityId) => entityId !== id)\n    } else {\n      this.selectedEntitiesValue = [...this.selectedEntitiesValue, id]\n    }\n  }\n\n  selectAllEntitiesOnPage() {\n    this.checkAllCheckboxes()\n\n    this.selectedEntitiesValue = this.entityCheckboxTargets.map((checkbox) => parseInt(checkbox.value))\n  }\n\n  selectAllEntitiesOnAllPages() {\n    this.checkAllCheckboxes()\n\n    this.selectedEntitiesValue = this.allEntitiesValue\n  }\n\n  deselectAllEntities() {\n    this.uncheckAllCheckboxes()\n\n    this.selectedEntitiesValue = []\n  }\n\n  executeQuickAction({ params: { path } }) {\n    // Take the path, add the current query string to it\n    const fullPath = `${path}?${window.location.search}&ids=${this.selectedEntitiesValue.join(',')}`\n\n    this.anchorTarget.href = fullPath\n\n    this.anchorTarget.click()\n  }\n\n  selectedEntitiesValueChanged() {\n    this.dispatch('selected-entities-changed', {\n      prefix: 'list',\n      detail: {\n        amount: this.selectedEntitiesValue.length,\n        total: this.allEntitiesValue.length,\n        perPage: this.perPageValue,\n      },\n    })\n  }\n\n  cancelQuickAction() {\n    this.filterableListActionOutlets.filter((action) => action.checked).forEach((action) => action.cancel())\n  }\n\n  ///\n  /// private\n  ///\n\n  checkAllCheckboxes() {\n    this.entityCheckboxTargets.forEach((checkbox) => {\n      checkbox.checked = true\n    })\n  }\n\n  uncheckAllCheckboxes() {\n    this.entityCheckboxTargets.forEach((checkbox) => {\n      checkbox.checked = false\n    })\n  }\n\n  enableAllCheckboxes() {\n    this.entityCheckboxTargets.forEach((checkbox) => {\n      checkbox.disabled = false\n    })\n  }\n\n  disableAllCheckboxes() {\n    this.entityCheckboxTargets.forEach((checkbox) => {\n      checkbox.disabled = true\n      checkbox.checked = false\n    })\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['toggler', 'direction']\n  static outlets = ['filterable-list']\n  static values = { filters: String, statuses: String }\n\n  apply({ currentTarget, params }) {\n    this.selectSort(currentTarget.nextElementSibling, params)\n  }\n\n  ///\n  /// private\n  ///\n\n  selectSort(sortElement, { direction }) {\n    this.togglerTarget.childNodes[0].textContent = sortElement.innerText\n    this.directionTarget.value = direction\n\n    this.element.closest('form').requestSubmit()\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nimport { useDebounce } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n  static targets = ['spinner']\n  static debounces = ['search']\n\n  initialize() {\n    useDebounce(this, { wait: 600 })\n  }\n\n  connect() {\n    this.submitCallback = this.hideSpinner.bind(this)\n    document.addEventListener('turbo:submit-end', this.submitCallback, true)\n  }\n\n  disconnect() {\n    document.removeEventListener('turbo:submit-end', this.submitCallback, true)\n  }\n\n  search() {\n    this.spinnerTarget.classList.remove('hidden')\n\n    this.form?.requestSubmit()\n  }\n\n  hideSpinner(event) {\n    if (event.target !== this.form) return\n\n    this.spinnerTarget.classList.add('hidden')\n  }\n\n  ///\n  /// private\n  ///\n\n  get form() {\n    return this.element.closest('form')\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static outlets = ['filter-section']\n  static values = { previousFilters: Array, filters: Array, title: String, path: String, bannerText: String }\n  static targets = ['checkbox']\n\n  select() {\n    this.dispatch('selected', {\n      prefix: 'action',\n      bubbles: true,\n      detail: { title: this.titleValue, path: this.pathValue, bannerText: this.bannerTextValue },\n    })\n\n    this.#selectAction(this.filtersValue)\n  }\n\n  cancel() {\n    this.dispatch('deselected', {\n      prefix: 'action',\n      bubbles: true,\n    })\n\n    this.#resetList()\n  }\n\n  get checked() {\n    return this.checkboxTarget.checked\n  }\n\n  ///\n  /// private\n  ///\n\n  #selectAction() {\n    this.#removeFilters()\n    this.#selectFilters(this.filtersValue)\n    this.element.closest('form').requestSubmit()\n    this.filterSectionOutlet.updateCount()\n  }\n\n  #resetList() {\n    this.#removeFilters()\n    this.checkboxTarget.checked = false\n    this.modifyQueryStringInline('quick_action', '')\n    this.element.closest('form').requestSubmit()\n    this.filterSectionOutlet.updateCount()\n  }\n\n  #selectFilters(filters) {\n    filters.forEach((filter) => {\n      const checkbox = document.querySelector(`#${filter}`)\n\n      if (!checkbox) return\n\n      checkbox.checked = true\n      checkbox.dispatchEvent(new CustomEvent('change', { detail: { dispatch: false } }))\n    })\n  }\n\n  #removeFilters() {\n    this.filterSectionOutlet.filterGroupOutlets.forEach((filterGroup) => {\n      filterGroup.checkboxTargets.forEach((checkbox) => {\n        if (!checkbox) return\n\n        checkbox.checked = false\n        checkbox.dispatchEvent(new CustomEvent('change', { detail: { dispatch: false } }))\n      })\n    })\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static values = { enabled: Boolean }\n  static targets = ['selectAllOnPage', 'selectAllOnAllPages', 'deselectAll', 'selectedAmount', 'execute', 'anchor']\n\n  connect() {\n    this.adjustWidth()\n\n    if (this.enabledValue) {\n      this.show()\n    } else {\n      this.hide()\n    }\n\n    const selectedAction = document.querySelector(\n      '[data-controller=\"filterable-list--action\"] input:checked',\n    )?.parentElement\n\n    if (!selectedAction) return\n\n    this.setupActionButton({\n      detail: {\n        title: selectedAction.getAttribute('data-filterable-list--action-title-value'),\n        path: selectedAction.getAttribute('data-filterable-list--action-path-value'),\n      },\n    })\n  }\n\n  show() {\n    this.element.classList.remove('invisible')\n    this.element.classList.add('opacity-100')\n    this.element.classList.remove('opacity-0')\n  }\n\n  hide() {\n    this.element.classList.remove('opacity-100')\n    this.element.classList.add('opacity-0')\n\n    this.waitForAnimations(this.element, () => {\n      this.element.classList.add('invisible')\n    })\n  }\n\n  setupActionButton({ detail: { title, path } }) {\n    this.executeTarget.innerText = title\n    this.executeTarget.setAttribute('data-filterable-list-path-param', path)\n  }\n\n  adjustElements({ detail: { amount, total, perPage } }) {\n    this.adjustSelectionButtons(amount, total, perPage)\n\n    this.selectedAmountTarget.innerText = amount\n  }\n\n  adjustWidth() {\n    this.element.style.width = `${this.element.parentElement.offsetWidth}px`\n  }\n\n  ///\n  /// private\n  ///\n\n  adjustSelectionButtons(amount, total, perPage) {\n    if (amount > 0) {\n      this.deselectAllTarget.disabled = false\n      this.executeTarget.disabled = false\n    } else {\n      this.deselectAllTarget.disabled = true\n      this.executeTarget.disabled = true\n    }\n\n    const hasPages = total > perPage\n\n    if (!hasPages) {\n      this.selectAllOnPageTarget.classList.remove('hidden')\n      this.selectAllOnAllPagesTarget.classList.add('hidden')\n\n      this.selectAllOnPageTarget.disabled = amount === total\n      this.selectAllOnAllPagesTarget.disabled = true\n\n      return\n    }\n\n    const atLeastOnePageSelected = amount >= perPage\n\n    if (amount === total) {\n      if (atLeastOnePageSelected) {\n        this.selectAllOnPageTarget.classList.add('hidden')\n        this.selectAllOnAllPagesTarget.classList.remove('hidden')\n\n        this.selectAllOnPageTarget.disabled = true\n        this.selectAllOnAllPagesTarget.disabled = true\n\n        return\n      }\n\n      this.selectAllOnPageTarget.classList.remove('hidden')\n      this.selectAllOnAllPagesTarget.classList.add('hidden')\n\n      this.selectAllOnPageTarget.disabled = true\n      this.selectAllOnAllPagesTarget.disabled = true\n\n      return\n    }\n\n    if (atLeastOnePageSelected) {\n      this.selectAllOnPageTarget.classList.add('hidden')\n      this.selectAllOnAllPagesTarget.classList.remove('hidden')\n\n      this.selectAllOnPageTarget.disabled = true\n      this.selectAllOnAllPagesTarget.disabled = false\n\n      return\n    }\n\n    this.selectAllOnPageTarget.classList.remove('hidden')\n    this.selectAllOnAllPagesTarget.classList.add('hidden')\n\n    this.selectAllOnPageTarget.disabled = false\n    this.selectAllOnAllPagesTarget.disabled = true\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\n    'form',\n    'selectAll',\n    'checkbox',\n    'dropdown',\n    'programSelect',\n    'program',\n    'rank',\n    'programsDropdown',\n  ]\n\n  static values = {\n    selectText: String,\n    deselectText: String,\n  }\n\n  updateSelectAll() {\n    this.checkboxTargets.forEach((checkbox) => {\n      checkbox.checked = this.selectAllTarget.checked\n    })\n    this.handleCheckboxChange()\n  }\n\n  handleCheckboxChange() {\n    if (this.checkboxTargets.some((checkbox) => checkbox.checked)) {\n      this.dropdownTarget.classList.remove('disabled')\n    } else {\n      this.dropdownTarget.classList.add('disabled')\n    }\n  }\n\n  toggleDropdownSelect() {\n    const programsChecked = this.programTargets.some((target) => target.checked)\n    if (programsChecked) {\n      this.programsDropdownTarget.classList.add('border-kicksite-yellow-600')\n    } else {\n      this.programsDropdownTarget.classList.remove('border-kicksite-yellow-600')\n    }\n  }\n\n  toggleProgramSelect({ target }) {\n    const parent = document.getElementById(target.dataset.program)\n    parent.checked = true\n    this.toggleDropdownSelect()\n  }\n\n  toggleSelectAll({ target }) {\n    if (target.hasAttribute('data-select-all')) {\n      if (target.dataset.attendancesTarget === 'programSelect') {\n        this.selectProgramTargets()\n      } else {\n        this.selectRankTargets(target)\n      }\n    } else if (target.dataset.attendancesTarget === 'programSelect') {\n      this.deselectProgramTargets()\n    } else {\n      this.deselectRankTargets(target)\n    }\n  }\n\n  selectProgramTargets() {\n    this.programTargets.forEach((programTarget) => {\n      programTarget.checked = true\n    })\n    this.programSelectTarget.innerText = this.deselectTextValue\n    this.programSelectTarget.removeAttribute('data-select-all')\n    this.programsDropdownTarget.classList.add('border-kicksite-yellow-600')\n  }\n\n  selectRankTargets(target) {\n    const selectedRanks = target.closest('ul').querySelectorAll('input')\n    selectedRanks.forEach((rankItem) => {\n      rankItem.checked = true\n    })\n    target.innerText = this.deselectTextValue\n    target.removeAttribute('data-select-all')\n    const parent = document.getElementById(target.dataset.programid)\n    parent.checked = true\n    this.toggleDropdownSelect()\n  }\n\n  deselectProgramTargets() {\n    this.programTargets.forEach((programTarget) => {\n      programTarget.checked = false\n    })\n    this.programSelectTarget.innerText = this.selectTextValue\n    this.programSelectTarget.setAttribute('data-select-all', '')\n    this.programsDropdownTarget.classList.remove('border-kicksite-yellow-600')\n  }\n\n  deselectRankTargets(target) {\n    const deselectedRanks = target.closest('ul').querySelectorAll('input')\n    deselectedRanks.forEach((rankTarget) => {\n      rankTarget.checked = false\n    })\n    target.innerText = this.selectTextValue\n    target.setAttribute('data-select-all', '')\n    const parent = document.getElementById(target.dataset.programid)\n    parent.checked = false\n    this.toggleDropdownSelect()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['emailSection', 'smsSection', 'emailInput', 'smsInput']\n\n  handleOptionChange({ target: { value } }) {\n    if (value === 'email') {\n      this.showEmailOption()\n    } else {\n      this.showSMSOption()\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  showEmailOption() {\n    this.emailSectionTarget.classList.remove('hidden')\n    this.emailInputTarget.disabled = false\n    this.smsSectionTarget.classList.add('hidden')\n    this.smsInputTarget.disabled = true\n    this.emailInputTarget.focus()\n  }\n\n  showSMSOption() {\n    this.emailSectionTarget.classList.add('hidden')\n    this.emailInputTarget.disabled = true\n    this.smsSectionTarget.classList.remove('hidden')\n    this.smsInputTarget.disabled = false\n    this.smsInputTarget.focus()\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport const DEFAULT_TIMEOUT = 15000\n\nexport default class extends ApplicationController {\n  static targets = ['pdfViewer']\n  static values = { filePath: String, fileName: String, adobeId: String }\n\n  connect() {\n    // eslint-disable-next-line no-undef\n    if (typeof AdobeDC === 'undefined') {\n      document.addEventListener(\n        'adobe_dc_view_sdk.ready',\n        () => {\n          this.setPDFViewer()\n        },\n        {},\n      )\n    } else {\n      this.setPDFViewer()\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  setPDFViewer() {\n    // eslint-disable-next-line no-undef\n    let adobeDCView = new AdobeDC.View({ clientId: this.adobeIdValue, divId: this.pdfViewerTarget.id })\n    let previewFilePromise = adobeDCView.previewFile(\n      {\n        content: { location: { url: this.filePathValue } },\n        metaData: { fileName: this.fileNameValue },\n      },\n      { embedMode: 'SIZED_CONTAINER' },\n    )\n\n    const waitPromise = (ms) => new Promise((resolve) => setTimeout(resolve, ms))\n    const pdfTimeout = (pdfPromise, ms) =>\n      Promise.race([\n        pdfPromise,\n        waitPromise(ms).then(() => {\n          throw new Error(`PDF Viewer timeout after ${ms} ms`)\n        }),\n      ])\n\n    pdfTimeout(previewFilePromise, DEFAULT_TIMEOUT).catch(() => {\n      this.pdfViewerTarget.innerHTML = this.constructObjectViewer()\n    })\n  }\n\n  constructObjectViewer() {\n    // eslint-disable-next-line max-len\n    return `<object data='${this.filePathValue}' class=\"h-[34rem]\" type: 'application/pdf' width=\"100%\" height:\"100%\"></object>`\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\nimport FroalaEditor from 'froala-editor'\nimport 'froala-editor/js/plugins/align.min.js'\nimport 'froala-editor/js/plugins/colors.min.js'\nimport 'froala-editor/js/plugins/image.min.js'\nimport 'froala-editor/js/plugins/link.min.js'\nimport 'froala-editor/js/plugins/special_characters.min.js'\nimport 'froala-editor/js/plugins/draggable.min.js'\nimport 'froala-editor/js/plugins/font_size.min.js'\nimport 'froala-editor/js/plugins/lists.min.js'\nimport 'froala-editor/js/plugins/paragraph_format.min.js'\nimport 'froala-editor/js/plugins/help.min.js'\nimport 'froala-editor/js/plugins/quick_insert.min.js'\nimport 'froala-editor/js/plugins/video.min.js'\nimport 'froala-editor/js/plugins/table.min.js'\nimport 'froala-editor/js/plugins/url.min.js'\n\nFroalaEditor.ICON_DEFAULT_TEMPLATE = 'font_awesome'\nFroalaEditor.DefineIcon('token', { NAME: 'coins' })\nFroalaEditor.DefineIcon('emoticons', { NAME: 'face-smile' })\nFroalaEditor.DefineIcon('signature', { NAME: 'signature' })\nFroalaEditor.DefineIcon('autoplay', { NAME: 'circle-play' })\nFroalaEditor.RegisterCommand('insertToken', {\n  title: 'Insert Special Token',\n  focus: true,\n  undo: true,\n  refreshAfterCallback: true,\n  showOnMobile: true,\n  options: {\n    last_name: 'Last Name',\n    first_name: 'First Name',\n    street: 'Street',\n    street_2: 'Street 2',\n    city: 'City',\n    state: 'State',\n    zip: 'Zip',\n    country: 'Country',\n    date_of_birth: 'Date of Birth',\n    memberships: 'Memberships',\n  },\n  type: 'dropdown',\n  callback(_, value) {\n    this.html.insert(`((${value}))`)\n  },\n  icon: 'token',\n})\nFroalaEditor.RegisterCommand('insertSignature', {\n  title: 'Insert Signature',\n  focus: true,\n  undo: true,\n  refreshAfterCallback: true,\n  showOnMobile: true,\n  callback() {\n    this.html.insert('((signature_area))<br/>')\n  },\n  icon: 'signature',\n})\nFroalaEditor.RegisterQuickInsertButton('signature', {\n  icon: 'signature',\n  title: 'Insert Signature',\n  callback() {\n    this.html.insert('((signature_area))<br/>')\n  },\n  undo: true,\n})\n\nconst staticOptions = {\n  key: 'bMA6aC5B5D2G2A2B2J2yQNDMIJg1IQNSEa1EUAi1XVFQd1EaG3C2A5A3C4E3D1D4D2E2==',\n  attribution: false,\n  imageUploadURL: '/files.js',\n  imageUploadMethod: 'POST',\n  imageUploadParam: 'file',\n}\n\nconst textButtons = [\n  'token',\n  'bold',\n  'italic',\n  'underline',\n  'strikeThrough',\n  'subscript',\n  'superscript',\n  'fontSize',\n  'textColor',\n  'backgroundColor',\n  'clearFormatting',\n]\n\nconst paragraphButtons = [\n  'alignLeft',\n  'alignCenter',\n  'alignRight',\n  'alignJustify',\n  'formatOL',\n  'formatUL',\n  'paragraphFormat',\n  'outdent',\n  'indent',\n]\n\nconst miscButtons = ['undo', 'redo', 'selectAll', 'help']\n\nexport default class extends ApplicationController {\n  static values = { includeTokens: Boolean }\n\n  initialize() {\n    this.editor = new FroalaEditor(this.element, {\n      ...staticOptions,\n      theme: document.body.classList.contains('dark') ? 'dark' : 'default',\n      imageUploadParams: { authenticity_token: document.querySelector('meta[name=\"csrf-token\"]').content },\n      quickInsertButtons: this.quickInsertButtons,\n      toolbarButtons: {\n        moreText: {\n          buttons: textButtons,\n        },\n        moreParagraph: {\n          buttons: paragraphButtons,\n        },\n        moreRich: {\n          buttons: this.richButtons,\n          buttonsVisible: 3,\n        },\n        moreMisc: {\n          buttons: miscButtons,\n          align: 'right',\n          buttonsVisible: 0,\n        },\n      },\n      events: {\n        initialized: () => {\n          // There is some weirdness with Froala thinking it needs this dummy element on load when it.. doesnt.\n          document.querySelector('.fr-sticky-dummy')?.remove()\n\n          this.element.parentNode.classList.add('opacity-100')\n          this.element.parentNode.classList.remove('opacity-0')\n\n          this.dispatch('ready', { bubbles: true })\n        },\n      },\n    })\n  }\n\n  get wysiwygElement() {\n    return this.element.previousElementSibling\n  }\n\n  ///\n  /// private\n  ///\n\n  get quickInsertButtons() {\n    const buttons = ['image', 'video', 'table', 'ul', 'ol', 'signature', 'hr']\n\n    if (this.includeTokensValue) return buttons\n\n    return buttons.filter((button) => button !== 'signature')\n  }\n\n  get richButtons() {\n    const buttons = ['insertLink', 'insertImage', 'insertVideo', 'insertTable', 'specialCharacters', 'insertHR']\n\n    if (this.includeTokensValue) {\n      return ['insertSignature', 'insertToken', ...buttons]\n    }\n\n    return buttons\n  }\n}\n", "import { get } from '../helpers/fetch_helper'\nimport ApplicationController from './application_controller'\n\nconst PREVIEW_WIDTH_IN_PX = 816 // this is 8.5 inches at 96dpi\nconst THIRTY_MB = 1024 * 1024 * 30\nexport default class extends ApplicationController {\n  static outlets = ['wysiwyg', 'collapse--component']\n  static targets = [\n    'preview',\n    'warning',\n    'signatureTypeCheckbox',\n    'fileDropzone',\n    'fileField',\n    'fileStats',\n    'fileName',\n    'fileSize',\n    'fileError',\n    'pdfPreview',\n    'templateSelect',\n  ]\n\n  static values = {\n    tokens: { type: Object, default: {} },\n    overrideTokens: { type: Object, default: {} },\n    checkboxHtml: String,\n    signatureHtml: String,\n    currentHtml: String,\n  }\n\n  connect() {\n    // Weird hack to get around some odd froala behavior\n    if (this.element.querySelector('.fr-box')) {\n      this.setup()\n    }\n\n    if (!this.hasPdfPreviewTarget) return\n\n    this.pdfPreviewTarget.onload = async () => {\n      if (!this.pdfPreviewTarget.getAttribute('src')) return\n\n      this.previewTarget.classList.add('animate-fade-out-slow')\n\n      await this.waitForAnimations(this.previewTarget, () => {\n        this.previewTarget.innerHTML = ''\n        this.wysiwygOutlet.editor.html.set(null)\n\n        this.previewTarget.classList.remove('animate-fade-out-slow')\n        this.previewTarget.classList.add('hidden')\n      })\n    }\n  }\n\n  setup() {\n    this.wysiwygOutlet.editor.events.on('input', () => this.loadContent())\n    this.wysiwygOutlet.editor.events.on('contentChanged', () => this.loadContent())\n\n    if (this.shouldShowWarning) {\n      this.warningTarget.classList.remove('hidden')\n    }\n\n    this.loadContent()\n  }\n\n  updateContent({ target }) {\n    const selectedOption = target.selectedOptions[0]\n\n    const signatureType = selectedOption.getAttribute('data-signature-type')\n\n    this.selectSignatureType(signatureType)\n\n    let content = ''\n\n    if (selectedOption.hasAttribute('data-content')) {\n      content = selectedOption.getAttribute('data-content')\n    }\n\n    this.wysiwygOutlet.editor.html.set(content)\n    this.wysiwygOutlet.editor.undo.saveStep\n\n    this.loadContent()\n  }\n\n  overrideToken({ target, params: { token } }) {\n    const value = target.value\n\n    if (value.length > 0) {\n      this.overrideTokensValue[token] = value\n    } else {\n      delete this.overrideTokensValue[token]\n    }\n\n    this.loadContent()\n  }\n\n  setCheckboxSignature() {\n    this.currentHtmlValue = this.checkboxHtmlValue\n\n    if (!this.content.includes('((signature_area))')) return\n\n    this.loadContent()\n  }\n\n  setSignature() {\n    this.currentHtmlValue = this.signatureHtmlValue\n\n    if (!this.content.includes('((signature_area))')) return\n\n    this.loadContent()\n  }\n\n  setNoSignature() {\n    this.currentHtmlValue = ''\n\n    if (!this.content.includes('((signature_area))')) return\n\n    this.loadContent()\n  }\n\n  selectPerson({ target }) {\n    const id = target.value\n    const type = document.querySelector('input[name=\"agreement[agreeable_type]\"]').value\n    let src = '/agreements/tokens'\n    if (!id || !type) {\n      this.tokensValue = {}\n    }\n\n    src = `${src}?agreeable_id=${id}&agreeable_type=${type}`\n\n    get(src)\n      .then((response) => response.json())\n      .then((json) => {\n        this.tokensValue = json\n      })\n  }\n\n  openFileField() {\n    this.fileFieldTarget.click()\n  }\n\n  uploadPdf({ dataTransfer }) {\n    this.fileFieldTarget.files = dataTransfer.files\n\n    this.previewPdf()\n  }\n\n  previewPdf() {\n    const file = this.fileFieldTarget.files[0]\n\n    this.fileDropzoneTarget.classList.add('max-w-lg')\n    this.fileDropzoneTarget.classList.remove('max-w-7xl')\n\n    this.showFileStats(file)\n\n    if (file.size > THIRTY_MB || file.type !== 'application/pdf') {\n      this.pdfPreviewTarget.src = ''\n      this.fileErrorTarget.classList.remove('hidden')\n      return\n    }\n\n    this.fileErrorTarget.classList.add('hidden')\n\n    const fileReader = new FileReader()\n    fileReader.onload = async (event) => {\n      this.pdfPreviewTarget.setAttribute('src', `${event.target.result}#toolbar=0&navpanes=0&scrollbar=0`)\n\n      await this.revealPdfPreview()\n    }\n    fileReader.readAsDataURL(file)\n  }\n\n  async removePdf() {\n    this.fileFieldTarget.value = null\n\n    this.fileStatsTarget.classList.add('hidden')\n    this.fileDropzoneTarget.classList.remove('max-w-lg')\n    this.fileDropzoneTarget.classList.add('max-w-7xl')\n\n    this.pdfPreviewTarget.classList.add('hidden')\n    this.pdfPreviewTarget.setAttribute('src', '')\n\n    this.previewTarget.classList.add('animate-fade-in-slow')\n    this.previewTarget.classList.remove('hidden')\n\n    this.selectSignatureType('2')\n    this.templateSelectTarget.tomselect.enable()\n\n    this.signatureTypeCheckboxTargets.forEach((checkbox) => {\n      checkbox.disabled = false\n    })\n\n    this.collapseComponentOutlet.element.classList.remove('opacity-50', 'pointer-events-none')\n\n    this.fileErrorTarget.classList.add('hidden')\n\n    this.wysiwygOutlet.editor.edit.on()\n\n    this.fileNameTarget.innerText = 'N/A'\n    this.fileSizeTarget.innerText = 'N/A'\n\n    await this.waitForAnimations(this.previewTarget, () => {\n      this.previewTarget.classList.remove('animate-fade-in-slow')\n    })\n  }\n\n  ///\n  /// private\n  ///\n  loadContent() {\n    if (this.previewHidden) return\n\n    this.previewTarget.innerHTML = this.tokenizedContent\n  }\n\n  selectSignatureType(signatureType) {\n    if (signatureType === '1') {\n      this.currentHtmlValue = this.checkboxHtmlValue\n    } else if (signatureType === '2') {\n      this.currentHtmlValue = this.signatureHtmlValue\n    } else {\n      signatureType = 'on'\n      this.currentHtmlValue = ''\n    }\n\n    this.signatureTypeCheckboxTargets.forEach((checkbox) => {\n      checkbox.checked = false\n\n      if (checkbox.value === signatureType) {\n        checkbox.checked = true\n      }\n    })\n\n    if (this.signatureTypeCheckboxTargets.every((checkbox) => !checkbox.checked)) {\n      this.currentHtmlValue = this.signatureHtmlValue\n\n      this.signatureTypeCheckboxTargets.find((checkbox) => checkbox.value === '2').checked = true\n    }\n  }\n\n  fileSize(file) {\n    const fileSizeInKB = file.size / 1024\n\n    if (fileSizeInKB < 1024) {\n      return `${fileSizeInKB.toFixed(2)} KB`\n    }\n\n    return `${(fileSizeInKB / 1024).toFixed(2)} MB`\n  }\n\n  showFileStats(file) {\n    this.fileDropzoneTarget.addEventListener(\n      'transitionend',\n      async () => {\n        this.fileStatsTarget.classList.add('animate-fade-in-slow')\n        this.fileStatsTarget.classList.remove('hidden')\n\n        await this.waitForAnimations(this.fileStatsTarget, () => {\n          this.fileStatsTarget.classList.remove('animate-fade-in-slow')\n        })\n      },\n      { once: true },\n    )\n\n    this.fileNameTarget.innerText = file.name\n    this.fileSizeTarget.innerText = this.fileSize(file)\n  }\n\n  async revealPdfPreview() {\n    this.pdfPreviewTarget.classList.add('animate-fade-in-slow')\n    this.pdfPreviewTarget.classList.remove('hidden')\n\n    this.selectSignatureType(null)\n    this.templateSelectTarget.tomselect.disable()\n\n    this.signatureTypeCheckboxTargets.forEach((checkbox) => {\n      checkbox.disabled = true\n    })\n\n    this.collapseComponentOutlet.close()\n    this.collapseComponentOutlet.element.classList.add('opacity-50', 'pointer-events-none')\n\n    this.wysiwygOutlet.editor.edit.off()\n\n    await this.waitForAnimations(this.pdfPreviewTarget, () => {\n      this.pdfPreviewTarget.classList.remove('animate-fade-in-slow')\n    })\n  }\n\n  get tokenizedContent() {\n    let content = this.wysiwygOutlet.editor.html.get()\n\n    if (this.currentHtmlValue.length > 0) {\n      content = content.replace(/\\(\\(signature_area\\)\\)/g, this.currentHtmlValue)\n    }\n\n    if (!this.hasTokens) return content\n\n    const keys = Object.keys(this.tokensValue).concat(Object.keys(this.overrideTokensValue))\n\n    keys.forEach((token) => {\n      const tokenRegex = new RegExp(`\\\\(\\\\(${token}\\\\)\\\\)`, 'g')\n      const tokenValue = this.overrideTokensValue[token] || this.tokensValue[token]\n\n      if (!tokenValue) {\n        content = content.replace(tokenRegex, '')\n        return\n      }\n\n      content = content.replace(tokenRegex, tokenValue)\n    })\n\n    return content\n  }\n\n  get content() {\n    return this.wysiwygOutlet.editor.html.get()\n  }\n\n  get hasTokens() {\n    return Object.keys(this.tokensValue).length > 0\n  }\n\n  get shouldShowWarning() {\n    return this.wysiwygOutlet.wysiwygElement.clientWidth !== PREVIEW_WIDTH_IN_PX && this.previewHidden\n  }\n\n  get previewHidden() {\n    const style = window.getComputedStyle(this.previewTarget)\n\n    if (!this.hasPdfPreviewTarget) return style.display === 'none'\n\n    const pdfStyle = window.getComputedStyle(this.pdfPreviewTarget)\n\n    return style.display === 'none' && pdfStyle.display === 'none'\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['submit', 'endDateInput', 'attendanceInput']\n\n  connect() {\n    this.validate()\n  }\n\n  validate() {\n    const endDate = this.endDateInputTarget.value\n    const attendance = this.attendanceInputTarget.value\n    this.submitTarget.disabled = endDate === '' && (attendance === '' || attendance === '0')\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = [\n    'ranks',\n    'programs',\n    'billingContainer',\n    'billingToggle',\n    'billingAmount',\n    'rankLabel',\n    'programLabel',\n  ]\n\n  filterRanks({ target }) {\n    const selectedOption = target.selectedOptions[0]\n    if (selectedOption.value === 'No Program') return\n    if (selectedOption.hasAttribute('data-ranks')) {\n      this.ranksTarget.disabled = false\n      this.rankSelect.enable()\n    } else {\n      this.ranksTarget.disabled = true\n      this.rankSelect.disable()\n    }\n\n    const ranks = JSON.parse(selectedOption.getAttribute('data-ranks'))\n\n    // The distinction between `option` and `item` here isn't super clear\n    // but from the docs looks like option is the select options and item\n    // is the SELECTED thing, so we have to do both here\n    this.rankSelect.clear()\n    this.rankSelect.clearOptions()\n\n    if (!ranks) {\n      this.rankSelect.addOption({ value: '', text: 'N/A' })\n      this.rankSelect.addItem('')\n      return\n    }\n\n    ranks.forEach((rank) => {\n      this.rankSelect.addOption({ value: rank?.id, text: rank?.name || 'N/A' })\n    })\n\n    this.rankSelect.addItem(ranks[0].id)\n  }\n\n  selectMembership({ target }) {\n    const selectedOption = target.selectedOptions[0]\n    let params = new URLSearchParams()\n    params.set('membership_template_id', selectedOption.value)\n    const src = `/students/new?${params.toString()}`\n    const frame = 'signup_section'\n    this.setFrame({ params: { frame, src } })\n  }\n\n  toggleBilling({ target }) {\n    if (target.checked) {\n      this.billingContainerTarget.classList.remove('hidden')\n      this.billingAmountTarget.disabled = false\n    } else {\n      this.billingContainerTarget.classList.add('hidden')\n      this.billingAmountTarget.disabled = true\n    }\n  }\n\n  durationKindChange({ target }) {\n    if (target.value === 'attendance-based') {\n      this.programSelect.removeOption('-1')\n      const firstValue = Object.keys(this.programSelect.options)[0]\n      this.programSelect.setValue(firstValue, false)\n      this.programLabelTarget.classList.add('required')\n      this.rankLabelTarget.classList.add('required')\n    } else if (!this.programSelect.getOption('-1')) {\n      this.programSelect.addOption({ value: '-1', text: 'No Program' })\n      this.programSelect.setValue('-1', false)\n      this.programSelect.addItem('-1')\n      this.programSelect.refreshOptions(false)\n      this.programLabelTarget.classList.remove('required')\n      this.rankLabelTarget.classList.remove('required')\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  get programSelect() {\n    return this.programsTarget.tomselect\n  }\n\n  get rankSelect() {\n    return this.ranksTarget.tomselect\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nimport { useDebounce } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n  static targets = ['selectedBadge']\n  static outlets = ['filter-group']\n  static debounces = ['submitForm']\n  static values = { debounce: { type: Boolean, default: true }, badgeId: String }\n\n  connect() {\n    if (this.debounceValue) {\n      useDebounce(this, { wait: 200 })\n    }\n    this.modifyFormDataCallback = this.modifyFormData.bind(this)\n\n    this.#formTarget.addEventListener('formdata', this.modifyFormDataCallback)\n\n    this.updateCount()\n  }\n\n  disconnect() {\n    if (!this.#formTarget) return\n\n    this.#formTarget.removeEventListener('formdata', this.modifyFormDataCallback)\n  }\n\n  reset() {\n    this.filterGroupOutlets.forEach((filterGroup) => {\n      filterGroup.selectAll(false)\n\n      if (filterGroup.hasAllTarget) return\n\n      this.updateCount()\n    })\n\n    this.#formTarget.requestSubmit()\n  }\n\n  modifyFormData({ formData }) {\n    const temp = {}\n    const keysToDelete = []\n\n    for (const [key, value] of formData) {\n      if (value.length === 0) {\n        keysToDelete.push(key)\n\n        continue\n      }\n\n      temp[key] ||= []\n      temp[key].push(value)\n    }\n\n    keysToDelete.forEach((key) => {\n      formData.delete(key)\n    })\n\n    for (const [key, value] of Object.entries(temp)) {\n      formData.set(key, value.join(','))\n    }\n  }\n\n  submitForm() {\n    this.#formTarget.requestSubmit()\n  }\n\n  updateCount() {\n    if (!this.#selectedBadge) return\n\n    const amountSelected = this.element.querySelectorAll('input[name][type=\"checkbox\"]:checked').length\n\n    this.#selectedBadge.hidden = amountSelected <= 0\n\n    if (amountSelected > 0) {\n      this.#selectedBadge.innerText = amountSelected\n    }\n  }\n\n  get #selectedBadge() {\n    if (this.hasSelectedBadgeTarget) return this.selectedBadgeTarget\n    if (!this.badgeIdValue) return null\n\n    return document.querySelector(this.badgeIdValue)\n  }\n\n  get #formTarget() {\n    return this.element.closest('form')\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static outlets = ['filter-section-filter']\n  static targets = ['all', 'checkbox', 'childAll', 'childCheckbox']\n\n  connect() {\n    this.toggleAllCheckbox(false)\n  }\n\n  selectAll(dispatch = true, destroyChildren = true) {\n    this.checkboxTargets.forEach((checkbox) => {\n      checkbox.checked = false\n    })\n\n    if (this.hasAllTarget) {\n      this.allTarget.checked = true\n    }\n\n    if (dispatch) this.dispatch('toggle')\n\n    // This fixes a stupid timing issue on connect causing a bunch of warnings.\n    // The warnings realistically don't matter, but they're annoying.\n    if (!destroyChildren) return\n\n    this.filterSectionFilterOutlets.forEach((filterSectionFilter) => {\n      filterSectionFilter.destroyChildren(false)\n    })\n  }\n\n  selectAllChildren({ params: { childName } }, dispatch = true) {\n    const childCheckboxes = this.childCheckboxTargets.filter((checkbox) => checkbox.name === childName)\n\n    childCheckboxes.forEach((checkbox) => {\n      checkbox.checked = false\n    })\n\n    const childAll = this.childAllTargets.find((allTarget) => allTarget.parentElement.id === `${childName}_all`)\n\n    if (childAll) {\n      childAll.checked = true\n    }\n\n    if (dispatch) this.dispatch('toggle')\n\n    this.toggleAllCheckbox()\n  }\n\n  toggleOne({ detail }) {\n    this.toggleAllCheckbox()\n\n    const dispatch = detail?.dispatch ?? true\n    if (dispatch) this.dispatch('toggle')\n  }\n\n  toggleOneChild({ currentTarget }) {\n    const childName = currentTarget.parentElement.dataset.filterSectionFilterChildNameValue\n    this.toggleChildAllCheckbox(childName)\n\n    this.dispatch('toggle')\n  }\n\n  ///\n  /// private\n  ///\n\n  toggleAllCheckbox(destroyChildren = true) {\n    if (!this.hasAllTarget) return\n\n    const allChecked = this.checkboxTargets.every((checkbox) => checkbox.checked)\n    const allUnchecked = this.checkboxTargets.every((checkbox) => !checkbox.checked)\n    const allChildrenChecked = this.childCheckboxTargets.every((checkbox) => checkbox.checked)\n    const allChildrenUnchecked = this.childCheckboxTargets.every((checkbox) => !checkbox.checked)\n\n    if (allChildrenChecked || allChildrenUnchecked) {\n      this.allTarget.checked = allChecked || allUnchecked\n\n      if (allChecked || allUnchecked) this.selectAll(false, destroyChildren)\n    }\n  }\n\n  toggleChildAllCheckbox(childName) {\n    if (!this.hasChildAllTarget) return\n\n    const allChecked = this.childCheckboxTargets\n      .filter((checkbox) => checkbox.name === childName)\n      .every((checkbox) => checkbox.checked)\n    const allUnchecked = this.childCheckboxTargets\n      .filter((checkbox) => checkbox.name === childName)\n      .every((checkbox) => !checkbox.checked)\n\n    const childAll = this.childAllTargets.find((allTarget) => allTarget.parentElement.id === `${childName}_all`)\n    childAll.checked = allChecked || allUnchecked\n\n    if (allChecked || allUnchecked) {\n      this.selectAllChildren({ params: { childName } }, false)\n    } else {\n      this.toggleAllCheckbox()\n    }\n  }\n}\n", "import ApplicationController from '../../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['checkbox']\n  static values = { disables: String, children: Array, childName: String, allText: String }\n\n  initialize() {\n    if (!this.hasChildrenValue) return\n\n    this.buildOrDestroyChildren()\n  }\n\n  toggleCheckbox() {\n    if (this.hasChildrenValue) {\n      this.buildOrDestroyChildren()\n    }\n\n    if (!this.hasDisablesValue) return\n\n    this.disableOthers()\n  }\n\n  ///\n  /// private\n  ///\n  buildOrDestroyChildren() {\n    if (this.checkboxTarget.checked) {\n      this.buildChildren()\n    } else {\n      this.destroyChildren()\n    }\n  }\n\n  buildChildren() {\n    this.childrenValue.reverse().forEach((child) => {\n      const newElement = this.element.cloneNode(true)\n\n      newElement.id = `${this.childNameValue}_${child.id}`\n      newElement.lastElementChild.innerText = child.name\n      newElement.lastElementChild.classList.add('pl-4', 'border-l-2', 'border-primary')\n\n      newElement.removeAttribute('data-controller')\n      newElement.removeAttribute('data-filter-section-filter-children-value')\n\n      const newCheckbox = newElement.firstElementChild\n\n      newCheckbox.id = `${this.childNameValue}_${child.id}`\n      newCheckbox.name = this.childNameValue\n      newCheckbox.value = child.id\n      newCheckbox.checked = this.currentURL.searchParams.get(this.childNameValue)?.includes(child.id)\n      newCheckbox.setAttribute('data-filter-group-target', 'childCheckbox')\n      newCheckbox.setAttribute('data-action', 'change->filter-group#toggleOneChild')\n\n      this.element.insertAdjacentElement('afterend', newElement)\n    })\n\n    const allElement = this.element.cloneNode(true)\n    allElement.lastElementChild.innerText = this.allTextValue\n    allElement.lastElementChild.classList.add('pl-4', 'border-l-2', 'border-primary')\n\n    allElement.id = `${this.childNameValue}_all`\n    allElement.removeAttribute('data-controller')\n    allElement.removeAttribute('data-filter-section-filter-children-value')\n\n    const allCheckbox = allElement.firstElementChild\n\n    allCheckbox.checked = !this.currentURL.searchParams.has(this.childNameValue)\n    allCheckbox.setAttribute('data-filter-group-target', 'childAll')\n    allCheckbox.setAttribute('data-action', 'change->filter-group#selectAllChildren')\n    allCheckbox.setAttribute('data-filter-group-child-name-param', this.childNameValue)\n    allCheckbox.removeAttribute('name')\n    allCheckbox.removeAttribute('value')\n\n    this.element.insertAdjacentElement('afterend', allElement)\n\n    this.dispatch('built')\n  }\n\n  destroyChildren() {\n    document.querySelector(`#${this.childNameValue}_all`)?.remove()\n\n    this.childrenValue.forEach((child) => {\n      const id = `${this.childNameValue}_${child.id}`\n      document.querySelector(`#${id}`)?.remove()\n    })\n  }\n\n  disableOthers() {\n    const filterNamesToDisable = this.disablesValue.split(',')\n    const filterGroupElement = this.element.closest('.filter-group')\n    filterNamesToDisable.forEach((filterName) => {\n      const filterToDisable = filterGroupElement.querySelector(`#${filterName}`)\n\n      if (!filterToDisable) return\n\n      filterToDisable.checked = false\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['form', 'selectAll', 'checkbox', 'dropdown']\n\n  dropdownTargetConnected() {\n    this.handleCheckboxChange()\n  }\n\n  submit(event) {\n    this.formTarget.action = event.params.url\n    this.formTarget.requestSubmit()\n  }\n\n  updateSelectAll() {\n    this.checkboxTargets.forEach((checkbox) => {\n      checkbox.checked = this.selectAllTarget.checked\n    })\n    this.handleCheckboxChange()\n  }\n\n  handleCheckboxChange() {\n    if (this.checkboxTargets.some((checkbox) => checkbox.checked)) {\n      this.dropdownTarget.classList.remove('disabled')\n    } else {\n      this.dropdownTarget.classList.add('disabled')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = { prevEndDate: String, prevKind: String }\n  static targets = [\n    'disabler',\n    'input',\n    'submit',\n    'dateField',\n    'attendanceField',\n    'dateRadio',\n    'attendanceRadio',\n    'unlimitedRadio',\n    'programLabel',\n    'prevExpiration',\n    'prevUnlimited',\n  ]\n\n  checkboxBehavior(event) {\n    if (event.target.id === 'date') {\n      this.enableDateField()\n      this.dateRadioTarget.checked = true\n    } else if (event.target.id === 'attendance') {\n      this.enableAttendanceField()\n      this.programLabelTarget.classList.add('required')\n      this.attendanceRadioTarget.checked = true\n    } else {\n      if (this.hasDateFieldTarget) {\n        this.disableDateField()\n      } else {\n        this.disableAttendanceField()\n        this.programLabelTarget.classList.remove('required')\n      }\n      this.unlimitedRadioTarget.checked = true\n    }\n  }\n\n  checkInactivate() {\n    this.inputTargets.forEach((inputTarget) => {\n      inputTarget.checked = !this.disablerTarget.checked\n      inputTarget.disabled = !this.disablerTarget.checked\n    })\n  }\n\n  enableDateField() {\n    this.dateFieldTarget.nextSibling.classList.add('!border-kicksite-yellow-600')\n    this.dateFieldTarget.disabled = false\n    this.dateFieldTarget.nextSibling.disabled = false\n  }\n\n  disableDateField() {\n    this.dateFieldTarget.nextSibling.classList.remove('!border-kicksite-yellow-600')\n    this.dateFieldTarget.nextSibling.disabled = true\n  }\n\n  enableAttendanceField() {\n    this.attendanceFieldTarget.classList.add('!border-kicksite-yellow-600')\n    this.attendanceFieldTarget.disabled = false\n  }\n\n  disableAttendanceField() {\n    this.attendanceFieldTarget.classList.remove('!border-kicksite-yellow-600')\n    this.attendanceFieldTarget.disabled = true\n  }\n\n  checkPreviousValue() {\n    if (this.unlimitedRadioTarget.checked) {\n      if (this.prevKindValue === 'unlimited') {\n        this.prevUnlimitedTarget.classList.add('hidden')\n        this.prevExpirationTarget.classList.add('hidden')\n      } else {\n        this.prevUnlimitedTarget.classList.remove('hidden')\n        this.prevExpirationTarget.classList.add('hidden')\n      }\n    } else if (this.dateRadioTarget.checked) {\n      if (this.prevKindValue === 'unlimited' || this.prevEndDateValue !== this.dateFieldTarget.value) {\n        this.prevExpirationTarget.classList.remove('hidden')\n        this.prevUnlimitedTarget.classList.add('hidden')\n      } else if (this.prevEndDateValue === this.dateFieldTarget.value) {\n        this.prevExpirationTarget.classList.add('hidden')\n        this.prevUnlimitedTarget.classList.add('hidden')\n      }\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['backdateNotice']\n  static outlets = ['flatpickr']\n\n  dateChange() {\n    const dateValue = this.flatpickrOutlet.fp.selectedDates[0]\n    dateValue.setHours(0, 0, 0, 0)\n    const currentDate = new Date()\n    currentDate.setHours(0, 0, 0, 0)\n\n    if (new Date(dateValue) < currentDate) {\n      this.backdateNoticeTarget.classList.remove('hidden')\n    } else {\n      this.backdateNoticeTarget.classList.add('hidden')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['rbToggle', 'submit', 'rbSection', 'rbResumeDate', 'membershipResumeDate']\n\n  toggleRecurringBilling() {\n    if (this.rbToggleTarget.checked) {\n      this.rbSectionTarget.classList.remove('hidden')\n    } else {\n      this.rbSectionTarget.classList.add('hidden')\n    }\n    this.checkSubmit()\n  }\n\n  checkSubmit() {\n    if (this.membershipResumeDateTarget.value === '') {\n      this.disableSubmit()\n      return\n    }\n\n    if (this.hasRbResumeDateTarget) {\n      if (this.rbResumeDateTarget.value === '') {\n        this.disableSubmit()\n      } else {\n        this.enableSubmit()\n      }\n    } else {\n      this.enableSubmit()\n    }\n  }\n\n  enableSubmit() {\n    this.submitTarget.disabled = false\n  }\n\n  disableSubmit() {\n    this.submitTarget.disabled = true\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  SCROLL_OFFSET = 200\n\n  connect() {\n    this.scrollToError()\n  }\n\n  scrollToError() {\n    if (!this.input) return\n\n    window.scrollTo({ top: this.scrollTop, behavior: 'smooth' })\n\n    this.input.focus()\n  }\n\n  ///\n  /// private\n  ///\n\n  get scrollTop() {\n    return this.input.getBoundingClientRect().top + window.scrollY - this.SCROLL_OFFSET\n  }\n\n  get input() {\n    let input = this.element.querySelector('.input-danger')\n    input ||= this.element.querySelector('.\\\\!input-danger')\n\n    return input\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nexport default class extends ApplicationController {\n  static outlets = ['payment-processing']\n  static targets = ['tab', 'cc', 'magstripe']\n\n  showCc({ target }) {\n    this.resetTabs()\n\n    target.classList.add('active')\n\n    this.ccTarget.classList.remove('hidden')\n    this.magstripeTarget.classList.add('hidden')\n\n    this.disableMagstripeFields()\n    this.enableCcFields()\n\n    if (this.hasPaymentProcessingOutlet) {\n      this.paymentProcessingOutlet.bindSubmit()\n    }\n  }\n\n  showMagstripe({ target }) {\n    this.resetTabs()\n\n    target.classList.add('active')\n\n    this.ccTarget.classList.add('hidden')\n    this.magstripeTarget.classList.remove('hidden')\n\n    this.disableCcFields()\n    this.enableMagstripeFields()\n\n    if (this.hasPaymentProcessingOutlet) {\n      this.paymentProcessingOutlet.unbindSubmit()\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  resetTabs() {\n    this.tabTargets.forEach((tab) => tab.classList.remove('active'))\n  }\n\n  disableCcFields() {\n    this.disableFieldsFor(this.ccTarget)\n  }\n\n  enableCcFields() {\n    this.enableFieldsFor(this.ccTarget)\n  }\n\n  disableMagstripeFields() {\n    this.disableFieldsFor(this.magstripeTarget)\n  }\n\n  enableMagstripeFields() {\n    this.enableFieldsFor(this.magstripeTarget)\n  }\n\n  disableFieldsFor(element) {\n    element.querySelectorAll('input').forEach((input) => {\n      input.disabled = true\n    })\n  }\n\n  enableFieldsFor(element) {\n    element.querySelectorAll('input').forEach((input) => {\n      input.disabled = false\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['total', 'adjustment', 'newTotal']\n  static values = { code: String, exponent: Number }\n\n  subtract() {\n    const total = this.parseTotalTarget\n    const adjustment = parseFloat(this.adjustmentTarget.value)\n    this.newTotalTarget.innerText = this.constructDisplayValue(total - adjustment)\n  }\n\n  resetFields({ target: { defaultValue } }) {\n    if (defaultValue === 'write_off') {\n      this.adjustmentTarget.value = this.parseTotalTarget\n    } else {\n      this.adjustmentTarget.value = 0\n    }\n    this.subtract()\n  }\n\n  constructDisplayValue(newTotal) {\n    const options = {\n      minimumFractionDigits: this.exponentValue,\n      maximumFractionDigits: this.exponentValue,\n      style: 'currency',\n      currency: this.codeValue,\n    }\n    const result = new Intl.NumberFormat(this.codeValue, options).format(newTotal * this.subunitMultiplier)\n\n    return result\n  }\n\n  get subunitMultiplier() {\n    return 10 ** -this.exponentValue\n  }\n\n  get parseTotalTarget() {\n    return parseFloat(this.totalTarget.innerText.replace(/[^0-9|-]/g, ''))\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static values = { invoiceCount: Number, total: Number }\n  static targets = ['input', 'more', 'total', 'complete']\n\n  updateTotals() {\n    if (!this.hasCompleteTarget) return\n\n    if (this.inputTarget.disabled) {\n      this.completeTarget.classList.add('hidden')\n      return\n    }\n\n    let value = Number(this.inputTarget.value)\n\n    if (value < this.invoiceCountValue) {\n      value = this.invoiceCountValue\n    }\n\n    this.totalValue = value\n\n    if (!this.inputTarget.value) {\n      this.completeTarget.classList.add('hidden')\n      return\n    }\n\n    if (this.moreValue > 0) {\n      this.completeTarget.classList.add('hidden')\n    } else {\n      this.completeTarget.classList.remove('hidden')\n    }\n  }\n\n  totalValueChanged() {\n    if (!this.hasTotalTarget) return\n    if (!this.hasMoreTarget) return\n\n    this.totalTarget.textContent = this.totalValue\n    this.moreTarget.textContent = this.moreValue\n  }\n\n  get moreValue() {\n    const value = this.totalValue - this.invoiceCountValue\n\n    if (value < 0) return 0\n\n    return value\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static values = { attendanceCount: Number, total: Number }\n  static targets = ['input', 'more', 'total', 'expired']\n\n  updateTotals() {\n    if (this.inputTarget.disabled) {\n      this.expiredTarget.classList.add('hidden')\n      return\n    }\n\n    let value = Number(this.inputTarget.value)\n\n    if (value < this.attendanceCountValue) {\n      value = this.attendanceCountValue\n    }\n\n    this.totalValue = value\n\n    if (!this.inputTarget.value) {\n      this.expiredTarget.classList.add('hidden')\n      this.moreTarget.parentElement.classList.remove('text-danger-600')\n      return\n    }\n\n    if (this.moreValue > 0) {\n      this.expiredTarget.classList.add('hidden')\n      this.moreTarget.parentElement.classList.remove('text-danger-600')\n    } else {\n      this.expiredTarget.classList.remove('hidden')\n      this.moreTarget.parentElement.classList.add('text-danger-600')\n    }\n  }\n\n  totalValueChanged() {\n    if (!this.hasTotalTarget) return\n    if (!this.hasMoreTarget) return\n\n    this.totalTarget.textContent = this.totalValue\n    this.moreTarget.textContent = this.moreValue\n  }\n\n  get moreValue() {\n    const value = this.totalValue - this.attendanceCountValue\n    if (value < 0) return 0\n\n    return value\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  static targets = ['sendEmail', 'agreementDropdown', 'emailInput']\n  static outlets = ['tooltip']\n  static values = { needsAgreement: String, needsEmail: String }\n\n  toggleEmailButton() {\n    if (!this.hasAgreementSelected) {\n      this.tooltipOutlet.swapText({ params: { text: this.needsAgreementValue } })\n    } else if (!this.emailInputValid) {\n      this.tooltipOutlet.swapText({ params: { text: this.needsEmailValue } })\n    }\n\n    if (this.hasAgreementSelected && this.emailInputValid) {\n      this.enableEmailButton()\n    } else {\n      this.disableEmailButton()\n    }\n  }\n\n  ///\n  /// private\n  ///\n\n  enableEmailButton() {\n    this.sendEmailTarget.disabled = false\n    this.sendEmailTarget.checked = true\n\n    this.tooltipOutlet.off()\n  }\n\n  disableEmailButton() {\n    this.sendEmailTarget.disabled = true\n    this.sendEmailTarget.checked = false\n\n    this.tooltipOutlet.on()\n  }\n\n  get hasAgreementSelected() {\n    return !isNaN(parseInt(this.agreementDropdownTarget.value))\n  }\n\n  get emailInputValid() {\n    return this.emailInputTarget.value.length > 0\n  }\n}\n", "import ApplicationController from '../../javascript/controllers/application_controller'\n\nimport { useClickOutside, useDebounce } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n  static targets = ['result', 'form', 'search', 'close', 'input']\n  static debounces = ['search']\n\n  initialize() {\n    useDebounce(this, { wait: 600 })\n    useClickOutside(this)\n  }\n\n  openSearch() {\n    this.searchTarget.classList.remove('soft-hidden')\n    this.closeTarget.classList.remove('soft-hidden')\n    this.inputTarget.focus()\n\n    this.element.classList.remove('md:w-48', 'md:w-72', 'relative')\n    this.element.classList.add('w-full', 'absolute')\n  }\n\n  closeSearch() {\n    this.searchTarget.classList.add('soft-hidden')\n    this.closeTarget.classList.add('soft-hidden')\n\n    this.element.classList.remove('w-full', 'absolute')\n    this.element.classList.add('relative')\n  }\n\n  clickOutside() {\n    this.element.classList.add('md:w-48')\n    this.element.classList.remove('md:w-72')\n    this.resultTarget.classList.add('hidden')\n    this.closeSearch()\n  }\n\n  focus() {\n    this.element.classList.remove('md:w-48')\n    this.element.classList.add('md:w-72')\n\n    if (this.resultTarget.dataset.resultSize > 0) {\n      this.resultTarget.classList.remove('hidden')\n    }\n  }\n\n  search() {\n    this.formTarget.requestSubmit()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  toggleBorder({ currentTarget }) {\n    let classDetails = this.element.querySelectorAll('.class_detail.border-kicksite-yellow-600')\n\n    classDetails.forEach((currentElement) => {\n      currentElement.classList.toggle('border-kicksite-yellow-600')\n      currentElement.classList.toggle('border-primary')\n    })\n\n    currentTarget.classList.toggle('border-primary')\n    currentTarget.classList.toggle('border-kicksite-yellow-600')\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['form', 'selectAll', 'checkbox', 'program', 'promotionDate', 'submit']\n\n  static values = { progressText: String }\n\n  submitTargetConnected() {\n    this.handleCheckboxChange()\n  }\n\n  updateSelectAll() {\n    this.checkboxTargets.forEach((checkbox) => {\n      checkbox.checked = this.selectAllTarget.checked\n    })\n    this.handleCheckboxChange()\n  }\n\n  handleCheckboxChange() {\n    if (this.checkboxTargets.some((checkbox) => checkbox.checked)) {\n      this.submitTarget.classList.remove('disabled')\n      this.submitTarget.disabled = false\n    } else {\n      this.submitTarget.classList.add('disabled')\n      this.submitTarget.disabled = true\n    }\n  }\n\n  displayInProgress() {\n    if (!this.promotionDateTarget.value) {\n      return\n    }\n\n    this.programTarget.nextSibling.querySelector('.ts-control').classList.add('disabled')\n    this.submitTarget.classList.add('disabled')\n    this.submitTarget.disabled = true\n    this.submitTarget.value = this.progressTextValue\n    this.promotionDateTarget.nextSibling.disabled = true\n  }\n}\n", "import ApplicationController from './application_controller'\nimport consumer from '../channels/consumer'\n\nexport default class extends ApplicationController {\n  static targets = ['progress']\n\n  static values = { current: Number, max: Number, channel: String }\n  completed = false\n  total = 0\n  failures = 0\n\n  connect() {\n    this.channel = this.createChannel(this)\n    document.addEventListener(\n      'turbo:submit-end',\n      () => {\n        this.dispatch('begin-action', { bubbles: true })\n      },\n      { once: true },\n    )\n  }\n\n  createChannel(self) {\n    return consumer.subscriptions.create(this.channelValue, {\n      received: (data) => {\n        if (data.status === 'start') {\n          self.maxValue = data.max\n          self.updateMaxValue()\n        } else if (data.status === 'success') {\n          self.incrementProgress()\n        } else if (data.status === 'complete') {\n          self.completed = true\n          self.total = data.total\n          self.failures = data.failures\n\n          self.displayProgressFailures()\n        }\n      },\n    })\n  }\n\n  incrementProgress() {\n    this.currentValue += 1\n\n    this.displayProgress()\n  }\n\n  updateMaxValue() {\n    this.progressTarget.setAttribute('max', this.maxValue)\n  }\n\n  displayProgress() {\n    if (!this.hasProgressTarget) return\n\n    this.progressTarget.setAttribute('value', this.currentValue)\n  }\n\n  displayProgressFailures() {\n    if (!this.hasProgressTarget) return\n    if (this.failures === 0) return\n\n    this.progressTarget.classList.add('progress-with-failures')\n  }\n}\n", "/**\n * Fuse.js v7.0.0 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2023 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n  return !Array.isArray\n    ? getTag(value) === '[object Array]'\n    : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value\n  }\n  let result = value + '';\n  return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n  return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n  return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n  return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n  return (\n    value === true ||\n    value === false ||\n    (isObjectLike(value) && getTag(value) == '[object Boolean]')\n  )\n}\n\nfunction isObject(value) {\n  return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n  return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n  return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n  return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n  return value == null\n    ? value === undefined\n      ? '[object Undefined]'\n      : '[object Null]'\n    : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n  `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n  `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n  `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n  constructor(keys) {\n    this._keys = [];\n    this._keyMap = {};\n\n    let totalWeight = 0;\n\n    keys.forEach((key) => {\n      let obj = createKey(key);\n\n      this._keys.push(obj);\n      this._keyMap[obj.id] = obj;\n\n      totalWeight += obj.weight;\n    });\n\n    // Normalize weights so that their sum is equal to 1\n    this._keys.forEach((key) => {\n      key.weight /= totalWeight;\n    });\n  }\n  get(keyId) {\n    return this._keyMap[keyId]\n  }\n  keys() {\n    return this._keys\n  }\n  toJSON() {\n    return JSON.stringify(this._keys)\n  }\n}\n\nfunction createKey(key) {\n  let path = null;\n  let id = null;\n  let src = null;\n  let weight = 1;\n  let getFn = null;\n\n  if (isString(key) || isArray(key)) {\n    src = key;\n    path = createKeyPath(key);\n    id = createKeyId(key);\n  } else {\n    if (!hasOwn.call(key, 'name')) {\n      throw new Error(MISSING_KEY_PROPERTY('name'))\n    }\n\n    const name = key.name;\n    src = name;\n\n    if (hasOwn.call(key, 'weight')) {\n      weight = key.weight;\n\n      if (weight <= 0) {\n        throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n      }\n    }\n\n    path = createKeyPath(name);\n    id = createKeyId(name);\n    getFn = key.getFn;\n  }\n\n  return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n  return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n  return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n  let list = [];\n  let arr = false;\n\n  const deepGet = (obj, path, index) => {\n    if (!isDefined(obj)) {\n      return\n    }\n    if (!path[index]) {\n      // If there's no path left, we've arrived at the object we care about.\n      list.push(obj);\n    } else {\n      let key = path[index];\n\n      const value = obj[key];\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      // If we're at the last value in the path, and if it's a string/number/bool,\n      // add it to the list\n      if (\n        index === path.length - 1 &&\n        (isString(value) || isNumber(value) || isBoolean(value))\n      ) {\n        list.push(toString(value));\n      } else if (isArray(value)) {\n        arr = true;\n        // Search each item in the array.\n        for (let i = 0, len = value.length; i < len; i += 1) {\n          deepGet(value[i], path, index + 1);\n        }\n      } else if (path.length) {\n        // An object. Recurse further.\n        deepGet(value, path, index + 1);\n      }\n    }\n  };\n\n  // Backwards compatibility (since path used to be a string)\n  deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n  return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n  // Whether the matches should be included in the result set. When `true`, each record in the result\n  // set will include the indices of the matched characters.\n  // These can consequently be used for highlighting purposes.\n  includeMatches: false,\n  // When `true`, the matching function will continue to the end of a search pattern even if\n  // a perfect match has already been located in the string.\n  findAllMatches: false,\n  // Minimum number of characters that must be matched before a result is considered a match\n  minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n  // When `true`, the algorithm continues searching to the end of the input even if a perfect\n  // match is found before the end of the same input.\n  isCaseSensitive: false,\n  // When true, the matching function will continue to the end of a search pattern even if\n  includeScore: false,\n  // List of properties that will be searched. This also supports nested properties.\n  keys: [],\n  // Whether to sort the result list, by score\n  shouldSort: true,\n  // Default sort function: sort by ascending score, ascending index\n  sortFn: (a, b) =>\n    a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n  // Approximately where in the text is the pattern expected to be found?\n  location: 0,\n  // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n  // (of both letters and location), a threshold of '1.0' would match anything.\n  threshold: 0.6,\n  // Determines how close the match must be to the fuzzy location (specified above).\n  // An exact letter match which is 'distance' characters away from the fuzzy location\n  // would score as a complete mismatch. A distance of '0' requires the match be at\n  // the exact location specified, a threshold of '1000' would require a perfect match\n  // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n  distance: 100\n};\n\nconst AdvancedOptions = {\n  // When `true`, it enables the use of unix-like search commands\n  useExtendedSearch: false,\n  // The get function to use when fetching an object's properties.\n  // The default will search nested paths *ie foo.bar.baz*\n  getFn: get,\n  // When `true`, search will ignore `location` and `distance`, so it won't matter\n  // where in the string the pattern appears.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n  ignoreLocation: false,\n  // When `true`, the calculation for the relevance score (used for sorting) will\n  // ignore the field-length norm.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n  ignoreFieldNorm: false,\n  // The weight to determine how much field length norm effects scoring.\n  fieldNormWeight: 1\n};\n\nvar Config = {\n  ...BasicOptions,\n  ...MatchOptions,\n  ...FuzzyOptions,\n  ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n  const cache = new Map();\n  const m = Math.pow(10, mantissa);\n\n  return {\n    get(value) {\n      const numTokens = value.match(SPACE).length;\n\n      if (cache.has(numTokens)) {\n        return cache.get(numTokens)\n      }\n\n      // Default function is 1/sqrt(x), weight makes that variable\n      const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n      // In place of `toFixed(mantissa)`, for faster computation\n      const n = parseFloat(Math.round(norm * m) / m);\n\n      cache.set(numTokens, n);\n\n      return n\n    },\n    clear() {\n      cache.clear();\n    }\n  }\n}\n\nclass FuseIndex {\n  constructor({\n    getFn = Config.getFn,\n    fieldNormWeight = Config.fieldNormWeight\n  } = {}) {\n    this.norm = norm(fieldNormWeight, 3);\n    this.getFn = getFn;\n    this.isCreated = false;\n\n    this.setIndexRecords();\n  }\n  setSources(docs = []) {\n    this.docs = docs;\n  }\n  setIndexRecords(records = []) {\n    this.records = records;\n  }\n  setKeys(keys = []) {\n    this.keys = keys;\n    this._keysMap = {};\n    keys.forEach((key, idx) => {\n      this._keysMap[key.id] = idx;\n    });\n  }\n  create() {\n    if (this.isCreated || !this.docs.length) {\n      return\n    }\n\n    this.isCreated = true;\n\n    // List is Array<String>\n    if (isString(this.docs[0])) {\n      this.docs.forEach((doc, docIndex) => {\n        this._addString(doc, docIndex);\n      });\n    } else {\n      // List is Array<Object>\n      this.docs.forEach((doc, docIndex) => {\n        this._addObject(doc, docIndex);\n      });\n    }\n\n    this.norm.clear();\n  }\n  // Adds a doc to the end of the index\n  add(doc) {\n    const idx = this.size();\n\n    if (isString(doc)) {\n      this._addString(doc, idx);\n    } else {\n      this._addObject(doc, idx);\n    }\n  }\n  // Removes the doc at the specified index of the index\n  removeAt(idx) {\n    this.records.splice(idx, 1);\n\n    // Change ref index of every subsquent doc\n    for (let i = idx, len = this.size(); i < len; i += 1) {\n      this.records[i].i -= 1;\n    }\n  }\n  getValueForItemAtKeyId(item, keyId) {\n    return item[this._keysMap[keyId]]\n  }\n  size() {\n    return this.records.length\n  }\n  _addString(doc, docIndex) {\n    if (!isDefined(doc) || isBlank(doc)) {\n      return\n    }\n\n    let record = {\n      v: doc,\n      i: docIndex,\n      n: this.norm.get(doc)\n    };\n\n    this.records.push(record);\n  }\n  _addObject(doc, docIndex) {\n    let record = { i: docIndex, $: {} };\n\n    // Iterate over every key (i.e, path), and fetch the value at that key\n    this.keys.forEach((key, keyIndex) => {\n      let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n      if (!isDefined(value)) {\n        return\n      }\n\n      if (isArray(value)) {\n        let subRecords = [];\n        const stack = [{ nestedArrIndex: -1, value }];\n\n        while (stack.length) {\n          const { nestedArrIndex, value } = stack.pop();\n\n          if (!isDefined(value)) {\n            continue\n          }\n\n          if (isString(value) && !isBlank(value)) {\n            let subRecord = {\n              v: value,\n              i: nestedArrIndex,\n              n: this.norm.get(value)\n            };\n\n            subRecords.push(subRecord);\n          } else if (isArray(value)) {\n            value.forEach((item, k) => {\n              stack.push({\n                nestedArrIndex: k,\n                value: item\n              });\n            });\n          } else ;\n        }\n        record.$[keyIndex] = subRecords;\n      } else if (isString(value) && !isBlank(value)) {\n        let subRecord = {\n          v: value,\n          n: this.norm.get(value)\n        };\n\n        record.$[keyIndex] = subRecord;\n      }\n    });\n\n    this.records.push(record);\n  }\n  toJSON() {\n    return {\n      keys: this.keys,\n      records: this.records\n    }\n  }\n}\n\nfunction createIndex(\n  keys,\n  docs,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys.map(createKey));\n  myIndex.setSources(docs);\n  myIndex.create();\n  return myIndex\n}\n\nfunction parseIndex(\n  data,\n  { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n  const { keys, records } = data;\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys);\n  myIndex.setIndexRecords(records);\n  return myIndex\n}\n\nfunction computeScore$1(\n  pattern,\n  {\n    errors = 0,\n    currentLocation = 0,\n    expectedLocation = 0,\n    distance = Config.distance,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  const accuracy = errors / pattern.length;\n\n  if (ignoreLocation) {\n    return accuracy\n  }\n\n  const proximity = Math.abs(expectedLocation - currentLocation);\n\n  if (!distance) {\n    // Dodge divide by zero error.\n    return proximity ? 1.0 : accuracy\n  }\n\n  return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n  matchmask = [],\n  minMatchCharLength = Config.minMatchCharLength\n) {\n  let indices = [];\n  let start = -1;\n  let end = -1;\n  let i = 0;\n\n  for (let len = matchmask.length; i < len; i += 1) {\n    let match = matchmask[i];\n    if (match && start === -1) {\n      start = i;\n    } else if (!match && start !== -1) {\n      end = i - 1;\n      if (end - start + 1 >= minMatchCharLength) {\n        indices.push([start, end]);\n      }\n      start = -1;\n    }\n  }\n\n  // (i-1 - start) + 1 => i - start\n  if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n    indices.push([start, i - 1]);\n  }\n\n  return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n  text,\n  pattern,\n  patternAlphabet,\n  {\n    location = Config.location,\n    distance = Config.distance,\n    threshold = Config.threshold,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    includeMatches = Config.includeMatches,\n    ignoreLocation = Config.ignoreLocation\n  } = {}\n) {\n  if (pattern.length > MAX_BITS) {\n    throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n  }\n\n  const patternLen = pattern.length;\n  // Set starting location at beginning text and initialize the alphabet.\n  const textLen = text.length;\n  // Handle the case when location > text.length\n  const expectedLocation = Math.max(0, Math.min(location, textLen));\n  // Highest score beyond which we give up.\n  let currentThreshold = threshold;\n  // Is there a nearby exact match? (speedup)\n  let bestLocation = expectedLocation;\n\n  // Performance: only computer matches when the minMatchCharLength > 1\n  // OR if `includeMatches` is true.\n  const computeMatches = minMatchCharLength > 1 || includeMatches;\n  // A mask of the matches, used for building the indices\n  const matchMask = computeMatches ? Array(textLen) : [];\n\n  let index;\n\n  // Get all exact matches, here for speed up\n  while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n    let score = computeScore$1(pattern, {\n      currentLocation: index,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    currentThreshold = Math.min(score, currentThreshold);\n    bestLocation = index + patternLen;\n\n    if (computeMatches) {\n      let i = 0;\n      while (i < patternLen) {\n        matchMask[index + i] = 1;\n        i += 1;\n      }\n    }\n  }\n\n  // Reset the best location\n  bestLocation = -1;\n\n  let lastBitArr = [];\n  let finalScore = 1;\n  let binMax = patternLen + textLen;\n\n  const mask = 1 << (patternLen - 1);\n\n  for (let i = 0; i < patternLen; i += 1) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from the match location we can stray\n    // at this error level.\n    let binMin = 0;\n    let binMid = binMax;\n\n    while (binMin < binMid) {\n      const score = computeScore$1(pattern, {\n        errors: i,\n        currentLocation: expectedLocation + binMid,\n        expectedLocation,\n        distance,\n        ignoreLocation\n      });\n\n      if (score <= currentThreshold) {\n        binMin = binMid;\n      } else {\n        binMax = binMid;\n      }\n\n      binMid = Math.floor((binMax - binMin) / 2 + binMin);\n    }\n\n    // Use the result from this iteration as the maximum for the next.\n    binMax = binMid;\n\n    let start = Math.max(1, expectedLocation - binMid + 1);\n    let finish = findAllMatches\n      ? textLen\n      : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n    // Initialize the bit array\n    let bitArr = Array(finish + 2);\n\n    bitArr[finish + 1] = (1 << i) - 1;\n\n    for (let j = finish; j >= start; j -= 1) {\n      let currentLocation = j - 1;\n      let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n      if (computeMatches) {\n        // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n        matchMask[currentLocation] = +!!charMatch;\n      }\n\n      // First pass: exact match\n      bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n      // Subsequent passes: fuzzy match\n      if (i) {\n        bitArr[j] |=\n          ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n      }\n\n      if (bitArr[j] & mask) {\n        finalScore = computeScore$1(pattern, {\n          errors: i,\n          currentLocation,\n          expectedLocation,\n          distance,\n          ignoreLocation\n        });\n\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (finalScore <= currentThreshold) {\n          // Indeed it is\n          currentThreshold = finalScore;\n          bestLocation = currentLocation;\n\n          // Already passed `loc`, downhill from here on in.\n          if (bestLocation <= expectedLocation) {\n            break\n          }\n\n          // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n          start = Math.max(1, 2 * expectedLocation - bestLocation);\n        }\n      }\n    }\n\n    // No hope for a (better) match at greater error levels.\n    const score = computeScore$1(pattern, {\n      errors: i + 1,\n      currentLocation: expectedLocation,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n\n    if (score > currentThreshold) {\n      break\n    }\n\n    lastBitArr = bitArr;\n  }\n\n  const result = {\n    isMatch: bestLocation >= 0,\n    // Count exact matches (those with a score of 0) to be \"almost\" exact\n    score: Math.max(0.001, finalScore)\n  };\n\n  if (computeMatches) {\n    const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n    if (!indices.length) {\n      result.isMatch = false;\n    } else if (includeMatches) {\n      result.indices = indices;\n    }\n  }\n\n  return result\n}\n\nfunction createPatternAlphabet(pattern) {\n  let mask = {};\n\n  for (let i = 0, len = pattern.length; i < len; i += 1) {\n    const char = pattern.charAt(i);\n    mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n  }\n\n  return mask\n}\n\nclass BitapSearch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    this.options = {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n    this.chunks = [];\n\n    if (!this.pattern.length) {\n      return\n    }\n\n    const addChunk = (pattern, startIndex) => {\n      this.chunks.push({\n        pattern,\n        alphabet: createPatternAlphabet(pattern),\n        startIndex\n      });\n    };\n\n    const len = this.pattern.length;\n\n    if (len > MAX_BITS) {\n      let i = 0;\n      const remainder = len % MAX_BITS;\n      const end = len - remainder;\n\n      while (i < end) {\n        addChunk(this.pattern.substr(i, MAX_BITS), i);\n        i += MAX_BITS;\n      }\n\n      if (remainder) {\n        const startIndex = len - MAX_BITS;\n        addChunk(this.pattern.substr(startIndex), startIndex);\n      }\n    } else {\n      addChunk(this.pattern, 0);\n    }\n  }\n\n  searchIn(text) {\n    const { isCaseSensitive, includeMatches } = this.options;\n\n    if (!isCaseSensitive) {\n      text = text.toLowerCase();\n    }\n\n    // Exact match\n    if (this.pattern === text) {\n      let result = {\n        isMatch: true,\n        score: 0\n      };\n\n      if (includeMatches) {\n        result.indices = [[0, text.length - 1]];\n      }\n\n      return result\n    }\n\n    // Otherwise, use Bitap algorithm\n    const {\n      location,\n      distance,\n      threshold,\n      findAllMatches,\n      minMatchCharLength,\n      ignoreLocation\n    } = this.options;\n\n    let allIndices = [];\n    let totalScore = 0;\n    let hasMatches = false;\n\n    this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n      const { isMatch, score, indices } = search(text, pattern, alphabet, {\n        location: location + startIndex,\n        distance,\n        threshold,\n        findAllMatches,\n        minMatchCharLength,\n        includeMatches,\n        ignoreLocation\n      });\n\n      if (isMatch) {\n        hasMatches = true;\n      }\n\n      totalScore += score;\n\n      if (isMatch && indices) {\n        allIndices = [...allIndices, ...indices];\n      }\n    });\n\n    let result = {\n      isMatch: hasMatches,\n      score: hasMatches ? totalScore / this.chunks.length : 1\n    };\n\n    if (hasMatches && includeMatches) {\n      result.indices = allIndices;\n    }\n\n    return result\n  }\n}\n\nclass BaseMatch {\n  constructor(pattern) {\n    this.pattern = pattern;\n  }\n  static isMultiMatch(pattern) {\n    return getMatch(pattern, this.multiRegex)\n  }\n  static isSingleMatch(pattern) {\n    return getMatch(pattern, this.singleRegex)\n  }\n  search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n  const matches = pattern.match(exp);\n  return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'exact'\n  }\n  static get multiRegex() {\n    return /^=\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^=(.*)$/\n  }\n  search(text) {\n    const isMatch = text === this.pattern;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!(.*)$/\n  }\n  search(text) {\n    const index = text.indexOf(this.pattern);\n    const isMatch = index === -1;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'prefix-exact'\n  }\n  static get multiRegex() {\n    return /^\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    }\n  }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-prefix-exact'\n  }\n  static get multiRegex() {\n    return /^!\\^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^!\\^(.*)$/\n  }\n  search(text) {\n    const isMatch = !text.startsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'suffix-exact'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = text.endsWith(this.pattern);\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [text.length - this.pattern.length, text.length - 1]\n    }\n  }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'inverse-suffix-exact'\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"\\$$/\n  }\n  static get singleRegex() {\n    return /^!(.*)\\$$/\n  }\n  search(text) {\n    const isMatch = !text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    }\n  }\n}\n\nclass FuzzyMatch extends BaseMatch {\n  constructor(\n    pattern,\n    {\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance,\n      includeMatches = Config.includeMatches,\n      findAllMatches = Config.findAllMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      isCaseSensitive = Config.isCaseSensitive,\n      ignoreLocation = Config.ignoreLocation\n    } = {}\n  ) {\n    super(pattern);\n    this._bitapSearch = new BitapSearch(pattern, {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    });\n  }\n  static get type() {\n    return 'fuzzy'\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^(.*)$/\n  }\n  search(text) {\n    return this._bitapSearch.searchIn(text)\n  }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return 'include'\n  }\n  static get multiRegex() {\n    return /^'\"(.*)\"$/\n  }\n  static get singleRegex() {\n    return /^'(.*)$/\n  }\n  search(text) {\n    let location = 0;\n    let index;\n\n    const indices = [];\n    const patternLen = this.pattern.length;\n\n    // Get all exact matches\n    while ((index = text.indexOf(this.pattern, location)) > -1) {\n      location = index + patternLen;\n      indices.push([index, location - 1]);\n    }\n\n    const isMatch = !!indices.length;\n\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices\n    }\n  }\n}\n\n// \u2757Order is important. DO NOT CHANGE.\nconst searchers = [\n  ExactMatch,\n  IncludeMatch,\n  PrefixExactMatch,\n  InversePrefixExactMatch,\n  InverseSuffixExactMatch,\n  SuffixExactMatch,\n  InverseExactMatch,\n  FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n  return pattern.split(OR_TOKEN).map((item) => {\n    let query = item\n      .trim()\n      .split(SPACE_RE)\n      .filter((item) => item && !!item.trim());\n\n    let results = [];\n    for (let i = 0, len = query.length; i < len; i += 1) {\n      const queryItem = query[i];\n\n      // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n      let found = false;\n      let idx = -1;\n      while (!found && ++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isMultiMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          found = true;\n        }\n      }\n\n      if (found) {\n        continue\n      }\n\n      // 2. Handle single query matches (i.e, once that are *not* quoted)\n      idx = -1;\n      while (++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isSingleMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          break\n        }\n      }\n    }\n\n    return results\n  })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token       | Match type                 | Description                            |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript`   | fuzzy-match                | Items that fuzzy match `jscript`       |\n * | `=scheme`   | exact-match                | Items that are `scheme`                |\n * | `'python`   | include-match              | Items that include `python`            |\n * | `!ruby`     | inverse-exact-match        | Items that do not include `ruby`       |\n * | `^java`     | prefix-exact-match         | Items that start with `java`           |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$`      | suffix-exact-match         | Items that end with `.js`              |\n * | `!.go$`     | inverse-suffix-exact-match | Items that do not end with `.go`       |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n  constructor(\n    pattern,\n    {\n      isCaseSensitive = Config.isCaseSensitive,\n      includeMatches = Config.includeMatches,\n      minMatchCharLength = Config.minMatchCharLength,\n      ignoreLocation = Config.ignoreLocation,\n      findAllMatches = Config.findAllMatches,\n      location = Config.location,\n      threshold = Config.threshold,\n      distance = Config.distance\n    } = {}\n  ) {\n    this.query = null;\n    this.options = {\n      isCaseSensitive,\n      includeMatches,\n      minMatchCharLength,\n      findAllMatches,\n      ignoreLocation,\n      location,\n      threshold,\n      distance\n    };\n\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.query = parseQuery(this.pattern, this.options);\n  }\n\n  static condition(_, options) {\n    return options.useExtendedSearch\n  }\n\n  searchIn(text) {\n    const query = this.query;\n\n    if (!query) {\n      return {\n        isMatch: false,\n        score: 1\n      }\n    }\n\n    const { includeMatches, isCaseSensitive } = this.options;\n\n    text = isCaseSensitive ? text : text.toLowerCase();\n\n    let numMatches = 0;\n    let allIndices = [];\n    let totalScore = 0;\n\n    // ORs\n    for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n      const searchers = query[i];\n\n      // Reset indices\n      allIndices.length = 0;\n      numMatches = 0;\n\n      // ANDs\n      for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n        const searcher = searchers[j];\n        const { isMatch, indices, score } = searcher.search(text);\n\n        if (isMatch) {\n          numMatches += 1;\n          totalScore += score;\n          if (includeMatches) {\n            const type = searcher.constructor.type;\n            if (MultiMatchSet.has(type)) {\n              allIndices = [...allIndices, ...indices];\n            } else {\n              allIndices.push(indices);\n            }\n          }\n        } else {\n          totalScore = 0;\n          numMatches = 0;\n          allIndices.length = 0;\n          break\n        }\n      }\n\n      // OR condition, so if TRUE, return\n      if (numMatches) {\n        let result = {\n          isMatch: true,\n          score: totalScore / numMatches\n        };\n\n        if (includeMatches) {\n          result.indices = allIndices;\n        }\n\n        return result\n      }\n    }\n\n    // Nothing was matched\n    return {\n      isMatch: false,\n      score: 1\n    }\n  }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n  registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n  for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n    let searcherClass = registeredSearchers[i];\n    if (searcherClass.condition(pattern, options)) {\n      return new searcherClass(pattern, options)\n    }\n  }\n\n  return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n  AND: '$and',\n  OR: '$or'\n};\n\nconst KeyType = {\n  PATH: '$path',\n  PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n  !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n  !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n  [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n    [key]: query[key]\n  }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n  const next = (query) => {\n    let keys = Object.keys(query);\n\n    const isQueryPath = isPath(query);\n\n    if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n      return next(convertToExplicit(query))\n    }\n\n    if (isLeaf(query)) {\n      const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n      const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n      if (!isString(pattern)) {\n        throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n      }\n\n      const obj = {\n        keyId: createKeyId(key),\n        pattern\n      };\n\n      if (auto) {\n        obj.searcher = createSearcher(pattern, options);\n      }\n\n      return obj\n    }\n\n    let node = {\n      children: [],\n      operator: keys[0]\n    };\n\n    keys.forEach((key) => {\n      const value = query[key];\n\n      if (isArray(value)) {\n        value.forEach((item) => {\n          node.children.push(next(item));\n        });\n      }\n    });\n\n    return node\n  };\n\n  if (!isExpression(query)) {\n    query = convertToExplicit(query);\n  }\n\n  return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n  results,\n  { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n  results.forEach((result) => {\n    let totalScore = 1;\n\n    result.matches.forEach(({ key, norm, score }) => {\n      const weight = key ? key.weight : null;\n\n      totalScore *= Math.pow(\n        score === 0 && weight ? Number.EPSILON : score,\n        (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n      );\n    });\n\n    result.score = totalScore;\n  });\n}\n\nfunction transformMatches(result, data) {\n  const matches = result.matches;\n  data.matches = [];\n\n  if (!isDefined(matches)) {\n    return\n  }\n\n  matches.forEach((match) => {\n    if (!isDefined(match.indices) || !match.indices.length) {\n      return\n    }\n\n    const { indices, value } = match;\n\n    let obj = {\n      indices,\n      value\n    };\n\n    if (match.key) {\n      obj.key = match.key.src;\n    }\n\n    if (match.idx > -1) {\n      obj.refIndex = match.idx;\n    }\n\n    data.matches.push(obj);\n  });\n}\n\nfunction transformScore(result, data) {\n  data.score = result.score;\n}\n\nfunction format(\n  results,\n  docs,\n  {\n    includeMatches = Config.includeMatches,\n    includeScore = Config.includeScore\n  } = {}\n) {\n  const transformers = [];\n\n  if (includeMatches) transformers.push(transformMatches);\n  if (includeScore) transformers.push(transformScore);\n\n  return results.map((result) => {\n    const { idx } = result;\n\n    const data = {\n      item: docs[idx],\n      refIndex: idx\n    };\n\n    if (transformers.length) {\n      transformers.forEach((transformer) => {\n        transformer(result, data);\n      });\n    }\n\n    return data\n  })\n}\n\nclass Fuse {\n  constructor(docs, options = {}, index) {\n    this.options = { ...Config, ...options };\n\n    if (\n      this.options.useExtendedSearch &&\n      !true\n    ) {\n      throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n    }\n\n    this._keyStore = new KeyStore(this.options.keys);\n\n    this.setCollection(docs, index);\n  }\n\n  setCollection(docs, index) {\n    this._docs = docs;\n\n    if (index && !(index instanceof FuseIndex)) {\n      throw new Error(INCORRECT_INDEX_TYPE)\n    }\n\n    this._myIndex =\n      index ||\n      createIndex(this.options.keys, this._docs, {\n        getFn: this.options.getFn,\n        fieldNormWeight: this.options.fieldNormWeight\n      });\n  }\n\n  add(doc) {\n    if (!isDefined(doc)) {\n      return\n    }\n\n    this._docs.push(doc);\n    this._myIndex.add(doc);\n  }\n\n  remove(predicate = (/* doc, idx */) => false) {\n    const results = [];\n\n    for (let i = 0, len = this._docs.length; i < len; i += 1) {\n      const doc = this._docs[i];\n      if (predicate(doc, i)) {\n        this.removeAt(i);\n        i -= 1;\n        len -= 1;\n\n        results.push(doc);\n      }\n    }\n\n    return results\n  }\n\n  removeAt(idx) {\n    this._docs.splice(idx, 1);\n    this._myIndex.removeAt(idx);\n  }\n\n  getIndex() {\n    return this._myIndex\n  }\n\n  search(query, { limit = -1 } = {}) {\n    const {\n      includeMatches,\n      includeScore,\n      shouldSort,\n      sortFn,\n      ignoreFieldNorm\n    } = this.options;\n\n    let results = isString(query)\n      ? isString(this._docs[0])\n        ? this._searchStringList(query)\n        : this._searchObjectList(query)\n      : this._searchLogical(query);\n\n    computeScore(results, { ignoreFieldNorm });\n\n    if (shouldSort) {\n      results.sort(sortFn);\n    }\n\n    if (isNumber(limit) && limit > -1) {\n      results = results.slice(0, limit);\n    }\n\n    return format(results, this._docs, {\n      includeMatches,\n      includeScore\n    })\n  }\n\n  _searchStringList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { records } = this._myIndex;\n    const results = [];\n\n    // Iterate over every string in the index\n    records.forEach(({ v: text, i: idx, n: norm }) => {\n      if (!isDefined(text)) {\n        return\n      }\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        results.push({\n          item: text,\n          idx,\n          matches: [{ score, value: text, norm, indices }]\n        });\n      }\n    });\n\n    return results\n  }\n\n  _searchLogical(query) {\n\n    const expression = parse(query, this.options);\n\n    const evaluate = (node, item, idx) => {\n      if (!node.children) {\n        const { keyId, searcher } = node;\n\n        const matches = this._findMatches({\n          key: this._keyStore.get(keyId),\n          value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n          searcher\n        });\n\n        if (matches && matches.length) {\n          return [\n            {\n              idx,\n              item,\n              matches\n            }\n          ]\n        }\n\n        return []\n      }\n\n      const res = [];\n      for (let i = 0, len = node.children.length; i < len; i += 1) {\n        const child = node.children[i];\n        const result = evaluate(child, item, idx);\n        if (result.length) {\n          res.push(...result);\n        } else if (node.operator === LogicalOperator.AND) {\n          return []\n        }\n      }\n      return res\n    };\n\n    const records = this._myIndex.records;\n    const resultMap = {};\n    const results = [];\n\n    records.forEach(({ $: item, i: idx }) => {\n      if (isDefined(item)) {\n        let expResults = evaluate(expression, item, idx);\n\n        if (expResults.length) {\n          // Dedupe when adding\n          if (!resultMap[idx]) {\n            resultMap[idx] = { idx, item, matches: [] };\n            results.push(resultMap[idx]);\n          }\n          expResults.forEach(({ matches }) => {\n            resultMap[idx].matches.push(...matches);\n          });\n        }\n      }\n    });\n\n    return results\n  }\n\n  _searchObjectList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { keys, records } = this._myIndex;\n    const results = [];\n\n    // List is Array<Object>\n    records.forEach(({ $: item, i: idx }) => {\n      if (!isDefined(item)) {\n        return\n      }\n\n      let matches = [];\n\n      // Iterate over every key (i.e, path), and fetch the value at that key\n      keys.forEach((key, keyIndex) => {\n        matches.push(\n          ...this._findMatches({\n            key,\n            value: item[keyIndex],\n            searcher\n          })\n        );\n      });\n\n      if (matches.length) {\n        results.push({\n          idx,\n          item,\n          matches\n        });\n      }\n    });\n\n    return results\n  }\n  _findMatches({ key, value, searcher }) {\n    if (!isDefined(value)) {\n      return []\n    }\n\n    let matches = [];\n\n    if (isArray(value)) {\n      value.forEach(({ v: text, i: idx, n: norm }) => {\n        if (!isDefined(text)) {\n          return\n        }\n\n        const { isMatch, score, indices } = searcher.searchIn(text);\n\n        if (isMatch) {\n          matches.push({\n            score,\n            key,\n            value: text,\n            idx,\n            norm,\n            indices\n          });\n        }\n      });\n    } else {\n      const { v: text, n: norm } = value;\n\n      const { isMatch, score, indices } = searcher.searchIn(text);\n\n      if (isMatch) {\n        matches.push({ score, key, value: text, norm, indices });\n      }\n    }\n\n    return matches\n  }\n}\n\nFuse.version = '7.0.0';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n  Fuse.parseQuery = parse;\n}\n\n{\n  register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n", "import ApplicationController from './application_controller'\nimport Fuse from 'fuse.js'\nimport { useClickOutside, useHotkeys } from 'stimulus-use'\n\nexport default class extends ApplicationController {\n  static targets = ['aside', 'search', 'link', 'divider']\n  static outlets = ['sidebar--component']\n\n  connect() {\n    useHotkeys(this, {\n      hotkeys: {\n        '/': {\n          handler: (event) => {\n            event.preventDefault()\n            this.open()\n          },\n          options: {\n            keydown: true,\n            keyup: false,\n          },\n        },\n        escape: {\n          handler: (event) => {\n            event.preventDefault()\n            this.close()\n          },\n          options: {\n            keydown: true,\n            keyup: false,\n          },\n        },\n      },\n      filter: (event) => {\n        if (!event.key) return\n\n        const { tagName } = event.target\n        const disallowedField =\n          event.target.isContentEditable ||\n          ((tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !event.target.readOnly)\n\n        return event.key === 'Escape' || !disallowedField\n      },\n    })\n\n    useClickOutside(this, { element: this.asideTarget, events: ['mousedown'] })\n  }\n\n  open() {\n    this.asideTarget.classList.remove('hidden')\n\n    this.focusSearchField()\n  }\n\n  close() {\n    this.asideTarget.classList.add('hidden')\n\n    this.sidebarComponentOutlet.close()\n    this.resetSearch()\n  }\n\n  resetSearch() {\n    this.searchTarget.value = ''\n    this.showAllLinks()\n    this.focusSearchField()\n  }\n\n  filter(event) {\n    if (event.key === 'Tab') return\n\n    if (!this.searchTarget.value) {\n      this.showAllLinks()\n\n      return\n    }\n\n    const fuse = new Fuse(this.fuseList, {\n      includeScore: true,\n      keys: [\n        {\n          name: 'title',\n          weight: 0.7,\n        },\n        {\n          name: 'tags',\n          weight: 0.3,\n        },\n      ],\n    })\n    const results = fuse.search(this.searchTarget.value).filter((result) => result.score <= 0.5)\n\n    this.hideAllLinks()\n    results.forEach(({ item: { element } }) => {\n      element.classList.remove('hidden')\n      if (element.hasAttribute('data-section')) return\n\n      const section = element.closest('[data-section]')\n      section.classList.remove('hidden')\n\n      if (!section.hasAttribute('data-controller')) return\n\n      section.classList.remove('collapsed')\n    })\n\n    this.dividerTargets.forEach((divider) => {\n      const shownElementAboveDivider = shownElementAbove(divider)\n      const shownElementBelowDivider = shownElementBelow(divider)\n\n      if (shownElementAboveDivider && shownElementBelowDivider) {\n        divider.classList.remove('hidden')\n      }\n    })\n  }\n\n  clickOutside() {\n    if (this.asideTarget.classList.contains('hidden')) return\n\n    this.close()\n  }\n\n  ///\n  /// private\n  ///\n\n  get fuseList() {\n    return this.linkTargets.map((link) => ({\n      title: link.innerText,\n      element: link,\n      tags: link.dataset.tags,\n    }))\n  }\n\n  focusSearchField() {\n    this.searchTarget.focus()\n  }\n\n  showAllLinks() {\n    this.linkTargets.forEach((link) => {\n      link.classList.remove('hidden')\n      if (!link.hasAttribute('data-section')) {\n        const section = link.closest('[data-section]')\n\n        section.classList.remove('hidden')\n\n        if (!section.hasAttribute('data-controller')) return\n\n        section.classList.add('collapsed')\n      }\n    })\n\n    this.dividerTargets.forEach((divider) => {\n      divider.classList.remove('hidden')\n    })\n  }\n\n  hideAllLinks() {\n    this.linkTargets.forEach((link) => {\n      link.classList.add('hidden')\n      if (!link.hasAttribute('data-section')) {\n        link.closest('[data-section]').classList.add('hidden')\n      }\n    })\n\n    this.dividerTargets.forEach((divider) => {\n      divider.classList.add('hidden')\n    })\n  }\n}\n\nfunction shownElementAbove(element) {\n  let previousElement = element.previousElementSibling\n  while (previousElement && previousElement.tagName !== 'DIV') {\n    if (!previousElement.classList.contains('hidden')) {\n      return true\n    }\n\n    previousElement = previousElement.previousElementSibling\n  }\n\n  return false\n}\n\nfunction shownElementBelow(element) {\n  let nextElement = element.nextElementSibling\n  while (nextElement && nextElement.tagName !== 'DIV') {\n    if (!nextElement.classList.contains('hidden')) {\n      return true\n    }\n\n    nextElement = nextElement.nextElementSibling\n  }\n\n  return false\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\n\nexport default class extends Controller {\n  static outlets = ['searchable-person-field']\n  static targets = ['quantity']\n  static values = { url: String }\n\n  searchablePersonFieldOutletConnected() {\n    // This is a bit hacky, but we need to wait for the modal to fully\n    // open before focusing, which takes ~250ms\n    setTimeout(() => {\n      this.#focusPersonField()\n    }, 250)\n  }\n\n  refreshFrame({ target: { form } }) {\n    const params = new URLSearchParams(new FormData(form))\n    params.delete('utf8')\n    params.delete('authenticity_token')\n    const src = `${this.urlValue}?${params.toString()}`\n\n    Turbo.visit(src, { frame: 'ranks_programs' })\n  }\n\n  showQuantity() {\n    this.#focusPersonField()\n\n    if (!this.hasQuantityTarget) return\n\n    this.quantityTarget.hidden = false\n  }\n\n  hideQuantity() {\n    this.#focusPersonField()\n\n    if (!this.hasQuantityTarget) return\n\n    this.quantityTarget.hidden = true\n  }\n\n  #focusPersonField() {\n    if (!this.hasSearchablePersonFieldOutlet) return\n    if (this.searchablePersonFieldOutlet.element.value) return\n\n    this.searchablePersonFieldOutlet.tomSelect.focus()\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\n\nexport default class extends Controller {\n  static values = { url: String }\n\n  refreshFrame(event) {\n    const params = new URLSearchParams(new FormData(event.target.form))\n    const src = `${this.urlValue}?${params.toString()}`\n\n    Turbo.visit(src, { frame: 'ranks_programs' })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nconst THIRTY_MEGABYTES = 1024 * 1024 * 30\nexport default class extends Controller {\n  static targets = ['input', 'uploadedFiles', 'banner', 'fileArea']\n\n  connect() {\n    this.element\n      .closest('form')\n      .addEventListener('direct-uploads:start', this.#disableForm.bind(this), { once: true })\n  }\n\n  add({ dataTransfer }) {\n    this.#addFiles(dataTransfer.files)\n\n    this.#render()\n  }\n\n  remove({ params: { index } }) {\n    this.#removeFile(index)\n\n    this.#render()\n  }\n\n  fileSelected() {\n    this.#render()\n  }\n\n  renderProgressBar({ detail: { id, file } }) {\n    this.#renderWithProgressBar(id, file)\n  }\n\n  updateProgressBar({ detail: { id, progress } }) {\n    this.#updateProgressBar(id, progress)\n  }\n\n  markUploaded({ detail: { id } }) {\n    this.#markUploaded(id)\n  }\n\n  openFormField() {\n    this.inputTarget.click()\n  }\n\n  #validateFileSize(file) {\n    return file.size <= THIRTY_MEGABYTES\n  }\n\n  #validateFileType(file) {\n    const type = file.type\n    const accept = this.inputTarget.accept\n\n    if (accept === '') return\n\n    const acceptedTypes = accept.split(',').map((t) => t.trim())\n\n    const fileTypeIsValid = acceptedTypes.some((acceptedType) => {\n      const [typePrefix] = acceptedType.split('/')\n      if (acceptedType.includes('*') && type.startsWith(typePrefix)) {\n        return true\n      } else if (type === acceptedType) {\n        return true\n      }\n\n      return false\n    })\n\n    return fileTypeIsValid\n  }\n\n  #addFiles(otherFiles) {\n    const dataTransfer = new DataTransfer()\n\n    Array.from(this.inputTarget.files).forEach((file) => {\n      dataTransfer.items.add(file)\n    })\n\n    Array.from(otherFiles).forEach((file) => {\n      dataTransfer.items.add(file)\n    })\n\n    this.inputTarget.files = dataTransfer.files\n  }\n\n  #removeFile(index) {\n    const files = Array.from(this.inputTarget.files)\n    const dataTransfer = new DataTransfer()\n\n    files.forEach((file, i) => {\n      if (i !== index) {\n        dataTransfer.items.add(file)\n      }\n    })\n\n    this.inputTarget.files = dataTransfer.files\n  }\n\n  #render() {\n    this.uploadedFilesTarget.innerHTML = ''\n\n    if (this.inputTarget.files.length === 0) {\n      this.#showBanner()\n      this.#disableForm()\n\n      return\n    }\n\n    this.#hideBanner()\n\n    const fileData = this.#buildFileData()\n\n    const allValid = fileData.every((file) => file.error === null)\n\n    if (allValid) {\n      this.#enableForm()\n    } else {\n      this.#disableForm()\n    }\n\n    fileData.forEach((file, index) => {\n      this.#renderFile(file, index)\n    })\n  }\n\n  #buildFileData() {\n    return Array.from(this.inputTarget.files).map((file, index) => {\n      let error = null\n\n      if (!this.#validateFileSize(file)) {\n        error = 'Too large.'\n      }\n\n      if (!this.#validateFileType(file)) {\n        error = 'Invalid file type.'\n      }\n\n      return {\n        name: file.name,\n        size: this.#humanizeFileSize(file.size),\n        index,\n        error,\n      }\n    })\n  }\n\n  #renderFile(file, index) {\n    const wrapper = document.createElement('div')\n    wrapper.classList.add('flex', 'justify-between', 'gap-2', 'items-center', 'w-full')\n    wrapper.dataset.index = index\n\n    const html = `\n      <div class=\"flex gap-4\">\n        <span data-file-name class=\"truncate max-w-48\">${file.name}</span>\n        <span data-file-text class=\"text-basic-700\">${file.size}</span>\n      </div>\n\n      <button type=\"button\" data-action=\"click->file-field#remove\" data-file-field-index-param=\"${index}\" \n              class=\"text-danger-600 w-5 h-5\">\n        <i class=\"fas fa-xmark w-5 h-5\"></i>\n      </button>\n    `\n\n    wrapper.innerHTML = html\n\n    if (file.error) {\n      wrapper.querySelector('[data-file-text]').textContent = file.error\n      wrapper.querySelector('[data-file-text]').classList.add('text-danger-600')\n      wrapper.querySelector('[data-file-text]').classList.remove('text-basic-700')\n      wrapper.querySelector('[data-file-name]').classList.add('line-through')\n      wrapper.querySelector('[data-file-name]').classList.add('text-basic-700')\n    }\n\n    this.uploadedFilesTarget.insertAdjacentHTML('beforeend', wrapper.outerHTML)\n  }\n\n  #renderWithProgressBar(id, file) {\n    const element = this.uploadedFilesTarget.querySelector('[data-index]')\n\n    element.removeAttribute('data-index')\n    element.id = `file-${id}`\n\n    element.innerHTML = `\n      <div class=\"flex flex-col gap-2 max-w-xs\">\n        <span class=\"truncate\">${file.name}</span>\n        <div class=\"flex gap-4 items-center\">\n          <span class=\"text-basic-700\">Uploading...</span>\n          <progress hidden class=\"progress progress-success h-2\" value=\"0\" max=\"100\"></progress>\n        </div>\n      </div>\n    `\n  }\n\n  #updateProgressBar(fileIndex, progress) {\n    const target = this.uploadedFilesTarget.querySelector(`#file-${fileIndex}`)\n\n    target.querySelector('.progress').value = progress\n  }\n\n  #markUploaded(fileIndex) {\n    const target = this.uploadedFilesTarget.querySelector(`#file-${fileIndex}`)\n\n    target.querySelector('.text-basic-700').textContent = 'Uploaded.'\n  }\n\n  #showBanner() {\n    this.bannerTarget.classList.remove('hidden')\n    this.fileAreaTarget.classList.add('hidden')\n  }\n\n  #hideBanner() {\n    this.bannerTarget.classList.add('hidden')\n    this.fileAreaTarget.classList.remove('hidden')\n  }\n\n  #humanizeFileSize(size) {\n    const i = Math.floor(Math.log(size) / Math.log(1024))\n    const unit = ['B', 'KB', 'MB', 'GB', 'TB'][i]\n    const humanSize = Number(size / 1024 ** i)\n      .toFixed(1)\n      .replace(/\\.0$/, '')\n\n    return `${humanSize} ${unit}`\n  }\n\n  #enableForm() {\n    const id = this.element.closest('form').id\n    document.querySelector(`[form=\"${id}\"]`).disabled = false\n  }\n\n  #disableForm() {\n    const id = this.element.closest('form').id\n    document.querySelector(`[form=\"${id}\"]`).disabled = true\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = [\n    'newContact',\n    'newStudent',\n    'existingPerson',\n    'newPersonForm',\n    'existingPersonForm',\n    'existingPersonField',\n    'exceedStudentLimit',\n    'submit',\n  ]\n\n  static values = { newStudentDisable: Boolean }\n\n  toggleForm() {\n    if (this.newStudentTarget.checked || this.newContactTarget.checked) {\n      this.existingPersonFieldTarget.tomselect.disable()\n      if (this.newStudentTarget.checked && this.newStudentDisableValue) {\n        this.existingPersonFormTarget.classList.add('hidden')\n        this.exceedStudentLimitTarget.classList.remove('hidden')\n        this.newPersonFormTarget.classList.add('hidden')\n        this.submitTarget.classList.add('hidden')\n      } else {\n        this.newPersonFormTarget.classList.remove('hidden')\n        this.existingPersonFormTarget.classList.add('hidden')\n        this.exceedStudentLimitTarget.classList.add('hidden')\n        this.submitTarget.classList.remove('hidden')\n      }\n    } else if (this.existingPersonTarget.checked) {\n      this.existingPersonFieldTarget.tomselect.enable()\n      this.newPersonFormTarget.classList.add('hidden')\n      this.existingPersonFormTarget.classList.remove('hidden')\n      this.exceedStudentLimitTarget.classList.add('hidden')\n      this.submitTarget.classList.remove('hidden')\n    }\n  }\n}\n", "/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  return {\n    ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n", "import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    ...rects.floating,\n    x,\n    y\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$map$so;\n                const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const overflowAvailableHeight = height - overflow[heightSide];\n      const overflowAvailableWidth = width - overflow[widthSide];\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (isYAxis) {\n        const maximumClippingWidth = width - overflow.left - overflow.right;\n        availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n      } else {\n        const maximumClippingHeight = height - overflow.top - overflow.bottom;\n        availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n", "function getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const webkit = isWebKit();\n  const css = getComputedStyle(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n", "import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = currentWin.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = currentWin.frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return floating.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  const x = rect.left + scroll.scrollLeft - offsets.x;\n  const y = rect.top + scroll.scrollTop - offsets.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element) || isTopLayer(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      ...(await getDimensionsFn(data.floating))\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, flip, hide, inline, limitShift, platform, shift, size };\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\nimport { computePosition, offset, flip, autoUpdate } from '@floating-ui/dom'\nimport { useClickOutside } from 'stimulus-use'\nimport { elementIsVisible } from '../../javascript/helpers/visibility_helper'\n\nexport default class extends Controller {\n  static targets = ['body']\n  static values = { hoverTime: { type: Number, default: 300 } }\n\n  #timeoutId = null\n\n  connect() {\n    useClickOutside(this, { element: this.bodyTarget })\n  }\n\n  show({ target, params: { placement, id } }) {\n    this.#timeoutId = setTimeout(() => this.#showBody(target, placement, id), this.hoverTimeValue)\n  }\n\n  hide() {\n    if (!this.#timeoutId) return\n\n    clearTimeout(this.#timeoutId)\n\n    this.bodyTarget.hidden = true\n\n    if (!this.cleanup) return\n\n    this.cleanup()\n  }\n\n  clickOutside() {\n    this.hide()\n  }\n\n  #showBody(target, placement, id) {\n    Turbo.visit(`/people/${id}/hovercard`, { frame: 'person_hovercard' })\n\n    addEventListener(\n      'turbo:frame-render',\n      () => {\n        this.bodyTarget.src = null\n\n        if (elementIsVisible(target)) {\n          this.bodyTarget.hidden = false\n        }\n\n        this.cleanup = this.#positionBodyAnchoredTo(target, placement)\n      },\n      { once: true },\n    )\n  }\n\n  #positionBodyAnchoredTo(element, placement) {\n    return autoUpdate(element, this.bodyTarget, () => {\n      computePosition(element, this.bodyTarget, {\n        placement,\n        middleware: [offset(8), flip()],\n      }).then(({ x, y }) => {\n        Object.assign(this.bodyTarget.style, {\n          left: `${x}px`,\n          top: `${y}px`,\n        })\n      })\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['tab', 'module', 'dropdownButton', 'profileNav']\n  static classes = ['highlight']\n  static values = { selectedModule: String }\n\n  connect() {\n    this.changeTab({ params: { module: this.selectedModuleValue } })\n  }\n\n  changeTab({ params: { module } }) {\n    const tab = this.#getTab(module) || this.#getTab('all')\n    const mod = this.#getModule(module)\n    this.#highlightTab(tab)\n    this.#focusModule(mod)\n    this.#updateProfileNav(module)\n  }\n\n  #focusModule(module) {\n    const url = new URL(window.location)\n    const searchParams = new URLSearchParams(window.location.search)\n    if (module) {\n      this.#hideAllModules()\n      module.hidden = false\n      searchParams.set('module', module.id)\n    } else {\n      this.#showAllModules()\n      searchParams.set('module', 'all')\n    }\n\n    url.search = searchParams\n    window.history.replaceState(history.state, '', url)\n  }\n\n  #showAllModules() {\n    this.moduleTargets.forEach((module) => {\n      module.hidden = false\n    })\n  }\n\n  #hideAllModules() {\n    this.moduleTargets.forEach((module) => {\n      module.hidden = true\n    })\n  }\n\n  #highlightTab(tab) {\n    if (this.hasDropdownButtonTarget) {\n      this.dropdownButtonTarget.textContent = tab.textContent\n    }\n\n    this.tabTargets.forEach((target) => target.classList.remove(...this.highlightClasses))\n    tab.classList.add(...this.highlightClasses)\n  }\n\n  #getTab(id) {\n    return this.tabTargets.find((target) => target.id === `${id}-nav`)\n  }\n\n  #getModule(id) {\n    return this.moduleTargets.find((target) => target.id === id)\n  }\n\n  #updateProfileNav(module) {\n    this.profileNavTargets.forEach((member) => {\n      const url = new URL(member.href)\n      const searchParams = new URLSearchParams(url.search)\n\n      searchParams.set('module', module)\n      url.search = searchParams\n      member.href = url\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['adminDetailsInputs', 'sameAsOwnerCheckBox']\n\n  toggleAdminDetails() {\n    this.adminDetailsInputsTarget.classList.toggle('!max-h-0')\n    this.adminDetailsInputsTarget.querySelectorAll('input').forEach((el) => el.classList.toggle('disabled'))\n  }\n}\n", "import ApplicationController from './application_controller'\n\nexport default class extends ApplicationController {\n  removeEmailField({ target }) {\n    const emailInput = target.closest('.email-input')\n\n    emailInput.nextElementSibling.hidden = false\n    emailInput.remove()\n  }\n}\n", "// NOTE: separate `:not()` selectors has broader browser support than the newer\n//  `:not([inert], [inert] *)` (Feb 2023)\n// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes\n//  the entire query to fail, resulting in no nodes found, which will break a lot\n//  of things... so we have to rely on JS to identify nodes inside an inert container\nconst candidateSelectors = [\n  'input:not([inert])',\n  'select:not([inert])',\n  'textarea:not([inert])',\n  'a[href]:not([inert])',\n  'button:not([inert])',\n  '[tabindex]:not(slot):not([inert])',\n  'audio[controls]:not([inert])',\n  'video[controls]:not([inert])',\n  '[contenteditable]:not([contenteditable=\"false\"]):not([inert])',\n  'details>summary:first-of-type:not([inert])',\n  'details:not([inert])',\n];\nconst candidateSelector = /* #__PURE__ */ candidateSelectors.join(',');\n\nconst NoElement = typeof Element === 'undefined';\n\nconst matches = NoElement\n  ? function () {}\n  : Element.prototype.matches ||\n    Element.prototype.msMatchesSelector ||\n    Element.prototype.webkitMatchesSelector;\n\nconst getRootNode =\n  !NoElement && Element.prototype.getRootNode\n    ? (element) => element?.getRootNode?.()\n    : (element) => element?.ownerDocument;\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Element} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n *  see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n *  False if `node` is falsy.\n */\nconst isInert = function (node, lookUp = true) {\n  // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n  //  JS API property; we have to check the attribute, which can either be empty or 'true';\n  //  if it's `null` (not specified) or 'false', it's an active element\n  const inertAtt = node?.getAttribute?.('inert');\n  const inert = inertAtt === '' || inertAtt === 'true';\n\n  // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n  //  if it weren't for `matches()` not being a function on shadow roots; the following\n  //  code works for any kind of node\n  // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`\n  //  so it likely would not support `:is([inert] *)` either...\n  const result = inert || (lookUp && node && isInert(node.parentNode)); // recursive\n\n  return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nconst isContentEditable = function (node) {\n  // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n  //  to use the attribute directly to check for this, which can either be empty or 'true';\n  //  if it's `null` (not specified) or 'false', it's a non-editable element\n  const attValue = node?.getAttribute?.('contenteditable');\n  return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nconst getCandidates = function (el, includeContainer, filter) {\n  // even if `includeContainer=false`, we still have to check it for inertness because\n  //  if it's inert, all its children are inert\n  if (isInert(el)) {\n    return [];\n  }\n\n  let candidates = Array.prototype.slice.apply(\n    el.querySelectorAll(candidateSelector)\n  );\n  if (includeContainer && matches.call(el, candidateSelector)) {\n    candidates.unshift(el);\n  }\n  candidates = candidates.filter(filter);\n  return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n *  if a function, implies shadow support is enabled and either returns the shadow root of an element\n *  or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nconst getCandidatesIteratively = function (\n  elements,\n  includeContainer,\n  options\n) {\n  const candidates = [];\n  const elementsToCheck = Array.from(elements);\n  while (elementsToCheck.length) {\n    const element = elementsToCheck.shift();\n    if (isInert(element, false)) {\n      // no need to look up since we're drilling down\n      // anything inside this container will also be inert\n      continue;\n    }\n\n    if (element.tagName === 'SLOT') {\n      // add shadow dom slot scope (slot itself cannot be focusable)\n      const assigned = element.assignedElements();\n      const content = assigned.length ? assigned : element.children;\n      const nestedCandidates = getCandidatesIteratively(content, true, options);\n      if (options.flatten) {\n        candidates.push(...nestedCandidates);\n      } else {\n        candidates.push({\n          scopeParent: element,\n          candidates: nestedCandidates,\n        });\n      }\n    } else {\n      // check candidate element\n      const validCandidate = matches.call(element, candidateSelector);\n      if (\n        validCandidate &&\n        options.filter(element) &&\n        (includeContainer || !elements.includes(element))\n      ) {\n        candidates.push(element);\n      }\n\n      // iterate over shadow content if possible\n      const shadowRoot =\n        element.shadowRoot ||\n        // check for an undisclosed shadow\n        (typeof options.getShadowRoot === 'function' &&\n          options.getShadowRoot(element));\n\n      // no inert look up because we're already drilling down and checking for inertness\n      //  on the way down, so all containers to this root node should have already been\n      //  vetted as non-inert\n      const validShadowRoot =\n        !isInert(shadowRoot, false) &&\n        (!options.shadowRootFilter || options.shadowRootFilter(element));\n\n      if (shadowRoot && validShadowRoot) {\n        // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n        //  shadow exists, so look at light dom children as fallback BUT create a scope for any\n        //  child candidates found because they're likely slotted elements (elements that are\n        //  children of the web component element (which has the shadow), in the light dom, but\n        //  slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n        //  _after_ we return from this recursive call\n        const nestedCandidates = getCandidatesIteratively(\n          shadowRoot === true ? element.children : shadowRoot.children,\n          true,\n          options\n        );\n\n        if (options.flatten) {\n          candidates.push(...nestedCandidates);\n        } else {\n          candidates.push({\n            scopeParent: element,\n            candidates: nestedCandidates,\n          });\n        }\n      } else {\n        // there's not shadow so just dig into the element's (light dom) children\n        //  __without__ giving the element special scope treatment\n        elementsToCheck.unshift(...element.children);\n      }\n    }\n  }\n  return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nconst hasTabIndex = function (node) {\n  return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nconst getTabIndex = function (node) {\n  if (!node) {\n    throw new Error('No node provided');\n  }\n\n  if (node.tabIndex < 0) {\n    // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n    // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n    // yet they are still part of the regular tab order; in FF, they get a default\n    // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n    // order, consider their tab index to be 0.\n    // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n    // so if they don't have a tabindex attribute specifically set, assume it's 0.\n    if (\n      (/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) ||\n        isContentEditable(node)) &&\n      !hasTabIndex(node)\n    ) {\n      return 0;\n    }\n  }\n\n  return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n *  has tabIndex -1, but needs to be sorted by document order in order for its content to be\n *  inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nconst getSortOrderTabIndex = function (node, isScope) {\n  const tabIndex = getTabIndex(node);\n\n  if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n    return 0;\n  }\n\n  return tabIndex;\n};\n\nconst sortOrderedTabbables = function (a, b) {\n  return a.tabIndex === b.tabIndex\n    ? a.documentOrder - b.documentOrder\n    : a.tabIndex - b.tabIndex;\n};\n\nconst isInput = function (node) {\n  return node.tagName === 'INPUT';\n};\n\nconst isHiddenInput = function (node) {\n  return isInput(node) && node.type === 'hidden';\n};\n\nconst isDetailsWithSummary = function (node) {\n  const r =\n    node.tagName === 'DETAILS' &&\n    Array.prototype.slice\n      .apply(node.children)\n      .some((child) => child.tagName === 'SUMMARY');\n  return r;\n};\n\nconst getCheckedRadio = function (nodes, form) {\n  for (let i = 0; i < nodes.length; i++) {\n    if (nodes[i].checked && nodes[i].form === form) {\n      return nodes[i];\n    }\n  }\n};\n\nconst isTabbableRadio = function (node) {\n  if (!node.name) {\n    return true;\n  }\n  const radioScope = node.form || getRootNode(node);\n  const queryRadios = function (name) {\n    return radioScope.querySelectorAll(\n      'input[type=\"radio\"][name=\"' + name + '\"]'\n    );\n  };\n\n  let radioSet;\n  if (\n    typeof window !== 'undefined' &&\n    typeof window.CSS !== 'undefined' &&\n    typeof window.CSS.escape === 'function'\n  ) {\n    radioSet = queryRadios(window.CSS.escape(node.name));\n  } else {\n    try {\n      radioSet = queryRadios(node.name);\n    } catch (err) {\n      // eslint-disable-next-line no-console\n      console.error(\n        'Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s',\n        err.message\n      );\n      return false;\n    }\n  }\n\n  const checked = getCheckedRadio(radioSet, node.form);\n  return !checked || checked === node;\n};\n\nconst isRadio = function (node) {\n  return isInput(node) && node.type === 'radio';\n};\n\nconst isNonTabbableRadio = function (node) {\n  return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nconst isNodeAttached = function (node) {\n  // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n  //  (but NOT _the_ document; see second 'If' comment below for more).\n  // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n  //  is attached, and the one we need to check if it's in the document or not (because the\n  //  shadow, and all nodes it contains, is never considered in the document since shadows\n  //  behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n  //  is hidden, or is not in the document itself but is detached, it will affect the shadow's\n  //  visibility, including all the nodes it contains). The host could be any normal node,\n  //  or a custom element (i.e. web component). Either way, that's the one that is considered\n  //  part of the document, not the shadow root, nor any of its children (i.e. the node being\n  //  tested).\n  // To further complicate things, we have to look all the way up until we find a shadow HOST\n  //  that is attached (or find none) because the node might be in nested shadows...\n  // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n  //  document (per the docs) and while it's a Document-type object, that document does not\n  //  appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n  //  to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n  //  using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n  //  node is actually detached.\n  // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n  //  if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n  //  from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n  //  `ownerDocument` will be `null`, hence the optional chaining on it.\n  let nodeRoot = node && getRootNode(node);\n  let nodeRootHost = nodeRoot?.host;\n\n  // in some cases, a detached node will return itself as the root instead of a document or\n  //  shadow root object, in which case, we shouldn't try to look further up the host chain\n  let attached = false;\n  if (nodeRoot && nodeRoot !== node) {\n    attached = !!(\n      nodeRootHost?.ownerDocument?.contains(nodeRootHost) ||\n      node?.ownerDocument?.contains(node)\n    );\n\n    while (!attached && nodeRootHost) {\n      // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n      //  which means we need to get the host's host and check if that parent host is contained\n      //  in (i.e. attached to) the document\n      nodeRoot = getRootNode(nodeRootHost);\n      nodeRootHost = nodeRoot?.host;\n      attached = !!nodeRootHost?.ownerDocument?.contains(nodeRootHost);\n    }\n  }\n\n  return attached;\n};\n\nconst isZeroArea = function (node) {\n  const { width, height } = node.getBoundingClientRect();\n  return width === 0 && height === 0;\n};\nconst isHidden = function (node, { displayCheck, getShadowRoot }) {\n  // NOTE: visibility will be `undefined` if node is detached from the document\n  //  (see notes about this further down), which means we will consider it visible\n  //  (this is legacy behavior from a very long way back)\n  // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n  //  _visibility_ check, not a _display_ check\n  if (getComputedStyle(node).visibility === 'hidden') {\n    return true;\n  }\n\n  const isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n  const nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n  if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n    return true;\n  }\n\n  if (\n    !displayCheck ||\n    displayCheck === 'full' ||\n    displayCheck === 'legacy-full'\n  ) {\n    if (typeof getShadowRoot === 'function') {\n      // figure out if we should consider the node to be in an undisclosed shadow and use the\n      //  'non-zero-area' fallback\n      const originalNode = node;\n      while (node) {\n        const parentElement = node.parentElement;\n        const rootNode = getRootNode(node);\n        if (\n          parentElement &&\n          !parentElement.shadowRoot &&\n          getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n        ) {\n          // node has an undisclosed shadow which means we can only treat it as a black box, so we\n          //  fall back to a non-zero-area test\n          return isZeroArea(node);\n        } else if (node.assignedSlot) {\n          // iterate up slot\n          node = node.assignedSlot;\n        } else if (!parentElement && rootNode !== node.ownerDocument) {\n          // cross shadow boundary\n          node = rootNode.host;\n        } else {\n          // iterate up normal dom\n          node = parentElement;\n        }\n      }\n\n      node = originalNode;\n    }\n    // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n    //  (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n    //  it might be a falsy value, which means shadow DOM support is disabled\n\n    // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n    //  now we can just test to see if it would normally be visible or not, provided it's\n    //  attached to the main document.\n    // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n    //  `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n    if (isNodeAttached(node)) {\n      // this works wherever the node is: if there's at least one client rect, it's\n      //  somehow displayed; it also covers the CSS 'display: contents' case where the\n      //  node itself is hidden in place of its contents; and there's no need to search\n      //  up the hierarchy either\n      return !node.getClientRects().length;\n    }\n\n    // Else, the node isn't attached to the document, which means the `getClientRects()`\n    //  API will __always__ return zero rects (this can happen, for example, if React\n    //  is used to render nodes onto a detached tree, as confirmed in this thread:\n    //  https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n    //\n    // It also means that even window.getComputedStyle(node).display will return `undefined`\n    //  because styles are only computed for nodes that are in the document.\n    //\n    // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n    //  somehow. Though it was never stated officially, anyone who has ever used tabbable\n    //  APIs on nodes in detached containers has actually implicitly used tabbable in what\n    //  was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n    //  considering __everything__ to be visible because of the innability to determine styles.\n    //\n    // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n    //  nodes as visible with the 'none' fallback.__\n    if (displayCheck !== 'legacy-full') {\n      return true; // hidden\n    }\n    // else, fallback to 'none' mode and consider the node visible\n  } else if (displayCheck === 'non-zero-area') {\n    // NOTE: Even though this tests that the node's client rect is non-zero to determine\n    //  whether it's displayed, and that a detached node will __always__ have a zero-area\n    //  client rect, we don't special-case for whether the node is attached or not. In\n    //  this mode, we do want to consider nodes that have a zero area to be hidden at all\n    //  times, and that includes attached or not.\n    return isZeroArea(node);\n  }\n\n  // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n  //  it's visible\n  return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n//  unless they are in the _first_ <legend> element of the top-most disabled\n//  fieldset\nconst isDisabledFromFieldset = function (node) {\n  if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n    let parentNode = node.parentElement;\n    // check if `node` is contained in a disabled <fieldset>\n    while (parentNode) {\n      if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n        // look for the first <legend> among the children of the disabled <fieldset>\n        for (let i = 0; i < parentNode.children.length; i++) {\n          const child = parentNode.children.item(i);\n          // when the first <legend> (in document order) is found\n          if (child.tagName === 'LEGEND') {\n            // if its parent <fieldset> is not nested in another disabled <fieldset>,\n            // return whether `node` is a descendant of its first <legend>\n            return matches.call(parentNode, 'fieldset[disabled] *')\n              ? true\n              : !child.contains(node);\n          }\n        }\n        // the disabled <fieldset> containing `node` has no <legend>\n        return true;\n      }\n      parentNode = parentNode.parentElement;\n    }\n  }\n\n  // else, node's tabbable/focusable state should not be affected by a fieldset's\n  //  enabled/disabled state\n  return false;\n};\n\nconst isNodeMatchingSelectorFocusable = function (options, node) {\n  if (\n    node.disabled ||\n    // we must do an inert look up to filter out any elements inside an inert ancestor\n    //  because we're limited in the type of selectors we can use in JSDom (see related\n    //  note related to `candidateSelectors`)\n    isInert(node) ||\n    isHiddenInput(node) ||\n    isHidden(node, options) ||\n    // For a details element with a summary, the summary element gets the focus\n    isDetailsWithSummary(node) ||\n    isDisabledFromFieldset(node)\n  ) {\n    return false;\n  }\n  return true;\n};\n\nconst isNodeMatchingSelectorTabbable = function (options, node) {\n  if (\n    isNonTabbableRadio(node) ||\n    getTabIndex(node) < 0 ||\n    !isNodeMatchingSelectorFocusable(options, node)\n  ) {\n    return false;\n  }\n  return true;\n};\n\nconst isValidShadowRootTabbable = function (shadowHostNode) {\n  const tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n  if (isNaN(tabIndex) || tabIndex >= 0) {\n    return true;\n  }\n  // If a custom element has an explicit negative tabindex,\n  // browsers will not allow tab targeting said element's children.\n  return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nconst sortByOrder = function (candidates) {\n  const regularTabbables = [];\n  const orderedTabbables = [];\n  candidates.forEach(function (item, i) {\n    const isScope = !!item.scopeParent;\n    const element = isScope ? item.scopeParent : item;\n    const candidateTabindex = getSortOrderTabIndex(element, isScope);\n    const elements = isScope ? sortByOrder(item.candidates) : element;\n    if (candidateTabindex === 0) {\n      isScope\n        ? regularTabbables.push(...elements)\n        : regularTabbables.push(element);\n    } else {\n      orderedTabbables.push({\n        documentOrder: i,\n        tabIndex: candidateTabindex,\n        item: item,\n        isScope: isScope,\n        content: elements,\n      });\n    }\n  });\n\n  return orderedTabbables\n    .sort(sortOrderedTabbables)\n    .reduce((acc, sortable) => {\n      sortable.isScope\n        ? acc.push(...sortable.content)\n        : acc.push(sortable.content);\n      return acc;\n    }, [])\n    .concat(regularTabbables);\n};\n\nconst tabbable = function (container, options) {\n  options = options || {};\n\n  let candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively(\n      [container],\n      options.includeContainer,\n      {\n        filter: isNodeMatchingSelectorTabbable.bind(null, options),\n        flatten: false,\n        getShadowRoot: options.getShadowRoot,\n        shadowRootFilter: isValidShadowRootTabbable,\n      }\n    );\n  } else {\n    candidates = getCandidates(\n      container,\n      options.includeContainer,\n      isNodeMatchingSelectorTabbable.bind(null, options)\n    );\n  }\n  return sortByOrder(candidates);\n};\n\nconst focusable = function (container, options) {\n  options = options || {};\n\n  let candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively(\n      [container],\n      options.includeContainer,\n      {\n        filter: isNodeMatchingSelectorFocusable.bind(null, options),\n        flatten: true,\n        getShadowRoot: options.getShadowRoot,\n      }\n    );\n  } else {\n    candidates = getCandidates(\n      container,\n      options.includeContainer,\n      isNodeMatchingSelectorFocusable.bind(null, options)\n    );\n  }\n\n  return candidates;\n};\n\nconst isTabbable = function (node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, candidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorTabbable(options, node);\n};\n\nconst focusableCandidateSelector = /* #__PURE__ */ candidateSelectors\n  .concat('iframe')\n  .join(',');\n\nconst isFocusable = function (node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, focusableCandidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { tabbable, focusable, isTabbable, isFocusable, getTabIndex };\n", "import {\n  tabbable,\n  focusable,\n  isFocusable,\n  isTabbable,\n  getTabIndex,\n} from 'tabbable';\n\nconst activeFocusTraps = {\n  activateTrap(trapStack, trap) {\n    if (trapStack.length > 0) {\n      const activeTrap = trapStack[trapStack.length - 1];\n      if (activeTrap !== trap) {\n        activeTrap.pause();\n      }\n    }\n\n    const trapIndex = trapStack.indexOf(trap);\n    if (trapIndex === -1) {\n      trapStack.push(trap);\n    } else {\n      // move this existing trap to the front of the queue\n      trapStack.splice(trapIndex, 1);\n      trapStack.push(trap);\n    }\n  },\n\n  deactivateTrap(trapStack, trap) {\n    const trapIndex = trapStack.indexOf(trap);\n    if (trapIndex !== -1) {\n      trapStack.splice(trapIndex, 1);\n    }\n\n    if (trapStack.length > 0) {\n      trapStack[trapStack.length - 1].unpause();\n    }\n  },\n};\n\nconst isSelectableInput = function (node) {\n  return (\n    node.tagName &&\n    node.tagName.toLowerCase() === 'input' &&\n    typeof node.select === 'function'\n  );\n};\n\nconst isEscapeEvent = function (e) {\n  return e?.key === 'Escape' || e?.key === 'Esc' || e?.keyCode === 27;\n};\n\nconst isTabEvent = function (e) {\n  return e?.key === 'Tab' || e?.keyCode === 9;\n};\n\n// checks for TAB by default\nconst isKeyForward = function (e) {\n  return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nconst isKeyBackward = function (e) {\n  return isTabEvent(e) && e.shiftKey;\n};\n\nconst delay = function (fn) {\n  return setTimeout(fn, 0);\n};\n\n// Array.find/findIndex() are not supported on IE; this replicates enough\n//  of Array.findIndex() for our needs\nconst findIndex = function (arr, fn) {\n  let idx = -1;\n\n  arr.every(function (value, i) {\n    if (fn(value)) {\n      idx = i;\n      return false; // break\n    }\n\n    return true; // next\n  });\n\n  return idx;\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n *  the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nconst valueOrHandler = function (value, ...params) {\n  return typeof value === 'function' ? value(...params) : value;\n};\n\nconst getActualTarget = function (event) {\n  // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n  //  shadow host. However, event.target.composedPath() will be an array of\n  //  nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n  //  outer-most (the host HTML document). If we have access to composedPath(),\n  //  then use its first element; otherwise, fall back to event.target (and\n  //  this only works for an _open_ shadow DOM; otherwise,\n  //  composedPath()[0] === event.target always).\n  return event.target.shadowRoot && typeof event.composedPath === 'function'\n    ? event.composedPath()[0]\n    : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n//  current instance use the same stack if `userOptions.trapStack` isn't specified\nconst internalTrapStack = [];\n\nconst createFocusTrap = function (elements, userOptions) {\n  // SSR: a live trap shouldn't be created in this type of environment so this\n  //  should be safe code to execute if the `document` option isn't specified\n  const doc = userOptions?.document || document;\n\n  const trapStack = userOptions?.trapStack || internalTrapStack;\n\n  const config = {\n    returnFocusOnDeactivate: true,\n    escapeDeactivates: true,\n    delayInitialFocus: true,\n    isKeyForward,\n    isKeyBackward,\n    ...userOptions,\n  };\n\n  const state = {\n    // containers given to createFocusTrap()\n    // @type {Array<HTMLElement>}\n    containers: [],\n\n    // list of objects identifying tabbable nodes in `containers` in the trap\n    // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n    //  is active, but the trap should never get to a state where there isn't at least one group\n    //  with at least one tabbable node in it (that would lead to an error condition that would\n    //  result in an error being thrown)\n    // @type {Array<{\n    //   container: HTMLElement,\n    //   tabbableNodes: Array<HTMLElement>, // empty if none\n    //   focusableNodes: Array<HTMLElement>, // empty if none\n    //   posTabIndexesFound: boolean,\n    //   firstTabbableNode: HTMLElement|undefined,\n    //   lastTabbableNode: HTMLElement|undefined,\n    //   firstDomTabbableNode: HTMLElement|undefined,\n    //   lastDomTabbableNode: HTMLElement|undefined,\n    //   nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n    // }>}\n    containerGroups: [], // same order/length as `containers` list\n\n    // references to objects in `containerGroups`, but only those that actually have\n    //  tabbable nodes in them\n    // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n    //  the same length\n    tabbableGroups: [],\n\n    nodeFocusedBeforeActivation: null,\n    mostRecentlyFocusedNode: null,\n    active: false,\n    paused: false,\n\n    // timer ID for when delayInitialFocus is true and initial focus in this trap\n    //  has been delayed during activation\n    delayInitialFocusTimer: undefined,\n\n    // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n    recentNavEvent: undefined,\n  };\n\n  let trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n  /**\n   * Gets a configuration option value.\n   * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n   *  value will be taken from this object. Otherwise, value will be taken from base configuration.\n   * @param {string} optionName Name of the option whose value is sought.\n   * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n   *  IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n   */\n  const getOption = (configOverrideOptions, optionName, configOptionName) => {\n    return configOverrideOptions &&\n      configOverrideOptions[optionName] !== undefined\n      ? configOverrideOptions[optionName]\n      : config[configOptionName || optionName];\n  };\n\n  /**\n   * Finds the index of the container that contains the element.\n   * @param {HTMLElement} element\n   * @param {Event} [event] If available, and `element` isn't directly found in any container,\n   *  the event's composed path is used to see if includes any known trap containers in the\n   *  case where the element is inside a Shadow DOM.\n   * @returns {number} Index of the container in either `state.containers` or\n   *  `state.containerGroups` (the order/length of these lists are the same); -1\n   *  if the element isn't found.\n   */\n  const findContainerIndex = function (element, event) {\n    const composedPath =\n      typeof event?.composedPath === 'function'\n        ? event.composedPath()\n        : undefined;\n    // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n    //  nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n    //  and we still need to find the element in there\n    return state.containerGroups.findIndex(\n      ({ container, tabbableNodes }) =>\n        container.contains(element) ||\n        // fall back to explicit tabbable search which will take into consideration any\n        //  web components if the `tabbableOptions.getShadowRoot` option was used for\n        //  the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n        //  look inside web components even if open)\n        composedPath?.includes(container) ||\n        tabbableNodes.find((node) => node === element)\n    );\n  };\n\n  /**\n   * Gets the node for the given option, which is expected to be an option that\n   *  can be either a DOM node, a string that is a selector to get a node, `false`\n   *  (if a node is explicitly NOT given), or a function that returns any of these\n   *  values.\n   * @param {string} optionName\n   * @returns {undefined | false | HTMLElement | SVGElement} Returns\n   *  `undefined` if the option is not specified; `false` if the option\n   *  resolved to `false` (node explicitly not given); otherwise, the resolved\n   *  DOM node.\n   * @throws {Error} If the option is set, not `false`, and is not, or does not\n   *  resolve to a node.\n   */\n  const getNodeForOption = function (optionName, ...params) {\n    let optionValue = config[optionName];\n\n    if (typeof optionValue === 'function') {\n      optionValue = optionValue(...params);\n    }\n\n    if (optionValue === true) {\n      optionValue = undefined; // use default value\n    }\n\n    if (!optionValue) {\n      if (optionValue === undefined || optionValue === false) {\n        return optionValue;\n      }\n      // else, empty string (invalid), null (invalid), 0 (invalid)\n\n      throw new Error(\n        `\\`${optionName}\\` was specified but was not a node, or did not return a node`\n      );\n    }\n\n    let node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n    if (typeof optionValue === 'string') {\n      node = doc.querySelector(optionValue); // resolve to node, or null if fails\n      if (!node) {\n        throw new Error(\n          `\\`${optionName}\\` as selector refers to no known node`\n        );\n      }\n    }\n\n    return node;\n  };\n\n  const getInitialFocusNode = function () {\n    let node = getNodeForOption('initialFocus');\n\n    // false explicitly indicates we want no initialFocus at all\n    if (node === false) {\n      return false;\n    }\n\n    if (node === undefined || !isFocusable(node, config.tabbableOptions)) {\n      // option not specified nor focusable: use fallback options\n      if (findContainerIndex(doc.activeElement) >= 0) {\n        node = doc.activeElement;\n      } else {\n        const firstTabbableGroup = state.tabbableGroups[0];\n        const firstTabbableNode =\n          firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n        // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n        node = firstTabbableNode || getNodeForOption('fallbackFocus');\n      }\n    }\n\n    if (!node) {\n      throw new Error(\n        'Your focus-trap needs to have at least one focusable element'\n      );\n    }\n\n    return node;\n  };\n\n  const updateTabbableNodes = function () {\n    state.containerGroups = state.containers.map((container) => {\n      const tabbableNodes = tabbable(container, config.tabbableOptions);\n\n      // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n      //  are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n      //  are focusable but not tabbable\n      const focusableNodes = focusable(container, config.tabbableOptions);\n\n      const firstTabbableNode =\n        tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n      const lastTabbableNode =\n        tabbableNodes.length > 0\n          ? tabbableNodes[tabbableNodes.length - 1]\n          : undefined;\n\n      const firstDomTabbableNode = focusableNodes.find((node) =>\n        isTabbable(node)\n      );\n      const lastDomTabbableNode = focusableNodes\n        .slice()\n        .reverse()\n        .find((node) => isTabbable(node));\n\n      const posTabIndexesFound = !!tabbableNodes.find(\n        (node) => getTabIndex(node) > 0\n      );\n\n      return {\n        container,\n        tabbableNodes,\n        focusableNodes,\n\n        /** True if at least one node with positive `tabindex` was found in this container. */\n        posTabIndexesFound,\n\n        /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n        firstTabbableNode,\n        /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n        lastTabbableNode,\n\n        // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n        //  would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n        //  because that API doesn't work with Shadow DOM as well as it should (@see\n        //  https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n        //  to address an edge case related to positive tabindex support, this seems like a much easier,\n        //  \"close enough most of the time\" alternative for positive tabindexes which should generally\n        //  be avoided anyway...\n        /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n        firstDomTabbableNode,\n        /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n        lastDomTabbableNode,\n\n        /**\n         * Finds the __tabbable__ node that follows the given node in the specified direction,\n         *  in this container, if any.\n         * @param {HTMLElement} node\n         * @param {boolean} [forward] True if going in forward tab order; false if going\n         *  in reverse.\n         * @returns {HTMLElement|undefined} The next tabbable node, if any.\n         */\n        nextTabbableNode(node, forward = true) {\n          const nodeIdx = tabbableNodes.indexOf(node);\n          if (nodeIdx < 0) {\n            // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n            //  since `node` should at least have been focusable, we assume that's the case and mimic\n            //  what browsers do, which is set focus to the next node in __document position order__,\n            //  regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n            //  above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n            //  basic DOM order\n            if (forward) {\n              return focusableNodes\n                .slice(focusableNodes.indexOf(node) + 1)\n                .find((el) => isTabbable(el));\n            }\n\n            return focusableNodes\n              .slice(0, focusableNodes.indexOf(node))\n              .reverse()\n              .find((el) => isTabbable(el));\n          }\n\n          return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n        },\n      };\n    });\n\n    state.tabbableGroups = state.containerGroups.filter(\n      (group) => group.tabbableNodes.length > 0\n    );\n\n    // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n    if (\n      state.tabbableGroups.length <= 0 &&\n      !getNodeForOption('fallbackFocus') // returning false not supported for this option\n    ) {\n      throw new Error(\n        'Your focus-trap must have at least one container with at least one tabbable node in it at all times'\n      );\n    }\n\n    // NOTE: Positive tabindexes are only properly supported in single-container traps because\n    //  doing it across multiple containers where tabindexes could be all over the place\n    //  would require Tabbable to support multiple containers, would require additional\n    //  specialized Shadow DOM support, and would require Tabbable's multi-container support\n    //  to look at those containers in document position order rather than user-provided\n    //  order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n    //  https://github.com/focus-trap/focus-trap/issues/375 for more details.\n    if (\n      state.containerGroups.find((g) => g.posTabIndexesFound) &&\n      state.containerGroups.length > 1\n    ) {\n      throw new Error(\n        \"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\"\n      );\n    }\n  };\n\n  /**\n   * Gets the current activeElement. If it's a web-component and has open shadow-root\n   * it will recursively search inside shadow roots for the \"true\" activeElement.\n   *\n   * @param {Document | ShadowRoot} el\n   *\n   * @returns {HTMLElement} The element that currently has the focus\n   **/\n  const getActiveElement = function (el) {\n    const activeElement = el.activeElement;\n\n    if (!activeElement) {\n      return;\n    }\n\n    if (\n      activeElement.shadowRoot &&\n      activeElement.shadowRoot.activeElement !== null\n    ) {\n      return getActiveElement(activeElement.shadowRoot);\n    }\n\n    return activeElement;\n  };\n\n  const tryFocus = function (node) {\n    if (node === false) {\n      return;\n    }\n\n    if (node === getActiveElement(document)) {\n      return;\n    }\n\n    if (!node || !node.focus) {\n      tryFocus(getInitialFocusNode());\n      return;\n    }\n\n    node.focus({ preventScroll: !!config.preventScroll });\n    // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n    state.mostRecentlyFocusedNode = node;\n\n    if (isSelectableInput(node)) {\n      node.select();\n    }\n  };\n\n  const getReturnFocusNode = function (previousActiveElement) {\n    const node = getNodeForOption('setReturnFocus', previousActiveElement);\n    return node ? node : node === false ? false : previousActiveElement;\n  };\n\n  /**\n   * Finds the next node (in either direction) where focus should move according to a\n   *  keyboard focus-in event.\n   * @param {Object} params\n   * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n   * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n   *  will be used to determine the `target`). Ignored if `target` is specified.\n   * @param {boolean} [params.isBackward] True if focus should move backward.\n   * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n   *  determined given the current state of the trap.\n   */\n  const findNextNavNode = function ({ target, event, isBackward = false }) {\n    target = target || getActualTarget(event);\n    updateTabbableNodes();\n\n    let destinationNode = null;\n\n    if (state.tabbableGroups.length > 0) {\n      // make sure the target is actually contained in a group\n      // NOTE: the target may also be the container itself if it's focusable\n      //  with tabIndex='-1' and was given initial focus\n      const containerIndex = findContainerIndex(target, event);\n      const containerGroup =\n        containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n\n      if (containerIndex < 0) {\n        // target not found in any group: quite possible focus has escaped the trap,\n        //  so bring it back into...\n        if (isBackward) {\n          // ...the last node in the last group\n          destinationNode =\n            state.tabbableGroups[state.tabbableGroups.length - 1]\n              .lastTabbableNode;\n        } else {\n          // ...the first node in the first group\n          destinationNode = state.tabbableGroups[0].firstTabbableNode;\n        }\n      } else if (isBackward) {\n        // REVERSE\n\n        // is the target the first tabbable node in a group?\n        let startOfGroupIndex = findIndex(\n          state.tabbableGroups,\n          ({ firstTabbableNode }) => target === firstTabbableNode\n        );\n\n        if (\n          startOfGroupIndex < 0 &&\n          (containerGroup.container === target ||\n            (isFocusable(target, config.tabbableOptions) &&\n              !isTabbable(target, config.tabbableOptions) &&\n              !containerGroup.nextTabbableNode(target, false)))\n        ) {\n          // an exception case where the target is either the container itself, or\n          //  a non-tabbable node that was given focus (i.e. tabindex is negative\n          //  and user clicked on it or node was programmatically given focus)\n          //  and is not followed by any other tabbable node, in which\n          //  case, we should handle shift+tab as if focus were on the container's\n          //  first tabbable node, and go to the last tabbable node of the LAST group\n          startOfGroupIndex = containerIndex;\n        }\n\n        if (startOfGroupIndex >= 0) {\n          // YES: then shift+tab should go to the last tabbable node in the\n          //  previous group (and wrap around to the last tabbable node of\n          //  the LAST group if it's the first tabbable node of the FIRST group)\n          const destinationGroupIndex =\n            startOfGroupIndex === 0\n              ? state.tabbableGroups.length - 1\n              : startOfGroupIndex - 1;\n\n          const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n          destinationNode =\n            getTabIndex(target) >= 0\n              ? destinationGroup.lastTabbableNode\n              : destinationGroup.lastDomTabbableNode;\n        } else if (!isTabEvent(event)) {\n          // user must have customized the nav keys so we have to move focus manually _within_\n          //  the active group: do this based on the order determined by tabbable()\n          destinationNode = containerGroup.nextTabbableNode(target, false);\n        }\n      } else {\n        // FORWARD\n\n        // is the target the last tabbable node in a group?\n        let lastOfGroupIndex = findIndex(\n          state.tabbableGroups,\n          ({ lastTabbableNode }) => target === lastTabbableNode\n        );\n\n        if (\n          lastOfGroupIndex < 0 &&\n          (containerGroup.container === target ||\n            (isFocusable(target, config.tabbableOptions) &&\n              !isTabbable(target, config.tabbableOptions) &&\n              !containerGroup.nextTabbableNode(target)))\n        ) {\n          // an exception case where the target is the container itself, or\n          //  a non-tabbable node that was given focus (i.e. tabindex is negative\n          //  and user clicked on it or node was programmatically given focus)\n          //  and is not followed by any other tabbable node, in which\n          //  case, we should handle tab as if focus were on the container's\n          //  last tabbable node, and go to the first tabbable node of the FIRST group\n          lastOfGroupIndex = containerIndex;\n        }\n\n        if (lastOfGroupIndex >= 0) {\n          // YES: then tab should go to the first tabbable node in the next\n          //  group (and wrap around to the first tabbable node of the FIRST\n          //  group if it's the last tabbable node of the LAST group)\n          const destinationGroupIndex =\n            lastOfGroupIndex === state.tabbableGroups.length - 1\n              ? 0\n              : lastOfGroupIndex + 1;\n\n          const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n          destinationNode =\n            getTabIndex(target) >= 0\n              ? destinationGroup.firstTabbableNode\n              : destinationGroup.firstDomTabbableNode;\n        } else if (!isTabEvent(event)) {\n          // user must have customized the nav keys so we have to move focus manually _within_\n          //  the active group: do this based on the order determined by tabbable()\n          destinationNode = containerGroup.nextTabbableNode(target);\n        }\n      }\n    } else {\n      // no groups available\n      // NOTE: the fallbackFocus option does not support returning false to opt-out\n      destinationNode = getNodeForOption('fallbackFocus');\n    }\n\n    return destinationNode;\n  };\n\n  // This needs to be done on mousedown and touchstart instead of click\n  // so that it precedes the focus event.\n  const checkPointerDown = function (e) {\n    const target = getActualTarget(e);\n\n    if (findContainerIndex(target, e) >= 0) {\n      // allow the click since it ocurred inside the trap\n      return;\n    }\n\n    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n      // immediately deactivate the trap\n      trap.deactivate({\n        // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n        //  which will result in the outside click setting focus to the node\n        //  that was clicked (and if not focusable, to \"nothing\"); by setting\n        //  `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n        //  on activation (or the configured `setReturnFocus` node), whether the\n        //  outside click was on a focusable node or not\n        returnFocus: config.returnFocusOnDeactivate,\n      });\n      return;\n    }\n\n    // This is needed for mobile devices.\n    // (If we'll only let `click` events through,\n    // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n    if (valueOrHandler(config.allowOutsideClick, e)) {\n      // allow the click outside the trap to take place\n      return;\n    }\n\n    // otherwise, prevent the click\n    e.preventDefault();\n  };\n\n  // In case focus escapes the trap for some strange reason, pull it back in.\n  // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n  //  scrolling if the node that got focused was out of view; there's nothing we can do to\n  //  prevent that from happening by the time we discover that focus escaped\n  const checkFocusIn = function (event) {\n    const target = getActualTarget(event);\n    const targetContained = findContainerIndex(target, event) >= 0;\n\n    // In Firefox when you Tab out of an iframe the Document is briefly focused.\n    if (targetContained || target instanceof Document) {\n      if (targetContained) {\n        state.mostRecentlyFocusedNode = target;\n      }\n    } else {\n      // escaped! pull it back in to where it just left\n      event.stopImmediatePropagation();\n\n      // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n      //  it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n      //  toward a node with a positive tab index\n      let nextNode; // next node to focus, if we find one\n      let navAcrossContainers = true;\n      if (state.mostRecentlyFocusedNode) {\n        if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n          // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n          const mruContainerIdx = findContainerIndex(\n            state.mostRecentlyFocusedNode\n          );\n          // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n          //  and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n          //  with at least one tabbable node in order to function, so this could be the other container\n          //  with nothing tabbable in it)\n          const { tabbableNodes } = state.containerGroups[mruContainerIdx];\n          if (tabbableNodes.length > 0) {\n            // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n            const mruTabIdx = tabbableNodes.findIndex(\n              (node) => node === state.mostRecentlyFocusedNode\n            );\n            if (mruTabIdx >= 0) {\n              if (config.isKeyForward(state.recentNavEvent)) {\n                if (mruTabIdx + 1 < tabbableNodes.length) {\n                  nextNode = tabbableNodes[mruTabIdx + 1];\n                  navAcrossContainers = false;\n                }\n                // else, don't wrap within the container as focus should move to next/previous\n                //  container\n              } else {\n                if (mruTabIdx - 1 >= 0) {\n                  nextNode = tabbableNodes[mruTabIdx - 1];\n                  navAcrossContainers = false;\n                }\n                // else, don't wrap within the container as focus should move to next/previous\n                //  container\n              }\n              // else, don't find in container order without considering direction too\n            }\n          }\n          // else, no tabbable nodes in that container (which means we must have at least one other\n          //  container with at least one tabbable node in it, otherwise focus-trap would've thrown\n          //  an error the last time updateTabbableNodes() was run): find next node among all known\n          //  containers\n        } else {\n          // check to see if there's at least one tabbable node with a positive tab index inside\n          //  the trap because focus seems to escape when navigating backward from a tabbable node\n          //  with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n          //  the greatest positive tab index like it should)\n          if (\n            !state.containerGroups.some((g) =>\n              g.tabbableNodes.some((n) => getTabIndex(n) > 0)\n            )\n          ) {\n            // no containers with tabbable nodes with positive tab indexes which means the focus\n            //  escaped for some other reason and we should just execute the fallback to the\n            //  MRU node or initial focus node, if any\n            navAcrossContainers = false;\n          }\n        }\n      } else {\n        // no MRU node means we're likely in some initial condition when the trap has just\n        //  been activated and initial focus hasn't been given yet, in which case we should\n        //  fall through to trying to focus the initial focus node, which is what should\n        //  happen below at this point in the logic\n        navAcrossContainers = false;\n      }\n\n      if (navAcrossContainers) {\n        nextNode = findNextNavNode({\n          // move FROM the MRU node, not event-related node (which will be the node that is\n          //  outside the trap causing the focus escape we're trying to fix)\n          target: state.mostRecentlyFocusedNode,\n          isBackward: config.isKeyBackward(state.recentNavEvent),\n        });\n      }\n\n      if (nextNode) {\n        tryFocus(nextNode);\n      } else {\n        tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n      }\n    }\n\n    state.recentNavEvent = undefined; // clear\n  };\n\n  // Hijack key nav events on the first and last focusable nodes of the trap,\n  // in order to prevent focus from escaping. If it escapes for even a\n  // moment it can end up scrolling the page and causing confusion so we\n  // kind of need to capture the action at the keydown phase.\n  const checkKeyNav = function (event, isBackward = false) {\n    state.recentNavEvent = event;\n\n    const destinationNode = findNextNavNode({ event, isBackward });\n    if (destinationNode) {\n      if (isTabEvent(event)) {\n        // since tab natively moves focus, we wouldn't have a destination node unless we\n        //  were on the edge of a container and had to move to the next/previous edge, in\n        //  which case we want to prevent default to keep the browser from moving focus\n        //  to where it normally would\n        event.preventDefault();\n      }\n      tryFocus(destinationNode);\n    }\n    // else, let the browser take care of [shift+]tab and move the focus\n  };\n\n  const checkKey = function (event) {\n    if (\n      isEscapeEvent(event) &&\n      valueOrHandler(config.escapeDeactivates, event) !== false\n    ) {\n      event.preventDefault();\n      trap.deactivate();\n      return;\n    }\n\n    if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n      checkKeyNav(event, config.isKeyBackward(event));\n    }\n  };\n\n  const checkClick = function (e) {\n    const target = getActualTarget(e);\n\n    if (findContainerIndex(target, e) >= 0) {\n      return;\n    }\n\n    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n      return;\n    }\n\n    if (valueOrHandler(config.allowOutsideClick, e)) {\n      return;\n    }\n\n    e.preventDefault();\n    e.stopImmediatePropagation();\n  };\n\n  //\n  // EVENT LISTENERS\n  //\n\n  const addListeners = function () {\n    if (!state.active) {\n      return;\n    }\n\n    // There can be only one listening focus trap at a time\n    activeFocusTraps.activateTrap(trapStack, trap);\n\n    // Delay ensures that the focused element doesn't capture the event\n    // that caused the focus trap activation.\n    state.delayInitialFocusTimer = config.delayInitialFocus\n      ? delay(function () {\n          tryFocus(getInitialFocusNode());\n        })\n      : tryFocus(getInitialFocusNode());\n\n    doc.addEventListener('focusin', checkFocusIn, true);\n    doc.addEventListener('mousedown', checkPointerDown, {\n      capture: true,\n      passive: false,\n    });\n    doc.addEventListener('touchstart', checkPointerDown, {\n      capture: true,\n      passive: false,\n    });\n    doc.addEventListener('click', checkClick, {\n      capture: true,\n      passive: false,\n    });\n    doc.addEventListener('keydown', checkKey, {\n      capture: true,\n      passive: false,\n    });\n\n    return trap;\n  };\n\n  const removeListeners = function () {\n    if (!state.active) {\n      return;\n    }\n\n    doc.removeEventListener('focusin', checkFocusIn, true);\n    doc.removeEventListener('mousedown', checkPointerDown, true);\n    doc.removeEventListener('touchstart', checkPointerDown, true);\n    doc.removeEventListener('click', checkClick, true);\n    doc.removeEventListener('keydown', checkKey, true);\n\n    return trap;\n  };\n\n  //\n  // MUTATION OBSERVER\n  //\n\n  const checkDomRemoval = function (mutations) {\n    const isFocusedNodeRemoved = mutations.some(function (mutation) {\n      const removedNodes = Array.from(mutation.removedNodes);\n      return removedNodes.some(function (node) {\n        return node === state.mostRecentlyFocusedNode;\n      });\n    });\n\n    // If the currently focused is removed then browsers will move focus to the\n    // <body> element. If this happens, try to move focus back into the trap.\n    if (isFocusedNodeRemoved) {\n      tryFocus(getInitialFocusNode());\n    }\n  };\n\n  // Use MutationObserver - if supported - to detect if focused node is removed\n  // from the DOM.\n  const mutationObserver =\n    typeof window !== 'undefined' && 'MutationObserver' in window\n      ? new MutationObserver(checkDomRemoval)\n      : undefined;\n\n  const updateObservedNodes = function () {\n    if (!mutationObserver) {\n      return;\n    }\n\n    mutationObserver.disconnect();\n    if (state.active && !state.paused) {\n      state.containers.map(function (container) {\n        mutationObserver.observe(container, {\n          subtree: true,\n          childList: true,\n        });\n      });\n    }\n  };\n\n  //\n  // TRAP DEFINITION\n  //\n\n  trap = {\n    get active() {\n      return state.active;\n    },\n\n    get paused() {\n      return state.paused;\n    },\n\n    activate(activateOptions) {\n      if (state.active) {\n        return this;\n      }\n\n      const onActivate = getOption(activateOptions, 'onActivate');\n      const onPostActivate = getOption(activateOptions, 'onPostActivate');\n      const checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n      if (!checkCanFocusTrap) {\n        updateTabbableNodes();\n      }\n\n      state.active = true;\n      state.paused = false;\n      state.nodeFocusedBeforeActivation = doc.activeElement;\n\n      onActivate?.();\n\n      const finishActivation = () => {\n        if (checkCanFocusTrap) {\n          updateTabbableNodes();\n        }\n        addListeners();\n        updateObservedNodes();\n        onPostActivate?.();\n      };\n\n      if (checkCanFocusTrap) {\n        checkCanFocusTrap(state.containers.concat()).then(\n          finishActivation,\n          finishActivation\n        );\n        return this;\n      }\n\n      finishActivation();\n      return this;\n    },\n\n    deactivate(deactivateOptions) {\n      if (!state.active) {\n        return this;\n      }\n\n      const options = {\n        onDeactivate: config.onDeactivate,\n        onPostDeactivate: config.onPostDeactivate,\n        checkCanReturnFocus: config.checkCanReturnFocus,\n        ...deactivateOptions,\n      };\n\n      clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n      state.delayInitialFocusTimer = undefined;\n\n      removeListeners();\n      state.active = false;\n      state.paused = false;\n      updateObservedNodes();\n\n      activeFocusTraps.deactivateTrap(trapStack, trap);\n\n      const onDeactivate = getOption(options, 'onDeactivate');\n      const onPostDeactivate = getOption(options, 'onPostDeactivate');\n      const checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n      const returnFocus = getOption(\n        options,\n        'returnFocus',\n        'returnFocusOnDeactivate'\n      );\n\n      onDeactivate?.();\n\n      const finishDeactivation = () => {\n        delay(() => {\n          if (returnFocus) {\n            tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n          }\n          onPostDeactivate?.();\n        });\n      };\n\n      if (returnFocus && checkCanReturnFocus) {\n        checkCanReturnFocus(\n          getReturnFocusNode(state.nodeFocusedBeforeActivation)\n        ).then(finishDeactivation, finishDeactivation);\n        return this;\n      }\n\n      finishDeactivation();\n      return this;\n    },\n\n    pause(pauseOptions) {\n      if (state.paused || !state.active) {\n        return this;\n      }\n\n      const onPause = getOption(pauseOptions, 'onPause');\n      const onPostPause = getOption(pauseOptions, 'onPostPause');\n\n      state.paused = true;\n      onPause?.();\n\n      removeListeners();\n      updateObservedNodes();\n\n      onPostPause?.();\n      return this;\n    },\n\n    unpause(unpauseOptions) {\n      if (!state.paused || !state.active) {\n        return this;\n      }\n\n      const onUnpause = getOption(unpauseOptions, 'onUnpause');\n      const onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');\n\n      state.paused = false;\n      onUnpause?.();\n\n      updateTabbableNodes();\n      addListeners();\n      updateObservedNodes();\n\n      onPostUnpause?.();\n      return this;\n    },\n\n    updateContainerElements(containerElements) {\n      const elementsAsArray = [].concat(containerElements).filter(Boolean);\n\n      state.containers = elementsAsArray.map((element) =>\n        typeof element === 'string' ? doc.querySelector(element) : element\n      );\n\n      if (state.active) {\n        updateTabbableNodes();\n      }\n\n      updateObservedNodes();\n\n      return this;\n    },\n  };\n\n  // initialize container elements\n  trap.updateContainerElements(elements);\n\n  return trap;\n};\n\nexport { createFocusTrap };\n", "import { Controller } from '@hotwired/stimulus'\nimport { autoUpdate, computePosition, autoPlacement, offset, arrow } from '@floating-ui/dom'\nimport * as focusTrap from 'focus-trap'\n\nexport default class extends Controller {\n  static targets = ['trigger', 'body', 'arrow']\n  static values = { opened: Boolean, placement: String }\n\n  connect() {\n    this.focusTrap = focusTrap.createFocusTrap(this.bodyTarget, {\n      fallbackFocus: this.bodyTarget,\n      setReturnFocus: this.triggerTarget,\n      allowOutsideClick: this.#allowClickOutside.bind(this),\n      onDeactivate: () => (this.openedValue = false),\n    })\n  }\n\n  toggle() {\n    this.openedValue = !this.openedValue\n  }\n\n  close() {\n    this.openedValue = false\n  }\n\n  openedValueChanged(opened) {\n    this.triggerTarget.setAttribute('aria-expanded', opened)\n\n    if (!this.focusTrap) return\n\n    if (opened) {\n      this.#openBody()\n      this.focusTrap.activate()\n      return\n    }\n\n    this.#closeBody()\n    this.focusTrap.deactivate()\n  }\n\n  placementValueChanged(_, prevPosition) {\n    if (!prevPosition) return\n\n    this.#computePosition()\n  }\n\n  #openBody() {\n    this.#computePosition()\n\n    this.bodyTarget.show()\n\n    this.bodyTarget.classList.add('block')\n  }\n\n  #closeBody() {\n    if (this.cleanupAutoUpdate) {\n      this.cleanupAutoUpdate()\n    }\n\n    this.bodyTarget.close()\n\n    this.bodyTarget.addEventListener(\n      'animationend',\n      () => {\n        this.bodyTarget.classList.remove('block')\n      },\n      { once: true },\n    )\n  }\n\n  #computePosition() {\n    const middleware = [offset(8)]\n\n    if (this.placementValue === 'auto') {\n      middleware.push(autoPlacement())\n    }\n\n    if (this.hasArrowTarget) {\n      middleware.push(arrow({ element: this.arrowTarget }))\n    }\n\n    if (this.cleanupAutoUpdate) {\n      this.cleanupAutoUpdate()\n    }\n\n    this.cleanupAutoUpdate = autoUpdate(this.triggerTarget, this.bodyTarget, () => {\n      computePosition(this.triggerTarget, this.bodyTarget, {\n        placement: this.placementValue,\n        middleware,\n      }).then(({ x, y, middlewareData, placement }) => {\n        Object.assign(this.bodyTarget.style, {\n          left: `${x}px`,\n          top: `${y}px`,\n        })\n\n        const parsedPlacement = placement.split('-')[0]\n\n        this.bodyTarget.setAttribute('data-side', parsedPlacement)\n\n        if (!middlewareData.arrow) return\n\n        const { x: arrowX, y: arrowY } = middlewareData.arrow\n        let position = {\n          left: arrowX === undefined ? '' : `${arrowX}px`,\n          top: arrowY === undefined ? '' : `${arrowY}px`,\n        }\n\n        switch (parsedPlacement) {\n          case 'bottom':\n            position.top = this.#halfArrowWidth\n            break\n          case 'top':\n            position.bottom = this.#halfArrowWidth\n            break\n          case 'right':\n            position.left = this.#halfArrowWidth\n            break\n          case 'left':\n            position.right = this.#halfArrowWidth\n            break\n          default:\n            position.bottom = this.#halfArrowWidth\n        }\n\n        Object.assign(this.arrowTarget.style, position)\n      })\n    })\n  }\n\n  #allowClickOutside({ target }) {\n    if (target === this.triggerTarget) {\n      return true\n    }\n\n    if (getComputedStyle(target).position === 'absolute') {\n      return false\n    }\n\n    this.openedValue = false\n    return true\n  }\n\n  get #halfArrowWidth() {\n    return `-${this.arrowTarget.offsetWidth / 2}px`\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['count']\n\n  toggle({ detail: { collapsed } }) {\n    if (!this.hasCountTarget) {\n      return\n    }\n\n    if (collapsed) {\n      this.countTarget.classList.add('hidden')\n    } else {\n      this.countTarget.classList.remove('hidden')\n    }\n  }\n}\n", "import { Turbo } from '@hotwired/turbo-rails'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  connect() {\n    document.addEventListener('turbo:submit-end', this.submit.bind(this))\n  }\n\n  submit(event) {\n    if (event.detail.success && event.detail.fetchResponse.response.redirected) {\n      Turbo.visit(event.detail.fetchResponse.response.url)\n    }\n  }\n\n  disconnect() {\n    document.removeEventListener('turbo:submit-end', this.submit.bind(this))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport TomSelect from 'tom-select'\n\nexport default class extends Controller {\n  static values = {\n    placeholder: String,\n    polymorphic: Boolean,\n    selectedType: { type: String, default: 'Person' },\n  }\n\n  initialize() {\n    this.tomSelect = new TomSelect(this.element, {\n      search: false,\n      persist: false,\n      highlight: false,\n      addPrecedence: true,\n      selectOnTab: true,\n      valueField: 'id',\n      labelField: 'text',\n      placeholder: this.placeholderValue,\n      render: {\n        item: this.#renderItem.bind(this),\n        option: this.#renderOption,\n        no_results: null,\n      },\n    })\n  }\n\n  updateType(pluralType) {\n    if (pluralType === 'families') {\n      this.#type = 'Family'\n      return\n    }\n\n    this.#type = 'Person'\n  }\n\n  set #type(value) {\n    this.selectedTypeValue = value\n    this.element.nextElementSibling.nextElementSibling.value = value\n  }\n\n  #renderItem(item, escape) {\n    if (this.polymorphicValue) {\n      this.updateType(item.type)\n    }\n\n    return `<span class=\"flex gap-1 items-center\">\n              <img src=\"${escape(item.image)}\" class=\"employee-image !w-4 !h-4\" />\n              ${escape(item.text)}\n            </span>`\n  }\n\n  #renderOption(item, escape) {\n    return `<span class=\"flex gap-2 items-center\">\n              <img src=\"${escape(item.image)}\" class=\"employee-image !w-10 !h-10\" />\n              ${escape(item.text)}\n            </span>`\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = { hidden: { type: Boolean, default: true } }\n  static targets = ['container']\n\n  show() {\n    this.hiddenValue = false\n  }\n\n  hide() {\n    this.hiddenValue = true\n  }\n\n  toggle() {\n    this.hiddenValue = !this.hiddenValue\n  }\n\n  hiddenValueChanged(value) {\n    this.containerTargets.forEach((container) => (container.hidden = value))\n  }\n}\n", "import ToggleVisibilityController from './toggle_visibility_controller'\n\nexport default class extends ToggleVisibilityController {\n  static targets = ['input']\n\n  populate({ params: { values } }) {\n    Object.entries(values).forEach(([key, value]) => {\n      const input = this.inputTargets.find((inp) => inp.name.includes(key))\n\n      if (!input) return\n\n      input.value = value\n    })\n  }\n\n  clear() {\n    this.inputTargets.forEach((input) => {\n      input.value = null\n\n      input.dispatchEvent(new Event('change'))\n    })\n  }\n\n  hiddenValueChanged(value) {\n    super.hiddenValueChanged(value)\n\n    this.containerTargets.forEach((container) => {\n      const inputs = [...container.querySelectorAll('input'), ...container.querySelectorAll('select')]\n\n      inputs\n        .filter((input) => {\n          const closestController = input.closest('[data-controller*=\"hideable-form\"]')\n\n          return closestController === this.element\n        })\n        .forEach((input) => (input.disabled = value))\n\n      const tomSelects = [...container.querySelectorAll('[data-controller*=\"tom-select\"]')]\n        .filter((element) => {\n          const closestController = element.closest('[data-controller*=\"hideable-form\"]')\n\n          return closestController === this.element\n        })\n        .map((element) => this.application.getControllerForElementAndIdentifier(element, 'tom-select')?.tomSelect)\n        .filter((t) => t)\n\n      tomSelects.forEach((select) => {\n        if (value) {\n          select.disable()\n        } else {\n          select.enable()\n        }\n      })\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport Fuse from 'fuse.js'\n\nexport default class extends Controller {\n  static targets = ['item', 'field']\n\n  search() {\n    const value = this.fieldTarget.value\n\n    if (!value) {\n      this.reset()\n\n      return\n    }\n\n    const fuse = new Fuse(this.#fuseList, { includeScore: true, keys: [{ name: 'title' }] })\n\n    const results = fuse.search(value).filter((result) => result.score <= 0.5)\n\n    this.itemTargets.forEach((target) => (target.hidden = true))\n\n    results.forEach(({ item: { element } }) => (element.hidden = false))\n  }\n\n  reset() {\n    this.fieldTarget.value = ''\n    this.itemTargets.forEach((target) => (target.hidden = false))\n  }\n\n  get #fuseList() {\n    return this.itemTargets.map((target) => ({\n      title: target.dataset.value || target.textContent,\n      element: target,\n    }))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['submit']\n\n  connect() {\n    this.formData = new FormData(this.element)\n  }\n\n  toggleSubmit() {\n    if (!this.hasSubmitTarget) return\n\n    const newData = new FormData(this.element)\n    const oldValues = new Set(Array.from(this.formData).map((arr) => arr[1]))\n    const newValues = new Set(Array.from(newData).map((arr) => arr[1]))\n\n    const symmetricDifference = oldValues.symmetricDifference(newValues)\n\n    this.submitTarget.hidden = symmetricDifference.size <= 0\n  }\n\n  reset() {\n    this.submitTarget.hidden = true\n    this.formData = new FormData(this.element)\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  start() {\n    this.disabledInputs = Array.from(this.element.querySelectorAll('input:not([disabled])'))\n\n    this.disabledInputs.forEach((input) => (input.disabled = true))\n  }\n\n  end() {\n    this.disabledInputs?.forEach((input) => (input.disabled = false))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport React, { Fragment } from 'preact/compat'\nimport { h, render } from 'preact'\nimport { LeadCaptureForm } from '../components/lead_capture_form'\nimport { signal } from '@preact/signals'\n\nexport default class extends Controller {\n  static values = { json: Object }\n  static targets = ['form', 'container', 'phoneField']\n\n  jsonSignal\n\n  initialize() {\n    this.jsonSignal = signal(this.jsonValue)\n\n    this.update()\n    this.containerTarget.innerHTML = ''\n    this.#render()\n  }\n\n  update() {\n    const formData = new FormData(this.formTarget)\n    const baseKey = 'lead_capture_form[lead_capture_form_fields_attributes]'\n    const fieldIndices = Array.from(\n      new Set(\n        Array.from(formData.keys())\n          .filter((key) => key.startsWith(baseKey))\n          .map((key) => key.match(/-?\\d+/g)[0])\n          .filter((index) => index),\n      ),\n    )\n\n    const fieldsOrdered = fieldIndices.reduce((acc, index) => {\n      const formKey = (name) => `${baseKey}[${index}][${name}]`\n      const order = Number(formData.get(formKey('order')))\n      const key = formData.get(formKey('key'))\n      const label = formData.get(formKey('label'))\n      let type = formData.get(formKey('type'))\n      const required = key === 'name' || formData.getAll(formKey('required')).includes('1')\n\n      if (formData.get(formKey('enter_as'))?.includes('phone')) {\n        type = 'tel'\n      }\n\n      const destroyed = formData.getAll(formKey('_destroy')).includes('1')\n\n      if (!destroyed) {\n        acc[order] = { key, label, type, required }\n      }\n\n      return acc\n    }, {})\n\n    const fields = Object.keys(fieldsOrdered)\n      .sort()\n      .map((key) => fieldsOrdered[key])\n\n    const colors = Object.fromEntries(\n      ['primary_color', 'secondary_color', 'tertiary_color', 'quaternary_color', 'shadow_color'].map((color) => [\n        color,\n        formData.get(`lead_capture_form[lead_capture_form_theme_attributes][${color}]`),\n      ]),\n    )\n\n    this.jsonValue = { ...this.jsonValue, fields, ...colors }\n  }\n\n  jsonValueChanged() {\n    this.jsonSignal.value = this.jsonValue\n  }\n\n  #render() {\n    const BoundPreview = this.Preview.bind(this)\n\n    render(<BoundPreview />, this.containerTarget)\n  }\n\n  Preview() {\n    const data = this.jsonSignal.value\n    let style = `--primary-color: ${data.primary_color}; --secondary-color: ${data.secondary_color};`\n    style += ` --tertiary-color: ${data.tertiary_color}; --quaternary-color: ${data.quaternary_color};`\n    style += ` --shadow-color:${data.shadow_color}; --secondary-color-light: ${data.secondary_color}BF;`\n    style += ` --btn-bg: var(--primary-color); --btn-hocus-bg: ${data.primary_color}E6;`\n    style += ' --btn-text-color: var(--quaternary-color); --input-border-color: var(--secondary-color-light);'\n    style += ' --input-border-focus-color: var(--primary-color); --toggle-bg-on: var(--primary-color);'\n    style += ' --toggle-bg-off: var(--secondary-color-light); --toggle-handle-bg: var(--tertiary-color)'\n\n    return (\n      <div\n        class=\"bg-[--tertiary-color] p-3 pointer-events-none space-y-3\"\n        style={`${style};  color: var(--secondary-color) !important;`}\n      >\n        <LeadCaptureForm leadCaptureForm={data.fields} />\n        <div class=\"flex justify-end\">\n          <button type=\"button\" class=\"btn\">\n            SUBMIT\n          </button>\n        </div>\n      </div>\n    )\n  }\n}\n", "import React, { Fragment } from 'preact/compat'\nimport { h } from 'preact'\nimport { AddressField } from './address_field'\nimport { useError } from './landing_page'\nimport { PhoneFieldWithSms, PhoneField } from './phone_field'\nimport { Select } from './select'\nimport { useId } from 'preact/hooks'\n\nexport function LeadCaptureForm({ member = {}, leadCaptureForm }) {\n  const { errors } = useError()\n  const id = useId()\n\n  return (\n    <>\n      {leadCaptureForm.map((field) => (\n        <div key={field.key}>\n          <label class=\"flex items-center gap-1 mb-1\" for={`${id}-${field.key}`}>\n            <span\n              class={`font-medium uppercase tracking-widest ${\n                (field.key === 'name' || field.required) && 'required'\n              }`}\n            >\n              {field.label}\n            </span>\n            {!field.required && <span class=\"text-[var(--secondary-color-light)]\">(Optional)</span>}\n          </label>\n          {renderField(field, member, errors, `${id}-${field.key}`)}\n        </div>\n      ))}\n    </>\n  )\n}\n\nfunction renderField(field, member, errors, id) {\n  if (field.key === 'phone') {\n    return (\n      <PhoneFieldWithSms\n        id={id}\n        number={member.phone?.number}\n        sendSms={member.phone?.send_sms}\n        required={field.required}\n        errors={errors}\n        numberChange={(number) => {\n          member.phone ||= {}\n          member.phone.number = number\n        }}\n        smsChange={(sendSms) => {\n          member.phone ||= {}\n          member.phone.send_sms = sendSms\n        }}\n      />\n    )\n  }\n\n  if (field.type === 'tel') {\n    return (\n      <PhoneField\n        id={id}\n        number={member.phone?.number}\n        required={field.required}\n        numberChange={(number) => {\n          member[field.key] = number\n        }}\n      />\n    )\n  }\n\n  if (field.key === 'address') {\n    return (\n      <AddressField\n        id={id}\n        address={member.address || {}}\n        required={field.required}\n        addressChange={(address) => (member.address = address)}\n      />\n    )\n  }\n\n  if (field.type === 'select') {\n    return <LCFSelect id={id} field={field} member={member} />\n  }\n\n  return (\n    <input\n      id={id}\n      type={field.type}\n      class={`input input-border ${field.type === 'date' ? 'h-10' : ''}`}\n      placeholder=\"Type here\"\n      value={member[field.key] || ''}\n      required={field.required}\n      onInput={({ target }) => (member[field.key] = target.value)}\n    />\n  )\n}\n\nfunction LCFSelect({ field, id, member }) {\n  return (\n    <Select\n      id={id}\n      type={field.type}\n      required={field.required}\n      onInput={({ target }) => (member[field.key] = target.value)}\n    >\n      <option selected disabled hidden value={field.required ? '' : null}>\n        Select\n      </option>\n\n      {field.options?.map((option) => (\n        <option value={option} selected={member[field.key] === option}>\n          {option}\n        </option>\n      ))}\n    </Select>\n  )\n}\n", "import React, { useEffect, useRef } from 'preact/compat'\nimport { h, Fragment } from 'preact'\n\nexport function AddressField({ address, addressChange, required, id }) {\n  const controllerRef = useRef(null)\n  const addressRefs = useRef({})\n\n  const hiddenFields = ['street', 'city', 'state', 'zip', 'country', 'lat', 'lng']\n\n  const addressChangeCallback = () => {\n    const newAddress = {}\n\n    newAddress.full = addressRefs.current.full?.value\n    newAddress.street_2 = addressRefs.current.street_2?.value\n    ;['street', 'city', 'state', 'zip', 'country', 'lat', 'lng'].forEach((name) => {\n      newAddress[name] = addressRefs.current[name]?.value\n    })\n\n    addressChange(newAddress)\n  }\n\n  useEffect(() => {\n    const controllerElement = controllerRef.current\n\n    controllerElement?.addEventListener('address-field--component:input', addressChangeCallback)\n\n    return () => {\n      controllerElement?.removeEventListener('address-field--component:input', addressChangeCallback)\n    }\n  }, [addressChange])\n\n  return (\n    <div\n      ref={controllerRef}\n      class=\"address-field\"\n      data-controller=\"address-field--component\"\n      data-address-field--component-message-value=\"Please select an address from the dropdown before proceeding.\"\n    >\n      <div className=\"visible-fields\">\n        <input\n          id={id}\n          type=\"text\"\n          class=\"input input-border\"\n          placeholder=\"Type here\"\n          value={address.full}\n          required={required}\n          data-address-field--component-target=\"autocomplete\"\n          data-action=\"address-field--component#clearHiddenFields\"\n          ref={(el) => (addressRefs.current.full = el)}\n        />\n        <input\n          type=\"text\"\n          class=\"input input-border\"\n          placeholder=\"(Optional) Apartment/Suite number, etc.\"\n          value={address.street_2}\n          ref={(el) => (addressRefs.current.street_2 = el)}\n          onInput={addressChangeCallback}\n        />\n      </div>\n\n      {hiddenFields.map((name) => (\n        <input\n          type=\"hidden\"\n          value={address[name]}\n          data-address-field--component-target={name}\n          ref={(el) => (addressRefs.current[name] = el)}\n        />\n      ))}\n    </div>\n  )\n}\n", "import React from 'preact/compat'\nimport { createContext, h } from 'preact'\nimport { useContext } from 'preact/hooks'\nimport { signal } from '@preact/signals'\nimport { SignUp } from './landing_pages/sign_up'\nimport { Merchandise } from './landing_pages/merchandise'\nimport { Confirmation } from './landing_pages/confirmation'\nimport { StepTracker } from './landing_pages/step_tracker'\nimport { Cart } from './landing_pages/cart'\nimport { Agreements } from './agreements'\n\nexport const LandingPageState = createContext({\n  step: signal(1),\n  numberOfSteps: 3,\n  members: signal([{ primary: true }]),\n  leadCaptureForm: {},\n  guardianLeadCaptureForm: {},\n  agreements: [],\n  merchandise: null,\n  cart: signal(new Map()),\n  errors: signal({}),\n  familyCreation: false,\n  theme: {},\n  merchantAccount: null,\n  membershipTemplates: [],\n  classes: [],\n  preview: false,\n})\n\nexport function useLeadCaptureForm() {\n  const { leadCaptureForm, guardianLeadCaptureForm } = useContext(LandingPageState)\n\n  return { leadCaptureForm, guardianLeadCaptureForm }\n}\n\nexport function useFamilyCreation() {\n  const { familyCreation } = useContext(LandingPageState)\n\n  return familyCreation\n}\n\nexport function useBilling() {\n  const { merchantAccount, cart, members } = useContext(LandingPageState)\n\n  const strictVaulting = members.value.some((member) => Boolean(member.membershipTemplate?.billing_interval))\n\n  const paymentRequired = Boolean(merchantAccount) && cart.value.size > 0\n\n  return { paymentRequired, merchantAccount, strictVaulting }\n}\n\nexport function useAgreements() {\n  const { agreements } = useContext(LandingPageState)\n\n  return agreements\n}\n\nexport function useMerchandise() {\n  const { merchandise } = useContext(LandingPageState)\n\n  return merchandise\n}\n\nexport function useStep() {\n  const { step, numberOfSteps } = useContext(LandingPageState)\n\n  const nextStep = () => {\n    if (step.value < numberOfSteps) {\n      step.value++\n    }\n  }\n\n  const jumpToStep = (newStep) => {\n    step.value = newStep\n  }\n\n  const previousStep = () => {\n    if (step.value > 1) {\n      step.value--\n    }\n  }\n\n  return { step: step.value, numberOfSteps, nextStep, previousStep, jumpToStep }\n}\n\nexport function useMembers() {\n  const { members } = useContext(LandingPageState)\n\n  const addMember = () => {\n    members.value = [...members.value, { participating: true, usePrimaryInfo: true }]\n  }\n\n  const ensureParticipant = () => {\n    if (members.value.filter((member) => member.participating).length < 1) {\n      addMember()\n    }\n  }\n\n  return { members: members.value, addMember, ensureParticipant }\n}\n\nexport function useMembershipTemplates() {\n  const { membershipTemplates } = useContext(LandingPageState)\n\n  return membershipTemplates\n}\n\nexport function useClasses() {\n  const { classes } = useContext(LandingPageState)\n\n  const classesFor = (programId) => classes[programId.toString()]\n\n  return { hasClasses: Boolean(classes), classesFor, required: classes?.required }\n}\n\nexport function useError() {\n  const { errors } = useContext(LandingPageState)\n\n  const setError = (value) => {\n    errors.value = value\n  }\n\n  const clearError = (key = null) => {\n    if (!key) {\n      errors.value = {}\n\n      return\n    }\n\n    delete errors.value[key]\n\n    // eslint-disable-next-line no-self-assign\n    errors.value = errors.value\n  }\n\n  return { errors: errors.value, setError, clearError }\n}\n\nexport function useTheme() {\n  const { theme } = useContext(LandingPageState)\n\n  return theme\n}\n\nexport function usePreview() {\n  const { preview } = useContext(LandingPageState)\n\n  return preview\n}\n\nfunction LandingPageCore() {\n  const agreements = useAgreements()\n  const merchandise = useMerchandise()\n  const { step, numberOfSteps } = useStep()\n\n  return (\n    <div class=\"mt-6\">\n      <div class=\"flex item-center gap-4 justify-between mb-4\">\n        <div class=\"text-xl font-bold\">Sign Up</div>\n\n        <div className=\"flex items-center gap-2\">\n          <StepTracker />\n\n          <Cart />\n        </div>\n      </div>\n\n      {step === 1 && <SignUp />}\n      {step === 2 && step < numberOfSteps && merchandise && <Merchandise />}\n      {step === numberOfSteps - 1 && agreements && <Agreements />}\n      {step === numberOfSteps && <Confirmation />}\n    </div>\n  )\n}\n\nexport function LandingPage({\n  leadCaptureForm,\n  guardianLeadCaptureForm,\n  merchandise,\n  theme,\n  merchantAccount,\n  agreements,\n  membershipTemplates,\n  classes,\n  preview = false,\n}) {\n  let numberOfSteps = 2\n\n  if (merchandise) numberOfSteps += 1\n  if (agreements) numberOfSteps += 1\n\n  return (\n    <LandingPageState.Provider\n      value={{\n        step: signal(1),\n        numberOfSteps,\n        members: signal([{ participating: true }]),\n        errors: signal({}),\n        leadCaptureForm,\n        guardianLeadCaptureForm,\n        agreements,\n        merchandise,\n        cart: signal(new Map()),\n        familyCreation: false,\n        theme,\n        merchantAccount,\n        membershipTemplates,\n        classes,\n        preview,\n      }}\n    >\n      <LandingPageCore />\n    </LandingPageState.Provider>\n  )\n}\n", "import { options, Component, isValidElement } from \"preact\";\nimport { useRef, useMemo, useEffect } from \"preact/hooks\";\nimport {\n\tsignal,\n\tcomputed,\n\tbatch,\n\teffect,\n\tSignal,\n\ttype ReadonlySignal,\n\tuntracked,\n} from \"@preact/signals-core\";\nimport {\n\tVNode,\n\tOptionsTypes,\n\tHookFn,\n\tEffect,\n\tPropertyUpdater,\n\tAugmentedComponent,\n\tAugmentedElement as Element,\n} from \"./internal\";\n\nexport {\n\tsignal,\n\tcomputed,\n\tbatch,\n\teffect,\n\tSignal,\n\ttype ReadonlySignal,\n\tuntracked,\n};\n\nconst HAS_PENDING_UPDATE = 1 << 0;\nconst HAS_HOOK_STATE = 1 << 1;\nconst HAS_COMPUTEDS = 1 << 2;\n\n// Install a Preact options hook\nfunction hook<T extends OptionsTypes>(hookName: T, hookFn: HookFn<T>) {\n\t// @ts-ignore-next-line private options hooks usage\n\toptions[hookName] = hookFn.bind(null, options[hookName] || (() => {}));\n}\n\nlet currentComponent: AugmentedComponent | undefined;\nlet finishUpdate: (() => void) | undefined;\n\nfunction setCurrentUpdater(updater?: Effect) {\n\t// end tracking for the current update:\n\tif (finishUpdate) finishUpdate();\n\t// start tracking the new update:\n\tfinishUpdate = updater && updater._start();\n}\n\nfunction createUpdater(update: () => void) {\n\tlet updater!: Effect;\n\teffect(function (this: Effect) {\n\t\tupdater = this;\n\t});\n\tupdater._callback = update;\n\treturn updater;\n}\n\n/** @todo This may be needed for complex prop value detection. */\n// function isSignalValue(value: any): value is Signal {\n// \tif (typeof value !== \"object\" || value == null) return false;\n// \tif (value instanceof Signal) return true;\n// \t// @TODO: uncomment this when we land Reactive (ideally behind a brand check)\n// \t// for (let i in value) if (value[i] instanceof Signal) return true;\n// \treturn false;\n// }\n\n/**\n * A wrapper component that renders a Signal directly as a Text node.\n * @todo: in Preact 11, just decorate Signal with `type:null`\n */\nfunction SignalValue(this: AugmentedComponent, { data }: { data: Signal }) {\n\t// hasComputeds.add(this);\n\n\t// Store the props.data signal in another signal so that\n\t// passing a new signal reference re-runs the text computed:\n\tconst currentSignal = useSignal(data);\n\tcurrentSignal.value = data;\n\n\tconst s = useMemo(() => {\n\t\t// mark the parent component as having computeds so it gets optimized\n\t\tlet v = this.__v;\n\t\twhile ((v = v.__!)) {\n\t\t\tif (v.__c) {\n\t\t\t\tv.__c._updateFlags |= HAS_COMPUTEDS;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis._updater!._callback = () => {\n\t\t\tif (isValidElement(s.peek()) || this.base?.nodeType !== 3) {\n\t\t\t\tthis._updateFlags |= HAS_PENDING_UPDATE;\n\t\t\t\tthis.setState({});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t(this.base as Text).data = s.peek();\n\t\t};\n\n\t\treturn computed(() => {\n\t\t\tlet data = currentSignal.value;\n\t\t\tlet s = data.value;\n\t\t\treturn s === 0 ? 0 : s === true ? \"\" : s || \"\";\n\t\t});\n\t}, []);\n\n\treturn s.value;\n}\nSignalValue.displayName = \"_st\";\n\nObject.defineProperties(Signal.prototype, {\n\tconstructor: { configurable: true, value: undefined },\n\ttype: { configurable: true, value: SignalValue },\n\tprops: {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn { data: this };\n\t\t},\n\t},\n\t// Setting a VNode's _depth to 1 forces Preact to clone it before modifying:\n\t// https://github.com/preactjs/preact/blob/d7a433ee8463a7dc23a05111bb47de9ec729ad4d/src/diff/children.js#L77\n\t// @todo remove this for Preact 11\n\t__b: { configurable: true, value: 1 },\n});\n\n/** Inject low-level property/attribute bindings for Signals into Preact's diff */\nhook(OptionsTypes.DIFF, (old, vnode) => {\n\tif (typeof vnode.type === \"string\") {\n\t\tlet signalProps: Record<string, any> | undefined;\n\n\t\tlet props = vnode.props;\n\t\tfor (let i in props) {\n\t\t\tif (i === \"children\") continue;\n\n\t\t\tlet value = props[i];\n\t\t\tif (value instanceof Signal) {\n\t\t\t\tif (!signalProps) vnode.__np = signalProps = {};\n\t\t\t\tsignalProps[i] = value;\n\t\t\t\tprops[i] = value.peek();\n\t\t\t}\n\t\t}\n\t}\n\n\told(vnode);\n});\n\n/** Set up Updater before rendering a component */\nhook(OptionsTypes.RENDER, (old, vnode) => {\n\tsetCurrentUpdater();\n\n\tlet updater;\n\n\tlet component = vnode.__c;\n\tif (component) {\n\t\tcomponent._updateFlags &= ~HAS_PENDING_UPDATE;\n\n\t\tupdater = component._updater;\n\t\tif (updater === undefined) {\n\t\t\tcomponent._updater = updater = createUpdater(() => {\n\t\t\t\tcomponent._updateFlags |= HAS_PENDING_UPDATE;\n\t\t\t\tcomponent.setState({});\n\t\t\t});\n\t\t}\n\t}\n\n\tcurrentComponent = component;\n\tsetCurrentUpdater(updater);\n\told(vnode);\n});\n\n/** Finish current updater if a component errors */\nhook(OptionsTypes.CATCH_ERROR, (old, error, vnode, oldVNode) => {\n\tsetCurrentUpdater();\n\tcurrentComponent = undefined;\n\told(error, vnode, oldVNode);\n});\n\n/** Finish current updater after rendering any VNode */\nhook(OptionsTypes.DIFFED, (old, vnode) => {\n\tsetCurrentUpdater();\n\tcurrentComponent = undefined;\n\n\tlet dom: Element;\n\n\t// vnode._dom is undefined during string rendering,\n\t// so we use this to skip prop subscriptions during SSR.\n\tif (typeof vnode.type === \"string\" && (dom = vnode.__e as Element)) {\n\t\tlet props = vnode.__np;\n\t\tlet renderedProps = vnode.props;\n\t\tif (props) {\n\t\t\tlet updaters = dom._updaters;\n\t\t\tif (updaters) {\n\t\t\t\tfor (let prop in updaters) {\n\t\t\t\t\tlet updater = updaters[prop];\n\t\t\t\t\tif (updater !== undefined && !(prop in props)) {\n\t\t\t\t\t\tupdater._dispose();\n\t\t\t\t\t\t// @todo we could just always invoke _dispose() here\n\t\t\t\t\t\tupdaters[prop] = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tupdaters = {};\n\t\t\t\tdom._updaters = updaters;\n\t\t\t}\n\t\t\tfor (let prop in props) {\n\t\t\t\tlet updater = updaters[prop];\n\t\t\t\tlet signal = props[prop];\n\t\t\t\tif (updater === undefined) {\n\t\t\t\t\tupdater = createPropUpdater(dom, prop, signal, renderedProps);\n\t\t\t\t\tupdaters[prop] = updater;\n\t\t\t\t} else {\n\t\t\t\t\tupdater._update(signal, renderedProps);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\told(vnode);\n});\n\nfunction createPropUpdater(\n\tdom: Element,\n\tprop: string,\n\tpropSignal: Signal,\n\tprops: Record<string, any>\n): PropertyUpdater {\n\tconst setAsProperty =\n\t\tprop in dom &&\n\t\t// SVG elements need to go through `setAttribute` because they\n\t\t// expect things like SVGAnimatedTransformList instead of strings.\n\t\t// @ts-ignore\n\t\tdom.ownerSVGElement === undefined;\n\n\tconst changeSignal = signal(propSignal);\n\treturn {\n\t\t_update: (newSignal: Signal, newProps: typeof props) => {\n\t\t\tchangeSignal.value = newSignal;\n\t\t\tprops = newProps;\n\t\t},\n\t\t_dispose: effect(() => {\n\t\t\tconst value = changeSignal.value.value;\n\t\t\t// If Preact just rendered this value, don't render it again:\n\t\t\tif (props[prop] === value) return;\n\t\t\tprops[prop] = value;\n\t\t\tif (setAsProperty) {\n\t\t\t\t// @ts-ignore-next-line silly\n\t\t\t\tdom[prop] = value;\n\t\t\t} else if (value) {\n\t\t\t\tdom.setAttribute(prop, value);\n\t\t\t} else {\n\t\t\t\tdom.removeAttribute(prop);\n\t\t\t}\n\t\t}),\n\t};\n}\n\n/** Unsubscribe from Signals when unmounting components/vnodes */\nhook(OptionsTypes.UNMOUNT, (old, vnode: VNode) => {\n\tif (typeof vnode.type === \"string\") {\n\t\tlet dom = vnode.__e as Element | undefined;\n\t\t// vnode._dom is undefined during string rendering\n\t\tif (dom) {\n\t\t\tconst updaters = dom._updaters;\n\t\t\tif (updaters) {\n\t\t\t\tdom._updaters = undefined;\n\t\t\t\tfor (let prop in updaters) {\n\t\t\t\t\tlet updater = updaters[prop];\n\t\t\t\t\tif (updater) updater._dispose();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tlet component = vnode.__c;\n\t\tif (component) {\n\t\t\tconst updater = component._updater;\n\t\t\tif (updater) {\n\t\t\t\tcomponent._updater = undefined;\n\t\t\t\tupdater._dispose();\n\t\t\t}\n\t\t}\n\t}\n\told(vnode);\n});\n\n/** Mark components that use hook state so we can skip sCU optimization. */\nhook(OptionsTypes.HOOK, (old, component, index, type) => {\n\tif (type < 3 || type === 9)\n\t\t(component as AugmentedComponent)._updateFlags |= HAS_HOOK_STATE;\n\told(component, index, type);\n});\n\n/**\n * Auto-memoize components that use Signals/Computeds.\n * Note: Does _not_ optimize components that use hook/class state.\n */\nComponent.prototype.shouldComponentUpdate = function (\n\tthis: AugmentedComponent,\n\tprops,\n\tstate\n) {\n\t// @todo: Once preactjs/preact#3671 lands, this could just use `currentUpdater`:\n\tconst updater = this._updater;\n\tconst hasSignals = updater && updater._sources !== undefined;\n\n\t// let reason;\n\t// if (!hasSignals && !hasComputeds.has(this)) {\n\t// \treason = \"no signals or computeds\";\n\t// } else if (hasPendingUpdate.has(this)) {\n\t// \treason = \"has pending update\";\n\t// } else if (hasHookState.has(this)) {\n\t// \treason = \"has hook state\";\n\t// }\n\t// if (reason) {\n\t// \tif (!this) reason += \" (`this` bug)\";\n\t// \tconsole.log(\"not optimizing\", this?.constructor?.name, \": \", reason, {\n\t// \t\tdetails: {\n\t// \t\t\thasSignals,\n\t// \t\t\thasComputeds: hasComputeds.has(this),\n\t// \t\t\thasPendingUpdate: hasPendingUpdate.has(this),\n\t// \t\t\thasHookState: hasHookState.has(this),\n\t// \t\t\tdeps: Array.from(updater._deps),\n\t// \t\t\tupdater,\n\t// \t\t},\n\t// \t});\n\t// }\n\n\t// if this component used no signals or computeds, update:\n\tif (!hasSignals && !(this._updateFlags & HAS_COMPUTEDS)) return true;\n\n\t// if there is a pending re-render triggered from Signals,\n\t// or if there is hook or class state, update:\n\tif (this._updateFlags & (HAS_PENDING_UPDATE | HAS_HOOK_STATE)) return true;\n\n\t// @ts-ignore\n\tfor (let i in state) return true;\n\n\t// if any non-Signal props changed, update:\n\tfor (let i in props) {\n\t\tif (i !== \"__source\" && props[i] !== this.props[i]) return true;\n\t}\n\tfor (let i in this.props) if (!(i in props)) return true;\n\n\t// this is a purely Signal-driven component, don't update:\n\treturn false;\n};\n\nexport function useSignal<T>(value: T): Signal<T>;\nexport function useSignal<T = undefined>(): Signal<T | undefined>;\nexport function useSignal<T>(value?: T) {\n\treturn useMemo(() => signal<T | undefined>(value), []);\n}\n\nexport function useComputed<T>(compute: () => T) {\n\tconst $compute = useRef(compute);\n\t$compute.current = compute;\n\t(currentComponent as AugmentedComponent)._updateFlags |= HAS_COMPUTEDS;\n\treturn useMemo(() => computed<T>(() => $compute.current()), []);\n}\n\nexport function useSignalEffect(cb: () => void | (() => void)) {\n\tconst callback = useRef(cb);\n\tcallback.current = cb;\n\n\tuseEffect(() => {\n\t\treturn effect(() => callback.current());\n\t}, []);\n}\n\n/**\n * @todo Determine which Reactive implementation we'll be using.\n * @internal\n */\n// export function useReactive<T extends object>(value: T): Reactive<T> {\n// \treturn useMemo(() => reactive<T>(value), []);\n// }\n\n/**\n * @internal\n * Update a Reactive's using the properties of an object or other Reactive.\n * Also works for Signals.\n * @example\n *   // Update a Reactive with Object.assign()-like syntax:\n *   const r = reactive({ name: \"Alice\" });\n *   update(r, { name: \"Bob\" });\n *   update(r, { age: 42 }); // property 'age' does not exist in type '{ name?: string }'\n *   update(r, 2); // '2' has no properties in common with '{ name?: string }'\n *   console.log(r.name.value); // \"Bob\"\n *\n * @example\n *   // Update a Reactive with the properties of another Reactive:\n *   const A = reactive({ name: \"Alice\" });\n *   const B = reactive({ name: \"Bob\", age: 42 });\n *   update(A, B);\n *   console.log(`${A.name} is ${A.age}`); // \"Bob is 42\"\n *\n * @example\n *   // Update a signal with assign()-like syntax:\n *   const s = signal(42);\n *   update(s, \"hi\"); // Argument type 'string' not assignable to type 'number'\n *   update(s, {}); // Argument type '{}' not assignable to type 'number'\n *   update(s, 43);\n *   console.log(s.value); // 43\n *\n * @param obj The Reactive or Signal to be updated\n * @param update The value, Signal, object or Reactive to update `obj` to match\n * @param overwrite If `true`, any properties `obj` missing from `update` are set to `undefined`\n */\n/*\nexport function update<T extends SignalOrReactive>(\n\tobj: T,\n\tupdate: Partial<Unwrap<T>>,\n\toverwrite = false\n) {\n\tif (obj instanceof Signal) {\n\t\tobj.value = peekValue(update);\n\t} else {\n\t\tfor (let i in update) {\n\t\t\tif (i in obj) {\n\t\t\t\tobj[i].value = peekValue(update[i]);\n\t\t\t} else {\n\t\t\t\tlet sig = signal(peekValue(update[i]));\n\t\t\t\tsig[KEY] = i;\n\t\t\t\tobj[i] = sig;\n\t\t\t}\n\t\t}\n\t\tif (overwrite) {\n\t\t\tfor (let i in obj) {\n\t\t\t\tif (!(i in update)) {\n\t\t\t\t\tobj[i].value = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n*/\n", "// An named symbol/brand for detecting Signal instances even when they weren't\n// created using the same signals library version.\nconst BRAND_SYMBOL = Symbol.for(\"preact-signals\");\n\n// Flags for Computed and Effect.\nconst RUNNING = 1 << 0;\nconst NOTIFIED = 1 << 1;\nconst OUTDATED = 1 << 2;\nconst DISPOSED = 1 << 3;\nconst HAS_ERROR = 1 << 4;\nconst TRACKING = 1 << 5;\n\n// A linked list node used to track dependencies (sources) and dependents (targets).\n// Also used to remember the source's last version number that the target saw.\ntype Node = {\n\t// A source whose value the target depends on.\n\t_source: Signal;\n\t_prevSource?: Node;\n\t_nextSource?: Node;\n\n\t// A target that depends on the source and should be notified when the source changes.\n\t_target: Computed | Effect;\n\t_prevTarget?: Node;\n\t_nextTarget?: Node;\n\n\t// The version number of the source that target has last seen. We use version numbers\n\t// instead of storing the source value, because source values can take arbitrary amount\n\t// of memory, and computeds could hang on to them forever because they're lazily evaluated.\n\t// Use the special value -1 to mark potentially unused but recyclable nodes.\n\t_version: number;\n\n\t// Used to remember & roll back the source's previous `._node` value when entering &\n\t// exiting a new evaluation context.\n\t_rollbackNode?: Node;\n};\n\nfunction startBatch() {\n\tbatchDepth++;\n}\n\nfunction endBatch() {\n\tif (batchDepth > 1) {\n\t\tbatchDepth--;\n\t\treturn;\n\t}\n\n\tlet error: unknown;\n\tlet hasError = false;\n\n\twhile (batchedEffect !== undefined) {\n\t\tlet effect: Effect | undefined = batchedEffect;\n\t\tbatchedEffect = undefined;\n\n\t\tbatchIteration++;\n\n\t\twhile (effect !== undefined) {\n\t\t\tconst next: Effect | undefined = effect._nextBatchedEffect;\n\t\t\teffect._nextBatchedEffect = undefined;\n\t\t\teffect._flags &= ~NOTIFIED;\n\n\t\t\tif (!(effect._flags & DISPOSED) && needsToRecompute(effect)) {\n\t\t\t\ttry {\n\t\t\t\t\teffect._callback();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!hasError) {\n\t\t\t\t\t\terror = err;\n\t\t\t\t\t\thasError = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\teffect = next;\n\t\t}\n\t}\n\tbatchIteration = 0;\n\tbatchDepth--;\n\n\tif (hasError) {\n\t\tthrow error;\n\t}\n}\n\n/**\n * Combine multiple value updates into one \"commit\" at the end of the provided callback.\n *\n * Batches can be nested and changes are only flushed once the outermost batch callback\n * completes.\n *\n * Accessing a signal that has been modified within a batch will reflect its updated\n * value.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction batch<T>(fn: () => T): T {\n\tif (batchDepth > 0) {\n\t\treturn fn();\n\t}\n\t/*@__INLINE__**/ startBatch();\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tendBatch();\n\t}\n}\n\n// Currently evaluated computed or effect.\nlet evalContext: Computed | Effect | undefined = undefined;\n\n/**\n * Run a callback function that can access signal values without\n * subscribing to the signal updates.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction untracked<T>(fn: () => T): T {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n}\n\n// Effects collected into a batch.\nlet batchedEffect: Effect | undefined = undefined;\nlet batchDepth = 0;\nlet batchIteration = 0;\n\n// A global version number for signals, used for fast-pathing repeated\n// computed.peek()/computed.value calls when nothing has changed globally.\nlet globalVersion = 0;\n\nfunction addDependency(signal: Signal): Node | undefined {\n\tif (evalContext === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet node = signal._node;\n\tif (node === undefined || node._target !== evalContext) {\n\t\t/**\n\t\t * `signal` is a new dependency. Create a new dependency node, and set it\n\t\t * as the tail of the current context's dependency list. e.g:\n\t\t *\n\t\t * { A <-> B       }\n\t\t *         \u2191     \u2191\n\t\t *        tail  node (new)\n\t\t *               \u2193\n\t\t * { A <-> B <-> C }\n\t\t *               \u2191\n\t\t *              tail (evalContext._sources)\n\t\t */\n\t\tnode = {\n\t\t\t_version: 0,\n\t\t\t_source: signal,\n\t\t\t_prevSource: evalContext._sources,\n\t\t\t_nextSource: undefined,\n\t\t\t_target: evalContext,\n\t\t\t_prevTarget: undefined,\n\t\t\t_nextTarget: undefined,\n\t\t\t_rollbackNode: node,\n\t\t};\n\n\t\tif (evalContext._sources !== undefined) {\n\t\t\tevalContext._sources._nextSource = node;\n\t\t}\n\t\tevalContext._sources = node;\n\t\tsignal._node = node;\n\n\t\t// Subscribe to change notifications from this dependency if we're in an effect\n\t\t// OR evaluating a computed signal that in turn has subscribers.\n\t\tif (evalContext._flags & TRACKING) {\n\t\t\tsignal._subscribe(node);\n\t\t}\n\t\treturn node;\n\t} else if (node._version === -1) {\n\t\t// `signal` is an existing dependency from a previous evaluation. Reuse it.\n\t\tnode._version = 0;\n\n\t\t/**\n\t\t * If `node` is not already the current tail of the dependency list (i.e.\n\t\t * there is a next node in the list), then make the `node` the new tail. e.g:\n\t\t *\n\t\t * { A <-> B <-> C <-> D }\n\t\t *         \u2191           \u2191\n\t\t *        node   \u250C\u2500\u2500\u2500 tail (evalContext._sources)\n\t\t *         \u2514\u2500\u2500\u2500\u2500\u2500\u2502\u2500\u2500\u2500\u2500\u2500\u2510\n\t\t *               \u2193     \u2193\n\t\t * { A <-> C <-> D <-> B }\n\t\t *                     \u2191\n\t\t *                    tail (evalContext._sources)\n\t\t */\n\t\tif (node._nextSource !== undefined) {\n\t\t\tnode._nextSource._prevSource = node._prevSource;\n\n\t\t\tif (node._prevSource !== undefined) {\n\t\t\t\tnode._prevSource._nextSource = node._nextSource;\n\t\t\t}\n\n\t\t\tnode._prevSource = evalContext._sources;\n\t\t\tnode._nextSource = undefined;\n\n\t\t\tevalContext._sources!._nextSource = node;\n\t\t\tevalContext._sources = node;\n\t\t}\n\n\t\t// We can assume that the currently evaluated effect / computed signal is already\n\t\t// subscribed to change notifications from `signal` if needed.\n\t\treturn node;\n\t}\n\treturn undefined;\n}\n\n/**\n * The base class for plain and computed signals.\n */\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\n//\n// A function with the same name is defined later, so we need to ignore TypeScript's\n// warning about a redeclared variable.\n//\n// The class is declared here, but later implemented with ES5-style prototypes.\n// This enables better control of the transpiled output size.\ndeclare class Signal<T = any> {\n\t/** @internal */\n\t_value: unknown;\n\n\t/**\n\t * @internal\n\t * Version numbers should always be >= 0, because the special value -1 is used\n\t * by Nodes to signify potentially unused but recyclable nodes.\n\t */\n\t_version: number;\n\n\t/** @internal */\n\t_node?: Node;\n\n\t/** @internal */\n\t_targets?: Node;\n\n\tconstructor(value?: T);\n\n\t/** @internal */\n\t_refresh(): boolean;\n\n\t/** @internal */\n\t_subscribe(node: Node): void;\n\n\t/** @internal */\n\t_unsubscribe(node: Node): void;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\n\tvalueOf(): T;\n\n\ttoString(): string;\n\n\ttoJSON(): T;\n\n\tpeek(): T;\n\n\tbrand: typeof BRAND_SYMBOL;\n\n\tget value(): T;\n\tset value(value: T);\n}\n\n/** @internal */\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\n//\n// A class with the same name has already been declared, so we need to ignore\n// TypeScript's warning about a redeclared variable.\n//\n// The previously declared class is implemented here with ES5-style prototypes.\n// This enables better control of the transpiled output size.\nfunction Signal(this: Signal, value?: unknown) {\n\tthis._value = value;\n\tthis._version = 0;\n\tthis._node = undefined;\n\tthis._targets = undefined;\n}\n\nSignal.prototype.brand = BRAND_SYMBOL;\n\nSignal.prototype._refresh = function () {\n\treturn true;\n};\n\nSignal.prototype._subscribe = function (node) {\n\tif (this._targets !== node && node._prevTarget === undefined) {\n\t\tnode._nextTarget = this._targets;\n\t\tif (this._targets !== undefined) {\n\t\t\tthis._targets._prevTarget = node;\n\t\t}\n\t\tthis._targets = node;\n\t}\n};\n\nSignal.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the signal has any subscribers to begin with.\n\tif (this._targets !== undefined) {\n\t\tconst prev = node._prevTarget;\n\t\tconst next = node._nextTarget;\n\t\tif (prev !== undefined) {\n\t\t\tprev._nextTarget = next;\n\t\t\tnode._prevTarget = undefined;\n\t\t}\n\t\tif (next !== undefined) {\n\t\t\tnext._prevTarget = prev;\n\t\t\tnode._nextTarget = undefined;\n\t\t}\n\t\tif (node === this._targets) {\n\t\t\tthis._targets = next;\n\t\t}\n\t}\n};\n\nSignal.prototype.subscribe = function (fn) {\n\treturn effect(() => {\n\t\tconst value = this.value;\n\n\t\tconst prevContext = evalContext;\n\t\tevalContext = undefined;\n\t\ttry {\n\t\t\tfn(value);\n\t\t} finally {\n\t\t\tevalContext = prevContext;\n\t\t}\n\t});\n};\n\nSignal.prototype.valueOf = function () {\n\treturn this.value;\n};\n\nSignal.prototype.toString = function () {\n\treturn this.value + \"\";\n};\n\nSignal.prototype.toJSON = function () {\n\treturn this.value;\n};\n\nSignal.prototype.peek = function () {\n\tconst prevContext = evalContext;\n\tevalContext = undefined;\n\ttry {\n\t\treturn this.value;\n\t} finally {\n\t\tevalContext = prevContext;\n\t}\n};\n\nObject.defineProperty(Signal.prototype, \"value\", {\n\tget(this: Signal) {\n\t\tconst node = addDependency(this);\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\treturn this._value;\n\t},\n\tset(this: Signal, value) {\n\t\tif (value !== this._value) {\n\t\t\tif (batchIteration > 100) {\n\t\t\t\tthrow new Error(\"Cycle detected\");\n\t\t\t}\n\n\t\t\tthis._value = value;\n\t\t\tthis._version++;\n\t\t\tglobalVersion++;\n\n\t\t\t/**@__INLINE__*/ startBatch();\n\t\t\ttry {\n\t\t\t\tfor (\n\t\t\t\t\tlet node = this._targets;\n\t\t\t\t\tnode !== undefined;\n\t\t\t\t\tnode = node._nextTarget\n\t\t\t\t) {\n\t\t\t\t\tnode._target._notify();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tendBatch();\n\t\t\t}\n\t\t}\n\t},\n});\n\n/**\n * Create a new plain signal.\n *\n * @param value The initial value for the signal.\n * @returns A new signal.\n */\nexport function signal<T>(value: T): Signal<T>;\nexport function signal<T = undefined>(): Signal<T | undefined>;\nexport function signal<T>(value?: T): Signal<T> {\n\treturn new Signal(value);\n}\n\nfunction needsToRecompute(target: Computed | Effect): boolean {\n\t// Check the dependencies for changed values. The dependency list is already\n\t// in order of use. Therefore if multiple dependencies have changed values, only\n\t// the first used dependency is re-evaluated at this point.\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\t// If there's a new version of the dependency before or after refreshing,\n\t\t// or the dependency has something blocking it from refreshing at all (e.g. a\n\t\t// dependency cycle), then we need to recompute.\n\t\tif (\n\t\t\tnode._source._version !== node._version ||\n\t\t\t!node._source._refresh() ||\n\t\t\tnode._source._version !== node._version\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\t// If none of the dependencies have changed values since last recompute then\n\t// there's no need to recompute.\n\treturn false;\n}\n\nfunction prepareSources(target: Computed | Effect) {\n\t/**\n\t * 1. Mark all current sources as re-usable nodes (version: -1)\n\t * 2. Set a rollback node if the current node is being used in a different context\n\t * 3. Point 'target._sources' to the tail of the doubly-linked list, e.g:\n\t *\n\t *    { undefined <- A <-> B <-> C -> undefined }\n\t *                   \u2191           \u2191\n\t *                   \u2502           \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\t * target._sources = A; (node is head)  \u2502\n\t *                   \u2193                  \u2502\n\t * target._sources = C; (node is tail) \u2500\u2518\n\t */\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tconst rollbackNode = node._source._node;\n\t\tif (rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = rollbackNode;\n\t\t}\n\t\tnode._source._node = node;\n\t\tnode._version = -1;\n\n\t\tif (node._nextSource === undefined) {\n\t\t\ttarget._sources = node;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction cleanupSources(target: Computed | Effect) {\n\tlet node = target._sources;\n\tlet head = undefined;\n\n\t/**\n\t * At this point 'target._sources' points to the tail of the doubly-linked list.\n\t * It contains all existing sources + new sources in order of use.\n\t * Iterate backwards until we find the head node while dropping old dependencies.\n\t */\n\twhile (node !== undefined) {\n\t\tconst prev = node._prevSource;\n\n\t\t/**\n\t\t * The node was not re-used, unsubscribe from its change notifications and remove itself\n\t\t * from the doubly-linked list. e.g:\n\t\t *\n\t\t * { A <-> B <-> C }\n\t\t *         \u2193\n\t\t *    { A <-> C }\n\t\t */\n\t\tif (node._version === -1) {\n\t\t\tnode._source._unsubscribe(node);\n\n\t\t\tif (prev !== undefined) {\n\t\t\t\tprev._nextSource = node._nextSource;\n\t\t\t}\n\t\t\tif (node._nextSource !== undefined) {\n\t\t\t\tnode._nextSource._prevSource = prev;\n\t\t\t}\n\t\t} else {\n\t\t\t/**\n\t\t\t * The new head is the last node seen which wasn't removed/unsubscribed\n\t\t\t * from the doubly-linked list. e.g:\n\t\t\t *\n\t\t\t * { A <-> B <-> C }\n\t\t\t *   \u2191     \u2191     \u2191\n\t\t\t *   \u2502     \u2502     \u2514 head = node\n\t\t\t *   \u2502     \u2514 head = node\n\t\t\t *   \u2514 head = node\n\t\t\t */\n\t\t\thead = node;\n\t\t}\n\n\t\tnode._source._node = node._rollbackNode;\n\t\tif (node._rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = undefined;\n\t\t}\n\n\t\tnode = prev;\n\t}\n\n\ttarget._sources = head;\n}\n\ndeclare class Computed<T = any> extends Signal<T> {\n\t_fn: () => T;\n\t_sources?: Node;\n\t_globalVersion: number;\n\t_flags: number;\n\n\tconstructor(fn: () => T);\n\n\t_notify(): void;\n\tget value(): T;\n}\n\nfunction Computed(this: Computed, fn: () => unknown) {\n\tSignal.call(this, undefined);\n\n\tthis._fn = fn;\n\tthis._sources = undefined;\n\tthis._globalVersion = globalVersion - 1;\n\tthis._flags = OUTDATED;\n}\n\nComputed.prototype = new Signal() as Computed;\n\nComputed.prototype._refresh = function () {\n\tthis._flags &= ~NOTIFIED;\n\n\tif (this._flags & RUNNING) {\n\t\treturn false;\n\t}\n\n\t// If this computed signal has subscribed to updates from its dependencies\n\t// (TRACKING flag set) and none of them have notified about changes (OUTDATED\n\t// flag not set), then the computed value can't have changed.\n\tif ((this._flags & (OUTDATED | TRACKING)) === TRACKING) {\n\t\treturn true;\n\t}\n\tthis._flags &= ~OUTDATED;\n\n\tif (this._globalVersion === globalVersion) {\n\t\treturn true;\n\t}\n\tthis._globalVersion = globalVersion;\n\n\t// Mark this computed signal running before checking the dependencies for value\n\t// changes, so that the RUNNING flag can be used to notice cyclical dependencies.\n\tthis._flags |= RUNNING;\n\tif (this._version > 0 && !needsToRecompute(this)) {\n\t\tthis._flags &= ~RUNNING;\n\t\treturn true;\n\t}\n\n\tconst prevContext = evalContext;\n\ttry {\n\t\tprepareSources(this);\n\t\tevalContext = this;\n\t\tconst value = this._fn();\n\t\tif (\n\t\t\tthis._flags & HAS_ERROR ||\n\t\t\tthis._value !== value ||\n\t\t\tthis._version === 0\n\t\t) {\n\t\t\tthis._value = value;\n\t\t\tthis._flags &= ~HAS_ERROR;\n\t\t\tthis._version++;\n\t\t}\n\t} catch (err) {\n\t\tthis._value = err;\n\t\tthis._flags |= HAS_ERROR;\n\t\tthis._version++;\n\t}\n\tevalContext = prevContext;\n\tcleanupSources(this);\n\tthis._flags &= ~RUNNING;\n\treturn true;\n};\n\nComputed.prototype._subscribe = function (node) {\n\tif (this._targets === undefined) {\n\t\tthis._flags |= OUTDATED | TRACKING;\n\n\t\t// A computed signal subscribes lazily to its dependencies when it\n\t\t// gets its first subscriber.\n\t\tfor (\n\t\t\tlet node = this._sources;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextSource\n\t\t) {\n\t\t\tnode._source._subscribe(node);\n\t\t}\n\t}\n\tSignal.prototype._subscribe.call(this, node);\n};\n\nComputed.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the computed signal has any subscribers.\n\tif (this._targets !== undefined) {\n\t\tSignal.prototype._unsubscribe.call(this, node);\n\n\t\t// Computed signal unsubscribes from its dependencies when it loses its last subscriber.\n\t\t// This makes it possible for unreferences subgraphs of computed signals to get garbage collected.\n\t\tif (this._targets === undefined) {\n\t\t\tthis._flags &= ~TRACKING;\n\n\t\t\tfor (\n\t\t\t\tlet node = this._sources;\n\t\t\t\tnode !== undefined;\n\t\t\t\tnode = node._nextSource\n\t\t\t) {\n\t\t\t\tnode._source._unsubscribe(node);\n\t\t\t}\n\t\t}\n\t}\n};\n\nComputed.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= OUTDATED | NOTIFIED;\n\n\t\tfor (\n\t\t\tlet node = this._targets;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextTarget\n\t\t) {\n\t\t\tnode._target._notify();\n\t\t}\n\t}\n};\n\nObject.defineProperty(Computed.prototype, \"value\", {\n\tget(this: Computed) {\n\t\tif (this._flags & RUNNING) {\n\t\t\tthrow new Error(\"Cycle detected\");\n\t\t}\n\t\tconst node = addDependency(this);\n\t\tthis._refresh();\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\tif (this._flags & HAS_ERROR) {\n\t\t\tthrow this._value;\n\t\t}\n\t\treturn this._value;\n\t},\n});\n\n/**\n * An interface for read-only signals.\n */\ninterface ReadonlySignal<T = any> {\n\treadonly value: T;\n\tpeek(): T;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\tvalueOf(): T;\n\ttoString(): string;\n\ttoJSON(): T;\n\tbrand: typeof BRAND_SYMBOL;\n}\n\n/**\n * Create a new signal that is computed based on the values of other signals.\n *\n * The returned computed signal is read-only, and its value is automatically\n * updated when any signals accessed from within the callback function change.\n *\n * @param fn The effect callback.\n * @returns A new read-only signal.\n */\nfunction computed<T>(fn: () => T): ReadonlySignal<T> {\n\treturn new Computed(fn);\n}\n\nfunction cleanupEffect(effect: Effect) {\n\tconst cleanup = effect._cleanup;\n\teffect._cleanup = undefined;\n\n\tif (typeof cleanup === \"function\") {\n\t\t/*@__INLINE__**/ startBatch();\n\n\t\t// Run cleanup functions always outside of any context.\n\t\tconst prevContext = evalContext;\n\t\tevalContext = undefined;\n\t\ttry {\n\t\t\tcleanup();\n\t\t} catch (err) {\n\t\t\teffect._flags &= ~RUNNING;\n\t\t\teffect._flags |= DISPOSED;\n\t\t\tdisposeEffect(effect);\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tevalContext = prevContext;\n\t\t\tendBatch();\n\t\t}\n\t}\n}\n\nfunction disposeEffect(effect: Effect) {\n\tfor (\n\t\tlet node = effect._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tnode._source._unsubscribe(node);\n\t}\n\teffect._fn = undefined;\n\teffect._sources = undefined;\n\n\tcleanupEffect(effect);\n}\n\nfunction endEffect(this: Effect, prevContext?: Computed | Effect) {\n\tif (evalContext !== this) {\n\t\tthrow new Error(\"Out-of-order effect\");\n\t}\n\tcleanupSources(this);\n\tevalContext = prevContext;\n\n\tthis._flags &= ~RUNNING;\n\tif (this._flags & DISPOSED) {\n\t\tdisposeEffect(this);\n\t}\n\tendBatch();\n}\n\ntype EffectFn = () => void | (() => void);\n\ndeclare class Effect {\n\t_fn?: EffectFn;\n\t_cleanup?: () => void;\n\t_sources?: Node;\n\t_nextBatchedEffect?: Effect;\n\t_flags: number;\n\n\tconstructor(fn: EffectFn);\n\n\t_callback(): void;\n\t_start(): () => void;\n\t_notify(): void;\n\t_dispose(): void;\n}\n\nfunction Effect(this: Effect, fn: EffectFn) {\n\tthis._fn = fn;\n\tthis._cleanup = undefined;\n\tthis._sources = undefined;\n\tthis._nextBatchedEffect = undefined;\n\tthis._flags = TRACKING;\n}\n\nEffect.prototype._callback = function () {\n\tconst finish = this._start();\n\ttry {\n\t\tif (this._flags & DISPOSED) return;\n\t\tif (this._fn === undefined) return;\n\n\t\tconst cleanup = this._fn();\n\t\tif (typeof cleanup === \"function\") {\n\t\t\tthis._cleanup = cleanup;\n\t\t}\n\t} finally {\n\t\tfinish();\n\t}\n};\n\nEffect.prototype._start = function () {\n\tif (this._flags & RUNNING) {\n\t\tthrow new Error(\"Cycle detected\");\n\t}\n\tthis._flags |= RUNNING;\n\tthis._flags &= ~DISPOSED;\n\tcleanupEffect(this);\n\tprepareSources(this);\n\n\t/*@__INLINE__**/ startBatch();\n\tconst prevContext = evalContext;\n\tevalContext = this;\n\treturn endEffect.bind(this, prevContext);\n};\n\nEffect.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= NOTIFIED;\n\t\tthis._nextBatchedEffect = batchedEffect;\n\t\tbatchedEffect = this;\n\t}\n};\n\nEffect.prototype._dispose = function () {\n\tthis._flags |= DISPOSED;\n\n\tif (!(this._flags & RUNNING)) {\n\t\tdisposeEffect(this);\n\t}\n};\n\n/**\n * Create an effect to run arbitrary code in response to signal changes.\n *\n * An effect tracks which signals are accessed within the given callback\n * function `fn`, and re-runs the callback when those signals change.\n *\n * The callback may return a cleanup function. The cleanup function gets\n * run once, either when the callback is next called or when the effect\n * gets disposed, whichever happens first.\n *\n * @param fn The effect callback.\n * @returns A function for disposing the effect.\n */\nfunction effect(fn: EffectFn): () => void {\n\tconst effect = new Effect(fn);\n\ttry {\n\t\teffect._callback();\n\t} catch (err) {\n\t\teffect._dispose();\n\t\tthrow err;\n\t}\n\t// Return a bound function instead of a wrapper like `() => effect._dispose()`,\n\t// because bound functions seem to be just as fast and take up a lot less memory.\n\treturn effect._dispose.bind(effect);\n}\n\nexport { computed, effect, batch, untracked, Signal, ReadonlySignal };\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { LeadCaptureForm } from '../lead_capture_form'\nimport {\n  useLeadCaptureForm,\n  useMembers,\n  useStep,\n  useFamilyCreation,\n  useMembershipTemplates,\n  useError,\n  useClasses,\n  usePreview,\n} from '../landing_page'\nimport { useComputed, useSignal, useSignalEffect } from '@preact/signals'\nimport { MembershipSelection } from './membership'\nimport { ClassSelection } from './classes'\n\nexport function SignUp() {\n  const membershipTemplates = useMembershipTemplates()\n  const { classes } = useClasses()\n  const { members, ensureParticipant } = useMembers()\n  const { nextStep } = useStep()\n  const { setError } = useError()\n  const familyCreation = useFamilyCreation()\n  const isPreview = usePreview()\n\n  // When we do multiple people, we'll want to move these into a\n  // per-person Context.\n  const primaryMember = members[0]\n  const participants = members.slice(1)\n  const participating = useSignal(primaryMember.participating)\n  const showParticipants = !familyCreation && !participating.value\n  const membershipSelected = useSignal(!membershipTemplates)\n  const classSelected = useSignal(!classes)\n\n  const nextStepUnlessInvalid = (event) => {\n    event.preventDefault()\n\n    if (!membershipSelected.value) {\n      setError({ membership: 'Select a Membership' })\n      return\n    }\n\n    if (!isPreview && !classSelected.value) {\n      setError({ class: 'Select a Class' })\n      return\n    }\n\n    if (event.target.checkValidity()) {\n      nextStep()\n    }\n  }\n\n  useSignalEffect(() => (primaryMember.participating = participating.value), [participating])\n\n  useSignalEffect(() => {\n    if (!participating.value) {\n      ensureParticipant()\n    }\n  }, [participating])\n\n  return (\n    <form onSubmit={nextStepUnlessInvalid}>\n      <div class=\"p-3 bg-[var(--shadow-color)] space-y-3\">\n        <PrimaryMember\n          member={primaryMember}\n          participating={participating}\n          membershipSelected={membershipSelected}\n          classSelected={classSelected}\n        />\n\n        {showParticipants &&\n          participants.map((member) => (\n            <ParticipantMember\n              member={member}\n              membershipSelected={membershipSelected}\n              classSelected={classSelected}\n            />\n          ))}\n      </div>\n      <div class=\"flex justify-between items-center gap-4 mt-4 pb-4\">\n        <div class=\"label required text-[var(--secondary-color)]\">required</div>\n\n        <button class=\"btn\" type=\"submit\">\n          NEXT\n        </button>\n      </div>\n    </form>\n  )\n}\n\nfunction PrimaryMember({ member, participating, membershipSelected, classSelected }) {\n  const { leadCaptureForm, guardianLeadCaptureForm } = useLeadCaptureForm()\n\n  return (\n    <>\n      {guardianLeadCaptureForm && (\n        <div class=\"p-3 bg-[var(--tertiary-color)]\">\n          <div class=\"space-y-1\">\n            <div class=\"font-medium uppercase tracking-widest required\">Who are you signing up?</div>\n\n            <div class=\"space-y-0.5\">\n              <div class=\"flex gap-2 items-center\">\n                <input\n                  id=\"participating\"\n                  type=\"radio\"\n                  class=\"radio radio-sm\"\n                  checked={participating.value}\n                  onChange={({ target }) => (participating.value = target.checked)}\n                />\n                <label for=\"participating\">Myself (18+)</label>\n              </div>\n              <div class=\"flex gap-2 items-center\">\n                <input\n                  id=\"not-participating\"\n                  type=\"radio\"\n                  class=\"radio radio-sm\"\n                  checked={!participating.value}\n                  onChange={({ target }) => (participating.value = !target.checked)}\n                />\n                <label for=\"not-participating\">Participant under 18</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      )}\n\n      <div class=\"p-3 bg-[var(--tertiary-color)]\">\n        <div class=\"text-base font-bold\">\n          {participating.value ? 'Your contact info' : 'Guardian contact info'}\n        </div>\n\n        <div class=\"space-y-3\">\n          {guardianLeadCaptureForm ? (\n            <>\n              {participating.value ? (\n                <ParticipantInfo\n                  member={member}\n                  leadCaptureForm={leadCaptureForm}\n                  membershipSelected={membershipSelected}\n                  classSelected={classSelected}\n                />\n              ) : (\n                <LeadCaptureForm member={member} leadCaptureForm={guardianLeadCaptureForm} />\n              )}\n            </>\n          ) : (\n            <ParticipantInfo\n              member={member}\n              leadCaptureForm={leadCaptureForm}\n              membershipSelected={membershipSelected}\n              classSelected={classSelected}\n            />\n          )}\n        </div>\n      </div>\n    </>\n  )\n}\n\nfunction ParticipantMember({ member, membershipSelected, classSelected }) {\n  let { leadCaptureForm, guardianLeadCaptureForm } = useLeadCaptureForm()\n\n  const usePrimaryInfo = useSignal(member.usePrimaryInfo)\n\n  useSignalEffect(() => (member.usePrimaryInfo = usePrimaryInfo.value), [usePrimaryInfo])\n\n  if (usePrimaryInfo.value) {\n    leadCaptureForm = leadCaptureForm.filter((field) => {\n      if (!guardianLeadCaptureForm.map((f) => f.key).includes(field.key)) {\n        return true\n      }\n\n      return !['phone', 'email', 'address'].includes(field.key)\n    })\n  }\n\n  return (\n    <div className=\"p-3 bg-[var(--tertiary-color)]\">\n      <div class=\"text-base font-bold mb-3\">Participant info</div>\n\n      <div className=\"space-y-3\">\n        <div className=\"flex items-center gap-2\">\n          <span class={usePrimaryInfo.value ? '' : 'text-[var(--secondary-color-light)]'}>\n            Use Guardian contact info\n          </span>\n          <input\n            type=\"checkbox\"\n            class=\"toggle toggle-xs\"\n            checked={usePrimaryInfo.value}\n            onChange={({ target }) => (usePrimaryInfo.value = target.checked)}\n          />\n        </div>\n\n        <ParticipantInfo\n          member={member}\n          leadCaptureForm={leadCaptureForm}\n          membershipSelected={membershipSelected}\n          classSelected={classSelected}\n        />\n      </div>\n    </div>\n  )\n}\n\nfunction ParticipantInfo({ member, leadCaptureForm, membershipSelected, classSelected }) {\n  return (\n    <>\n      <LeadCaptureForm member={member} leadCaptureForm={leadCaptureForm} />\n\n      <MembershipAndClassSelection\n        member={member}\n        membershipSelected={membershipSelected}\n        classSelected={classSelected}\n      />\n    </>\n  )\n}\n\nfunction MembershipAndClassSelection({ member, membershipSelected, classSelected }) {\n  const membershipTemplates = useMembershipTemplates()\n  const { hasClasses, classesFor, required } = useClasses()\n\n  const selectedTemplate = useSignal(member.membershipTemplate)\n  const selectedProgram = useSignal(member.program)\n  const availableClasses = useComputed(() => {\n    if (!hasClasses) return\n    if (!membershipSelected.value) return\n    if (!selectedTemplate.value) return\n    if (!selectedProgram.value) return\n\n    return classesFor(selectedProgram.value.id)\n  })\n\n  const current = availableClasses.value?.find(({ name }) => name === member.class?.name)\n  const selectedClass = useSignal(null)\n  if (current) {\n    selectedClass.value = current\n  }\n\n  useSignalEffect(() => {\n    if (required || Boolean(selectedClass.value)) {\n      classSelected.value = !availableClasses.value\n      return\n    }\n\n    classSelected.value = true\n  })\n\n  return (\n    <>\n      {membershipTemplates && (\n        <MembershipSelection\n          member={member}\n          completed={membershipSelected}\n          selectedTemplate={selectedTemplate}\n          selectedProgram={selectedProgram}\n        />\n      )}\n      {availableClasses.value && (\n        <ClassSelection\n          member={member}\n          completed={classSelected}\n          availableClasses={availableClasses}\n          selectedClass={selectedClass}\n          selectedProgram={selectedProgram}\n        />\n      )}\n    </>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useSignal, useSignalEffect } from '@preact/signals'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { useMembershipTemplates, useError } from '../landing_page'\nimport { Collapsible } from './collapsible'\nimport { Money, useCart } from './cart'\nimport { Error } from './error'\nimport { Select } from '../select'\n\nexport function MembershipSelection({ member, completed, selectedTemplate, selectedProgram }) {\n  const { errors, clearError } = useError()\n  const { addToCart, removeFromCart } = useCart()\n  const membershipTemplates = useMembershipTemplates()\n\n  const classes = 'size-2 rounded-full ring-2 ring-offset-[var(--shadow-color)] ring-offset-2'\n\n  useSignalEffect(() => {\n    if (selectedTemplate.value) {\n      clearError('membership')\n    }\n  })\n\n  useSignalEffect(() => {\n    const mt = selectedTemplate.value\n\n    if (mt && mt === member.membershipTemplate) {\n      completed.value = true\n      return\n    }\n\n    member.class = null\n\n    if (mt) {\n      const manyPrograms = mt.programs && mt.programs.length > 1\n      member.membershipTemplate = mt\n\n      if (manyPrograms) {\n        completed.value = false\n        member.program = null\n        selectedProgram.value = null\n        return\n      }\n\n      if (mt.programs) {\n        member.program = mt.programs[0]\n        selectedProgram.value = mt.programs[0]\n      } else {\n        member.program = null\n        selectedProgram.value = null\n      }\n\n      completed.value = true\n\n      return\n    }\n\n    completed.value = false\n    member.membershipTemplate = null\n    member.program = null\n  })\n\n  return (\n    <>\n      <div\n        class={`bg-[var(--shadow-color)] border ${errors.membership ? 'border-danger-600' : 'border-transparent'}`}\n      >\n        <Collapsible\n          defaultOpen={true}\n          Trigger={\n            <>\n              <div class=\"flex items-center gap-2 size\">\n                <div class=\"text-base font-bold\">Membership</div>\n                {completed.value && (\n                  <div class=\"size-4 bg-[var(--tertiary-color)] rounded-full\">\n                    <FontAwesomeIcon icon=\"circle-check\" className=\"text-[var(--primary-color)] size-4 block\" />\n                  </div>\n                )}\n              </div>\n            </>\n          }\n          Content={\n            <div class=\"space-y-3\">\n              {membershipTemplates.map((membershipTemplate) => (\n                <MembershipTemplate\n                  member={member}\n                  membershipTemplate={membershipTemplate}\n                  onSelect={(event) => {\n                    if (\n                      event.target.tagName === 'SELECT' ||\n                      event.target.tagName === 'LABEL' ||\n                      event.target.tagName === 'OPTION'\n                    ) {\n                      return\n                    }\n\n                    if (selectedTemplate.value === membershipTemplate) {\n                      removeFromCart(membershipTemplate)\n                      selectedTemplate.value = null\n                      return\n                    }\n\n                    removeFromCart(selectedTemplate.value)\n                    addToCart(membershipTemplate)\n                    selectedTemplate.value = membershipTemplate\n                  }}\n                  onProgramSelect={({ target }) => {\n                    completed.value = true\n                    const program = selectedTemplate.value.programs.find((p) => p.id.toString() === target.value)\n                    member.class = null\n                    member.program = program\n                    selectedProgram.value = program\n                  }}\n                  selected={selectedTemplate.value === membershipTemplate}\n                />\n              ))}\n            </div>\n          }\n        />\n      </div>\n\n      {errors.membership && <Error message=\"Select a Membership\" />}\n    </>\n  )\n}\n\nfunction MembershipTemplate({ member, membershipTemplate, onSelect, onProgramSelect, selected = false }) {\n  const classes =\n    'block relative w-full bg-[var(--tertiary-color)] p-3 rounded text-left border-2 transition-colors'\n\n  let selectedClasses = 'border-transparent hover:border-[var(--primary-color)]/75'\n\n  if (selected) {\n    selectedClasses = 'border-[var(--primary-color)]'\n  }\n\n  return (\n    <button type=\"button\" onClick={onSelect} class={`${classes} ${selectedClasses}`}>\n      {selected && (\n        <div class=\"absolute -left-2 -top-2 bg-[var(--tertiary-color)] size-4 rounded-full\">\n          <FontAwesomeIcon icon=\"circle-check\" className=\"block text-[var(--primary-color)] size-4\" />\n        </div>\n      )}\n\n      <MembershipTemplateDetails membershipTemplate={membershipTemplate} />\n      {membershipTemplate.description && <div class=\"mt-2\">{membershipTemplate.description}</div>}\n\n      {membershipTemplate.programs && (\n        <>\n          <div class=\"my-2 w-full border-t border-[var(--shadow-color)]\"></div>\n          {selected && membershipTemplate.programs.length > 1 ? (\n            <ProgramSelector\n              member={member}\n              membershipTemplate={membershipTemplate}\n              onProgramSelect={onProgramSelect}\n            />\n          ) : (\n            <div>{membershipTemplate.programs.map((p) => p.name).join(', ')}</div>\n          )}\n        </>\n      )}\n    </button>\n  )\n}\n\nfunction MembershipTemplateDetails({ membershipTemplate }) {\n  return (\n    <div class=\"flex items-center justify-between w-full\">\n      <div class=\"flex gap-x-3 items-center flex-wrap\">\n        <div class=\"font-bold\">{membershipTemplate.name}</div>\n        {membershipTemplate.kind === 'trial' && <div class=\"pill\">trial</div>}\n        <div>{membershipTemplate.interval}</div>\n      </div>\n\n      <div class=\"space-y-1 text-right\">\n        <div>\n          {membershipTemplate.price ? (\n            <div class=\"flex justify-end items-center gap-1 whitespace-nowrap\">\n              <Money amount={membershipTemplate.price} />\n              {membershipTemplate.billing_interval && <div>{membershipTemplate.billing_interval}</div>}\n            </div>\n          ) : (\n            'Free'\n          )}\n        </div>\n        {membershipTemplate.registration_fee_price > 0 && (\n          <div class=\"flex justify-end items-center gap-1 whitespace-nowrap\">\n            <Money amount={membershipTemplate.registration_fee_price} />\n            <div>Reg. Fee</div>\n          </div>\n        )}\n      </div>\n    </div>\n  )\n}\n\nfunction ProgramSelector({ member, membershipTemplate, onProgramSelect }) {\n  return (\n    <div>\n      <label\n        for={`programs-${membershipTemplate.id}`}\n        class=\"block font-medium uppercase tracking-widest required mb-1\"\n      >\n        program\n      </label>\n      <Select id={`programs-${membershipTemplate.id}`} onInput={onProgramSelect} required>\n        <option selected hidden disabled value=\"\">\n          Select a Program\n        </option>\n        {membershipTemplate.programs.map((program) => (\n          <option value={program.id} selected={program.id === member.program?.id}>\n            {program.name}\n          </option>\n        ))}\n      </Select>\n    </div>\n  )\n}\n", "/*!\n * Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\nfunction _defineProperty(e, r, t) {\n  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && _setPrototypeOf(t, e);\n}\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nfunction _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nfunction _toPrimitive(t, r) {\n  if (\"object\" != typeof t || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != typeof i) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _wrapRegExp() {\n  _wrapRegExp = function (e, r) {\n    return new BabelRegExp(e, void 0, r);\n  };\n  var e = RegExp.prototype,\n    r = new WeakMap();\n  function BabelRegExp(e, t, p) {\n    var o = RegExp(e, t);\n    return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype);\n  }\n  function buildGroups(e, t) {\n    var p = r.get(t);\n    return Object.keys(p).reduce(function (r, t) {\n      var o = p[t];\n      if (\"number\" == typeof o) r[t] = e[o];else {\n        for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;\n        r[t] = e[o[i]];\n      }\n      return r;\n    }, Object.create(null));\n  }\n  return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {\n    var t = e.exec.call(this, r);\n    if (t) {\n      t.groups = buildGroups(t, this);\n      var p = t.indices;\n      p && (p.groups = buildGroups(p, this));\n    }\n    return t;\n  }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {\n    if (\"string\" == typeof p) {\n      var o = r.get(this);\n      return e[Symbol.replace].call(this, t, p.replace(/\\$<([^>]+)>/g, function (e, r) {\n        var t = o[r];\n        return \"$\" + (Array.isArray(t) ? t.join(\"$\") : t);\n      }));\n    }\n    if (\"function\" == typeof p) {\n      var i = this;\n      return e[Symbol.replace].call(this, t, function () {\n        var e = arguments;\n        return \"object\" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);\n      });\n    }\n    return e[Symbol.replace].call(this, t, p);\n  }, _wrapRegExp.apply(this, arguments);\n}\n\nconst noop = () => {};\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n  mark: noop,\n  measure: noop\n};\ntry {\n  if (typeof window !== 'undefined') _WINDOW = window;\n  if (typeof document !== 'undefined') _DOCUMENT = document;\n  if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n  if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\nconst {\n  userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar p = /fa(s|r|l|t|d|dr|dl|dt|b|k|kd|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\\-\\ ]/,\n  g = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar S = {\n    classic: {\n      fa: \"solid\",\n      fas: \"solid\",\n      \"fa-solid\": \"solid\",\n      far: \"regular\",\n      \"fa-regular\": \"regular\",\n      fal: \"light\",\n      \"fa-light\": \"light\",\n      fat: \"thin\",\n      \"fa-thin\": \"thin\",\n      fab: \"brands\",\n      \"fa-brands\": \"brands\"\n    },\n    duotone: {\n      fa: \"solid\",\n      fad: \"solid\",\n      \"fa-solid\": \"solid\",\n      \"fa-duotone\": \"solid\",\n      fadr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fadl: \"light\",\n      \"fa-light\": \"light\",\n      fadt: \"thin\",\n      \"fa-thin\": \"thin\"\n    },\n    sharp: {\n      fa: \"solid\",\n      fass: \"solid\",\n      \"fa-solid\": \"solid\",\n      fasr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fasl: \"light\",\n      \"fa-light\": \"light\",\n      fast: \"thin\",\n      \"fa-thin\": \"thin\"\n    },\n    \"sharp-duotone\": {\n      fa: \"solid\",\n      fasds: \"solid\",\n      \"fa-solid\": \"solid\",\n      fasdr: \"regular\",\n      \"fa-regular\": \"regular\",\n      fasdl: \"light\",\n      \"fa-light\": \"light\",\n      fasdt: \"thin\",\n      \"fa-thin\": \"thin\"\n    }\n  },\n  A = {\n    GROUP: \"duotone-group\",\n    SWAP_OPACITY: \"swap-opacity\",\n    PRIMARY: \"primary\",\n    SECONDARY: \"secondary\"\n  },\n  P = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar s = \"classic\",\n  t = \"duotone\",\n  r = \"sharp\",\n  o = \"sharp-duotone\",\n  L = [s, t, r, o];\nvar G = {\n    classic: {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\",\n      100: \"fat\"\n    },\n    duotone: {\n      900: \"fad\",\n      400: \"fadr\",\n      300: \"fadl\",\n      100: \"fadt\"\n    },\n    sharp: {\n      900: \"fass\",\n      400: \"fasr\",\n      300: \"fasl\",\n      100: \"fast\"\n    },\n    \"sharp-duotone\": {\n      900: \"fasds\",\n      400: \"fasdr\",\n      300: \"fasdl\",\n      100: \"fasdt\"\n    }\n  };\nvar lt = {\n    \"Font Awesome 6 Free\": {\n      900: \"fas\",\n      400: \"far\"\n    },\n    \"Font Awesome 6 Pro\": {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\",\n      100: \"fat\"\n    },\n    \"Font Awesome 6 Brands\": {\n      400: \"fab\",\n      normal: \"fab\"\n    },\n    \"Font Awesome 6 Duotone\": {\n      900: \"fad\",\n      400: \"fadr\",\n      normal: \"fadr\",\n      300: \"fadl\",\n      100: \"fadt\"\n    },\n    \"Font Awesome 6 Sharp\": {\n      900: \"fass\",\n      400: \"fasr\",\n      normal: \"fasr\",\n      300: \"fasl\",\n      100: \"fast\"\n    },\n    \"Font Awesome 6 Sharp Duotone\": {\n      900: \"fasds\",\n      400: \"fasdr\",\n      normal: \"fasdr\",\n      300: \"fasdl\",\n      100: \"fasdt\"\n    }\n  };\nvar pt = new Map([[\"classic\", {\n    defaultShortPrefixId: \"fas\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\", \"brands\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"sharp\", {\n    defaultShortPrefixId: \"fass\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"duotone\", {\n    defaultShortPrefixId: \"fad\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }], [\"sharp-duotone\", {\n    defaultShortPrefixId: \"fasds\",\n    defaultStyleId: \"solid\",\n    styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n    futureStyleIds: [],\n    defaultFontWeight: 900\n  }]]),\n  xt = {\n    classic: {\n      solid: \"fas\",\n      regular: \"far\",\n      light: \"fal\",\n      thin: \"fat\",\n      brands: \"fab\"\n    },\n    duotone: {\n      solid: \"fad\",\n      regular: \"fadr\",\n      light: \"fadl\",\n      thin: \"fadt\"\n    },\n    sharp: {\n      solid: \"fass\",\n      regular: \"fasr\",\n      light: \"fasl\",\n      thin: \"fast\"\n    },\n    \"sharp-duotone\": {\n      solid: \"fasds\",\n      regular: \"fasdr\",\n      light: \"fasdl\",\n      thin: \"fasdt\"\n    }\n  };\nvar Ft = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"],\n  St = {\n    kit: {\n      fak: \"kit\",\n      \"fa-kit\": \"kit\"\n    },\n    \"kit-duotone\": {\n      fakd: \"kit-duotone\",\n      \"fa-kit-duotone\": \"kit-duotone\"\n    }\n  },\n  At = [\"kit\"];\nvar Ct = {\n  kit: {\n    \"fa-kit\": \"fak\"\n  },\n  \"kit-duotone\": {\n    \"fa-kit-duotone\": \"fakd\"\n  }\n};\nvar Lt = [\"fak\", \"fakd\"],\n  Wt = {\n    kit: {\n      fak: \"fa-kit\"\n    },\n    \"kit-duotone\": {\n      fakd: \"fa-kit-duotone\"\n    }\n  };\nvar Et = {\n    kit: {\n      kit: \"fak\"\n    },\n    \"kit-duotone\": {\n      \"kit-duotone\": \"fakd\"\n    }\n  };\n\nvar t$1 = {\n    GROUP: \"duotone-group\",\n    SWAP_OPACITY: \"swap-opacity\",\n    PRIMARY: \"primary\",\n    SECONDARY: \"secondary\"\n  },\n  r$1 = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar bt$1 = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"];\nvar Yt = {\n    \"Font Awesome Kit\": {\n      400: \"fak\",\n      normal: \"fak\"\n    },\n    \"Font Awesome Kit Duotone\": {\n      400: \"fakd\",\n      normal: \"fakd\"\n    }\n  };\nvar po = {\n    classic: {\n      \"fa-brands\": \"fab\",\n      \"fa-duotone\": \"fad\",\n      \"fa-light\": \"fal\",\n      \"fa-regular\": \"far\",\n      \"fa-solid\": \"fas\",\n      \"fa-thin\": \"fat\"\n    },\n    duotone: {\n      \"fa-regular\": \"fadr\",\n      \"fa-light\": \"fadl\",\n      \"fa-thin\": \"fadt\"\n    },\n    sharp: {\n      \"fa-solid\": \"fass\",\n      \"fa-regular\": \"fasr\",\n      \"fa-light\": \"fasl\",\n      \"fa-thin\": \"fast\"\n    },\n    \"sharp-duotone\": {\n      \"fa-solid\": \"fasds\",\n      \"fa-regular\": \"fasdr\",\n      \"fa-light\": \"fasdl\",\n      \"fa-thin\": \"fasdt\"\n    }\n  },\n  I$1 = {\n    classic: [\"fas\", \"far\", \"fal\", \"fat\", \"fad\"],\n    duotone: [\"fadr\", \"fadl\", \"fadt\"],\n    sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n    \"sharp-duotone\": [\"fasds\", \"fasdr\", \"fasdl\", \"fasdt\"]\n  },\n  co = {\n    classic: {\n      fab: \"fa-brands\",\n      fad: \"fa-duotone\",\n      fal: \"fa-light\",\n      far: \"fa-regular\",\n      fas: \"fa-solid\",\n      fat: \"fa-thin\"\n    },\n    duotone: {\n      fadr: \"fa-regular\",\n      fadl: \"fa-light\",\n      fadt: \"fa-thin\"\n    },\n    sharp: {\n      fass: \"fa-solid\",\n      fasr: \"fa-regular\",\n      fasl: \"fa-light\",\n      fast: \"fa-thin\"\n    },\n    \"sharp-duotone\": {\n      fasds: \"fa-solid\",\n      fasdr: \"fa-regular\",\n      fasdl: \"fa-light\",\n      fasdt: \"fa-thin\"\n    }\n  },\n  x = [\"fa-solid\", \"fa-regular\", \"fa-light\", \"fa-thin\", \"fa-duotone\", \"fa-brands\"],\n  xo = [\"fa\", \"fas\", \"far\", \"fal\", \"fat\", \"fad\", \"fadr\", \"fadl\", \"fadt\", \"fab\", \"fass\", \"fasr\", \"fasl\", \"fast\", \"fasds\", \"fasdr\", \"fasdl\", \"fasdt\", ...r$1, ...x],\n  m$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n  c$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n  F$1 = c$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n  Fo = [...Object.keys(I$1), ...m$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(c$1.map(o => \"\".concat(o, \"x\"))).concat(F$1.map(o => \"w-\".concat(o)));\nvar ko = {\n    \"Font Awesome 5 Free\": {\n      900: \"fas\",\n      400: \"far\"\n    },\n    \"Font Awesome 5 Pro\": {\n      900: \"fas\",\n      400: \"far\",\n      normal: \"far\",\n      300: \"fal\"\n    },\n    \"Font Awesome 5 Brands\": {\n      400: \"fab\",\n      normal: \"fab\"\n    },\n    \"Font Awesome 5 Duotone\": {\n      900: \"fad\"\n    }\n  };\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n  try {\n    return process.env.NODE_ENV === 'production';\n  } catch (e$$1) {\n    return false;\n  }\n})();\nfunction familyProxy(obj) {\n  // Defaults to the classic family if family is not available\n  return new Proxy(obj, {\n    get(target, prop) {\n      return prop in target ? target[prop] : target[s];\n    }\n  });\n}\nconst _PREFIX_TO_STYLE = _objectSpread2({}, S);\n\n// We changed FACSSClassesToStyleId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles.  But we do still need duotone in _PREFIX_TO_STYLE below, so we are manually adding\n// {'fa-duotone': 'duotone'}\n_PREFIX_TO_STYLE[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  'fa-duotone': 'duotone'\n}), S[s]), St['kit']), St['kit-duotone']);\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = _objectSpread2({}, xt);\n\n// We changed FAStyleIdToShortPrefixId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles.  But we do still need duotone in _STYLE_TO_PREFIX below, so we are manually adding {duotone: 'fad'}\n_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  duotone: 'fad'\n}), _STYLE_TO_PREFIX[s]), Et['kit']), Et['kit-duotone']);\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = _objectSpread2({}, co);\n_PREFIX_TO_LONG_STYLE[s] = _objectSpread2(_objectSpread2({}, _PREFIX_TO_LONG_STYLE[s]), Wt['kit']);\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = _objectSpread2({}, po);\n_LONG_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2({}, _LONG_STYLE_TO_PREFIX[s]), Ct['kit']);\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = p; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = g;\nconst _FONT_WEIGHT_TO_PREFIX = _objectSpread2({}, G);\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = A;\nconst RESERVED_CLASSES = [...At, ...Fo];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n  var element = DOCUMENT.querySelector('script[' + attr + ']');\n  if (element) {\n    return element.getAttribute(attr);\n  }\n}\nfunction coerce(val) {\n  // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n  // We'll assume that this is an indication that it should be toggled to true\n  if (val === '') return true;\n  if (val === 'false') return false;\n  if (val === 'true') return true;\n  return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n  const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n  attrs.forEach(_ref => {\n    let [attr, key] = _ref;\n    const val = coerce(getAttrConfig(attr));\n    if (val !== undefined && val !== null) {\n      initial[key] = val;\n    }\n  });\n}\nconst _default = {\n  styleDefault: 'solid',\n  familyDefault: s,\n  cssPrefix: DEFAULT_CSS_PREFIX,\n  replacementClass: DEFAULT_REPLACEMENT_CLASS,\n  autoReplaceSvg: true,\n  autoAddCss: true,\n  autoA11y: true,\n  searchPseudoElements: false,\n  observeMutations: true,\n  mutateApproach: 'async',\n  keepOriginalSource: true,\n  measurePerformance: false,\n  showMissingIcons: true\n};\n\n// familyPrefix is deprecated but we must still support it if present\nif (initial.familyPrefix) {\n  initial.cssPrefix = initial.familyPrefix;\n}\nconst _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n  Object.defineProperty(config, key, {\n    enumerable: true,\n    set: function (val) {\n      _config[key] = val;\n      _onChangeCb.forEach(cb => cb(config));\n    },\n    get: function () {\n      return _config[key];\n    }\n  });\n});\n\n// familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\nObject.defineProperty(config, 'familyPrefix', {\n  enumerable: true,\n  set: function (val) {\n    _config.cssPrefix = val;\n    _onChangeCb.forEach(cb => cb(config));\n  },\n  get: function () {\n    return _config.cssPrefix;\n  }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n  _onChangeCb.push(cb);\n  return () => {\n    _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n  };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n  size: 16,\n  x: 0,\n  y: 0,\n  rotate: 0,\n  flipX: false,\n  flipY: false\n};\nfunction insertCss(css) {\n  if (!css || !IS_DOM) {\n    return;\n  }\n  const style = DOCUMENT.createElement('style');\n  style.setAttribute('type', 'text/css');\n  style.innerHTML = css;\n  const headChildren = DOCUMENT.head.childNodes;\n  let beforeChild = null;\n  for (let i = headChildren.length - 1; i > -1; i--) {\n    const child = headChildren[i];\n    const tagName = (child.tagName || '').toUpperCase();\n    if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n      beforeChild = child;\n    }\n  }\n  DOCUMENT.head.insertBefore(style, beforeChild);\n  return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n  let size = 12;\n  let id = '';\n  while (size-- > 0) {\n    id += idPool[Math.random() * 62 | 0];\n  }\n  return id;\n}\nfunction toArray(obj) {\n  const array = [];\n  for (let i = (obj || []).length >>> 0; i--;) {\n    array[i] = obj[i];\n  }\n  return array;\n}\nfunction classArray(node) {\n  if (node.classList) {\n    return toArray(node.classList);\n  } else {\n    return (node.getAttribute('class') || '').split(' ').filter(i => i);\n  }\n}\nfunction htmlEscape(str) {\n  return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction joinAttributes(attributes) {\n  return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n    return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n  }, '').trim();\n}\nfunction joinStyles(styles) {\n  return Object.keys(styles || {}).reduce((acc, styleName) => {\n    return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n  }, '');\n}\nfunction transformIsMeaningful(transform) {\n  return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n  let {\n    transform,\n    containerWidth,\n    iconWidth\n  } = _ref;\n  const outer = {\n    transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n  };\n  const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n  const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n  const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n  const inner = {\n    transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n  };\n  const path = {\n    transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n  };\n  return {\n    outer,\n    inner,\n    path\n  };\n}\nfunction transformForCss(_ref2) {\n  let {\n    transform,\n    width = UNITS_IN_GRID,\n    height = UNITS_IN_GRID,\n    startCentered = false\n  } = _ref2;\n  let val = '';\n  if (startCentered && IS_IE) {\n    val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n  } else if (startCentered) {\n    val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n  } else {\n    val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n  }\n  val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n  val += \"rotate(\".concat(transform.rotate, \"deg) \");\n  return val;\n}\n\nvar baseStyles = \":root, :host {\\n  --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n  --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n  --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n  --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n  --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n  --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n  --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n  --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n  --fa-font-sharp-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n  --fa-font-sharp-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n  --fa-font-sharp-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n  overflow: visible;\\n  box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n  display: var(--fa-display, inline-block);\\n  height: 1em;\\n  overflow: visible;\\n  vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n  vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n  vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n  vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n  vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n  vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n  vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n  margin-right: var(--fa-pull-margin, 0.3em);\\n  width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n  margin-left: var(--fa-pull-margin, 0.3em);\\n  width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n  width: var(--fa-li-width, 2em);\\n  top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n  width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n  display: inline-block;\\n  position: absolute;\\n  text-align: center;\\n}\\n\\n.fa-layers {\\n  display: inline-block;\\n  height: 1em;\\n  position: relative;\\n  text-align: center;\\n  vertical-align: -0.125em;\\n  width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n  transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n  background-color: var(--fa-counter-background-color, #ff253a);\\n  border-radius: var(--fa-counter-border-radius, 1em);\\n  box-sizing: border-box;\\n  color: var(--fa-inverse, #fff);\\n  line-height: var(--fa-counter-line-height, 1);\\n  max-width: var(--fa-counter-max-width, 5em);\\n  min-width: var(--fa-counter-min-width, 1.5em);\\n  overflow: hidden;\\n  padding: var(--fa-counter-padding, 0.25em 0.5em);\\n  right: var(--fa-right, 0);\\n  text-overflow: ellipsis;\\n  top: var(--fa-top, 0);\\n  transform: scale(var(--fa-counter-scale, 0.25));\\n  transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n  bottom: var(--fa-bottom, 0);\\n  right: var(--fa-right, 0);\\n  top: auto;\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n  bottom: var(--fa-bottom, 0);\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: auto;\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n  top: var(--fa-top, 0);\\n  right: var(--fa-right, 0);\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n  left: var(--fa-left, 0);\\n  right: auto;\\n  top: var(--fa-top, 0);\\n  transform: scale(var(--fa-layers-scale, 0.25));\\n  transform-origin: top left;\\n}\\n\\n.fa-1x {\\n  font-size: 1em;\\n}\\n\\n.fa-2x {\\n  font-size: 2em;\\n}\\n\\n.fa-3x {\\n  font-size: 3em;\\n}\\n\\n.fa-4x {\\n  font-size: 4em;\\n}\\n\\n.fa-5x {\\n  font-size: 5em;\\n}\\n\\n.fa-6x {\\n  font-size: 6em;\\n}\\n\\n.fa-7x {\\n  font-size: 7em;\\n}\\n\\n.fa-8x {\\n  font-size: 8em;\\n}\\n\\n.fa-9x {\\n  font-size: 9em;\\n}\\n\\n.fa-10x {\\n  font-size: 10em;\\n}\\n\\n.fa-2xs {\\n  font-size: 0.625em;\\n  line-height: 0.1em;\\n  vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n  font-size: 0.75em;\\n  line-height: 0.0833333337em;\\n  vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n  font-size: 0.875em;\\n  line-height: 0.0714285718em;\\n  vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n  font-size: 1.25em;\\n  line-height: 0.05em;\\n  vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n  font-size: 1.5em;\\n  line-height: 0.0416666682em;\\n  vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n  font-size: 2em;\\n  line-height: 0.03125em;\\n  vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n  text-align: center;\\n  width: 1.25em;\\n}\\n\\n.fa-ul {\\n  list-style-type: none;\\n  margin-left: var(--fa-li-margin, 2.5em);\\n  padding-left: 0;\\n}\\n.fa-ul > li {\\n  position: relative;\\n}\\n\\n.fa-li {\\n  left: calc(-1 * var(--fa-li-width, 2em));\\n  position: absolute;\\n  text-align: center;\\n  width: var(--fa-li-width, 2em);\\n  line-height: inherit;\\n}\\n\\n.fa-border {\\n  border-color: var(--fa-border-color, #eee);\\n  border-radius: var(--fa-border-radius, 0.1em);\\n  border-style: var(--fa-border-style, solid);\\n  border-width: var(--fa-border-width, 0.08em);\\n  padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n  float: left;\\n  margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n  float: right;\\n  margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n  animation-name: fa-beat;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n  animation-name: fa-bounce;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n  animation-name: fa-fade;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n  animation-name: fa-beat-fade;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n  animation-name: fa-flip;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n  animation-name: fa-shake;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n  animation-name: fa-spin;\\n  animation-delay: var(--fa-animation-delay, 0s);\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 2s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n  --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n  animation-name: fa-spin;\\n  animation-direction: var(--fa-animation-direction, normal);\\n  animation-duration: var(--fa-animation-duration, 1s);\\n  animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n  animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n  .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n    animation-delay: -1ms;\\n    animation-duration: 1ms;\\n    animation-iteration-count: 1;\\n    transition-delay: 0s;\\n    transition-duration: 0s;\\n  }\\n}\\n@keyframes fa-beat {\\n  0%, 90% {\\n    transform: scale(1);\\n  }\\n  45% {\\n    transform: scale(var(--fa-beat-scale, 1.25));\\n  }\\n}\\n@keyframes fa-bounce {\\n  0% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n  10% {\\n    transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n  }\\n  30% {\\n    transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n  }\\n  50% {\\n    transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n  }\\n  57% {\\n    transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n  }\\n  64% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n  100% {\\n    transform: scale(1, 1) translateY(0);\\n  }\\n}\\n@keyframes fa-fade {\\n  50% {\\n    opacity: var(--fa-fade-opacity, 0.4);\\n  }\\n}\\n@keyframes fa-beat-fade {\\n  0%, 100% {\\n    opacity: var(--fa-beat-fade-opacity, 0.4);\\n    transform: scale(1);\\n  }\\n  50% {\\n    opacity: 1;\\n    transform: scale(var(--fa-beat-fade-scale, 1.125));\\n  }\\n}\\n@keyframes fa-flip {\\n  50% {\\n    transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n  }\\n}\\n@keyframes fa-shake {\\n  0% {\\n    transform: rotate(-15deg);\\n  }\\n  4% {\\n    transform: rotate(15deg);\\n  }\\n  8%, 24% {\\n    transform: rotate(-18deg);\\n  }\\n  12%, 28% {\\n    transform: rotate(18deg);\\n  }\\n  16% {\\n    transform: rotate(-22deg);\\n  }\\n  20% {\\n    transform: rotate(22deg);\\n  }\\n  32% {\\n    transform: rotate(-12deg);\\n  }\\n  36% {\\n    transform: rotate(12deg);\\n  }\\n  40%, 100% {\\n    transform: rotate(0deg);\\n  }\\n}\\n@keyframes fa-spin {\\n  0% {\\n    transform: rotate(0deg);\\n  }\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n.fa-rotate-90 {\\n  transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n  transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n  transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n  transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n  transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n  transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n  transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n  display: inline-block;\\n  vertical-align: middle;\\n  height: 2em;\\n  position: relative;\\n  width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n  bottom: 0;\\n  left: 0;\\n  margin: auto;\\n  position: absolute;\\n  right: 0;\\n  top: 0;\\n  z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n  height: 1em;\\n  width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n  height: 2em;\\n  width: 2.5em;\\n}\\n\\n.fa-inverse {\\n  color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n  position: absolute;\\n  width: 1px;\\n  height: 1px;\\n  padding: 0;\\n  margin: -1px;\\n  overflow: hidden;\\n  clip: rect(0, 0, 0, 0);\\n  white-space: nowrap;\\n  border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n  position: absolute;\\n  width: 1px;\\n  height: 1px;\\n  padding: 0;\\n  margin: -1px;\\n  overflow: hidden;\\n  clip: rect(0, 0, 0, 0);\\n  white-space: nowrap;\\n  border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n  fill: var(--fa-primary-color, currentColor);\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n  fill: var(--fa-secondary-color, currentColor);\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n  opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n  opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n  fill: black;\\n}\";\n\nfunction css() {\n  const dcp = DEFAULT_CSS_PREFIX;\n  const drc = DEFAULT_REPLACEMENT_CLASS;\n  const fp = config.cssPrefix;\n  const rc = config.replacementClass;\n  let s = baseStyles;\n  if (fp !== dcp || rc !== drc) {\n    const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n    const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n    const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n    s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n  }\n  return s;\n}\nlet _cssInserted = false;\nfunction ensureCss() {\n  if (config.autoAddCss && !_cssInserted) {\n    insertCss(css());\n    _cssInserted = true;\n  }\n}\nvar InjectCSS = {\n  mixout() {\n    return {\n      dom: {\n        css,\n        insertCss: ensureCss\n      }\n    };\n  },\n  hooks() {\n    return {\n      beforeDOMElementCreation() {\n        ensureCss();\n      },\n      beforeI2svg() {\n        ensureCss();\n      }\n    };\n  }\n};\n\nconst w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nconst functions = [];\nconst listener = function () {\n  DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n  loaded = 1;\n  functions.map(fn => fn());\n};\nlet loaded = false;\nif (IS_DOM) {\n  loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n  if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready (fn) {\n  if (!IS_DOM) return;\n  loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n  const {\n    tag,\n    attributes = {},\n    children = []\n  } = abstractNodes;\n  if (typeof abstractNodes === 'string') {\n    return htmlEscape(abstractNodes);\n  } else {\n    return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n  }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n  if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n    return {\n      prefix,\n      iconName,\n      icon: mapping[prefix][iconName]\n    };\n  }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n  return function (a, b, c, d) {\n    return func.call(thisContext, a, b, c, d);\n  };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param  {Object}   subject      The object to reduce over.\n * @param  {Function} fn           The reducer function.\n * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].\n * @param  {Object}   thisContext  The context for the reducer.\n * @return {mixed}                 The final result.\n */\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n  var keys = Object.keys(subject),\n    length = keys.length,\n    iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n    i,\n    key,\n    result;\n  if (initialValue === undefined) {\n    i = 1;\n    result = subject[keys[0]];\n  } else {\n    i = 0;\n    result = initialValue;\n  }\n  for (; i < length; i++) {\n    key = keys[i];\n    result = iterator(result, subject[key], key, subject);\n  }\n  return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nfunction ucs2decode(string) {\n  const output = [];\n  let counter = 0;\n  const length = string.length;\n  while (counter < length) {\n    const value = string.charCodeAt(counter++);\n    if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n      const extra = string.charCodeAt(counter++);\n      if ((extra & 0xFC00) == 0xDC00) {\n        // eslint-disable-line eqeqeq\n        output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n      } else {\n        output.push(value);\n        counter--;\n      }\n    } else {\n      output.push(value);\n    }\n  }\n  return output;\n}\nfunction toHex(unicode) {\n  const decoded = ucs2decode(unicode);\n  return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n  const size = string.length;\n  let first = string.charCodeAt(index);\n  let second;\n  if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n    second = string.charCodeAt(index + 1);\n    if (second >= 0xDC00 && second <= 0xDFFF) {\n      return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n    }\n  }\n  return first;\n}\n\nfunction normalizeIcons(icons) {\n  return Object.keys(icons).reduce((acc, iconName) => {\n    const icon = icons[iconName];\n    const expanded = !!icon.icon;\n    if (expanded) {\n      acc[icon.iconName] = icon.icon;\n    } else {\n      acc[iconName] = icon;\n    }\n    return acc;\n  }, {});\n}\nfunction defineIcons(prefix, icons) {\n  let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  const {\n    skipHooks = false\n  } = params;\n  const normalized = normalizeIcons(icons);\n  if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n    namespace.hooks.addPack(prefix, normalizeIcons(icons));\n  } else {\n    namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n  }\n\n  /**\n   * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n   * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n   * for `fas` so we'll ease the upgrade process for our users by automatically defining\n   * this as well.\n   */\n  if (prefix === 'fas') {\n    defineIcons('fa', icons);\n  }\n}\n\nconst duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*path d=\"([^\"]+)\"/, {\n  d1: 1,\n  d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\".*path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n  cls1: 1,\n  d1: 2,\n  cls2: 3,\n  d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n  cls1: 1,\n  d1: 2\n})];\n\nconst {\n  styles,\n  shims\n} = namespace;\nconst FAMILY_NAMES = Object.keys(PREFIX_TO_LONG_STYLE);\nconst PREFIXES_FOR_FAMILY = FAMILY_NAMES.reduce((acc, familyId) => {\n  acc[familyId] = Object.keys(PREFIX_TO_LONG_STYLE[familyId]);\n  return acc;\n}, {});\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nfunction isReserved(name) {\n  return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n  const parts = cls.split('-');\n  const prefix = parts[0];\n  const iconName = parts.slice(1).join('-');\n  if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n    return iconName;\n  } else {\n    return null;\n  }\n}\nconst build = () => {\n  const lookup = reducer => {\n    return reduce(styles, (o$$1, style, prefix) => {\n      o$$1[prefix] = reduce(style, reducer, {});\n      return o$$1;\n    }, {});\n  };\n  _byUnicode = lookup((acc, icon, iconName) => {\n    if (icon[3]) {\n      acc[icon[3]] = iconName;\n    }\n    if (icon[2]) {\n      const aliases = icon[2].filter(a$$1 => {\n        return typeof a$$1 === 'number';\n      });\n      aliases.forEach(alias => {\n        acc[alias.toString(16)] = iconName;\n      });\n    }\n    return acc;\n  });\n  _byLigature = lookup((acc, icon, iconName) => {\n    acc[iconName] = iconName;\n    if (icon[2]) {\n      const aliases = icon[2].filter(a$$1 => {\n        return typeof a$$1 === 'string';\n      });\n      aliases.forEach(alias => {\n        acc[alias] = iconName;\n      });\n    }\n    return acc;\n  });\n  _byAlias = lookup((acc, icon, iconName) => {\n    const aliases = icon[2];\n    acc[iconName] = iconName;\n    aliases.forEach(alias => {\n      acc[alias] = iconName;\n    });\n    return acc;\n  });\n\n  // If we have a Kit, we can't determine if regular is available since we\n  // could be auto-fetching it. We'll have to assume that it is available.\n  const hasRegular = 'far' in styles || config.autoFetchSvg;\n  const shimLookups = reduce(shims, (acc, shim) => {\n    const maybeNameMaybeUnicode = shim[0];\n    let prefix = shim[1];\n    const iconName = shim[2];\n    if (prefix === 'far' && !hasRegular) {\n      prefix = 'fas';\n    }\n    if (typeof maybeNameMaybeUnicode === 'string') {\n      acc.names[maybeNameMaybeUnicode] = {\n        prefix,\n        iconName\n      };\n    }\n    if (typeof maybeNameMaybeUnicode === 'number') {\n      acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n        prefix,\n        iconName\n      };\n    }\n    return acc;\n  }, {\n    names: {},\n    unicodes: {}\n  });\n  _byOldName = shimLookups.names;\n  _byOldUnicode = shimLookups.unicodes;\n  _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n    family: config.familyDefault\n  });\n};\nonChange(c$$1 => {\n  _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n    family: config.familyDefault\n  });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n  return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n  return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n  return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n  return _byOldName[name] || {\n    prefix: null,\n    iconName: null\n  };\n}\nfunction byOldUnicode(unicode) {\n  const oldUnicode = _byOldUnicode[unicode];\n  const newUnicode = byUnicode('fas', unicode);\n  return oldUnicode || (newUnicode ? {\n    prefix: 'fas',\n    iconName: newUnicode\n  } : null) || {\n    prefix: null,\n    iconName: null\n  };\n}\nfunction getDefaultUsablePrefix() {\n  return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n  return {\n    prefix: null,\n    iconName: null,\n    rest: []\n  };\n};\nfunction getFamilyId(values) {\n  let family = s;\n  const famProps = FAMILY_NAMES.reduce((acc, familyId) => {\n    acc[familyId] = \"\".concat(config.cssPrefix, \"-\").concat(familyId);\n    return acc;\n  }, {});\n  L.forEach(familyId => {\n    if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n      family = familyId;\n    }\n  });\n  return family;\n}\nfunction getCanonicalPrefix(styleOrPrefix) {\n  let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    family = s\n  } = params;\n  const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n\n  // handles the exception of passing in only a family of 'duotone' with no style\n  if (family === t && !styleOrPrefix) {\n    return 'fad';\n  }\n  const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n  const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n  const result = prefix || defined || null;\n  return result;\n}\nfunction moveNonFaClassesToRest(classNames) {\n  let rest = [];\n  let iconName = null;\n  classNames.forEach(cls => {\n    const result = getIconName(config.cssPrefix, cls);\n    if (result) {\n      iconName = result;\n    } else if (cls) {\n      rest.push(cls);\n    }\n  });\n  return {\n    iconName,\n    rest\n  };\n}\nfunction sortedUniqueValues(arr) {\n  return arr.sort().filter((value, index, arr) => {\n    return arr.indexOf(value) === index;\n  });\n}\nfunction getCanonicalIcon(values) {\n  let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    skipLookups = false\n  } = params;\n  let givenPrefix = null;\n  const faCombinedClasses = xo.concat(bt$1);\n  const faStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => faCombinedClasses.includes(cls)));\n  const nonStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => !xo.includes(cls)));\n  const faStyles = faStyleOrFamilyClasses.filter(cls => {\n    givenPrefix = cls;\n    return !P.includes(cls);\n  });\n  const [styleFromValues = null] = faStyles;\n  const family = getFamilyId(faStyleOrFamilyClasses);\n  const canonical = _objectSpread2(_objectSpread2({}, moveNonFaClassesToRest(nonStyleOrFamilyClasses)), {}, {\n    prefix: getCanonicalPrefix(styleFromValues, {\n      family\n    })\n  });\n  return _objectSpread2(_objectSpread2(_objectSpread2({}, canonical), getDefaultCanonicalPrefix({\n    values,\n    family,\n    styles,\n    config,\n    canonical,\n    givenPrefix\n  })), applyShimAndAlias(skipLookups, givenPrefix, canonical));\n}\nfunction applyShimAndAlias(skipLookups, givenPrefix, canonical) {\n  let {\n    prefix,\n    iconName\n  } = canonical;\n  if (skipLookups || !prefix || !iconName) {\n    return {\n      prefix,\n      iconName\n    };\n  }\n  const shim = givenPrefix === 'fa' ? byOldName(iconName) : {};\n  const aliasIconName = byAlias(prefix, iconName);\n  iconName = shim.iconName || aliasIconName || iconName;\n  prefix = shim.prefix || prefix;\n  if (prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n    // Allow a fallback from the regular style to solid if regular is not available\n    // but only if we aren't auto-fetching SVGs\n    prefix = 'fas';\n  }\n  return {\n    prefix,\n    iconName\n  };\n}\nconst newCanonicalFamilies = L.filter(familyId => {\n  return familyId !== s || familyId !== t;\n});\nconst newCanonicalStyles = Object.keys(co).filter(key => key !== s).map(key => Object.keys(co[key])).flat();\nfunction getDefaultCanonicalPrefix(prefixOptions) {\n  const {\n    values,\n    family,\n    canonical,\n    givenPrefix = '',\n    styles = {},\n    config: config$$1 = {}\n  } = prefixOptions;\n  const isDuotoneFamily = family === t;\n  const valuesHasDuotone = values.includes('fa-duotone') || values.includes('fad');\n  const defaultFamilyIsDuotone = config$$1.familyDefault === 'duotone';\n  const canonicalPrefixIsDuotone = canonical.prefix === 'fad' || canonical.prefix === 'fa-duotone';\n  if (!isDuotoneFamily && (valuesHasDuotone || defaultFamilyIsDuotone || canonicalPrefixIsDuotone)) {\n    canonical.prefix = 'fad';\n  }\n  if (values.includes('fa-brands') || values.includes('fab')) {\n    canonical.prefix = 'fab';\n  }\n  if (!canonical.prefix && newCanonicalFamilies.includes(family)) {\n    const validPrefix = Object.keys(styles).find(key => newCanonicalStyles.includes(key));\n    if (validPrefix || config$$1.autoFetchSvg) {\n      const defaultPrefix = pt.get(family).defaultShortPrefixId;\n      canonical.prefix = defaultPrefix;\n      canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n    }\n  }\n  if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n    // The fa prefix is not canonical. So if it has made it through until this point\n    // we will shift it to the correct prefix.\n    canonical.prefix = getDefaultUsablePrefix() || 'fas';\n  }\n  return canonical;\n}\n\nclass Library {\n  constructor() {\n    this.definitions = {};\n  }\n  add() {\n    for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n      definitions[_key] = arguments[_key];\n    }\n    const additions = definitions.reduce(this._pullDefinitions, {});\n    Object.keys(additions).forEach(key => {\n      this.definitions[key] = _objectSpread2(_objectSpread2({}, this.definitions[key] || {}), additions[key]);\n      defineIcons(key, additions[key]);\n\n      // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n      const longPrefix = PREFIX_TO_LONG_STYLE[s][key];\n      if (longPrefix) defineIcons(longPrefix, additions[key]);\n      build();\n    });\n  }\n  reset() {\n    this.definitions = {};\n  }\n  _pullDefinitions(additions, definition) {\n    const normalized = definition.prefix && definition.iconName && definition.icon ? {\n      0: definition\n    } : definition;\n    Object.keys(normalized).map(key => {\n      const {\n        prefix,\n        iconName,\n        icon\n      } = normalized[key];\n      const aliases = icon[2];\n      if (!additions[prefix]) additions[prefix] = {};\n      if (aliases.length > 0) {\n        aliases.forEach(alias => {\n          if (typeof alias === 'string') {\n            additions[prefix][alias] = icon;\n          }\n        });\n      }\n      additions[prefix][iconName] = icon;\n    });\n    return additions;\n  }\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n  let {\n    mixoutsTo: obj\n  } = _ref;\n  _plugins = nextPlugins;\n  _hooks = {};\n  Object.keys(providers).forEach(k => {\n    if (defaultProviderKeys.indexOf(k) === -1) {\n      delete providers[k];\n    }\n  });\n  _plugins.forEach(plugin => {\n    const mixout = plugin.mixout ? plugin.mixout() : {};\n    Object.keys(mixout).forEach(tk => {\n      if (typeof mixout[tk] === 'function') {\n        obj[tk] = mixout[tk];\n      }\n      if (typeof mixout[tk] === 'object') {\n        Object.keys(mixout[tk]).forEach(sk => {\n          if (!obj[tk]) {\n            obj[tk] = {};\n          }\n          obj[tk][sk] = mixout[tk][sk];\n        });\n      }\n    });\n    if (plugin.hooks) {\n      const hooks = plugin.hooks();\n      Object.keys(hooks).forEach(hook => {\n        if (!_hooks[hook]) {\n          _hooks[hook] = [];\n        }\n        _hooks[hook].push(hooks[hook]);\n      });\n    }\n    if (plugin.provides) {\n      plugin.provides(providers);\n    }\n  });\n  return obj;\n}\nfunction chainHooks(hook, accumulator) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n  const hookFns = _hooks[hook] || [];\n  hookFns.forEach(hookFn => {\n    accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n  });\n  return accumulator;\n}\nfunction callHooks(hook) {\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n  const hookFns = _hooks[hook] || [];\n  hookFns.forEach(hookFn => {\n    hookFn.apply(null, args);\n  });\n  return undefined;\n}\nfunction callProvided() {\n  const hook = arguments[0];\n  const args = Array.prototype.slice.call(arguments, 1);\n  return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n  if (iconLookup.prefix === 'fa') {\n    iconLookup.prefix = 'fas';\n  }\n  let {\n    iconName\n  } = iconLookup;\n  const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n  if (!iconName) return;\n  iconName = byAlias(prefix, iconName) || iconName;\n  return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n  config.autoReplaceSvg = false;\n  config.observeMutations = false;\n  callHooks('noAuto');\n};\nconst dom = {\n  i2svg: function () {\n    let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    if (IS_DOM) {\n      callHooks('beforeI2svg', params);\n      callProvided('pseudoElements2svg', params);\n      return callProvided('i2svg', params);\n    } else {\n      return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n    }\n  },\n  watch: function () {\n    let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    const {\n      autoReplaceSvgRoot\n    } = params;\n    if (config.autoReplaceSvg === false) {\n      config.autoReplaceSvg = true;\n    }\n    config.observeMutations = true;\n    domready(() => {\n      autoReplace({\n        autoReplaceSvgRoot\n      });\n      callHooks('watch', params);\n    });\n  }\n};\nconst parse = {\n  icon: icon => {\n    if (icon === null) {\n      return null;\n    }\n    if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n      return {\n        prefix: icon.prefix,\n        iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n      };\n    }\n    if (Array.isArray(icon) && icon.length === 2) {\n      const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n      const prefix = getCanonicalPrefix(icon[0]);\n      return {\n        prefix,\n        iconName: byAlias(prefix, iconName) || iconName\n      };\n    }\n    if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n      const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n        skipLookups: true\n      });\n      return {\n        prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n        iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n      };\n    }\n    if (typeof icon === 'string') {\n      const prefix = getDefaultUsablePrefix();\n      return {\n        prefix,\n        iconName: byAlias(prefix, icon) || icon\n      };\n    }\n  }\n};\nconst api = {\n  noAuto,\n  config,\n  dom,\n  parse,\n  library,\n  findIconDefinition,\n  toHtml\n};\nconst autoReplace = function () {\n  let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  const {\n    autoReplaceSvgRoot = DOCUMENT\n  } = params;\n  if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n    node: autoReplaceSvgRoot\n  });\n};\n\nfunction domVariants(val, abstractCreator) {\n  Object.defineProperty(val, 'abstract', {\n    get: abstractCreator\n  });\n  Object.defineProperty(val, 'html', {\n    get: function () {\n      return val.abstract.map(a => toHtml(a));\n    }\n  });\n  Object.defineProperty(val, 'node', {\n    get: function () {\n      if (!IS_DOM) return;\n      const container = DOCUMENT.createElement('div');\n      container.innerHTML = val.html;\n      return container.children;\n    }\n  });\n  return val;\n}\n\nfunction asIcon (_ref) {\n  let {\n    children,\n    main,\n    mask,\n    attributes,\n    styles,\n    transform\n  } = _ref;\n  if (transformIsMeaningful(transform) && main.found && !mask.found) {\n    const {\n      width,\n      height\n    } = main;\n    const offset = {\n      x: width / height / 2,\n      y: 0.5\n    };\n    attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n      'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n    }));\n  }\n  return [{\n    tag: 'svg',\n    attributes,\n    children\n  }];\n}\n\nfunction asSymbol (_ref) {\n  let {\n    prefix,\n    iconName,\n    children,\n    attributes,\n    symbol\n  } = _ref;\n  const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n  return [{\n    tag: 'svg',\n    attributes: {\n      style: 'display: none;'\n    },\n    children: [{\n      tag: 'symbol',\n      attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n        id\n      }),\n      children\n    }]\n  }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n  const {\n    icons: {\n      main,\n      mask\n    },\n    prefix,\n    iconName,\n    transform,\n    symbol,\n    title,\n    maskId,\n    titleId,\n    extra,\n    watchable = false\n  } = params;\n  const {\n    width,\n    height\n  } = mask.found ? mask : main;\n  const isUploadedIcon = Lt.includes(prefix);\n  const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c$$1 => extra.classes.indexOf(c$$1) === -1).filter(c$$1 => c$$1 !== '' || !!c$$1).concat(extra.classes).join(' ');\n  let content = {\n    children: [],\n    attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n      'data-prefix': prefix,\n      'data-icon': iconName,\n      'class': attrClass,\n      'role': extra.attributes.role || 'img',\n      'xmlns': 'http://www.w3.org/2000/svg',\n      'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n    })\n  };\n  const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n    width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n  } : {};\n  if (watchable) {\n    content.attributes[DATA_FA_I2SVG] = '';\n  }\n  if (title) {\n    content.children.push({\n      tag: 'title',\n      attributes: {\n        id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n      },\n      children: [title]\n    });\n    delete content.attributes.title;\n  }\n  const args = _objectSpread2(_objectSpread2({}, content), {}, {\n    prefix,\n    iconName,\n    main,\n    mask,\n    maskId,\n    transform,\n    symbol,\n    styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n  });\n  const {\n    children,\n    attributes\n  } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n    children: [],\n    attributes: {}\n  } : callProvided('generateAbstractIcon', args) || {\n    children: [],\n    attributes: {}\n  };\n  args.children = children;\n  args.attributes = attributes;\n  if (symbol) {\n    return asSymbol(args);\n  } else {\n    return asIcon(args);\n  }\n}\nfunction makeLayersTextAbstract(params) {\n  const {\n    content,\n    width,\n    height,\n    transform,\n    title,\n    extra,\n    watchable = false\n  } = params;\n  const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n    'title': title\n  } : {}), {}, {\n    'class': extra.classes.join(' ')\n  });\n  if (watchable) {\n    attributes[DATA_FA_I2SVG] = '';\n  }\n  const styles = _objectSpread2({}, extra.styles);\n  if (transformIsMeaningful(transform)) {\n    styles['transform'] = transformForCss({\n      transform,\n      startCentered: true,\n      width,\n      height\n    });\n    styles['-webkit-transform'] = styles['transform'];\n  }\n  const styleString = joinStyles(styles);\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n  const val = [];\n  val.push({\n    tag: 'span',\n    attributes,\n    children: [content]\n  });\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n  return val;\n}\nfunction makeLayersCounterAbstract(params) {\n  const {\n    content,\n    title,\n    extra\n  } = params;\n  const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n    'title': title\n  } : {}), {}, {\n    'class': extra.classes.join(' ')\n  });\n  const styleString = joinStyles(extra.styles);\n  if (styleString.length > 0) {\n    attributes['style'] = styleString;\n  }\n  const val = [];\n  val.push({\n    tag: 'span',\n    attributes,\n    children: [content]\n  });\n  if (title) {\n    val.push({\n      tag: 'span',\n      attributes: {\n        class: 'sr-only'\n      },\n      children: [title]\n    });\n  }\n  return val;\n}\n\nconst {\n  styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n  const width = icon[0];\n  const height = icon[1];\n  const [vectorData] = icon.slice(4);\n  let element = null;\n  if (Array.isArray(vectorData)) {\n    element = {\n      tag: 'g',\n      attributes: {\n        class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n      },\n      children: [{\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n          fill: 'currentColor',\n          d: vectorData[0]\n        }\n      }, {\n        tag: 'path',\n        attributes: {\n          class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n          fill: 'currentColor',\n          d: vectorData[1]\n        }\n      }]\n    };\n  } else {\n    element = {\n      tag: 'path',\n      attributes: {\n        fill: 'currentColor',\n        d: vectorData\n      }\n    };\n  }\n  return {\n    found: true,\n    width,\n    height,\n    icon: element\n  };\n}\nconst missingIconResolutionMixin = {\n  found: false,\n  width: 512,\n  height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n  if (!PRODUCTION && !config.showMissingIcons && iconName) {\n    console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n  }\n}\nfunction findIcon(iconName, prefix) {\n  let givenPrefix = prefix;\n  if (prefix === 'fa' && config.styleDefault !== null) {\n    prefix = getDefaultUsablePrefix();\n  }\n  return new Promise((resolve, reject) => {\n    if (givenPrefix === 'fa') {\n      const shim = byOldName(iconName) || {};\n      iconName = shim.iconName || iconName;\n      prefix = shim.prefix || prefix;\n    }\n    if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n      const icon = styles$1[prefix][iconName];\n      return resolve(asFoundIcon(icon));\n    }\n    maybeNotifyMissing(iconName, prefix);\n    resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n      icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n    }));\n  });\n}\n\nconst noop$1 = () => {};\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n  mark: noop$1,\n  measure: noop$1\n};\nconst preamble = \"FA \\\"6.7.1\\\"\";\nconst begin = name => {\n  p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n  return () => end(name);\n};\nconst end = name => {\n  p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n  p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n  begin,\n  end\n};\n\nconst noop$2 = () => {};\nfunction isWatched(node) {\n  const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n  return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n  const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n  const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n  return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n  return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n  if (config.autoReplaceSvg === true) {\n    return mutators.replace;\n  }\n  const mutator = mutators[config.autoReplaceSvg];\n  return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n  return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n  return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n  let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n  } = params;\n  if (typeof abstractObj === 'string') {\n    return DOCUMENT.createTextNode(abstractObj);\n  }\n  const tag = ceFn(abstractObj.tag);\n  Object.keys(abstractObj.attributes || []).forEach(function (key) {\n    tag.setAttribute(key, abstractObj.attributes[key]);\n  });\n  const children = abstractObj.children || [];\n  children.forEach(function (child) {\n    tag.appendChild(convertSVG(child, {\n      ceFn\n    }));\n  });\n  return tag;\n}\nfunction nodeAsComment(node) {\n  let comment = \" \".concat(node.outerHTML, \" \");\n  /* BEGIN.ATTRIBUTION */\n  comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n  /* END.ATTRIBUTION */\n  return comment;\n}\nconst mutators = {\n  replace: function (mutation) {\n    const node = mutation[0];\n    if (node.parentNode) {\n      mutation[1].forEach(abstract => {\n        node.parentNode.insertBefore(convertSVG(abstract), node);\n      });\n      if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n        let comment = DOCUMENT.createComment(nodeAsComment(node));\n        node.parentNode.replaceChild(comment, node);\n      } else {\n        node.remove();\n      }\n    }\n  },\n  nest: function (mutation) {\n    const node = mutation[0];\n    const abstract = mutation[1];\n\n    // If we already have a replaced node we do not want to continue nesting within it.\n    // Short-circuit to the standard replacement\n    if (~classArray(node).indexOf(config.replacementClass)) {\n      return mutators.replace(mutation);\n    }\n    const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n    delete abstract[0].attributes.id;\n    if (abstract[0].attributes.class) {\n      const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n        if (cls === config.replacementClass || cls.match(forSvg)) {\n          acc.toSvg.push(cls);\n        } else {\n          acc.toNode.push(cls);\n        }\n        return acc;\n      }, {\n        toNode: [],\n        toSvg: []\n      });\n      abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n      if (splitClasses.toNode.length === 0) {\n        node.removeAttribute('class');\n      } else {\n        node.setAttribute('class', splitClasses.toNode.join(' '));\n      }\n    }\n    const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n    node.setAttribute(DATA_FA_I2SVG, '');\n    node.innerHTML = newInnerHTML;\n  }\n};\nfunction performOperationSync(op) {\n  op();\n}\nfunction perform(mutations, callback) {\n  const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n  if (mutations.length === 0) {\n    callbackFunction();\n  } else {\n    let frame = performOperationSync;\n    if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n      frame = WINDOW.requestAnimationFrame || performOperationSync;\n    }\n    frame(() => {\n      const mutator = getMutator();\n      const mark = perf.begin('mutate');\n      mutations.map(mutator);\n      mark();\n      callbackFunction();\n    });\n  }\n}\nlet disabled = false;\nfunction disableObservation() {\n  disabled = true;\n}\nfunction enableObservation() {\n  disabled = false;\n}\nlet mo$1 = null;\nfunction observe(options) {\n  if (!MUTATION_OBSERVER) {\n    return;\n  }\n  if (!config.observeMutations) {\n    return;\n  }\n  const {\n    treeCallback = noop$2,\n    nodeCallback = noop$2,\n    pseudoElementsCallback = noop$2,\n    observeMutationsRoot = DOCUMENT\n  } = options;\n  mo$1 = new MUTATION_OBSERVER(objects => {\n    if (disabled) return;\n    const defaultPrefix = getDefaultUsablePrefix();\n    toArray(objects).forEach(mutationRecord => {\n      if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n        if (config.searchPseudoElements) {\n          pseudoElementsCallback(mutationRecord.target);\n        }\n        treeCallback(mutationRecord.target);\n      }\n      if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n        pseudoElementsCallback(mutationRecord.target.parentNode);\n      }\n      if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n        if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n          const {\n            prefix,\n            iconName\n          } = getCanonicalIcon(classArray(mutationRecord.target));\n          mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n          if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n        } else if (hasBeenReplaced(mutationRecord.target)) {\n          nodeCallback(mutationRecord.target);\n        }\n      }\n    });\n  });\n  if (!IS_DOM) return;\n  mo$1.observe(observeMutationsRoot, {\n    childList: true,\n    attributes: true,\n    characterData: true,\n    subtree: true\n  });\n}\nfunction disconnect() {\n  if (!mo$1) return;\n  mo$1.disconnect();\n}\n\nfunction styleParser (node) {\n  const style = node.getAttribute('style');\n  let val = [];\n  if (style) {\n    val = style.split(';').reduce((acc, style) => {\n      const styles = style.split(':');\n      const prop = styles[0];\n      const value = styles.slice(1);\n      if (prop && value.length > 0) {\n        acc[prop] = value.join(':').trim();\n      }\n      return acc;\n    }, {});\n  }\n  return val;\n}\n\nfunction classParser (node) {\n  const existingPrefix = node.getAttribute('data-prefix');\n  const existingIconName = node.getAttribute('data-icon');\n  const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n  let val = getCanonicalIcon(classArray(node));\n  if (!val.prefix) {\n    val.prefix = getDefaultUsablePrefix();\n  }\n  if (existingPrefix && existingIconName) {\n    val.prefix = existingPrefix;\n    val.iconName = existingIconName;\n  }\n  if (val.iconName && val.prefix) {\n    return val;\n  }\n  if (val.prefix && innerText.length > 0) {\n    val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n  }\n  if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n    val.iconName = node.firstChild.data;\n  }\n  return val;\n}\n\nfunction attributesParser (node) {\n  const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n    if (acc.name !== 'class' && acc.name !== 'style') {\n      acc[attr.name] = attr.value;\n    }\n    return acc;\n  }, {});\n  const title = node.getAttribute('title');\n  const titleId = node.getAttribute('data-fa-title-id');\n  if (config.autoA11y) {\n    if (title) {\n      extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n    } else {\n      extraAttributes['aria-hidden'] = 'true';\n      extraAttributes['focusable'] = 'false';\n    }\n  }\n  return extraAttributes;\n}\n\nfunction blankMeta() {\n  return {\n    iconName: null,\n    title: null,\n    titleId: null,\n    prefix: null,\n    transform: meaninglessTransform,\n    symbol: false,\n    mask: {\n      iconName: null,\n      prefix: null,\n      rest: []\n    },\n    maskId: null,\n    extra: {\n      classes: [],\n      styles: {},\n      attributes: {}\n    }\n  };\n}\nfunction parseMeta(node) {\n  let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    styleParser: true\n  };\n  const {\n    iconName,\n    prefix,\n    rest: extraClasses\n  } = classParser(node);\n  const extraAttributes = attributesParser(node);\n  const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n  let extraStyles = parser.styleParser ? styleParser(node) : [];\n  return _objectSpread2({\n    iconName,\n    title: node.getAttribute('title'),\n    titleId: node.getAttribute('data-fa-title-id'),\n    prefix,\n    transform: meaninglessTransform,\n    mask: {\n      iconName: null,\n      prefix: null,\n      rest: []\n    },\n    maskId: null,\n    symbol: false,\n    extra: {\n      classes: extraClasses,\n      styles: extraStyles,\n      attributes: extraAttributes\n    }\n  }, pluginMeta);\n}\n\nconst {\n  styles: styles$2\n} = namespace;\nfunction generateMutation(node) {\n  const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n    styleParser: false\n  }) : parseMeta(node);\n  if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n    return callProvided('generateLayersText', node, nodeMeta);\n  } else {\n    return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n  }\n}\nfunction getKnownPrefixes() {\n  return [...Ft, ...xo];\n}\nfunction onTree(root) {\n  let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  if (!IS_DOM) return Promise.resolve();\n  const htmlClassList = DOCUMENT.documentElement.classList;\n  const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n  const prefixes = config.autoFetchSvg ? getKnownPrefixes() : P.concat(Object.keys(styles$2));\n  if (!prefixes.includes('fa')) {\n    prefixes.push('fa');\n  }\n  const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n  if (prefixesDomQuery.length === 0) {\n    return Promise.resolve();\n  }\n  let candidates = [];\n  try {\n    candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n  } catch (e$$1) {\n    // noop\n  }\n  if (candidates.length > 0) {\n    hclAdd('pending');\n    hclRemove('complete');\n  } else {\n    return Promise.resolve();\n  }\n  const mark = perf.begin('onTree');\n  const mutations = candidates.reduce((acc, node) => {\n    try {\n      const mutation = generateMutation(node);\n      if (mutation) {\n        acc.push(mutation);\n      }\n    } catch (e$$1) {\n      if (!PRODUCTION) {\n        if (e$$1.name === 'MissingIcon') {\n          console.error(e$$1);\n        }\n      }\n    }\n    return acc;\n  }, []);\n  return new Promise((resolve, reject) => {\n    Promise.all(mutations).then(resolvedMutations => {\n      perform(resolvedMutations, () => {\n        hclAdd('active');\n        hclAdd('complete');\n        hclRemove('pending');\n        if (typeof callback === 'function') callback();\n        mark();\n        resolve();\n      });\n    }).catch(e$$1 => {\n      mark();\n      reject(e$$1);\n    });\n  });\n}\nfunction onNode(node) {\n  let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n  generateMutation(node).then(mutation => {\n    if (mutation) {\n      perform([mutation], callback);\n    }\n  });\n}\nfunction resolveIcons(next) {\n  return function (maybeIconDefinition) {\n    let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n    let {\n      mask\n    } = params;\n    if (mask) {\n      mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n    }\n    return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n      mask\n    }));\n  };\n}\nconst render = function (iconDefinition) {\n  let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  const {\n    transform = meaninglessTransform,\n    symbol = false,\n    mask = null,\n    maskId = null,\n    title = null,\n    titleId = null,\n    classes = [],\n    attributes = {},\n    styles = {}\n  } = params;\n  if (!iconDefinition) return;\n  const {\n    prefix,\n    iconName,\n    icon\n  } = iconDefinition;\n  return domVariants(_objectSpread2({\n    type: 'icon'\n  }, iconDefinition), () => {\n    callHooks('beforeDOMElementCreation', {\n      iconDefinition,\n      params\n    });\n    if (config.autoA11y) {\n      if (title) {\n        attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n      } else {\n        attributes['aria-hidden'] = 'true';\n        attributes['focusable'] = 'false';\n      }\n    }\n    return makeInlineSvgAbstract({\n      icons: {\n        main: asFoundIcon(icon),\n        mask: mask ? asFoundIcon(mask.icon) : {\n          found: false,\n          width: null,\n          height: null,\n          icon: {}\n        }\n      },\n      prefix,\n      iconName,\n      transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n      symbol,\n      title,\n      maskId,\n      titleId,\n      extra: {\n        attributes,\n        styles,\n        classes\n      }\n    });\n  });\n};\nvar ReplaceElements = {\n  mixout() {\n    return {\n      icon: resolveIcons(render)\n    };\n  },\n  hooks() {\n    return {\n      mutationObserverCallbacks(accumulator) {\n        accumulator.treeCallback = onTree;\n        accumulator.nodeCallback = onNode;\n        return accumulator;\n      }\n    };\n  },\n  provides(providers$$1) {\n    providers$$1.i2svg = function (params) {\n      const {\n        node = DOCUMENT,\n        callback = () => {}\n      } = params;\n      return onTree(node, callback);\n    };\n    providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n      const {\n        iconName,\n        title,\n        titleId,\n        prefix,\n        transform,\n        symbol,\n        mask,\n        maskId,\n        extra\n      } = nodeMeta;\n      return new Promise((resolve, reject) => {\n        Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n          found: false,\n          width: 512,\n          height: 512,\n          icon: {}\n        })]).then(_ref => {\n          let [main, mask] = _ref;\n          resolve([node, makeInlineSvgAbstract({\n            icons: {\n              main,\n              mask\n            },\n            prefix,\n            iconName,\n            transform,\n            symbol,\n            maskId,\n            title,\n            titleId,\n            extra,\n            watchable: true\n          })]);\n        }).catch(reject);\n      });\n    };\n    providers$$1.generateAbstractIcon = function (_ref2) {\n      let {\n        children,\n        attributes,\n        main,\n        transform,\n        styles\n      } = _ref2;\n      const styleString = joinStyles(styles);\n      if (styleString.length > 0) {\n        attributes['style'] = styleString;\n      }\n      let nextChild;\n      if (transformIsMeaningful(transform)) {\n        nextChild = callProvided('generateAbstractTransformGrouping', {\n          main,\n          transform,\n          containerWidth: main.width,\n          iconWidth: main.width\n        });\n      }\n      children.push(nextChild || main.icon);\n      return {\n        children,\n        attributes\n      };\n    };\n  }\n};\n\nvar Layers = {\n  mixout() {\n    return {\n      layer(assembler) {\n        let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        const {\n          classes = []\n        } = params;\n        return domVariants({\n          type: 'layer'\n        }, () => {\n          callHooks('beforeDOMElementCreation', {\n            assembler,\n            params\n          });\n          let children = [];\n          assembler(args => {\n            Array.isArray(args) ? args.map(a => {\n              children = children.concat(a.abstract);\n            }) : children = children.concat(args.abstract);\n          });\n          return [{\n            tag: 'span',\n            attributes: {\n              class: [\"\".concat(config.cssPrefix, \"-layers\"), ...classes].join(' ')\n            },\n            children\n          }];\n        });\n      }\n    };\n  }\n};\n\nvar LayersCounter = {\n  mixout() {\n    return {\n      counter(content) {\n        let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        const {\n          title = null,\n          classes = [],\n          attributes = {},\n          styles = {}\n        } = params;\n        return domVariants({\n          type: 'counter',\n          content\n        }, () => {\n          callHooks('beforeDOMElementCreation', {\n            content,\n            params\n          });\n          return makeLayersCounterAbstract({\n            content: content.toString(),\n            title,\n            extra: {\n              attributes,\n              styles,\n              classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n            }\n          });\n        });\n      }\n    };\n  }\n};\n\nvar LayersText = {\n  mixout() {\n    return {\n      text(content) {\n        let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        const {\n          transform = meaninglessTransform,\n          title = null,\n          classes = [],\n          attributes = {},\n          styles = {}\n        } = params;\n        return domVariants({\n          type: 'text',\n          content\n        }, () => {\n          callHooks('beforeDOMElementCreation', {\n            content,\n            params\n          });\n          return makeLayersTextAbstract({\n            content,\n            transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n            title,\n            extra: {\n              attributes,\n              styles,\n              classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n            }\n          });\n        });\n      }\n    };\n  },\n  provides(providers$$1) {\n    providers$$1.generateLayersText = function (node, nodeMeta) {\n      const {\n        title,\n        transform,\n        extra\n      } = nodeMeta;\n      let width = null;\n      let height = null;\n      if (IS_IE) {\n        const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n        const boundingClientRect = node.getBoundingClientRect();\n        width = boundingClientRect.width / computedFontSize;\n        height = boundingClientRect.height / computedFontSize;\n      }\n      if (config.autoA11y && !title) {\n        extra.attributes['aria-hidden'] = 'true';\n      }\n      return Promise.resolve([node, makeLayersTextAbstract({\n        content: node.innerHTML,\n        width,\n        height,\n        transform,\n        title,\n        extra,\n        watchable: true\n      })]);\n    };\n  }\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n  FontAwesome: {\n    normal: 'fas',\n    400: 'fas'\n  }\n}), lt), ko), Yt);\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n  acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n  return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n  const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n  acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n  return acc;\n}, {});\nfunction hexValueFromContent(content) {\n  const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n  const codePoint = codePointAt(cleaned, 0);\n  const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n  const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n  return {\n    value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n    isSecondary: isPrependTen || isDoubled\n  };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n  const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n  const fontWeightInteger = parseInt(fontWeight);\n  const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n  return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\nfunction replaceForPosition(node, position) {\n  const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n  return new Promise((resolve, reject) => {\n    if (node.getAttribute(pendingAttribute) !== null) {\n      // This node is already being processed\n      return resolve();\n    }\n    const children = toArray(node.children);\n    const alreadyProcessedPseudoElement = children.filter(c$$1 => c$$1.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n    const styles = WINDOW.getComputedStyle(node, position);\n    const fontFamily = styles.getPropertyValue('font-family');\n    const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n    const fontWeight = styles.getPropertyValue('font-weight');\n    const content = styles.getPropertyValue('content');\n    if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n      // If we've already processed it but the current computed style does not result in a font-family,\n      // that probably means that a class name that was previously present to make the icon has been\n      // removed. So we now should delete the icon.\n      node.removeChild(alreadyProcessedPseudoElement);\n      return resolve();\n    } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n      const content = styles.getPropertyValue('content');\n      let prefix = getPrefix(fontFamily, fontWeight);\n      const {\n        value: hexValue,\n        isSecondary\n      } = hexValueFromContent(content);\n      const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n      let iconName = byUnicode(prefix, hexValue);\n      let iconIdentifier = iconName;\n      if (isV4) {\n        const iconName4 = byOldUnicode(hexValue);\n        if (iconName4.iconName && iconName4.prefix) {\n          iconName = iconName4.iconName;\n          prefix = iconName4.prefix;\n        }\n      }\n\n      // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n      // already done so with the same prefix and iconName\n      if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n        node.setAttribute(pendingAttribute, iconIdentifier);\n        if (alreadyProcessedPseudoElement) {\n          // Delete the old one, since we're replacing it with a new one\n          node.removeChild(alreadyProcessedPseudoElement);\n        }\n        const meta = blankMeta();\n        const {\n          extra\n        } = meta;\n        extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n        findIcon(iconName, prefix).then(main => {\n          const abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n            icons: {\n              main,\n              mask: emptyCanonicalIcon()\n            },\n            prefix,\n            iconName: iconIdentifier,\n            extra,\n            watchable: true\n          }));\n          const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n          if (position === '::before') {\n            node.insertBefore(element, node.firstChild);\n          } else {\n            node.appendChild(element);\n          }\n          element.outerHTML = abstract.map(a$$1 => toHtml(a$$1)).join('\\n');\n          node.removeAttribute(pendingAttribute);\n          resolve();\n        }).catch(reject);\n      } else {\n        resolve();\n      }\n    } else {\n      resolve();\n    }\n  });\n}\nfunction replace(node) {\n  return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\nfunction processable(node) {\n  return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\nfunction searchPseudoElements(root) {\n  if (!IS_DOM) return;\n  return new Promise((resolve, reject) => {\n    const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n    const end = perf.begin('searchPseudoElements');\n    disableObservation();\n    Promise.all(operations).then(() => {\n      end();\n      enableObservation();\n      resolve();\n    }).catch(() => {\n      end();\n      enableObservation();\n      reject();\n    });\n  });\n}\nvar PseudoElements = {\n  hooks() {\n    return {\n      mutationObserverCallbacks(accumulator) {\n        accumulator.pseudoElementsCallback = searchPseudoElements;\n        return accumulator;\n      }\n    };\n  },\n  provides(providers) {\n    providers.pseudoElements2svg = function (params) {\n      const {\n        node = DOCUMENT\n      } = params;\n      if (config.searchPseudoElements) {\n        searchPseudoElements(node);\n      }\n    };\n  }\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n  mixout() {\n    return {\n      dom: {\n        unwatch() {\n          disableObservation();\n          _unwatched = true;\n        }\n      }\n    };\n  },\n  hooks() {\n    return {\n      bootstrap() {\n        observe(chainHooks('mutationObserverCallbacks', {}));\n      },\n      noAuto() {\n        disconnect();\n      },\n      watch(params) {\n        const {\n          observeMutationsRoot\n        } = params;\n        if (_unwatched) {\n          enableObservation();\n        } else {\n          observe(chainHooks('mutationObserverCallbacks', {\n            observeMutationsRoot\n          }));\n        }\n      }\n    };\n  }\n};\n\nconst parseTransformString = transformString => {\n  let transform = {\n    size: 16,\n    x: 0,\n    y: 0,\n    flipX: false,\n    flipY: false,\n    rotate: 0\n  };\n  return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n    const parts = n.toLowerCase().split('-');\n    const first = parts[0];\n    let rest = parts.slice(1).join('-');\n    if (first && rest === 'h') {\n      acc.flipX = true;\n      return acc;\n    }\n    if (first && rest === 'v') {\n      acc.flipY = true;\n      return acc;\n    }\n    rest = parseFloat(rest);\n    if (isNaN(rest)) {\n      return acc;\n    }\n    switch (first) {\n      case 'grow':\n        acc.size = acc.size + rest;\n        break;\n      case 'shrink':\n        acc.size = acc.size - rest;\n        break;\n      case 'left':\n        acc.x = acc.x - rest;\n        break;\n      case 'right':\n        acc.x = acc.x + rest;\n        break;\n      case 'up':\n        acc.y = acc.y - rest;\n        break;\n      case 'down':\n        acc.y = acc.y + rest;\n        break;\n      case 'rotate':\n        acc.rotate = acc.rotate + rest;\n        break;\n    }\n    return acc;\n  }, transform);\n};\nvar PowerTransforms = {\n  mixout() {\n    return {\n      parse: {\n        transform: transformString => {\n          return parseTransformString(transformString);\n        }\n      }\n    };\n  },\n  hooks() {\n    return {\n      parseNodeAttributes(accumulator, node) {\n        const transformString = node.getAttribute('data-fa-transform');\n        if (transformString) {\n          accumulator.transform = parseTransformString(transformString);\n        }\n        return accumulator;\n      }\n    };\n  },\n  provides(providers) {\n    providers.generateAbstractTransformGrouping = function (_ref) {\n      let {\n        main,\n        transform,\n        containerWidth,\n        iconWidth\n      } = _ref;\n      const outer = {\n        transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n      };\n      const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n      const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n      const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n      const inner = {\n        transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n      };\n      const path = {\n        transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n      };\n      const operations = {\n        outer,\n        inner,\n        path\n      };\n      return {\n        tag: 'g',\n        attributes: _objectSpread2({}, operations.outer),\n        children: [{\n          tag: 'g',\n          attributes: _objectSpread2({}, operations.inner),\n          children: [{\n            tag: main.icon.tag,\n            children: main.icon.children,\n            attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n          }]\n        }]\n      };\n    };\n  }\n};\n\nconst ALL_SPACE = {\n  x: 0,\n  y: 0,\n  width: '100%',\n  height: '100%'\n};\nfunction fillBlack(abstract) {\n  let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n  if (abstract.attributes && (abstract.attributes.fill || force)) {\n    abstract.attributes.fill = 'black';\n  }\n  return abstract;\n}\nfunction deGroup(abstract) {\n  if (abstract.tag === 'g') {\n    return abstract.children;\n  } else {\n    return [abstract];\n  }\n}\nvar Masks = {\n  hooks() {\n    return {\n      parseNodeAttributes(accumulator, node) {\n        const maskData = node.getAttribute('data-fa-mask');\n        const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n        if (!mask.prefix) {\n          mask.prefix = getDefaultUsablePrefix();\n        }\n        accumulator.mask = mask;\n        accumulator.maskId = node.getAttribute('data-fa-mask-id');\n        return accumulator;\n      }\n    };\n  },\n  provides(providers) {\n    providers.generateAbstractMask = function (_ref) {\n      let {\n        children,\n        attributes,\n        main,\n        mask,\n        maskId: explicitMaskId,\n        transform\n      } = _ref;\n      const {\n        width: mainWidth,\n        icon: mainPath\n      } = main;\n      const {\n        width: maskWidth,\n        icon: maskPath\n      } = mask;\n      const trans = transformForSvg({\n        transform,\n        containerWidth: maskWidth,\n        iconWidth: mainWidth\n      });\n      const maskRect = {\n        tag: 'rect',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          fill: 'white'\n        })\n      };\n      const maskInnerGroupChildrenMixin = mainPath.children ? {\n        children: mainPath.children.map(fillBlack)\n      } : {};\n      const maskInnerGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.inner),\n        children: [fillBlack(_objectSpread2({\n          tag: mainPath.tag,\n          attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n        }, maskInnerGroupChildrenMixin))]\n      };\n      const maskOuterGroup = {\n        tag: 'g',\n        attributes: _objectSpread2({}, trans.outer),\n        children: [maskInnerGroup]\n      };\n      const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n      const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n      const maskTag = {\n        tag: 'mask',\n        attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n          id: maskId,\n          maskUnits: 'userSpaceOnUse',\n          maskContentUnits: 'userSpaceOnUse'\n        }),\n        children: [maskRect, maskOuterGroup]\n      };\n      const defs = {\n        tag: 'defs',\n        children: [{\n          tag: 'clipPath',\n          attributes: {\n            id: clipId\n          },\n          children: deGroup(maskPath)\n        }, maskTag]\n      };\n      children.push(defs, {\n        tag: 'rect',\n        attributes: _objectSpread2({\n          fill: 'currentColor',\n          'clip-path': \"url(#\".concat(clipId, \")\"),\n          mask: \"url(#\".concat(maskId, \")\")\n        }, ALL_SPACE)\n      });\n      return {\n        children,\n        attributes\n      };\n    };\n  }\n};\n\nvar MissingIconIndicator = {\n  provides(providers) {\n    let reduceMotion = false;\n    if (WINDOW.matchMedia) {\n      reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    }\n    providers.missingIconAbstract = function () {\n      const gChildren = [];\n      const FILL = {\n        fill: 'currentColor'\n      };\n      const ANIMATION_BASE = {\n        attributeType: 'XML',\n        repeatCount: 'indefinite',\n        dur: '2s'\n      };\n\n      // Ring\n      gChildren.push({\n        tag: 'path',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n        })\n      });\n      const OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n        attributeName: 'opacity'\n      });\n      const dot = {\n        tag: 'circle',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          cx: '256',\n          cy: '364',\n          r: '28'\n        }),\n        children: []\n      };\n      if (!reduceMotion) {\n        dot.children.push({\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n            attributeName: 'r',\n            values: '28;14;28;28;14;28;'\n          })\n        }, {\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n            values: '1;0;1;1;0;1;'\n          })\n        });\n      }\n      gChildren.push(dot);\n      gChildren.push({\n        tag: 'path',\n        attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n          opacity: '1',\n          d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n        }),\n        children: reduceMotion ? [] : [{\n          tag: 'animate',\n          attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n            values: '1;0;0;0;0;1;'\n          })\n        }]\n      });\n      if (!reduceMotion) {\n        // Exclamation\n        gChildren.push({\n          tag: 'path',\n          attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n            opacity: '0',\n            d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n          }),\n          children: [{\n            tag: 'animate',\n            attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n              values: '0;0;1;1;0;0;'\n            })\n          }]\n        });\n      }\n      return {\n        tag: 'g',\n        attributes: {\n          'class': 'missing'\n        },\n        children: gChildren\n      };\n    };\n  }\n};\n\nvar SvgSymbols = {\n  hooks() {\n    return {\n      parseNodeAttributes(accumulator, node) {\n        const symbolData = node.getAttribute('data-fa-symbol');\n        const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n        accumulator['symbol'] = symbol;\n        return accumulator;\n      }\n    };\n  }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n  mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n", "import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n\n  return target;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n  return arr2;\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n  var _classes;\n\n  var beat = props.beat,\n      fade = props.fade,\n      beatFade = props.beatFade,\n      bounce = props.bounce,\n      shake = props.shake,\n      flash = props.flash,\n      spin = props.spin,\n      spinPulse = props.spinPulse,\n      spinReverse = props.spinReverse,\n      pulse = props.pulse,\n      fixedWidth = props.fixedWidth,\n      inverse = props.inverse,\n      border = props.border,\n      listItem = props.listItem,\n      flip = props.flip,\n      size = props.size,\n      rotation = props.rotation,\n      pull = props.pull; // map of CSS class names to properties\n\n  var classes = (_classes = {\n    'fa-beat': beat,\n    'fa-fade': fade,\n    'fa-beat-fade': beatFade,\n    'fa-bounce': bounce,\n    'fa-shake': shake,\n    'fa-flash': flash,\n    'fa-spin': spin,\n    'fa-spin-reverse': spinReverse,\n    'fa-spin-pulse': spinPulse,\n    'fa-pulse': pulse,\n    'fa-fw': fixedWidth,\n    'fa-inverse': inverse,\n    'fa-border': border,\n    'fa-li': listItem,\n    'fa-flip': flip === true,\n    'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n    'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n  }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n  // return an array of the keys where the value for the key is not null\n\n  return Object.keys(classes).map(function (key) {\n    return classes[key] ? key : null;\n  }).filter(function (key) {\n    return key;\n  });\n}\n\n// Camelize taken from humps\n// humps is copyright \u00A9 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n  obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n  return obj === obj;\n}\n\nfunction camelize(string) {\n  if (_isNumerical(string)) {\n    return string;\n  } // eslint-disable-next-line no-useless-escape\n\n\n  string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n    return chr ? chr.toUpperCase() : '';\n  }); // Ensure 1st char is always lowercase\n\n  return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n  return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n  return style.split(';').map(function (s) {\n    return s.trim();\n  }).filter(function (s) {\n    return s;\n  }).reduce(function (acc, pair) {\n    var i = pair.indexOf(':');\n    var prop = camelize(pair.slice(0, i));\n    var value = pair.slice(i + 1).trim();\n    prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n    return acc;\n  }, {});\n}\n\nfunction convert(createElement, element) {\n  var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (typeof element === 'string') {\n    return element;\n  }\n\n  var children = (element.children || []).map(function (child) {\n    return convert(createElement, child);\n  });\n  /* eslint-disable dot-notation */\n\n  var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n    var val = element.attributes[key];\n\n    switch (key) {\n      case 'class':\n        acc.attrs['className'] = val;\n        delete element.attributes['class'];\n        break;\n\n      case 'style':\n        acc.attrs['style'] = styleToObject(val);\n        break;\n\n      default:\n        if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n          acc.attrs[key.toLowerCase()] = val;\n        } else {\n          acc.attrs[camelize(key)] = val;\n        }\n\n    }\n\n    return acc;\n  }, {\n    attrs: {}\n  });\n\n  var _extraProps$style = extraProps.style,\n      existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n      remaining = _objectWithoutProperties(extraProps, _excluded);\n\n  mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n  /* eslint-enable */\n\n  return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n  PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n  if (!PRODUCTION && console && typeof console.error === 'function') {\n    var _console;\n\n    (_console = console).error.apply(_console, arguments);\n  }\n}\n\nfunction normalizeIconArgs(icon) {\n  // this has everything that it needs to be rendered which means it was probably imported\n  // directly from an icon svg package\n  if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n    return icon;\n  }\n\n  if (parse.icon) {\n    return parse.icon(icon);\n  } // if the icon is null, there's nothing to do\n\n\n  if (icon === null) {\n    return null;\n  } // if the icon is an object and has a prefix and an icon name, return it\n\n\n  if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n    return icon;\n  } // if it's an array with length of two\n\n\n  if (Array.isArray(icon) && icon.length === 2) {\n    // use the first item as prefix, second as icon name\n    return {\n      prefix: icon[0],\n      iconName: icon[1]\n    };\n  } // if it's a string, use it as the icon name\n\n\n  if (typeof icon === 'string') {\n    return {\n      prefix: 'fas',\n      iconName: icon\n    };\n  }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n  // if the value is a non-empty array\n  // or it's not an array but it is truthy\n  // then create the object with the key and the value\n  // if not, return an empty array\n  return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar defaultProps = {\n  border: false,\n  className: '',\n  mask: null,\n  maskId: null,\n  fixedWidth: false,\n  inverse: false,\n  flip: false,\n  icon: null,\n  listItem: false,\n  pull: null,\n  pulse: false,\n  rotation: null,\n  size: null,\n  spin: false,\n  spinPulse: false,\n  spinReverse: false,\n  beat: false,\n  fade: false,\n  beatFade: false,\n  bounce: false,\n  shake: false,\n  symbol: false,\n  title: '',\n  titleId: null,\n  transform: null,\n  swapOpacity: false\n};\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var allProps = _objectSpread2(_objectSpread2({}, defaultProps), props);\n\n  var iconArgs = allProps.icon,\n      maskArgs = allProps.mask,\n      symbol = allProps.symbol,\n      className = allProps.className,\n      title = allProps.title,\n      titleId = allProps.titleId,\n      maskId = allProps.maskId;\n  var iconLookup = normalizeIconArgs(iconArgs);\n  var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(allProps)), _toConsumableArray((className || '').split(' '))));\n  var transform = objectWithKey('transform', typeof allProps.transform === 'string' ? parse.transform(allProps.transform) : allProps.transform);\n  var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n  var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n    symbol: symbol,\n    title: title,\n    titleId: titleId,\n    maskId: maskId\n  }));\n\n  if (!renderedIcon) {\n    log('Could not find icon', iconLookup);\n    return null;\n  }\n\n  var abstract = renderedIcon.abstract;\n  var extraProps = {\n    ref: ref\n  };\n  Object.keys(allProps).forEach(function (key) {\n    // eslint-disable-next-line no-prototype-builtins\n    if (!defaultProps.hasOwnProperty(key)) {\n      extraProps[key] = allProps[key];\n    }\n  });\n  return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n  beat: PropTypes.bool,\n  border: PropTypes.bool,\n  beatFade: PropTypes.bool,\n  bounce: PropTypes.bool,\n  className: PropTypes.string,\n  fade: PropTypes.bool,\n  flash: PropTypes.bool,\n  mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  maskId: PropTypes.string,\n  fixedWidth: PropTypes.bool,\n  inverse: PropTypes.bool,\n  flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n  icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n  listItem: PropTypes.bool,\n  pull: PropTypes.oneOf(['right', 'left']),\n  pulse: PropTypes.bool,\n  rotation: PropTypes.oneOf([0, 90, 180, 270]),\n  shake: PropTypes.bool,\n  size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n  spin: PropTypes.bool,\n  spinPulse: PropTypes.bool,\n  spinReverse: PropTypes.bool,\n  symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  title: PropTypes.string,\n  titleId: PropTypes.string,\n  transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  swapOpacity: PropTypes.bool\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n", "export * from 'preact/compat';\r\nexport { default } from 'preact/compat';\r\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useSignal } from '@preact/signals'\n\nexport function Collapsible({ defaultOpen = false, Trigger, Content }) {\n  const open = useSignal(defaultOpen)\n\n  const toggle = () => (open.value = !open.value)\n\n  const containerClasses = open.value ? 'h-auto border-[var(--tertiary-color)]' : 'h-0 border-transparent'\n\n  return (\n    <>\n      <button type=\"button\" class=\"py-2 px-2.5 flex items-center justify-between w-full\" onClick={toggle}>\n        {Trigger}\n\n        <Chevron class={open.value ? 'size-4 rotate-180 transition-all' : 'size-4 rotate-0 transition-all'} />\n      </button>\n      <div\n        class={`border-t ${containerClasses} transition-all ease-in-out duration-300 overflow-hidden`}\n        style={{ interpolateSize: 'allow-keywords', transitionBehavior: 'allow-discrete' }}\n      >\n        <div class=\"p-3\">{Content}</div>\n      </div>\n    </>\n  )\n}\n\nexport function Chevron(props) {\n  const d =\n    'M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 ' +\n    '0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z'\n\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" fill=\"currentColor\" {...props}>\n      <path d={d} />\n    </svg>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useContext, useCallback } from 'preact/hooks'\nimport { useBilling, LandingPageState } from '../landing_page'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nexport function useCart() {\n  const { cart } = useContext(LandingPageState)\n  const { merchantAccount } = useBilling()\n\n  const addToCart = useCallback((item) => {\n    const _cart = new Map(cart.value)\n\n    if (_cart.has(item)) {\n      const current = _cart.get(item)\n\n      const max = item.remaining || 99\n\n      _cart.set(item, Math.min(current + 1, max))\n    } else {\n      _cart.set(item, 1)\n    }\n\n    cart.value = _cart\n  })\n\n  const removeFromCart = useCallback((item) => {\n    const _cart = new Map(cart.value)\n\n    if (_cart.get(item) > 1) {\n      const current = _cart.get(item)\n\n      _cart.set(item, current - 1)\n    } else {\n      _cart.delete(item)\n    }\n\n    cart.value = _cart\n  })\n\n  const setQuantity = useCallback((item, quantity) => {\n    const _cart = new Map(cart.value)\n\n    quantity ||= 0\n\n    const max = item.remaining || 99\n\n    _cart.set(item, Math.min(Math.max(quantity, 0), max))\n\n    cart.value = _cart\n  })\n\n  const isMembership = (item) => 'registration_fee_price' in item\n\n  const priceOf = (item) => {\n    if (isMembership(item)) {\n      return parseFloat(item.price) + (parseFloat(item.registration_fee_price) || 0)\n    }\n\n    return parseFloat(item.price)\n  }\n\n  const taxOf = (item) => {\n    if (isMembership(item)) {\n      return parseFloat(item.tax) + (parseFloat(item.registration_fee_tax) || 0)\n    }\n\n    return parseFloat(item.tax)\n  }\n\n  const subtotal = () => {\n    const entries = Array.from(cart.value.entries())\n\n    return bankersRound(entries.reduce((acc, [item, quantity]) => acc + quantity * priceOf(item), 0))\n  }\n  const tax = () => {\n    const entries = Array.from(cart.value.entries())\n\n    return bankersRound(entries.reduce((acc, [item, quantity]) => acc + quantity * taxOf(item), 0))\n  }\n  const serviceFee = () => {\n    if (!merchantAccount) return 0\n    if (!merchantAccount.serviceFeePercentage) return 0\n\n    return bankersRound((subtotal() + tax()) * merchantAccount.serviceFeePercentage)\n  }\n  const total = () => subtotal() + tax() + serviceFee()\n\n  return {\n    cart: cart.value,\n    addToCart,\n    removeFromCart,\n    setQuantity,\n    total,\n    subtotal,\n    tax,\n    serviceFee,\n    priceOf,\n    isMembership,\n  }\n}\n\nexport function Cart() {\n  const { cart } = useCart()\n  const entries = Array.from(cart.entries())\n  const total = entries.reduce((acc, [_, quantity]) => acc + quantity, 0)\n\n  const iconClasses =\n    'absolute top-[-6px] left-1/2 px-[0.5em] py-[0.125em] leading-none bg-danger-600 text-white rounded-full ' +\n    'flex justify-center items-center text-[0.875em]'\n  let buttonClasses = 'relative flex items-center size-5'\n\n  const dialogClasses =\n    'm-0 absolute bg-[var(--tertiary-color)] text-[var(--secondary-color)] p-3 z-50 shadow-lg outline-none ' +\n    '[&[open]]:animate-in animate-out [&[open]]:fade-in-0 fade-out-0 [&[open]]:zoom-in-95 zoom-out-95 min-w-64 ' +\n    'max-w-xs'\n\n  return (\n    <div class=\"pl-2\">\n      <div data-controller=\"popover\" data-popover-placement-value=\"bottom-end\">\n        <button class={buttonClasses} type=\"button\" data-action=\"popover#toggle\" data-popover-target=\"trigger\">\n          {total > 0 ? (\n            <>\n              <CartIcon class=\"text-[var(--primary-color)] fa-fw\" />\n              <span class={iconClasses}>{total}</span>\n            </>\n          ) : (\n            <CartIcon class=\"text-basic-700 fa-fw\" />\n          )}\n        </button>\n        <dialog data-popover-target=\"body\" class={dialogClasses}>\n          <div class=\"font-bold mb-3\">Cart</div>\n          {total > 0 ? (\n            <CartDisplay detailed={false} />\n          ) : (\n            <div class=\"text-[var(--secondary-color-light)]\">Your cart is empty</div>\n          )}\n        </dialog>\n      </div>\n    </div>\n  )\n}\n\nexport function CartDisplay({ detailed }) {\n  const { cart, priceOf, isMembership, total, subtotal, tax, serviceFee } = useCart()\n  const entries = Array.from(cart.entries())\n\n  return (\n    <div class=\"space-y-3\">\n      {entries.map(([item, quantity]) => (\n        <>\n          <div>\n            <div class=\"flex justify-between items-center gap-4 mb-1\">\n              <div class={detailed ? null : 'truncate'}>{item.name}</div>\n              {priceOf(item) > 0 ? (\n                <div class=\"font-bold\">\n                  <Money amount={priceOf(item) * quantity} />\n                </div>\n              ) : (\n                <div>Free</div>\n              )}\n            </div>\n            <div class=\"flex justify-between items-center gap-4\">\n              {!isMembership(item) && <ItemEditor item={item} />}\n\n              {quantity > 1 && (\n                <div class=\"flex items-center gap-1\">\n                  <Money amount={priceOf(item)} />\n                  <span>/ ea</span>\n                </div>\n              )}\n            </div>\n          </div>\n\n          <hr class=\"border-secondary\" />\n        </>\n      ))}\n\n      <div className=\"flex items-center justify-end gap-3\">\n        <div class=\"uppercase font-medium tracking-wider\">Subtotal:</div>\n        <div class=\"font-semibold w-[4.5rem]\">\n          <Money amount={subtotal()} class=\"text-end\" />\n        </div>\n      </div>\n\n      {detailed && (\n        <>\n          <div className=\"flex items-center justify-end gap-3\">\n            <div class=\"uppercase font-medium tracking-wider\">Tax:</div>\n            <div class=\"font-semibold w-[4.5rem]\">\n              <Money amount={tax()} class=\"text-end\" />\n            </div>\n          </div>\n\n          {serviceFee() > 0 && (\n            <div className=\"flex items-center justify-end gap-3\">\n              <div class=\"uppercase font-medium tracking-wider\">Service Fee:</div>\n              <div class=\"font-semibold w-[4.5rem]\">\n                <Money amount={serviceFee()} class=\"text-end\" />\n              </div>\n            </div>\n          )}\n\n          <hr class=\"border-secondary\" />\n\n          <div className=\"flex items-center justify-end gap-3\">\n            <div class=\"uppercase font-medium tracking-wider\">Total Due:</div>\n            <div class=\"font-semibold w-[4.5rem]\">\n              <Money amount={total()} class=\"text-end\" />\n            </div>\n          </div>\n        </>\n      )}\n    </div>\n  )\n}\n\nfunction bankersRound(num) {\n  const multiplier = 10 ** 2\n  const x = num * multiplier\n  const roundedX = Math.round(x)\n  const fraction = Math.abs(x - roundedX)\n\n  if (fraction === 0.5) {\n    return (roundedX % 2 === 0 ? roundedX : roundedX - 1) / multiplier\n  }\n\n  return roundedX / multiplier\n}\n\nexport function Money({ amount, ...props }) {\n  const formatted = new Intl.NumberFormat(undefined, {\n    style: 'currency',\n    currency: document.body.dataset.currency,\n    currencySign: 'standard',\n  }).format(amount)\n\n  return <div {...props}>{formatted}</div>\n}\n\nexport function ItemEditor({ item }) {\n  const { cart, addToCart, removeFromCart, setQuantity } = useCart()\n  const quantity = cart.get(item)\n\n  const inputClasses =\n    'no-spinner appearance-none bg-[var(--shadow-color)] text-center border-b-2 border-transparent ' +\n    'focus:outline-none focus:border-[var(--primary-color)]'\n\n  return (\n    <div class=\"rounded-full bg-[var(--shadow-color)] flex justify-between items-center w-24\">\n      <button\n        class=\"pl-3 py-1.5 flex-1 grid [&>*]:col-start-1 [&>*]:row-start-1\"\n        type=\"button\"\n        onClick={() => removeFromCart(item)}\n      >\n        {quantity > 1 ? (\n          <FontAwesomeIcon icon=\"square-minus\" className={`size-5 text-[var(--secondary-color-light)]`} />\n        ) : (\n          <div class={`flex items-center justify-center size-5`}>\n            <FontAwesomeIcon icon=\"trash\" className={`size-4 text-[var(--secondary-color-light)]`} />\n          </div>\n        )}\n      </button>\n\n      <input\n        type=\"number\"\n        value={quantity}\n        class={inputClasses}\n        onInput={({ target }) => {\n          const newQuantity = Number(target.value)\n\n          setQuantity(item, newQuantity)\n        }}\n        onBlur={({ target }) => {\n          let newQuantity = Number(target.value)\n\n          if (newQuantity < 1) {\n            newQuantity = 1\n          }\n\n          setQuantity(item, newQuantity)\n        }}\n        style={`width: calc(${quantity?.toString()?.length || 1}ch + 1rem)`}\n      />\n\n      <button\n        class=\"flex justify-end flex-1 pr-3 py-1.5 disabled:opacity-65 disabled:cursor-not-allowed\"\n        type=\"button\"\n        disabled={item.remaining && cart.get(item) >= item.remaining}\n        onClick={() => addToCart(item)}\n      >\n        <FontAwesomeIcon icon=\"square-plus\" className=\"size-5 text-[var(--secondary-color-light)]\" />\n      </button>\n    </div>\n  )\n}\n\nfunction CartIcon(props) {\n  const path =\n    'M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5  ' +\n    '31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24  ' +\n    '24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 ' +\n    '37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z'\n\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\" fill=\"currentColor\" {...props}>\n      <path d={path} />\n    </svg>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nexport function Error({ message }) {\n  return (\n    <>\n      {message && (\n        <div class=\"flex gap-2 items-center\">\n          <ExclamationTriangle class=\"size-4 text-danger-600 block\" />\n          <div>{message}</div>\n        </div>\n      )}\n    </>\n  )\n}\n\nfunction ExclamationTriangle(props) {\n  const d =\n    'M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 ' +\n    '480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 ' +\n    '32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 ' +\n    '224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z'\n\n  return (\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" fill=\"currentColor\" {...props}>\n      <path d={d} />\n    </svg>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\n\nexport function Select({ children, ...props }) {\n  const chevronClasses =\n    \"absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none after:content-[''] after:absolute \" +\n    'after:border-[4px] after:border-t-current after:border-x-transparent after:border-b-0 w-2 h-1'\n\n  return (\n    <div class=\"relative\">\n      <select class=\"input input-border appearance-none cursor-pointer [&>*]:bg-[var(--shadow-color)]\" {...props}>\n        {children}\n      </select>\n      <div class={chevronClasses}></div>\n    </div>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useClasses, useError, usePreview } from '../landing_page'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Chevron, Collapsible } from './collapsible'\nimport { useSignal, useSignalEffect } from '@preact/signals'\nimport { getCsrfToken } from '../../helpers/fetch_helper'\nimport { Error } from './error'\nimport { Select } from '../select'\n\nexport function ClassSelection({ member, completed, availableClasses, selectedClass, selectedProgram }) {\n  const classes = 'size-2 rounded-full ring-2 ring-offset-[var(--shadow-color)] ring-offset-2'\n\n  const { required } = useClasses()\n\n  const { errors } = useError()\n\n  defaultComplete(member, errors, completed)\n\n  const onClassSelected = ({ target }) => {\n    if (target.value) {\n      selectedClass.value = availableClasses.value.find((c) => c.id.toString() === target.value)\n    } else {\n      selectedClass.value = null\n      member.class = null\n    }\n  }\n\n  return (\n    <>\n      <div class={`bg-[var(--shadow-color)] border ${errors.class ? 'border-danger-600' : 'border-transparent'}`}>\n        <Collapsible\n          defaultOpen={true}\n          Trigger={\n            <>\n              <div class=\"flex items-center gap-2 size\">\n                <div>\n                  <span class=\"text-base font-bold\">Class</span>\n                  {!required && (\n                    <span class=\"text-sm text-[var(--secondary-color-light)] font-semibold ml-1\">(Optional)</span>\n                  )}\n                </div>\n                {completed.value && (\n                  <div class=\"size-4 bg-[var(--tertiary-color)] rounded-full\">\n                    <FontAwesomeIcon icon=\"circle-check\" className=\"text-[var(--primary-color)] size-4 block\" />\n                  </div>\n                )}\n              </div>\n            </>\n          }\n          Content={\n            <div class=\"p-3 bg-[var(--tertiary-color)] space-y-3\">\n              <div>\n                <label class={`block font-medium uppercase tracking-widest mb-1 ${required ? 'required' : ''}`}>\n                  Select a class\n                </label>\n                <Select onChange={onClassSelected} required={required}>\n                  <option selected={!selectedClass.value} hidden value=\"\">\n                    Select a class\n                  </option>\n                  {!required && <option value=\"\">None</option>}\n\n                  {availableClasses.value.map(({ id, name }) => (\n                    <option value={id} selected={id === selectedClass.value?.id}>\n                      {name}\n                    </option>\n                  ))}\n                </Select>\n              </div>\n\n              <div class=\"border-t border-[var(--secondary-color-light)]\"></div>\n\n              <TimeSelector\n                member={member}\n                selectedProgram={selectedProgram}\n                selectedClass={selectedClass}\n                completed={completed}\n              />\n            </div>\n          }\n        />\n      </div>\n\n      {errors.class && <Error message={errors.class} />}\n    </>\n  )\n}\n\nlet controller\n\n// eslint-disable-next-line complexity\nfunction TimeSelector({ member, selectedProgram, selectedClass, completed }) {\n  const classTimes = useSignal({})\n  const loadingClasses = useSignal(false)\n  const isPreview = usePreview()\n  const selectedEvent = useSignal(member.class)\n\n  const fetchTimes = async (from) => {\n    if (isPreview) return\n    if (controller) return\n\n    const timeout = setTimeout(() => (loadingClasses.value = true), 200)\n\n    controller = new AbortController()\n\n    const path = window.location.href.replace(\n      '/submission/new',\n      `/programs/${selectedProgram.peek().id}/classes/${selectedClass.peek().id}?from=${from}`,\n    )\n    const options = {\n      method: 'GET',\n      headers: {\n        'X-CSRF-Token': getCsrfToken(),\n        'Content-Type': 'application/json',\n      },\n      signal: controller.signal,\n    }\n\n    const response = await fetch(path, options).finally(() => {\n      clearTimeout(timeout)\n      loadingClasses.value = false\n      controller = null\n    })\n\n    if (response.ok) {\n      classTimes.value = await response.json()\n    }\n  }\n\n  if (selectedEvent.value && !classTimes.value) {\n    fetchTimes(selectedClass.value.start)\n  }\n\n  useSignalEffect(async () => {\n    if (!selectedClass.value) {\n      classTimes.value = {}\n      return\n    }\n\n    if (controller) {\n      controller.abort()\n      controller = null\n    }\n\n    await fetchTimes(classTimes.peek()?.prev)\n  })\n\n  const next = async () => {\n    await fetchTimes(classTimes.peek().next)\n  }\n\n  const prev = async () => {\n    await fetchTimes(classTimes.peek().prev)\n  }\n\n  return (\n    <div>\n      <div class=\"flex items-center justify-between\">\n        <div class=\"size-4\">\n          {classTimes.value.prev && (\n            <button type=\"button\" onClick={() => prev()}>\n              <Chevron class=\"rotate-90 text-[var(--primary-color)] size-4\" />\n            </button>\n          )}\n        </div>\n        <div class=\"relative\">\n          {classTimes.value.prev ? (\n            <>\n              <span>{formatMonthDay(classTimes.value.startTime)}</span>\n              <span> - </span>\n              <span>{formatMonthDay(classTimes.value.endTime)}</span>\n            </>\n          ) : (\n            <>\n              <span class=\"font-bold\">This</span>\n              <span> week</span>\n            </>\n          )}\n\n          <div class=\"absolute -right-6 top-px size-4\">{loadingClasses.value && <Loader />}</div>\n        </div>\n        <div class=\"size-4\">\n          {classTimes.value.next && (\n            <button type=\"button\" onClick={() => next()}>\n              <Chevron class=\"-rotate-90 text-[var(--primary-color)] size-4\" />\n            </button>\n          )}\n        </div>\n      </div>\n      {classTimes.value.schedule ? (\n        <div class=\"space-y-2 pt-3\">\n          <WeeklySchedule\n            member={member}\n            schedule={classTimes.value.schedule}\n            selectedClass={selectedClass}\n            selectedEvent={selectedEvent}\n            completed={completed}\n          />\n        </div>\n      ) : (\n        <div class=\"rounded bg-[var(--shadow-color)] py-2 px-3 flex items-center justify-center mt-3\">\n          {isPreview ? (\n            <div>Class selection unavailable in preview</div>\n          ) : (\n            <div>Select a class to see time slots</div>\n          )}\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction defaultComplete(member, errors, completed) {\n  if (member.class && !errors.class) {\n    completed.value = true\n    return\n  }\n}\n\nfunction Loader() {\n  return <FontAwesomeIcon icon=\"fa-duotone fa-spinner-third\" className=\"animate-spin size-4\" />\n}\n\nfunction WeeklySchedule({ member, schedule, completed, selectedEvent }) {\n  const { clearError } = useError()\n\n  const byDayOfWeek = schedule.reduce((acc, event) => {\n    const start = new Date(event.start)\n    const dayOfWeek = start.toLocaleDateString('en-US', { weekday: 'long' })\n    const monthDay = start.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })\n    const key = `${dayOfWeek}, ${monthDay}`\n\n    acc[key] ||= []\n    acc[key].push(event)\n\n    return acc\n  }, {})\n\n  const organized = Object.fromEntries(\n    Object.entries(byDayOfWeek).map(([day, events]) => [\n      day,\n      events.sort((a, b) => new Date(a.start) - new Date(b.start)),\n    ]),\n  )\n\n  const classes = 'block w-full rounded bg-[var(--tertiary-color)] p-1 flex items-center justify-center border-2'\n\n  const eventIsSelected = (event) => {\n    if (!selectedEvent.value) return false\n\n    const selected = selectedEvent.value\n\n    // javascript moment\n    return JSON.stringify(selected) === JSON.stringify(event)\n  }\n\n  const selectedClasses = 'border-[var(--primary-color)] relative'\n\n  return (\n    <>\n      {Object.entries(organized).map(([key, events]) => (\n        <div key={key} class=\"rounded bg-[var(--shadow-color)] p-3 space-y-2\">\n          <div>{key}</div>\n          {events.map((event) => (\n            <>\n              {event.selectable ? (\n                <button\n                  type=\"button\"\n                  key={event}\n                  class={`${classes} ${eventIsSelected(event) ? selectedClasses : 'border-transparent'}`}\n                  onClick={() => {\n                    if (eventIsSelected(event)) {\n                      member.class = null\n                      selectedEvent.value = null\n                      completed.value = false\n                      return\n                    }\n\n                    clearError('class')\n                    member.class = event\n                    selectedEvent.value = event\n                    completed.value = true\n                  }}\n                >\n                  {eventIsSelected(event) && (\n                    <div class=\"absolute -left-2 -top-2 bg-[var(--tertiary-color)] size-4 rounded-full\">\n                      <FontAwesomeIcon icon=\"circle-check\" className=\"block text-[var(--primary-color)] size-4\" />\n                    </div>\n                  )}\n\n                  <div>\n                    <span>{formatTime(event.start)}</span>\n                    <span> - </span>\n                    <span>{formatTime(event.end)}</span>\n                  </div>\n                </button>\n              ) : (\n                <div key={event} class={`${classes} border-transparent cursor-not-allowed opacity-50`}>\n                  <div>\n                    <span>{formatTime(event.start)}</span>\n                    <span> - </span>\n                    <span>{formatTime(event.end)}</span>\n                    {event.tooLate && (\n                      <>\n                        <span> \u2013 </span>\n                        <span class=\"font-semibold\">Class full</span>\n                      </>\n                    )}\n                  </div>\n                </div>\n              )}\n            </>\n          ))}\n        </div>\n      ))}\n    </>\n  )\n}\n\nfunction formatMonthDay(time) {\n  const date = new Date(time)\n\n  return date.toLocaleDateString('en-US', { month: 'long', day: 'numeric' })\n}\n\nfunction formatTime(time) {\n  const date = new Date(time)\n\n  return date\n    .toLocaleTimeString('en-US', {\n      hour: 'numeric',\n      minute: '2-digit',\n      hour12: true,\n    })\n    .toLowerCase()\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useMerchandise, useStep } from '../landing_page'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { ItemEditor, Money, useCart } from './cart'\n\nexport function Merchandise() {\n  const { nextStep, previousStep } = useStep()\n  const merchandise = useMerchandise()\n\n  const outOfStockClasses = 'flex items-center gap-2 text-[var(--secondary-color-light)] cursor-not-allowed pr-4'\n  const itemClasses = 'py-3 mx-3 flex gap-3 justify-between last:border-none border-b border-[var(--shadow-color)]'\n\n  return (\n    <form\n      onSubmit={(event) => {\n        event.preventDefault()\n\n        nextStep()\n      }}\n    >\n      <div class=\"p-3 bg-[var(--shadow-color)]\">\n        <div class=\"p-3 bg-[var(--tertiary-color)] space-y-3\">\n          {Object.entries(merchandise).map(([category, items]) => (\n            <div class=\"border-x border-b border-[var(--shadow-color)]\">\n              <button\n                type=\"button\"\n                class=\"bg-[var(--shadow-color)] flex w-full py-2 px-2.5 uppercase font-medium tracking-wider\"\n              >\n                {category}\n              </button>\n\n              {items.map((item) => (\n                <div class={itemClasses}>\n                  <div className=\"flex flex-col gap-2\">\n                    <div>{item.name}</div>\n\n                    <Money amount={item.price} />\n                  </div>\n\n                  {!item.deliverable || (item.remaining && item.remaining > 0) ? (\n                    <Add item={item} />\n                  ) : (\n                    <div class={outOfStockClasses}>\n                      <span>Out of Stock</span>\n                      <FontAwesomeIcon icon={['far', 'circle-xmark']} className=\"size-4\" />\n                    </div>\n                  )}\n                </div>\n              ))}\n            </div>\n          ))}\n        </div>\n      </div>\n      <div class=\"flex justify-end items-center gap-1 mt-4 pb-4\">\n        <button class=\"btn btn-back\" type=\"button\" onClick={previousStep}>\n          BACK\n        </button>\n        <button class=\"btn\" type=\"submit\">\n          NEXT\n        </button>\n      </div>\n    </form>\n  )\n}\n\nfunction Add({ item }) {\n  const { cart, addToCart } = useCart()\n\n  const animationClasses =\n    'opacity-100 hidden:opacity-0 transition-discrete transition-all starting:opacity-0 duration-250 ease-in-out'\n\n  return (\n    <div class=\"flex items-center\">\n      <div class=\"grid items-center justify-items-end h-12 [&>*]:col-start-1 [&>*]:row-start-1\">\n        <div class={animationClasses} hidden={!cart.has(item)}>\n          <ItemEditor item={item} />\n        </div>\n\n        <button\n          class={`active:scale-95 pl-4 py-2 pr-4 ${animationClasses}`}\n          onClick={() => addToCart(item)}\n          type=\"button\"\n          hidden={cart.has(item)}\n        >\n          <FontAwesomeIcon icon=\"circle-plus\" className=\"text-[var(--primary-color)] size-4\" />\n        </button>\n      </div>\n    </div>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useSubmit } from './submission'\nimport { useBilling, usePreview } from '../landing_page'\nimport { GenericConfirmation } from './confirmation/generic'\nimport { BasysConfirmation } from './confirmation/basys'\nimport { StripeConfirmation } from './confirmation/stripe'\nimport { UsaEpayConfirmation } from './confirmation/usa_epay'\nimport { useCart } from './cart'\nimport { useSignal } from '@preact/signals'\n\nexport function Confirmation() {\n  const { paymentRequired } = useBilling()\n  const { total } = useCart()\n  const isPreview = usePreview()\n\n  return <>{!isPreview && paymentRequired && total() > 0 ? <BillingConfirmation /> : <NoBillingConfirmation />}</>\n}\n\nfunction BillingConfirmation() {\n  const { merchantAccount } = useBilling()\n\n  return (\n    <>\n      {merchantAccount.type === 'basys' && <BasysConfirmation />}\n      {merchantAccount.type === 'stripe' && <StripeConfirmation />}\n      {merchantAccount.type === 'usa_epay' && <UsaEpayConfirmation />}\n    </>\n  )\n}\n\nfunction NoBillingConfirmation() {\n  const { submit } = useSubmit()\n  const submitDisabled = useSignal(false)\n\n  return (\n    <GenericConfirmation\n      submitDisabled={submitDisabled.value}\n      onSubmit={async (event) => {\n        event.preventDefault()\n        submitDisabled.value = true\n        await submit()\n        submitDisabled.value = false\n      }}\n    />\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { Members } from './members'\nimport { Cart } from './cart'\nimport { useStep, useError, usePreview } from '../../landing_page'\nimport { Payment } from './payment'\nimport { Error } from '../error'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nexport function GenericConfirmation({ submitDisabled = false, onSubmit, PaymentElement = null }) {\n  const { errors, clearError } = useError()\n  const { previousStep } = useStep()\n  const isPreview = usePreview()\n  const submitText = PaymentElement ? 'Finish & Pay' : 'Finish'\n  const widthClass = PaymentElement ? 'w-32' : 'w-20'\n\n  return (\n    <form onSubmit={onSubmit}>\n      <div class=\"p-3 bg-[var(--shadow-color)] space-y-3\">\n        <Members />\n        <Cart />\n\n        {Boolean(PaymentElement) && <Payment PaymentElement={PaymentElement} />}\n        {Boolean(errors.generic) && <Error message={errors.generic} />}\n      </div>\n\n      <div class=\"flex justify-end items-center gap-1 mt-4 pb-4\">\n        <button\n          class=\"btn btn-back\"\n          onClick={() => {\n            clearError('generic')\n            previousStep()\n          }}\n          type=\"button\"\n          disabled={submitDisabled}\n        >\n          BACK\n        </button>\n\n        <button class={`btn ${widthClass}`} type=\"submit\" disabled={isPreview || submitDisabled}>\n          {submitDisabled ? (\n            <FontAwesomeIcon icon=\"fa-duotone fa-spinner-third\" className=\"animate-spin size-4\" />\n          ) : (\n            <span>{submitText}</span>\n          )}\n        </button>\n      </div>\n    </form>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { useMembers, useStep, useLeadCaptureForm } from '../../landing_page'\nimport { cleanMember } from '../submission'\n\nexport function Members() {\n  const { members } = useMembers()\n\n  return (\n    <>\n      {members\n        .filter((member) => Boolean(member.name))\n        .map((member) => (\n          <Member member={cleanMemberForDisplay(member)} />\n        ))}\n    </>\n  )\n}\n\nfunction Member({ member }) {\n  const { jumpToStep } = useStep()\n\n  return (\n    <div class=\"p-3 bg-[var(--tertiary-color)]\">\n      <div class=\"border-b flex justify-between pb-2\">\n        <div class=\"text-base font-bold\">{member.name}</div>\n        <button class=\"flex items-center gap-2\" type=\"button\" onClick={() => jumpToStep(1)}>\n          <FontAwesomeIcon icon=\"pencil\" className=\"text-[var(--primary-color)]\" />\n          <div class=\"uppercase font-medium tracking-wide\">edit</div>\n        </button>\n      </div>\n\n      <div class=\"space-y-2 pt-2\">\n        {Object.keys(member)\n          .filter((k) => k !== 'name' && k !== 'primary')\n          .map((key) => (\n            <div class=\"flex items-center gap-4\">\n              <div class=\"uppercase font-medium tracking-wide\">{lookupFieldLabel(member, key)}:</div>\n              <div>{displayMemberInfo(member, key)}</div>\n            </div>\n          ))}\n      </div>\n    </div>\n  )\n}\n\nfunction lookupFieldLabel(member, key) {\n  if (key === 'membershipTemplate') return 'Membership'\n  if (key === 'class') return 'Class'\n\n  const { leadCaptureForm, guardianLeadCaptureForm } = useLeadCaptureForm()\n  const matchKey = (field) => field.key === key\n  const lcfHit = leadCaptureForm.find(matchKey)\n  const glcfHit = guardianLeadCaptureForm?.find(matchKey)\n\n  if (!member.participating && glcfHit) {\n    return glcfHit.label\n  }\n\n  return lcfHit.label\n}\n\nfunction cleanMemberForDisplay(member) {\n  const cleaned = cleanMember(member)\n\n  if (member.participating && member.membershipTemplate) {\n    cleaned.membershipTemplate = member.membershipTemplate\n  }\n\n  if (member.participating && member.class) {\n    cleaned.class = member.class\n  }\n\n  return cleaned\n}\n\nfunction displayMemberInfo(member, key) {\n  if (key === 'address' && member.address?.full) {\n    return member.address.full\n  }\n\n  if (key === 'phone' && member.phone?.number) {\n    return member.phone.number\n  }\n\n  if (key === 'birthday') {\n    // Javascript parses 1999-03-19 wrong\n    // but 1999/03/19 right...\n    const value = member.birthday.replace(/-/g, '/')\n\n    return new Date(value).toLocaleDateString()\n  }\n\n  if (key === 'membershipTemplate') {\n    return (\n      <div class=\"flex items-center gap-2 flex-wrap\">\n        <div>{member.membershipTemplate.name}</div>\n        <div class=\"text-[var(--secondary-color-light)]\">\u2013</div>\n        <div>{member.membershipTemplate.interval}</div>\n      </div>\n    )\n  }\n\n  if (key === 'class') {\n    return (\n      <div class=\"flex items-center gap-2 flex-wrap\">\n        <div>{member.class.name}</div>\n        <div class=\"text-[var(--secondary-color-light)]\">\u2013</div>\n        <div>\n          <span>{formatDate(member.class.start)} </span>\n          <span>{formatTime(member.class.start)}</span>\n          <span> - </span>\n          <span>{formatTime(member.class.end)}</span>\n        </div>\n      </div>\n    )\n  }\n\n  return member[key].toString()\n}\n\nfunction formatDate(time) {\n  const date = new Date(time)\n  return date.toLocaleDateString('en-US', {\n    month: 'short',\n    day: 'numeric',\n    year: 'numeric',\n  })\n}\n\nfunction formatTime(time) {\n  const date = new Date(time)\n\n  return date\n    .toLocaleTimeString('en-US', {\n      hour: 'numeric',\n      minute: '2-digit',\n      hour12: true,\n    })\n    .toLowerCase()\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { CartDisplay, useCart } from '../cart'\n\nexport function Cart() {\n  const { cart } = useCart()\n\n  return (\n    <>\n      {cart.size > 0 && (\n        <div class=\"p-3 bg-[var(--tertiary-color)]\">\n          <div class=\"text-base font-bold\">Cart</div>\n\n          <CartDisplay detailed={true} />\n        </div>\n      )}\n    </>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useBilling } from '../../landing_page'\n\nexport function Payment({ PaymentElement }) {\n  const { paymentRequired } = useBilling()\n\n  return (\n    <>\n      {paymentRequired && (\n        <div class=\"p-3 bg-[var(--tertiary-color)]\">\n          <div class=\"text-base font-bold\">Card Details</div>\n          {PaymentElement}\n        </div>\n      )}\n    </>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useRef } from 'preact/hooks'\nimport { GenericConfirmation } from './generic'\nimport { useSubmit } from '../submission'\nimport { useBasysTokenizer } from '../tokenizers/basys'\nimport { useTheme, useBilling } from '../../landing_page'\nimport { useSignal } from '@preact/signals'\nimport { Error } from '../error'\n\nexport function BasysConfirmation() {\n  const theme = useTheme()\n  const { merchantAccount, strictVaulting } = useBilling()\n  const { submit: defaultSubmit } = useSubmit()\n  const paymentElementRef = useRef(null)\n\n  const zip = useSignal(null)\n  const label = useSignal(null)\n  const save = useSignal(true)\n  const errorText = useSignal(null)\n\n  const disabled = useSignal(true)\n  const tokenizer = useBasysTokenizer(\n    paymentElementRef,\n    theme,\n    merchantAccount,\n    async (token) => {\n      disabled.value = true\n\n      const success = await defaultSubmit({\n        billing: { label, save, source: token, billing_address: { zip_code: zip } },\n      })\n\n      if (!success) {\n        disabled.value = false\n      }\n    },\n    () => {\n      disabled.value = false\n    },\n    (error) => {\n      disabled.value = false\n      errorText.value = error\n    },\n  )\n\n  const submit = (event) => {\n    disabled.value = true\n    event.preventDefault()\n\n    tokenizer.submit()\n  }\n\n  return (\n    <GenericConfirmation\n      submitDisabled={disabled.value}\n      onSubmit={submit}\n      PaymentElement={\n        <div class=\"mt-2\">\n          <div class=\" grid grid-cols-[1fr_7em]\">\n            <div ref={paymentElementRef}></div>\n            <div class=\"pl-[5px]\">\n              <input\n                class=\"input input-border text-base placeholder:text-[#b8b8b8] placeholder:opacity-100\"\n                type=\"text\"\n                placeholder=\"ZIP\"\n                maxlength=\"10\"\n                required\n                onInput={({ target }) => (zip.value = target.value)}\n              />\n            </div>\n          </div>\n          {save.value && (\n            <div>\n              <input\n                class=\"input input-border text-base placeholder:text-[#b8b8b8] placeholder:opacity-100\"\n                type=\"text\"\n                placeholder=\"LABEL (OPTIONAL)\"\n                onInput={({ target }) => (label.value = target.value)}\n              />\n            </div>\n          )}\n          <div class=\"mt-1\">\n            <Error message={errorText.value} />\n          </div>\n          <div class=\"mt-1 text-[var(--secondary-color-light)]\">\n            {strictVaulting ? (\n              <>Card details will be saved to your profile.</>\n            ) : (\n              <div className=\"flex items-center gap-2\">\n                <input\n                  type=\"checkbox\"\n                  class=\"checkbox checkbox-primary checkbox-sm\"\n                  onChange={({ target }) => (save.value = target.checked)}\n                  id=\"save-for-later\"\n                  checked={save.value}\n                />\n\n                <label for=\"save-for-later\">Save for Later</label>\n              </div>\n            )}\n          </div>\n        </div>\n      }\n    />\n  )\n}\n", "import { useEffect } from 'preact/hooks'\n\nlet currentTokenizer\n\nconst tokenizerProxy = {\n  submit() {\n    if (!currentTokenizer) return\n\n    currentTokenizer.submit()\n  },\n}\n\nexport function useBasysTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError) {\n  useEffect(() => {\n    if (!ref.current) return\n\n    currentTokenizer = buildBasysTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError)\n\n    return () => (currentTokenizer = null)\n  }, [ref])\n\n  return tokenizerProxy\n}\n\nfunction buildBasysTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError) {\n  if (!ref.current) return\n\n  return new window.Tokenizer({\n    apikey: merchantAccount.publicKey,\n    container: ref.current,\n    submission: (response) => {\n      switch (response.status) {\n        case 'success':\n          onSubmit(response.token)\n\n          break\n        case 'error':\n          onError(response.msg)\n\n          break\n        case 'validation':\n          onError('Invalid card information')\n\n          break\n        default:\n          break\n      }\n    },\n    onLoad,\n    settings: {\n      payment: { placeholderCreditCard: 'CARD NUMBER' },\n      styles: {\n        '.payment input': {\n          height: '44px',\n          border: `solid 2px ${theme.secondary_color}BF`,\n          'border-radius': '5px',\n          'background-color': 'transparent',\n          color: `${theme.secondary_color}`,\n          'line-height': '36px',\n          'font-family': '\"Hind Vadodara\", sans-serif',\n          'font-size': '16px',\n          'text-transform': 'uppercase',\n        },\n        '.payment input.invalid': { border: `solid 2px #d9433e` },\n      },\n    },\n  })\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { Elements, CardElement, useStripe, useElements } from '@stripe/react-stripe-js'\nimport { useBilling, useTheme } from '../../landing_page'\nimport { useCart } from '../cart'\nimport { GenericConfirmation } from './generic'\nimport { useSignal } from '@preact/signals'\nimport { post } from '../../../helpers/fetch_helper'\nimport { useSubmit } from '../submission'\nimport { Error } from '../error'\n\nlet globalStripe\n\nexport function StripeConfirmation() {\n  const { merchantAccount } = useBilling()\n  const { total } = useCart()\n\n  globalStripe ||= window.Stripe(merchantAccount.publicKey, { stripeAccount: merchantAccount.account })\n\n  return (\n    <Elements\n      stripe={globalStripe}\n      options={{\n        mode: 'payment',\n        amount: Math.floor(total()),\n        currency: document.body.dataset.currency.toLowerCase(),\n      }}\n    >\n      <Confirmation />\n    </Elements>\n  )\n}\n\nfunction Confirmation() {\n  const stripe = useStripe()\n  const elements = useElements()\n\n  const { cart, isMembership } = useCart()\n  const { strictVaulting } = useBilling()\n  const { submit: defaultSubmit } = useSubmit()\n\n  const save = useSignal(true)\n  const errorText = useSignal(null)\n  const disabled = useSignal(!stripe)\n\n  const submit = async (event) => {\n    event.preventDefault()\n\n    if (!stripe || !elements) return\n\n    disabled.value = true\n\n    const body = {}\n\n    cart.forEach((quantity, item) => {\n      if (isMembership(item)) {\n        body.membership = item.id\n      } else {\n        body.items ||= []\n\n        body.items.push({\n          id: item.id,\n          quantity,\n        })\n      }\n    })\n\n    const response = await post(window.location.href.replace('/submission/new', '/payment_intents'), body)\n    const { client_secret: clientSecret } = await response.json()\n\n    const { error, paymentIntent } = await stripe.confirmCardPayment(clientSecret, {\n      payment_method: { card: elements.getElement(CardElement) },\n      setup_future_usage: 'off_session',\n    })\n\n    if (error) {\n      errorText.value = error.message\n      disabled.value = false\n      return\n    }\n\n    const success = await defaultSubmit({\n      billing: { save, label: null, source: paymentIntent.id },\n    })\n\n    if (!success) {\n      disabled.value = false\n    }\n  }\n\n  return (\n    <GenericConfirmation\n      submitDisabled={disabled.value}\n      onSubmit={submit}\n      PaymentElement={\n        <div class=\"mt-2\">\n          <StripePaymentElement errorText={errorText} />\n          <div class=\"mt-1\">\n            <Error message={errorText.value} />\n          </div>\n          <div class=\"mt-1 text-[var(--secondary-color-light)]\">\n            {strictVaulting ? (\n              <>Card details will be saved to your profile.</>\n            ) : (\n              <div className=\"flex items-center gap-2\">\n                <input\n                  type=\"checkbox\"\n                  class=\"checkbox checkbox-primary checkbox-sm\"\n                  onChange={({ target }) => (save.value = target.checked)}\n                  id=\"save-for-later\"\n                  checked={save.value}\n                />\n\n                <label for=\"save-for-later\">Save for Later</label>\n              </div>\n            )}\n          </div>\n        </div>\n      }\n    />\n  )\n}\n\nfunction StripePaymentElement({ errorText }) {\n  const theme = useTheme()\n\n  return (\n    <CardElement\n      onChange={(event) => {\n        if (event.error) {\n          errorText.value = event.error.message\n        } else {\n          errorText.value = null\n        }\n      }}\n      options={{\n        style: {\n          base: {\n            iconColor: theme.primary_color,\n            color: theme.secondary_color,\n            lineHeight: '32px',\n            fontFamily: '\"Hind Vadodara\", sans-serif',\n            fontSize: '16px',\n            textTransform: 'uppercase',\n\n            '::placeholder': { color: `${theme.secondary_color}BF` },\n          },\n          invalid: {\n            iconColor: '#d9433e',\n            color: '#d9433e',\n          },\n        },\n      }}\n    />\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useRef } from 'preact/hooks'\nimport { GenericConfirmation } from './generic'\nimport { useSubmit } from '../submission'\nimport { useUsaEpayTokenizer } from '../tokenizers/usa_epay'\nimport { useTheme, useBilling } from '../../landing_page'\nimport { useSignal } from '@preact/signals'\nimport { Error } from '../error'\n\nexport function UsaEpayConfirmation() {\n  const theme = useTheme()\n  const { merchantAccount, strictVaulting } = useBilling()\n  const { submit: defaultSubmit } = useSubmit()\n  const paymentElementRef = useRef(null)\n\n  const zip = useSignal(null)\n  const label = useSignal(null)\n  const save = useSignal(true)\n  const errorText = useSignal(null)\n\n  const disabled = useSignal(true)\n  const tokenizer = useUsaEpayTokenizer(\n    paymentElementRef,\n    theme,\n    merchantAccount,\n    async (token) => {\n      const success = await defaultSubmit({\n        billing: { save, label, source: token, billing_address: { zip_code: zip } },\n      })\n\n      if (!success) {\n        disabled.value = false\n      }\n    },\n    () => {\n      disabled.value = false\n    },\n    (error) => {\n      const message = error.message.replace('informtion', 'information')\n\n      disabled.value = false\n      errorText.value = message\n    },\n  )\n\n  const submit = (event) => {\n    disabled.value = true\n    event.preventDefault()\n\n    tokenizer.submit()\n  }\n\n  return (\n    <GenericConfirmation\n      submitDisabled={disabled.value}\n      onSubmit={submit}\n      PaymentElement={\n        <div class=\"mt-2\">\n          <div class=\" grid gap-2 grid-cols-[1fr_7em]\">\n            <div ref={paymentElementRef} id=\"usa-epay-payment-element\" class=\"h-11\"></div>\n            <input\n              class=\"input input-border text-base placeholder:text-[#b8b8b8] placeholder:opacity-100\"\n              type=\"text\"\n              placeholder=\"ZIP\"\n              maxlength=\"10\"\n              required\n              onInput={({ target }) => (zip.value = target.value)}\n            />\n          </div>\n          {save.value && (\n            <div class=\"pt-2\">\n              <input\n                class=\"input input-border text-base placeholder:text-[#b8b8b8] placeholder:opacity-100\"\n                type=\"text\"\n                placeholder=\"LABEL (OPTIONAL)\"\n                onInput={({ target }) => (label.value = target.value)}\n              />\n            </div>\n          )}\n          <div class=\"mt-1\">\n            <Error message={errorText.value} />\n          </div>\n          <div class=\"mt-1 text-[var(--secondary-color-light)]\">\n            {strictVaulting ? (\n              <>Card details will be saved to your profile.</>\n            ) : (\n              <div className=\"flex items-center gap-2\">\n                <input\n                  type=\"checkbox\"\n                  class=\"checkbox checkbox-primary checkbox-sm\"\n                  onChange={({ target }) => (save.value = target.checked)}\n                  id=\"save-for-later\"\n                  checked={save.value}\n                />\n\n                <label for=\"save-for-later\">Save for Later</label>\n              </div>\n            )}\n          </div>\n        </div>\n      }\n    />\n  )\n}\n", "import { useEffect } from 'preact/hooks'\n\nlet currentTokenizer\n\nconst tokenizerProxy = {\n  submit() {\n    if (!currentTokenizer) return\n\n    const client = currentTokenizer.client\n    const paymentCard = currentTokenizer.paymentCard\n\n    paymentCard.addEventListener('error', (message) => currentTokenizer.onError({ message }), { once: true })\n\n    client\n      .getPaymentKey(paymentCard)\n      .then((result) => {\n        if (result.error) {\n          currentTokenizer.onError(result.error)\n          return\n        }\n\n        currentTokenizer.onSubmit(result)\n      })\n      .catch(() => {})\n  },\n}\n\nexport function useUsaEpayTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError) {\n  useEffect(() => {\n    if (!ref.current) return\n\n    currentTokenizer = buildUsaEpayTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError)\n\n    return () => (currentTokenizer = null)\n  }, [ref])\n\n  return tokenizerProxy\n}\n\nfunction buildUsaEpayTokenizer(ref, theme, merchantAccount, onSubmit, onLoad, onError) {\n  if (!ref.current) return\n\n  const client = new window.usaepay.Client(merchantAccount.publicKey)\n  const paymentCard = client.createPaymentCardEntry()\n  const style = {\n    base: {\n      backgroundColor: 'transparent',\n      color: theme.secondary_color,\n      lineHeight: '36px',\n      fontFamily: '\"Hind Vadodara\", sans-serif',\n      fontSize: '16px',\n      textTransform: 'uppercase',\n      height: '44px',\n      border: `solid 2px ${theme.secondary_color}BF !important`,\n      borderRadius: '5px !important',\n      padding: '20px 10px !important',\n      minWidth: '90px',\n    },\n    // eslint-disable-next-line max-len\n    '{}\\n.payjs-input-icon { display: none; } #payjs-container { height: 44px, display: flex; gap: 0.5rem; } #payjs-cnum { flex: 1 } @media (max-width: 767px) { #payjs-cvv { width: 4em; min-width: 0px !important; } #payjs-exp { width: 4em; } }':\n      '',\n    invalid: { color: '#d9433e' },\n  }\n\n  paymentCard.generateHTML(style)\n  paymentCard.addHTML(ref.current.id)\n\n  onLoad()\n\n  return { client, paymentCard, onSubmit, onError }\n}\n", "import React, { Fragment } from 'preact/compat'\nimport { h } from 'preact'\nimport { useStep } from '../landing_page'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nexport function StepTracker() {\n  const { step, numberOfSteps } = useStep()\n\n  const steps = Array.from(Array(numberOfSteps).keys()).map((i) => i + 1)\n\n  return (\n    <div class=\"flex items-center\">\n      {steps.map((s) => (\n        <>\n          <Step displaying={s} current={step} />\n\n          {s < numberOfSteps && (\n            <div\n              class={s < step ? 'bg-[var(--primary-color)] h-1 w-2' : 'bg-[var(--secondary-color-light)] h-1 w-2'}\n            ></div>\n          )}\n        </>\n      ))}\n    </div>\n  )\n}\n\nfunction Step({ displaying, current }) {\n  const classes = 'size-2 rounded-full ring-2 ring-offset-[var(--tertiary-color)] ring-offset-2'\n\n  const isFinished = displaying < current\n  const isCurrent = displaying === current\n  const isNext = displaying > current\n\n  return (\n    <>\n      {isFinished && <FontAwesomeIcon icon=\"circle-check\" className=\"text-[var(--primary-color)] size-4\" />}\n      {isCurrent && (\n        <div class=\"size-4 bg-[var(--tertiary-color)] rounded-full flex items-center justify-center\">\n          <div class={`${classes} bg-[var(--primary-color)] ring-[var(--primary-color)]`}></div>\n        </div>\n      )}\n      {isNext && (\n        <div class=\"size-4 bg-[var(--tertiary-color)] rounded-full flex items-center justify-center\">\n          <div class={`${classes} bg-[var(--tertiary-color)] ring-[var(--secondary-color-light)]`}></div>\n        </div>\n      )}\n    </>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { useAgreements, useStep, useMembers } from './landing_page'\nimport { useEffect, useRef, useState } from 'preact/hooks'\n\nexport function Agreements() {\n  const { members } = useMembers()\n  const { nextStep, previousStep } = useStep()\n  const agreements = useAgreements()\n  let action =\n    'signature:reset->agreement-signatures#jumpTo signature:completed->agreement-signatures#updateCount ' +\n    'signature:reset->agreement-signatures#updateCount'\n\n  const controllerRef = useRef(null)\n\n  const [controller, setController] = useState(null)\n\n  useEffect(() => {\n    if (!controllerRef.current) {\n      setController(null)\n      return\n    }\n\n    const cont = window.Stimulus.getControllerForElementAndIdentifier(\n      controllerRef.current,\n      'agreement-signatures',\n    )\n\n    setController(cont)\n  }, [controllerRef])\n\n  useEffect(() => {\n    const tokens = members[0].agreementTokens\n\n    if (!tokens) return\n\n    document.querySelectorAll('[data-token]').forEach((element) => {\n      const token = element.getAttribute('data-token')\n      element.value = tokens[token]\n    })\n  })\n\n  // TODO: So to get things to populate right we'll wanna effectively make `submit`\n  // handle _both_ going forward and backward I think. Seems doable?\n  const submit = (event) => {\n    event.preventDefault()\n\n    if (!controller) return\n\n    const isBack = event.submitter.value\n\n    if (!isBack && !controller.completed) {\n      controller.scrollToCurrent()\n      controller.flashValidity()\n      return\n    }\n\n    const formData = new FormData(event.target)\n    const signatures = formData.getAll('signatures[]')\n    members[0].signatures = signatures\n    const tokens = {}\n    event.target.querySelectorAll('[data-token]').forEach((element) => {\n      const token = element.getAttribute('data-token')\n      tokens[token] = element.value\n    })\n    members[0].agreementTokens = tokens\n\n    if (isBack) {\n      previousStep()\n      return\n    }\n\n    nextStep()\n  }\n\n  return (\n    <form onSubmit={submit}>\n      {agreements.map((agreement) => (\n        <div\n          class=\"relative\"\n          data-controller=\"agreement-signatures\"\n          data-agreement-signatures-signature-outlet=\".signature\"\n          data-agreement-signatures-checkbox-signature-outlet=\".checkbox-signature\"\n          data-action={action}\n          ref={controllerRef}\n        >\n          <div class=\"p-3 bg-[var(--shadow-color)]\">\n            <div class=\"p-3 bg-[var(--tertiary-color)] space-y-3\">\n              <div>\n                <h4 class=\"text-center mb-4\">{agreement.name}</h4>\n                <div\n                  class=\"fr-view\"\n                  dangerouslySetInnerHTML={{ __html: agreement.sanitized_agreement_content }}\n                  style={{ color: 'var(--secondary-color) !important' }}\n                ></div>\n              </div>\n            </div>\n          </div>\n          <div class=\"w-full flex justify-between items-center\">\n            <div class=\"flex m-3 gap-1\">\n              <div data-agreement-signatures-target=\"count\">0</div>\n              <div>of</div>\n              <div>{agreement.count}</div>\n              <div data-agreement-signatures-target=\"count\">signatures completed</div>\n            </div>\n            <div class=\"flex m-3 gap-1\">\n              <button class=\"btn btn-back\" type=\"submit\" value=\"true\" formnovalidate>\n                BACK\n              </button>\n              <button class=\"btn\" type=\"submit\">\n                NEXT\n              </button>\n            </div>\n          </div>\n        </div>\n      ))}\n    </form>\n  )\n}\n", "import React from 'preact/compat'\nimport { h, Fragment } from 'preact'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { Error } from './landing_pages/error'\n\nexport function PhoneFieldWithSms({ number, sendSms, numberChange, smsChange, required, errors, id }) {\n  const errorPresent = errors['contact_info.primary_phone_number.number']\n\n  return (\n    <>\n      <div class=\" flex items-center gap-3\">\n        <div\n          class=\"phone-input-field\"\n          data-controller=\"phone-field--component\"\n          data-phone-field--component-name-value=\"phone\"\n        >\n          <input\n            id={id}\n            type=\"tel\"\n            class={`input input-border !w-40 ${errorPresent && 'input-danger'}`}\n            placeholder=\"201-555-0123\"\n            required={required}\n            data-phone-field--component-target=\"input\"\n            value={number}\n            onInput={({ target }) => setTimeout(() => numberChange(target.nextElementSibling.value))}\n            onBlur={({ target }) => numberChange(target.nextElementSibling.value)}\n            data-action=\"phone-field--component#setHiddenInput\"\n          />\n        </div>\n\n        <div class=\"flex items-center gap-2\">\n          <span>SMS OPT-IN</span>\n          <input\n            type=\"checkbox\"\n            class=\"toggle toggle-xs toggle-primary\"\n            checked={sendSms}\n            onInput={({ target }) => smsChange(target.checked)}\n          />\n        </div>\n      </div>\n\n      {errorPresent && <Error message=\"The number you've entered is invalid. Please try again.\" />}\n\n      <div class=\"p-3 mt-1 text-xs text-[var(--secondary-color-light)] bg-[var(--shadow-color)]\">\n        By opting in to SMS, the person agrees to receive announcements and billing alerts from{' '}\n        {document.body.dataset.schoolName}. Standard messaging rates may apply. Messaging cadence may vary. Reply\n        STOP to opt out.\n      </div>\n    </>\n  )\n}\n\nexport function PhoneField({ number, numberChange, required, id }) {\n  return (\n    <div\n      class=\"phone-input-field\"\n      data-controller=\"phone-field--component\"\n      data-phone-field--component-name-value=\"phone\"\n    >\n      <input\n        id={id}\n        type=\"tel\"\n        class={`input input-border !w-40`}\n        placeholder=\"201-555-0123\"\n        required={required}\n        data-phone-field--component-target=\"input\"\n        value={number}\n        autocomplete=\"off\"\n        onInput={({ target }) => setTimeout(() => numberChange(target.nextElementSibling.value))}\n        onBlur={({ target }) => numberChange(target.nextElementSibling.value)}\n        data-action=\"phone-field--component#setHiddenInput\"\n      />\n    </div>\n  )\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport { Turbo } from '@hotwired/turbo-rails'\n\nexport default class extends Controller {\n  static targets = ['label', 'toggle']\n  static values = { url: String }\n\n  refreshFrame({ target: { form } }) {\n    const params = new URLSearchParams(new FormData(form))\n    params.delete('utf8')\n    params.delete('authenticity_token')\n    const src = `${this.urlValue}?${params.toString()}`\n\n    Turbo.visit(src, { frame: 'ranks_programs' })\n  }\n\n  handleQueue(event) {\n    if (!this.haslabelTarget) return\n\n    const selectedOption = event.target.options[event.target.selectedIndex]\n    const queueable = JSON.parse(selectedOption.dataset.queueValue)\n    if (queueable) {\n      this.labelTarget.classList.remove('hidden')\n      this.toggleTarget.classList.remove('hidden')\n      this.toggleTarget.disabled = false\n    } else {\n      this.labelTarget.classList.add('hidden')\n      this.toggleTarget.classList.add('hidden')\n      this.toggleTarget.disabled = true\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['modulesNav']\n  static outlets = ['form-sortable']\n\n  formSortableOutletConnected(outlet) {\n    outlet.syncNav = (event) => {\n      if (event.oldIndex === event.newIndex) return\n\n      const travelingIndex = event.oldIndex - 1\n      const putBeforeIndex = event.oldIndex < event.newIndex ? event.newIndex : event.newIndex - 1\n\n      this.modulesNavTarget.querySelectorAll('div').forEach((breakpoint) => breakpoint.remove())\n      this.modulesNavTarget.insertBefore(\n        this.modulesNavTarget.children[travelingIndex],\n        this.modulesNavTarget.children[putBeforeIndex],\n      )\n\n      Array.from(this.modulesNavTarget.children).forEach((tab, index) => {\n        tab.insertAdjacentHTML('beforebegin', `<div class=\"h-0 breakpoint-${index}\"></div>`)\n      })\n    }\n  }\n\n  toggleHidden({ target }) {\n    if (target.tagName === 'path') target = target.parentElement\n\n    target.classList.toggle('pr-px')\n    target.classList.toggle('fa-eye')\n    target.classList.toggle('fa-eye-slash')\n    const listItem = target.closest('li')\n    listItem.classList.toggle('opacity-50')\n\n    const input = listItem.querySelector('input')\n    const sectionName = input.id.split('-')[1]\n    const isHidden = input.value === ''\n    input.value = isHidden ? sectionName : ''\n\n    if (input.id.startsWith('modules_settings')) {\n      this.modulesNavTarget.querySelector(`#${sectionName}-nav`).classList.toggle('opacity-50')\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = { original: String, syncTo: { type: String, default: 'main' }, syncAs: String }\n  static targets = ['input', 'value', 'display', 'reset']\n\n  update(syncValue = true) {\n    requestAnimationFrame(() => {\n      const value = this.inputTarget.value.toUpperCase()\n\n      if (value === this.originalValue) {\n        this.resetTarget.classList.add('invisible')\n      } else {\n        this.resetTarget.classList.remove('invisible')\n      }\n\n      if (syncValue) this.valueTarget.value = value\n\n      this.displayTarget.style.backgroundColor = value\n\n      this.#trySync()\n    })\n  }\n\n  set({ target }) {\n    const realValue = this.#massageIntoHex(target.value)\n\n    if (/^#(?:[0-9a-fA-F]{3}){1,2}$/.test(realValue)) {\n      this.inputTarget.value = realValue\n\n      this.update(false)\n    }\n  }\n\n  setValueField() {\n    this.valueTarget.value = this.inputTarget.value.toUpperCase()\n  }\n\n  reset() {\n    this.inputTarget.value = this.originalValue\n\n    this.update()\n\n    this.inputTarget.dispatchEvent(new Event('input'))\n    this.valueTarget.value = this.originalValue\n\n    this.#trySync()\n  }\n\n  #trySync() {\n    if (!this.hasSyncAsValue) return\n\n    const syncElement = document.querySelector(this.syncToValue)\n\n    syncElement.style.setProperty(this.syncAsValue, this.inputTarget.value)\n  }\n\n  #massageIntoHex(value) {\n    if (!value) return ''\n\n    let hex = value.trim()\n\n    if (!hex.startsWith('#')) {\n      hex = `#${hex}`\n    }\n\n    const validChars = hex\n      .substring(1)\n      .split('')\n      .filter((char) => /[0-9A-Fa-f]/.test(char))\n      .join('')\n\n    if (validChars.length === 0) return ''\n\n    if (validChars.length === 3) {\n      const r = validChars[0]\n      const g = validChars[1]\n      const b = validChars[2]\n\n      return `#${r}${r}${g}${g}${b}${b}`\n    }\n\n    return `#${validChars}`\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['container']\n\n  update({ params: { key } }) {\n    this.containerTargets.forEach((container) => {\n      if (key === container.id) {\n        container.hidden = false\n        container.querySelectorAll('input').forEach((input) => (input.disabled = false))\n      } else {\n        container.hidden = true\n        container.querySelectorAll('input').forEach((input) => (input.disabled = true))\n      }\n    })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['container']\n\n  connect() {\n    this.original ||= this.containerTargets.map((container) => container.hidden)\n  }\n\n  swap() {\n    this.containerTargets.forEach((container) => (container.hidden = !container.hidden))\n  }\n\n  swapFromOriginal() {\n    const current = this.containerTargets.map((container) => container.hidden)\n\n    if (current.every((value, index) => value === this.original[index])) {\n      this.swap()\n    }\n  }\n\n  swapToOriginal() {\n    const current = this.containerTargets.map((container) => container.hidden)\n\n    if (!current.every((value, index) => value === this.original[index])) {\n      this.swap()\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['input', 'section', 'requiredIcon', 'requiredField']\n\n  connect() {\n    document.addEventListener('submit', this.submit.bind(this))\n  }\n\n  disconnect() {\n    document.removeEventListener('submit', this.submit.bind(this))\n  }\n\n  submit(event) {\n    if (this.requiredFieldTargets.length === 0 || this.requiredFieldTargets.every((item) => item.disabled)) return\n\n    const anyChecked = this.requiredFieldTargets.some((item) => item.checked)\n    if (anyChecked) {\n      this.sectionTarget.classList.remove('border-2', 'border-danger-600', 'rounded-md')\n      this.requiredIconTarget.setAttribute('hidden', 'hidden')\n      this.requiredIconTarget.parentElement.classList.add('text-basic-700')\n      this.requiredIconTarget.parentElement.classList.remove('text-primary-600')\n    } else {\n      this.sectionTarget.classList.add('border-2', 'border-danger-600', 'rounded-md')\n      this.element.scrollIntoView({ behavior: 'smooth' })\n      this.requiredIconTarget.removeAttribute('hidden')\n      this.requiredIconTarget.parentElement.classList.remove('text-basic-700')\n      this.requiredIconTarget.parentElement.classList.add('text-primary-600')\n      event.preventDefault()\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['input']\n\n  toggle({ target }) {\n    if (!this.hasInputTarget || this.inputTarget === target) return\n\n    this.inputTarget.checked = !this.inputTarget.checked\n\n    this.#emitChange()\n  }\n\n  check({ target }) {\n    if (!this.hasInputTarget || this.inputTarget === target) return\n\n    this.inputTarget.checked = true\n\n    this.#emitChange()\n  }\n\n  uncheck({ target }) {\n    if (!this.hasInputTarget || this.inputTarget === target) return\n\n    this.inputTarget.checked = false\n\n    this.#emitChange()\n  }\n\n  #emitChange() {\n    this.inputTarget.dispatchEvent(new Event('input'), { bubbles: true })\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['parent', 'child']\n\n  syncParent() {\n    this.parentTarget.checked = this.childTargets.every((child) => child.checked)\n  }\n\n  syncChildren() {\n    this.childTargets.forEach((child) => (child.checked = this.parentTarget.checked))\n  }\n\n  check() {\n    this.parentTarget.checked = true\n    this.childTargets.forEach((child) => (child.checked = true))\n  }\n\n  uncheck() {\n    this.parentTarget.checked = false\n    this.childTargets.forEach((child) => (child.checked = false))\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = { provider: String, submitBtnId: String }\n\n  // eslint-disable-next-line complexity\n  submit(event) {\n    this.disableSubmit()\n    if (this.sourceElement) {\n      if (this.weHaveAToken) {\n        return true\n      }\n      event.preventDefault()\n\n      this.formatPhoneNumber()\n      this.handleSubmit()\n    } else {\n      event.preventDefault()\n\n      this.formatPhoneNumber()\n      const form = document.querySelector('form#new-account-form')\n      form.requestSubmit()\n    }\n  }\n\n  //\n  // private\n  //\n\n  handleSubmit() {\n    this.setPaymentToken(this.sourceIsToken, this.sourceElement)\n  }\n\n  formatPhoneNumber() {\n    const ownerPhone = document.querySelector('#owner-phone')\n    const ownerFullPhone = document.querySelector('input[name=\"owner-full-phone\"]')\n    const ownerTelInput = window.intlTelInputGlobals.getInstance(ownerPhone)\n    ownerFullPhone.value = ownerTelInput.getNumber()\n\n    const adminPhone = document.querySelector('#admin-phone')\n    const adminFullPhone = document.querySelector('input[name=\"admin-full-phone\"]')\n    const adminTelInput = window.intlTelInputGlobals.getInstance(adminPhone)\n    adminFullPhone.value = adminTelInput.getNumber()\n  }\n\n  setPaymentToken(sourceIsToken, sourceElement) {\n    this.billingProviderController.setPaymentToken(sourceIsToken, sourceElement).then((success) => {\n      if (success) {\n        // Need to find the form, horray....\n        const form = document.querySelector('form#new-account-form')\n        form.requestSubmit()\n      } else {\n        // eslint-disable-next-line no-console\n        console.log('tokenizer: tokenization failed')\n        this.enableSubmit()\n      }\n    })\n  }\n\n  disableSubmit() {\n    this.element.disabled = true\n  }\n\n  enableSubmit() {\n    this.element.disabled = false\n  }\n\n  get sourceTypeElement() {\n    return document.querySelector('#vault_payment_information_source_type')\n  }\n\n  get sourceElement() {\n    return document.querySelector('#vault_payment_information_source')\n  }\n\n  get billingProviderController() {\n    let controllerName = this.providerValue\n      .replace(/([a-z])([A-Z])/g, '$1-$2')\n      .replace(/[\\s_]+/g, '-')\n      .toLowerCase()\n    return this.application.getControllerForElementAndIdentifier(this.element, controllerName)\n  }\n\n  get sourceIsToken() {\n    return this.sourceTypeElement.value === 'token'\n  }\n\n  get weHaveAToken() {\n    return this.sourceIsToken && this.sourceElement.value\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static values = { hidden: { type: Boolean, default: true } }\n  static targets = ['input', 'program', 'container']\n\n  syncProgram({ target }) {\n    if (!this.hasProgramTarget) return\n\n    const membershipTemplateInput = target\n      .closest('[data-membership-template]')\n      .querySelector('input[type=checkbox]')\n    const membershipPrograms = this.inputTargets.filter(\n      (mp) => mp.value === target.value && !mp.hidden && mp !== target,\n    )\n    let program = this.programTargets.find((pt) => pt.id === target.value)\n\n    if ((membershipTemplateInput.checked && target.checked) || membershipPrograms.some((mp) => mp.checked)) {\n      program.classList.remove('hidden')\n    } else {\n      program.classList.add('hidden')\n    }\n  }\n\n  // eslint-disable-next-line complexity\n  syncPrograms({ target }) {\n    if (!this.hasProgramTarget) return\n\n    const programInputs = target\n      .closest('[data-membership-template]')\n      .querySelector('[data-program-container]')\n      .querySelectorAll('input[type=checkbox]')\n    const membershipTemplateInput = target\n      .closest('[data-membership-template]')\n      .querySelector('input[type=checkbox]')\n\n    if (programInputs.length === 1) return\n\n    for (const programInput of programInputs) {\n      if (programInput.value === 'on' || programInput.type === 'hidden') continue\n\n      const membershipPrograms = this.inputTargets.filter(\n        (mp) => mp.value === programInput.value && !mp.hidden && programInput !== mp,\n      )\n      let program = this.programTargets.find((pt) => pt.id === programInput.value)\n\n      if (\n        (membershipTemplateInput.checked && programInput.checked) ||\n        membershipPrograms.some((mp) => mp.checked)\n      ) {\n        program.classList.remove('hidden')\n      } else {\n        program.classList.add('hidden')\n      }\n    }\n  }\n\n  toggle() {\n    this.hiddenValue = !this.hiddenValue\n  }\n\n  hiddenValueChanged(value) {\n    this.containerTargets.forEach((container) => {\n      container.hidden = value\n      const programContainer = container.querySelector('#membership-templates-container')\n      const inputs = [...programContainer.querySelectorAll('input')]\n      inputs.forEach((input) => (input.disabled = value))\n    })\n  }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from './application'\n\nimport ApplicationController from './application_controller'\napplication.register('application', ApplicationController)\n\nimport ClickOutsideController from './click_outside_controller.js'\napplication.register('click-outside', ClickOutsideController)\n\nimport ConfirmationSubmitController from './confirmation_submit_controller.js'\napplication.register('confirmation-submit', ConfirmationSubmitController)\n\nimport DashboardModuleController from './dashboard_module_controller.js'\napplication.register('dashboard-module', DashboardModuleController)\n\nimport DropSortableController from './drop_sortable_controller.js'\napplication.register('drop-sortable', DropSortableController)\n\nimport DropzoneController from './dropzone_controller.js'\napplication.register('dropzone', DropzoneController)\n\nimport Embedded__LpNavigationController from './embedded/lp_navigation_controller.js'\napplication.register('lp-navigation', Embedded__LpNavigationController)\n\nimport Embedded__LpPaymentController from './embedded/lp_payment_controller.js'\napplication.register('lp-payment', Embedded__LpPaymentController)\n\nimport Embedded__LpSchedulerController from './embedded/lp_scheduler_controller.js'\napplication.register('lp-scheduler', Embedded__LpSchedulerController)\n\nimport Embedded__ProgramSignupController from './embedded/program_signup_controller.js'\napplication.register('program-signup', Embedded__ProgramSignupController)\n\nimport Embedded__PublicController from './embedded/public_controller.js'\napplication.register('public', Embedded__PublicController)\n\nimport Schools__RecentActivityFilterController from './schools/recent_activity_filter_controller.js'\napplication.register('recent-activity-filter', Schools__RecentActivityFilterController)\n\nimport FocusController from './focus_controller.js'\napplication.register('focus', FocusController)\n\nimport FormSortableController from './form_sortable_controller.js'\napplication.register('form-sortable', FormSortableController)\n\nimport IconLoadingController from './icon_loading_controller.js'\napplication.register('icon-loading', IconLoadingController)\n\nimport ImaskController from './imask_controller.js'\napplication.register('imask', ImaskController)\n\nimport InlineEditController from './inline_edit_controller'\napplication.register('inline-edit', InlineEditController)\n\nimport ModalController from './modal_controller.js'\napplication.register('modal', ModalController)\n\nimport PreferencesController from './preferences_controller.js'\napplication.register('preferences', PreferencesController)\n\nimport RadioBtnController from './radio_btn_controller.js'\napplication.register('radio-btn', RadioBtnController)\n\nimport RadioBtnGroupController from './radio_btn_group_controller.js'\napplication.register('radio-btn-group', RadioBtnGroupController)\n\nimport Schools__ClassEventsController from './schools/class_events_controller.js'\napplication.register('class-events', Schools__ClassEventsController)\n\nimport Schools__ClassRegistrationsController from './schools/class_registrations_controller.js'\napplication.register('class-registrations', Schools__ClassRegistrationsController)\n\nimport Schools__EventTypeTogglerController from './schools/event_type_toggler_controller.js'\napplication.register('event-type-toggler', Schools__EventTypeTogglerController)\n\nimport Schools__HovercardController from './schools/hovercard_controller.js'\napplication.register('hovercard', Schools__HovercardController)\n\nimport Schools__MembershipTemplatesController from './schools/membership_templates_controller.js'\napplication.register('membership-templates', Schools__MembershipTemplatesController)\n\nimport Schools__MiniCalendarController from './schools/mini_calendar_controller.js'\napplication.register('mini-calendar', Schools__MiniCalendarController)\n\nimport Schools__PaginationController from './schools/pagination_controller.js'\napplication.register('pagination', Schools__PaginationController)\n\nimport Schools__PrettyCheckboxController from './schools/pretty_checkbox_controller.js'\napplication.register('pretty-checkbox', Schools__PrettyCheckboxController)\n\nimport Schools__ProgramsController from './schools/programs_controller.js'\napplication.register('programs', Schools__ProgramsController)\n\nimport Schools__RanksController from './schools/ranks_controller.js'\napplication.register('ranks', Schools__RanksController)\n\nimport Schools__RecurringClassesController from './schools/recurring_classes_controller.js'\napplication.register('recurring-classes', Schools__RecurringClassesController)\n\nimport Schools__StudentsFilterController from './schools/students_filter_controller.js'\napplication.register('students-filter', Schools__StudentsFilterController)\n\nimport Select2Controller from './select2_controller.js'\napplication.register('select2', Select2Controller)\n\nimport TimeFieldController from '../../components/time_field/component'\napplication.register('time-field', TimeFieldController)\n\nimport ToggleClassController from './toggle_class_controller.js'\napplication.register('toggle-class', ToggleClassController)\n\nimport ProgramsAndRanksStepController from './schools/signups/programs_and_ranks_step_controller.js'\napplication.register('programs-and-ranks-step', ProgramsAndRanksStepController)\n\nimport CalculateMembershipTotalsController from './schools/signups/calculate_membership_totals_controller.js'\napplication.register('calculate-membership-totals', CalculateMembershipTotalsController)\n\nimport ToggleDisableController from './toggle_disable_controller.js'\napplication.register('toggle-disable', ToggleDisableController)\n\nimport ToggleFormSubmitController from './toggle_form_submit_controller.js'\napplication.register('toggle-form-submit', ToggleFormSubmitController)\n\nimport TomSelectController from './tom_select_controller.js'\napplication.register('tom-select', TomSelectController)\n\nimport TooltipController from './tooltip_controller.js'\napplication.register('tooltip', TooltipController)\n\nimport UrlFieldController from './url_field_controller.js'\napplication.register('url-field', UrlFieldController)\n\nimport ReplaceOnChangeController from './replace_on_change_controller'\napplication.register('replace-on-change', ReplaceOnChangeController)\n\nimport PaymentFormController from './payment_form_controller.js'\napplication.register('payment-form', PaymentFormController)\n\nimport LazyImageController from './lazy_image_controller.js'\napplication.register('lazy-image', LazyImageController)\n\nimport PwaControllerController from './pwa_controller.js'\napplication.register('pwa', PwaControllerController)\n\nimport BeaconController from './beacon_controller.js'\napplication.register('beacon', BeaconController)\n\nimport Flatpickr from './flatpickr_controller'\napplication.register('flatpickr', Flatpickr)\n\nimport Carousel from 'stimulus-carousel'\napplication.register('carousel', Carousel)\n\nimport Components__Sidebar__ComponentController from '../../components/sidebar/component_controller.js'\napplication.register('sidebar--component', Components__Sidebar__ComponentController)\n\nimport Components__Collapse__ComponentController from '../../components/collapse/component_controller.js'\napplication.register('collapse--component', Components__Collapse__ComponentController)\n\nimport Components__Dropdown__ComponentController from '../../components/dropdown/component_controller.js'\napplication.register('dropdown--component', Components__Dropdown__ComponentController)\n\nimport Components__Tray__ComponentController from '../../components/tray/component_controller.js'\napplication.register('tray', Components__Tray__ComponentController)\n\nimport Components__Address_Field__ComponentController from '../../components/address_field/component_controller.js'\napplication.register('address-field--component', Components__Address_Field__ComponentController)\n\nimport Components__EditableLogo_ComponentController from '../../components/editable_logo/component_controller.js'\napplication.register('editable-logo--component', Components__EditableLogo_ComponentController)\n\nimport Components__PMs__ComponentController from '../../components/payment_methods/component_controller.js'\napplication.register('payment-methods--component', Components__PMs__ComponentController)\n\nimport Components__Tokenizer__ComponentController from '../../components/tokenizer/component_controller.js'\napplication.register('tokenizer--component', Components__Tokenizer__ComponentController)\n\nimport Components__Stripe_Form__ComponentController from '../../components/stripe_form/component_controller.js'\napplication.register('stripe-form--component', Components__Stripe_Form__ComponentController)\n\nimport Components__Basys_Form_ComponentController from '../../components/basys_form/component_controller.js'\napplication.register('basys-form--component', Components__Basys_Form_ComponentController)\n\nimport Components__Usa_Epay_Form_ComponentController from '../../components/usa_epay_form/component_controller.js'\napplication.register('usa-epay-form--component', Components__Usa_Epay_Form_ComponentController)\n\nimport Password_Field__ComponentController from '../../components/password_field/component_controller.js'\napplication.register('password-field--component', Password_Field__ComponentController)\n\nimport Components_Phone_Field__ComponentController from '../../components/phone_field/component_controller.js'\napplication.register('phone-field--component', Components_Phone_Field__ComponentController)\n\nimport Components_Confirmable_Button_Controller from '../../components/confirmable_button/component_controller.js'\napplication.register('confirmable-button--component', Components_Confirmable_Button_Controller)\n\nimport Components__Gauge_Controller from '../../components/gauge/component_controller.js'\napplication.register('gauge--component', Components__Gauge_Controller)\n\nimport Searchable_Person_Field from '../../components/searchable_person_field/component_controller.js'\napplication.register('searchable-person-field', Searchable_Person_Field)\n\nimport Components__PreferrableCollapse from '../../components/preferrable_collapse/component_controller.js'\napplication.register('preferrable-collapse--component', Components__PreferrableCollapse)\n\nimport Components__ModalController from '../../components/modal/component_controller.js'\napplication.register('modal--component', Components__ModalController)\n\nimport Components__ModalFormController from '../../components/modal_form/component_controller.js'\napplication.register('modal-form--component', Components__ModalFormController)\n\nimport Components__WizardModalController from '../../components/wizard_modal/component_controller'\napplication.register('wizard-modal--component', Components__WizardModalController)\n\nimport Components__CountableTextField from '../../components/countable_text_field/component_controller'\napplication.register('countable-text-field--component', Components__CountableTextField)\n\nimport Components__ExpandableTextDisplay from '../../components/expandable_text_display/component_controller'\napplication.register('expandable-text-display--component', Components__ExpandableTextDisplay)\n\nimport Components__Filter from '../../components/filter/component_controller'\napplication.register('filter--component', Components__Filter)\n\nimport Components__DidYouKnow from '../../components/did_you_know/component_controller'\napplication.register('didyouknow--component', Components__DidYouKnow)\n\nimport StudentView__SchedulerController from './student_view/scheduler_controller'\napplication.register('scheduler', StudentView__SchedulerController)\n\nimport Schools__StudentController from './schools/student_controller'\napplication.register('student', Schools__StudentController)\n\nimport ScrollToController from './scroll_to_controller'\napplication.register('scroll-to', ScrollToController)\n\nimport ToggleableInputController from './toggleable_input_controller'\napplication.register('toggleable-input', ToggleableInputController)\n\nimport ToggleableFrameController from './toggleable_frame_controller'\napplication.register('toggleable-frame', ToggleableFrameController)\n\nimport CopyableInputController from './copyable_input_controller'\napplication.register('copyable-input', CopyableInputController)\n\nimport TurboPaginationController from './turbo_pagination_controller'\napplication.register('turbo-pagination', TurboPaginationController)\n\nimport Schools__ProspectController from './schools/prospect_controller'\napplication.register('prospect', Schools__ProspectController)\n\nimport Duplicate_Fieldset_Controller from './duplicate_fieldset_controller'\napplication.register('duplicate-fieldset', Duplicate_Fieldset_Controller)\n\nimport AutoSortController from './auto_sort_controller'\napplication.register('auto-sort', AutoSortController)\n\nimport Components__TextEditorController from '../../components/text_editor/component_controller'\napplication.register('text-editor--component', Components__TextEditorController)\n\nimport AddOnSelectController from './add_on_select_controller'\napplication.register('add-on-select', AddOnSelectController)\n\nimport Components__TransitionButtonController from '../../components/transition_button/component_controller'\napplication.register('transition-button--component', Components__TransitionButtonController)\n\nimport Components__AutoSortListController from '../../components/auto_sort_list/component_controller'\napplication.register('auto-sort-list--component', Components__AutoSortListController)\n\nimport Components__MoneyFieldController from '../../components/money_field/component_controller'\napplication.register('money-field--component', Components__MoneyFieldController)\n\nimport Components__PercentageFieldController from '../../components/percentage_field/component_controller'\napplication.register('percentage-field--component', Components__PercentageFieldController)\n\nimport Components__IntegerFieldController from '../../components/integer_field/component_controller'\napplication.register('integer-field--component', Components__IntegerFieldController)\n\nimport RequireFieldCheckboxController from './required_field_checkbox_controller'\napplication.register('required-field-checkbox', RequireFieldCheckboxController)\n\nimport ToggleSelectController from './toggle_select_controller'\napplication.register('toggle-select', ToggleSelectController)\n\nimport LineItemCalculateController from './line_item_calculate_controller'\napplication.register('line-item-calculate', LineItemCalculateController)\n\nimport CalculateInvoiceTotalsController from './calculate_invoice_totals_controller'\napplication.register('calculate-invoice-totals', CalculateInvoiceTotalsController)\n\nimport CalculateInvoiceDueDateController from './calculate_invoice_due_date_controller'\napplication.register('calculate-invoice-due-date', CalculateInvoiceDueDateController)\n\nimport ChangeDueController from './change_due_controller'\napplication.register('change-due', ChangeDueController)\n\nimport TurboStreamController from './turbo_stream_controller'\napplication.register('turbo-stream', TurboStreamController)\n\nimport PaymentProcessingController from './payment_processing_controller'\napplication.register('payment-processing', PaymentProcessingController)\n\nimport StripeController from './stripe_controller'\napplication.register('stripe', StripeController)\n\nimport BasysController from './basys_controller'\napplication.register('basys', BasysController)\n\nimport UsaEpayController from './usa_epay_controller'\napplication.register('usa-epay', UsaEpayController)\n\nimport PrintController from './print_controller'\napplication.register('print', PrintController)\n\nimport MoneyDistributorController from './money_distributor_controller'\napplication.register('money-distributor', MoneyDistributorController)\n\nimport MoneyController from './money_controller'\napplication.register('money', MoneyController)\n\nimport RemoveLineItemController from './remove_line_item_controller'\napplication.register('remove-line-item', RemoveLineItemController)\n\nimport RecurringBillingsController from './recurring_billings_controller'\napplication.register('recurring-billings', RecurringBillingsController)\n\nimport Components__ImageCropperController from '../../components/image_cropper/component_controller'\napplication.register('cropper', Components__ImageCropperController)\n\nimport QuickActionProgress from './quick_action_progress_controller'\napplication.register('quick-action-progress', QuickActionProgress)\n\nimport StateTransitionsController from './state_transitions_controller'\napplication.register('state-transitions', StateTransitionsController)\n\nimport RemoveNoticeController from './remove_notice_controller'\napplication.register('remove-notice', RemoveNoticeController)\n\nimport FilterableListController from '../../components/filterable_list/component_controller'\napplication.register('filterable-list', FilterableListController)\n\nimport FilterableListSorterController from '../../components/filterable_list/sorter/component_controller'\napplication.register('filterable-list--sorter', FilterableListSorterController)\n\nimport FilterableListSearchController from '../../components/filterable_list/search/component_controller'\napplication.register('filterable-list--search', FilterableListSearchController)\n\nimport FilterableListActionController from '../../components/filterable_list/action/component_controller'\napplication.register('filterable-list--action', FilterableListActionController)\n\nimport FilterableListBannerController from '../../components/filterable_list/selection_banner/component_controller'\napplication.register('filterable-list--banner', FilterableListBannerController)\n\nimport AttendancesController from './attendances_controller'\napplication.register('attendances', AttendancesController)\n\nimport ShareAndSignAgreementController from './share_and_sign_agreement_controller'\napplication.register('share-and-sign-agreement', ShareAndSignAgreementController)\n\nimport AdobePDFViewerController from '../../components/pdf_viewer/component_controller'\napplication.register('pdf-viewer', AdobePDFViewerController)\n\nimport WysiwygController from '../../components/wysiwyg/component_controller'\napplication.register('wysiwyg', WysiwygController)\n\nimport AgreementPreviewController from './agreement_preview_controller'\napplication.register('agreement-preview', AgreementPreviewController)\n\nimport TrialMembershipFormController from './trial_membership_form_controller'\napplication.register('trial-membership-form', TrialMembershipFormController)\n\nimport SignupMembershipController from './signup_membership_controller'\napplication.register('signup-membership', SignupMembershipController)\n\nimport Components__FilterSectionController from '../../components/filter_section/component_controller'\napplication.register('filter-section', Components__FilterSectionController)\n\nimport Components__FilterGroupController from '../../components/filter_section/group/component_controller'\napplication.register('filter-group', Components__FilterGroupController)\n\nimport Component__FilterSectionFilterController from '../../components/filter_section/filter/component_controller'\napplication.register('filter-section-filter', Component__FilterSectionFilterController)\n\nimport RecurringBillingsIndexController from './recurring_billings_index_controller'\napplication.register('recurring-billings-index', RecurringBillingsIndexController)\n\nimport EditMembershipController from './edit_membership_controller'\napplication.register('edit-membership', EditMembershipController)\n\nimport BackdatedPaymentsController from './backdated_payments_controller'\napplication.register('backdated-payments', BackdatedPaymentsController)\n\nimport ReactivateMembershipController from './reactivate_membership_controller'\napplication.register('reactivate-membership', ReactivateMembershipController)\n\nimport FormController from './form_controller'\napplication.register('form', FormController)\n\nimport PaymentMethodSelectorController from '../../components/payment_method_selector/component_controller'\napplication.register('payment-method-selector', PaymentMethodSelectorController)\n\nimport AdjustInvoiceBalanceController from './adjust_invoice_balance_controller'\napplication.register('adjust-invoice-balance', AdjustInvoiceBalanceController)\n\nimport RecurringBillingDurationController from './reecurring_billing_duration_controller'\napplication.register('recurring-billing-duration', RecurringBillingDurationController)\n\nimport MembershipAttendanceController from './membership_attendance_controller'\napplication.register('membership-attendance', MembershipAttendanceController)\n\nimport NewStudentController from './new_student_controller'\napplication.register('new-student', NewStudentController)\n\nimport UniversalSearchFieldController from '../../components/universal_search_field/component_controller'\napplication.register('universal-search-field', UniversalSearchFieldController)\n\nimport ClassesDetailsController from './classes_details_controller'\napplication.register('classes-details', ClassesDetailsController)\n\nimport PromotionsController from './promotions_controller'\napplication.register('promotions', PromotionsController)\n\nimport PromotionsProgressController from './promotions_progress_controller'\napplication.register('promotions-progress', PromotionsProgressController)\n\nimport QuickslinksController from './quicklinks_controller'\napplication.register('quicklinks', QuickslinksController)\n\nimport NewAttendanceController from './new_attendance_controller'\napplication.register('new-attendance', NewAttendanceController)\n\nimport EditPersonAttendancesController from './edit_person_attendances_controller'\napplication.register('edit-person-attendances', EditPersonAttendancesController)\n\nimport FileFieldController from '../../components/file_field/component_controller'\napplication.register('file-field', FileFieldController)\n\nimport NewFamilyMemberController from './new_family_member_controller'\napplication.register('new-family-member', NewFamilyMemberController)\n\nimport PersonHoverCardController from './person_hovercard_controller.js'\napplication.register('person-hovercard', PersonHoverCardController)\n\nimport ModulesNavController from './schools/modules_nav_controller'\napplication.register('modules-nav', ModulesNavController)\n\nimport AccountsController from './accounts_controller.js'\napplication.register('accounts', AccountsController)\n\nimport FamilyManagementInvitesSendModalController from './family_management_invites_send_modal_controller'\napplication.register('family-management-invites-send-modal', FamilyManagementInvitesSendModalController)\n\nimport PopoverControler from '../../components/popover/component_controller'\napplication.register('popover', PopoverControler)\n\nimport ExpandableListDisplay from '../../components/expandable_list_display/component_controller.js'\napplication.register('expandable-list-display', ExpandableListDisplay)\n\nimport TurboFormSubmitRedirect from './schools/turbo_form_submit_redirect_controller'\napplication.register('turbo-form-submit-redirect', TurboFormSubmitRedirect)\n\nimport ProfileField from '../../components/profile_field/component_controller.js'\napplication.register('profile-field', ProfileField)\n\nimport ToggleVisibility from './toggle_visibility_controller.js'\napplication.register('toggle-visibility', ToggleVisibility)\n\nimport HideableForm from './hideable_form_controller.js'\napplication.register('hideable-form', HideableForm)\n\nimport SearchableList from './searchable_list.js'\napplication.register('searchable-list', SearchableList)\n\nimport ToggleSaveVisibility from './toggle_save_visibility_controller.js'\napplication.register('toggle-save-visibility', ToggleSaveVisibility)\n\nimport SafeSubmit from './safe_submit_controller.js'\napplication.register('safe-submit', SafeSubmit)\n\nimport LcfPreview from './lcf_preview_controller.jsx'\napplication.register('lcf-preview', LcfPreview)\n\nimport NewPromotionController from './new_promotion_controller'\napplication.register('new-promotion', NewPromotionController)\n\nimport ProfileSetting from './schools/profile_setting_controller'\napplication.register('profile-setting', ProfileSetting)\n\nimport ColorField from '../../components/color_field/component_controller'\napplication.register('color-field', ColorField)\n\nimport KeyedVisibility from './keyed_visibility_controller.js'\napplication.register('keyed-visibility', KeyedVisibility)\n\nimport SwapVisiblity from './swap_visibility_controller.js'\napplication.register('swap-visibility', SwapVisiblity)\n\nimport RequiredCheckboxGroup from './required_checkbox_group_controller'\napplication.register('required-checkbox-group', RequiredCheckboxGroup)\n\nimport MarkChecked from './mark_checked_controller'\napplication.register('mark-checked', MarkChecked)\n\nimport SyncCheckboxes from './sync_checkboxes_controller'\napplication.register('sync-checkboxes', SyncCheckboxes)\n\nimport AccountRegistrationsController from './account_registrations_controller'\napplication.register('account-registrations', AccountRegistrationsController)\n\nimport LandingPagePrograms from './landing_page_programs_controller'\napplication.register('landing-page-programs', LandingPagePrograms)\n", "import './cable.js'\nimport './accounts.js'\nimport './calendar.js'\nimport './layout.js'\nimport './user_sessions.js'\nimport './support.js'\n\nimport './school'\nimport './channels'\nimport './billing'\n", "import jstz from 'jstz'\n\n// Rewrite this functionality in app/javascript/controllers/accounts_controller.js when we redo the open page stuff\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  // Handle grabbing the user's timezone and adding to a hidden form field\n  if ($(\"[name='timezone']\").length) $(\"[name='timezone']\").val(jstz.determine().name())\n\n  // Handle allowing only lowercase alphanumeric characters for subdomain\n  $(\"[name='subdomain']\").keypress(function (e) {\n    const regex = /^([a-z]|[0-9])+$/\n    const str = String.fromCharCode(e.charCode ? e.charCode : e.which)\n    const validCharacter = e.charCode === 0 || regex.test(str)\n    if (!validCharacter) e.preventDefault()\n    return validCharacter\n  })\n\n  function adminIsOwner() {\n    return document.getElementById('admin-same-as-owner').checked\n  }\n\n  function capitalize(input) {\n    return input.charAt(0).toUpperCase() + input.slice(1)\n  }\n\n  function luhn(num) {\n    const number = num.replace(/\\D/g, '')\n    const numArray = number\n      .split('')\n      .reverse()\n      .map((n) => parseInt(n))\n    const checksum = numArray.shift()\n\n    const sum = numArray.reduce((acc, n, i) => {\n      if (i % 2 === 0) {\n        n *= 2\n        if (n > 9) n -= 9\n      }\n      return acc + n\n    }, checksum)\n\n    return sum % 10 === 0\n  }\n\n  function creditCardTypeFromNumber(num) {\n    const quickCards = {\n      master: /^5[1-5]/,\n      visa: /^4/,\n      american_express: /^3[47]/,\n      discover: /^(6011|65|64[4-9]|622)/,\n    }\n\n    const fullCards = {\n      master:\n        /^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/,\n      visa: /^4[0-9]{6,}$/,\n      american_express: /^3[47][0-9]{5,}$/,\n      discover: /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,\n    }\n\n    let parsedNum = num.replace(/[^\\d]/g, '')\n\n    const quickType = Object.keys(quickCards).find((type) => quickCards[type].test(parsedNum))\n    const fullType = Object.keys(fullCards).find((type) => fullCards[type].test(parsedNum))\n\n    return [quickType, fullType]\n  }\n\n  function camelCase(input) {\n    return input.toLowerCase().replace(/-(.)/g, function (match, group1) {\n      return group1.toUpperCase()\n    })\n  }\n\n  function isFormFieldValidationImmediate(field) {\n    const customvalidationMethod = `is${capitalize(camelCase(field.attr('name')))}FormFieldValidationImmediate`\n    if (typeof window[customvalidationMethod] === 'function') return window[customvalidationMethod](field)\n    return true\n  }\n\n  function isFormFieldValid(field) {\n    const customvalidationMethod = `is${capitalize(camelCase(field.attr('name')))}FormFieldValid`\n    if (typeof window[customvalidationMethod] === 'function') return window[customvalidationMethod](field)\n    if (field.attr('name') === 'admin-phone' && adminIsOwner()) return true\n    if (field.attr('name') === 'vault[payment_information][billing_address][address2]') return true\n    return $.trim(field.val()) !== ''\n  }\n\n  function markActiveFormSectionIncomplete() {\n    $('#footer .btn-next').attr('disabled', true)\n    $('#footer .btn-submit').attr('disabled', true)\n  }\n\n  function markActiveFormSectionComplete() {\n    $('#footer .content span.active span.full-text .form-section-complete-icon').removeClass('hidden')\n    $('#footer .btn-next').attr('disabled', false)\n    $('#footer .btn-submit:visible').attr('disabled', false)\n  }\n\n  function isActiveFormSectionValid() {\n    let isValid = true\n    $('.form-puzzle-piece.active')\n      .find('input:not(.hidden), select')\n      .each(function () {\n        if (!isFormFieldValid($(this))) {\n          isValid = false\n          return false\n        }\n        return true\n      })\n    return isValid\n  }\n\n  $('#new-account-form input, #new-account-form select').on('focusout', function () {\n    if ($(this).val() && isFormFieldValidationImmediate($(this)) && !isFormFieldValid($(this))) {\n      $(this).addClass('input-danger')\n    }\n  })\n\n  // Handle allowing user to move to next section, assuming current section is all valid\n  $('#new-account-form input').on('input', function () {\n    if (isFormFieldValidationImmediate($(this)) && isFormFieldValid($(this))) $(this).removeClass('input-danger')\n\n    if (isActiveFormSectionValid()) return markActiveFormSectionComplete()\n    markActiveFormSectionIncomplete()\n    return $('#footer .content span.active span.full-text .form-section-complete-icon').addClass('hidden')\n  })\n\n  // Handle allowing user to move to next section, assuming current section is all valid\n  $('#new-account-form select').change(function () {\n    if (isFormFieldValidationImmediate($(this)) && isFormFieldValid($(this))) $(this).removeClass('input-danger')\n\n    if (isActiveFormSectionValid()) return markActiveFormSectionComplete()\n    markActiveFormSectionIncomplete()\n    return $('#footer .content span.active span.full-text .form-section-complete-icon').addClass('hidden')\n  })\n\n  function focusFirstFormField(container) {\n    return container.find('input').first().focus()\n  }\n\n  // Handle going to the next section of the form\n  $('#footer .btn-next').click(function () {\n    const puzzle = $('.form-puzzle')\n    const activePiece = puzzle.find('.form-puzzle-piece.active')\n    const nextPiece = activePiece.next()\n    markActiveFormSectionIncomplete()\n    activePiece.fadeOut('fast', function () {\n      activePiece.removeClass('active')\n      return nextPiece.fadeIn('slow', function () {\n        nextPiece.addClass('active')\n        focusFirstFormField(nextPiece)\n        if (isActiveFormSectionValid()) return markActiveFormSectionComplete()\n\n        return true\n      })\n    })\n    const backButton = $('#footer .btn-back')\n    backButton.attr('disabled', false)\n    const footerContent = $('#footer .content')\n    const activeFooterItem = footerContent.find('span.active')\n    activeFooterItem.removeClass('active')\n    const nextFooterItem = activeFooterItem.next().next()\n    nextFooterItem.addClass('active')\n    if (!nextPiece.next().hasClass('form-puzzle-piece')) {\n      $(this).attr('disabled', true)\n      $(this).hide()\n      const submitButton = $('#footer .btn-submit')\n      submitButton.show()\n    }\n  })\n\n  // Handle going back to the previous form section\n  $('#footer .btn-back').click(function () {\n    const puzzle = $('.form-puzzle')\n    const activePiece = puzzle.find('.form-puzzle-piece.active')\n    const prevPiece = activePiece.prev()\n    activePiece.fadeOut('fast', function () {\n      activePiece.removeClass('active')\n      return prevPiece.fadeIn('slow', function () {\n        prevPiece.addClass('active')\n        return focusFirstFormField(prevPiece)\n      })\n    })\n    const footerContent = $('#footer .content')\n    const activeFooterItem = footerContent.find('span.active')\n    activeFooterItem.removeClass('active')\n    const prevFooterItem = activeFooterItem.prev().prev()\n    prevFooterItem.addClass('active')\n    const submitButton = $('#footer .btn-submit')\n    submitButton.hide()\n    const nextButton = $('#footer .btn-next')\n    nextButton.attr('disabled', false)\n    nextButton.show()\n    if (!prevPiece.prev().hasClass('form-puzzle-piece')) {\n      $(this).attr('disabled', true)\n      nextButton.attr('disabled', false)\n    }\n  })\n\n  window.isOwnerNameFormFieldValid = function (field) {\n    return $.trim(field.val()).length >= 2\n  }\n\n  window.isAdminNameFormFieldValid = function (field) {\n    if (adminIsOwner()) return true\n    return $.trim(field.val()).length >= 2\n  }\n\n  window.isOwnerFullPhoneFormFieldValid = function () {\n    return true\n  }\n\n  window.isAdminFullPhoneFormFieldValid = function () {\n    return true\n  }\n\n  window.isSchoolNameFormFieldValid = function (field) {\n    return $.trim(field.val()).length >= 2\n  }\n\n  window.isOwnerEmailFormFieldValid = function (field) {\n    const regex = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/\n    return regex.test(field.val())\n  }\n\n  window.isAdminEmailFormFieldValid = function (field) {\n    if (adminIsOwner()) return true\n    const regex = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/\n    return regex.test(field.val())\n  }\n\n  var accountCreationSubdomainCheck = null\n  window.isSubdomainFormFieldValid = function (field) {\n    const regex = /^([a-z]|[0-9]){2,}$/\n    const parent = field.closest('.subdomain-fields')\n    if (regex.test(field.val())) {\n      parent.find('.form-field-start').addClass('hidden')\n      parent.find('.spinner').removeClass('hidden')\n      const before = field.val()\n      setTimeout(function () {\n        if (before === field.val()) {\n          if (accountCreationSubdomainCheck) accountCreationSubdomainCheck.abort()\n\n          accountCreationSubdomainCheck = $.ajax({\n            url: field.data('path'),\n            type: 'GET',\n            data: {\n              subdomain: field.val(),\n              strict: true,\n            },\n            dataType: 'json',\n            success(data) {\n              parent.find('.form-field-start').addClass('hidden')\n              if (data.length > 0) {\n                parent.find('.not-available').removeClass('hidden')\n                $(field).addClass('input-danger')\n                markActiveFormSectionIncomplete()\n                $('#footer .content span.active span.full-text .form-section-complete-icon').addClass('hidden')\n              } else {\n                parent.find('.available').removeClass('hidden')\n                $(field).removeClass('input-danger')\n                markActiveFormSectionComplete()\n              }\n            },\n            error() {\n              parent.find('.form-field-start').addClass('hidden')\n              parent.find('.server-error').removeClass('hidden')\n              markActiveFormSectionIncomplete()\n              $('#footer .content span.active span.full-text .form-section-complete-icon').addClass('hidden')\n            },\n          })\n          return accountCreationSubdomainCheck\n        }\n\n        return true\n      }),\n        500\n    } else {\n      parent.find('.form-field-start').addClass('hidden')\n    }\n\n    // Note: The asynchronous call to check the backend will determine this field's validity\n    return false\n  }\n\n  window.isUsernameFormFieldValid = function (field) {\n    return $.trim(field.val()).length >= 4\n  }\n\n  window.isBillingNameFormFieldValid = function (field) {\n    const regex = /^[A-z]{2,} .*[A-z]{2,}$/\n    return regex.test(field.val())\n  }\n\n  window.isBillingNumberFormFieldValid = function (field) {\n    const [quickType, fullType] = creditCardTypeFromNumber(field.val())\n\n    if (quickType) {\n      $('.credit-card-type').addClass('hidden')\n      $(`.credit-card-type.${quickType}`).removeClass('hidden')\n    } else {\n      $('.credit-card-type').addClass('hidden')\n    }\n\n    if (fullType) {\n      $(\"[name='billing-credit-card-type']\").val(fullType)\n    } else {\n      $(\"[name='billing-credit-card-type']\").val('')\n      return false\n    }\n\n    if (!luhn(field.val())) return false\n\n    return true\n  }\n\n  window.isPasswordFormFieldValid = function (field) {\n    if ($.trim(field.val()).length < 4) return false\n\n    return $(\"[name='password-confirmation']\").val() === field.val()\n  }\n\n  window.isPasswordConfirmationFormFieldValid = function (field) {\n    if ($.trim(field.val()).length < 4) return false\n\n    return $(\"[name='password']\").val() === field.val()\n  }\n\n  window.isSubdomainFormFieldValidationImmediate = function () {\n    return false\n  }\n\n  window.isPasswordFormFieldValidationImmediate = function () {\n    return false\n  }\n\n  // Handles marking the first section complete if already filled out after form submission errors\n  if (isActiveFormSectionValid()) return markActiveFormSectionComplete()\n\n  return true\n})\n", "/* global FullCalendar */\n/* global initializeAdditionalInfoModalContent */\n/* global Turbo */\n/* global isMobile */\n/* global initializeTooltips */\n/* global loadLazyPartial */\n/* global moment */\n/* global buildListViewElement */\n/* global buildEventContent */\n\nimport { getCookie, setCookie } from '../../javascript/helpers/cookies'\n\nfunction activateClipboard() {\n  const schoolButton = document.querySelector('.calendar-sync-copy-school')\n  if (schoolButton !== null) {\n    schoolButton.addEventListener('click', () => {\n      const inputField = document.querySelector('#sync-url-school')\n      inputField.select()\n      navigator.clipboard.writeText(inputField.value)\n    })\n  }\n\n  const personalButton = document.querySelector('.calendar-sync-copy-personal')\n  if (personalButton !== null) {\n    personalButton.addEventListener('click', () => {\n      const inputField = document.querySelector('#sync-url-personal')\n      inputField.select()\n      navigator.clipboard.writeText(inputField.value)\n    })\n  }\n}\n\nlet calendar\n// TODO: This whole thing is a mess. We should really uh.. fix it.\n// Correction, this is an actual nightmare.\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name=\"csrf-token\"]').attr('content') } })\n\n  function updateDate(info) {\n    const updatedStartDate = new Date(info.event.startStr)\n    const updatedEndDate = new Date(info.event.endStr)\n    const moduloDistanceStartDate = updatedStartDate.getMinutes() % 15\n    const moduloDistanceEndDate = updatedEndDate.getMinutes() % 15\n\n    if (moduloDistanceStartDate <= 8) {\n      updatedStartDate.setMinutes(updatedStartDate.getMinutes() - moduloDistanceStartDate)\n    } else {\n      updatedStartDate.setMinutes(updatedStartDate.getMinutes() + (15 - moduloDistanceStartDate))\n    }\n\n    if (moduloDistanceEndDate <= 8) {\n      updatedEndDate.setMinutes(updatedEndDate.getMinutes() - moduloDistanceEndDate)\n    } else {\n      updatedEndDate.setMinutes(updatedEndDate.getMinutes() + (15 - moduloDistanceEndDate))\n    }\n\n    const eventType = info.event.id.split('_')[0]\n    const eventId = info.event.id.split('_')[1]\n\n    function updatedData() {\n      if (eventType === 'class') {\n        let data = {\n          old_event_date: info.oldEvent._def.extendedProps.object_type.start_time.slice(0, 10),\n          id: eventId,\n          class_event: {\n            name: info.event._def.title,\n            date: moment(updatedStartDate).format('YYYY-MM-DD'),\n            start_am_pm: moment(updatedStartDate).format('A'),\n            end_am_pm: moment(updatedEndDate).format('A'),\n            start_time: moment(updatedStartDate).format('h:mm'),\n            end_time: moment(updatedEndDate).format('h:mm'),\n            object_type: info.event._def.extendedProps.object_type.event.object_type,\n            type: eventType,\n          },\n        }\n        return data\n      }\n      let data = {\n        start_date: updatedStartDate.toISOString(),\n        end_date: updatedEndDate,\n        type: eventType,\n        id: eventId,\n        person_type: info.event.extendedProps.dataPath.split('/')[1],\n        person_id: info.event.extendedProps.dataPath.split('/')[2],\n      }\n      return data\n    }\n\n    function updatePath() {\n      if (eventType === 'class') {\n        let class_id = info.event._def.publicId.replace(/\\D/g, '')\n        let updatedPath = `schools/calendar/class_events/${class_id}/update/?`\n        return updatedPath\n      }\n      let updatedPath = 'school/calendar/update_date'\n      return updatedPath\n    }\n\n    if (eventType === 'class') {\n      document.dispatchEvent(\n        new CustomEvent('confirmation-modal:open', {\n          detail: { data: updatedData(), path: updatePath(), info: info.el, calendar },\n        }),\n      )\n    }\n  }\n\n  function closePopoverWithOutsideClick() {\n    $(document).mouseup(function (e) {\n      var tooltip = $('.fullcalendar-tooltip')\n      if (!tooltip.is(e.target) && tooltip.has(e.target).length === 0) tooltip.remove()\n    })\n  }\n\n  function centerPosition() {\n    return '55%; top: 50%; transform: translate(-50%, -50%); position: fixed;\">'\n  }\n\n  function dynamicPositionPopover(jsEvent) {\n    if (isMobile()) return centerPosition()\n    let left = jsEvent.pageX\n    const top = jsEvent.pageY\n\n    // The width of the popup can vary but its usually at least 320 pixels wide\n    if (left > window.innerWidth - 320) {\n      left = window.innerWidth - 320\n    }\n\n    return `${left}px; top: ${top}px;\" >`\n  }\n\n  function dynamicPositionScrollablePopover(currentMousePos) {\n    if (isMobile()) return centerPosition()\n    return `${currentMousePos.x - 20}px; top: ${currentMousePos.y - 250}px;\" position: absolute;\" >`\n  }\n\n  function editEvent(path, fullCalendar) {\n    var $updateEventModal = $('#update-event')\n    var $globalAlerts = $('#global-alerts')\n\n    $updateEventModal.html('<div class=\"spinner spinner-grow center\" />')\n    $updateEventModal.modal('show')\n\n    $.get(path, () => {})\n      .done(function (data) {\n        $updateEventModal.html(data)\n        initializeAdditionalInfoModalContent()\n\n        $updateEventModal.modal()\n        $updateEventModal.find('#description').focus()\n        $updateEventModal.find('form').on('ajax:complete', function (e) {\n          if (e.originalEvent.detail[0].status === 200) {\n            fullCalendar.refetchEvents()\n            $updateEventModal.modal('hide')\n          } else if (e.originalEvent.detail[0].status === 403) {\n            const errors = $('#update-event .modal-body .errors')\n            errors.text(e.originalEvent.detail[0].responseText)\n          } else {\n            $globalAlerts.append(e.originalEvent.detail[0].responseText)\n            $updateEventModal.modal('hide')\n          }\n        })\n      })\n      .fail(function (response) {\n        $globalAlerts.append(response.responseText)\n      })\n  }\n\n  const CustomViewConfig = {\n    classNames: ['custom-list-view'],\n\n    content(props) {\n      const segs = FullCalendar.sliceEvents(props)\n      if (calendar.shouldReloadView === true) {\n        calendar.shouldReloadView = false\n\n        // just shove the html that is currently there.. there again I guess\n        return { domNodes: [document.querySelector('.fc-customListView')] }\n      }\n\n      return { domNodes: [buildListViewElement(segs, calendar)] }\n    },\n    visibleRange(currentDate) {\n      const start = new Date(currentDate.valueOf())\n      const end = new Date(currentDate.valueOf())\n      end.setDate(end.getDate() + 7)\n\n      return { start, end }\n    },\n    dayCount: 7,\n  }\n\n  const customListView = FullCalendar.createPlugin({\n    views: {\n      customList: CustomViewConfig,\n    },\n  })\n\n  if ($('#calendar').length) {\n    var currentMousePos = {\n      x: -1,\n      y: -1,\n    }\n    $(document).mousemove(function (event) {\n      currentMousePos.x = event.pageX\n      currentMousePos.y = event.pageY\n    })\n\n    var closeDiv = \"<div class='close-container'> <i class='close-more fa fa-times'></i></div>\"\n    var toolTipDiv =\n      \"<div class='fullcalendar-tooltip'\" +\n      'id=\"fullcalendar-tooltip-scrollable\"' +\n      'style=\"position: absolute; z-index: 999; left: '\n\n    closePopoverWithOutsideClick()\n\n    calendar = new FullCalendar.Calendar(document.getElementById('calendar'), {\n      locale: $('html')[0].lang,\n      now: $('#calendar').data('now'),\n      timeZone: $('body').data('timezone'),\n      headerToolbar: false,\n      initialView: getCookie('preferred_calendar_view') || 'timeGridWeek',\n      themeSystem: 'bootstrap',\n      nowIndicator: true,\n      expandRows: true,\n      dayMaxEvents: 3,\n      navLinks: true,\n      height: 'fit-content',\n      snapDuration: '00:15:00',\n      plugins: [customListView],\n      navLinkDayClick(date) {\n        if (moment.utc(date).format('YYYY-MM-DD') !== moment().format('YYYY-MM-DD')) {\n          activateTodayButton()\n        }\n\n        this.changeView('timeGridDay', date)\n        const startDate = calendar.view.currentStart\n\n        $('.fc-toolbar-title').text(\n          startDate.toLocaleDateString(undefined, {\n            month: 'long',\n            year: 'numeric',\n            day: 'numeric',\n            timeZone: 'UTC',\n          }),\n        )\n\n        $('#mini-calendar-panel').removeClass('hidden')\n      },\n      moreLinkClick(info) {\n        $('.fullcalendar-tooltip').remove()\n        var eventsMarkup = info.allSegs\n          .map(function (e) {\n            return e.event.extendedProps.details\n          })\n          .slice(3)\n          .join('')\n\n        $('body').append(\n          `${toolTipDiv + dynamicPositionScrollablePopover(currentMousePos) + closeDiv + eventsMarkup}</div>`,\n        )\n        initializeTooltips($('#fullcalendar-tooltip-scrollable'))\n      },\n      datesSet(info) {\n        const button = $(`.fc-${info.view.type}-button`)\n        $(button)\n          .parent()\n          .siblings('li')\n          .each(function () {\n            $(this).find('.active').removeClass('active')\n          })\n        $(button).addClass('active')\n        $('.fc-header-toolbar .dropdown-btn .btn-text').text(button.first().text())\n      },\n      eventContent(info) {\n        let content = buildEventContent(info)\n        return { domNodes: [content] }\n      },\n      events: {\n        url: $('#calendar').data('events'),\n        method: 'GET',\n        extraParams() {\n          return {\n            calendars: $('#calendar-options:visible input:checked')\n              .map(function () {\n                return this.id\n              })\n              .get()\n              .join(';'),\n            programs: $('#program-options:visible input:checked')\n              .map(function () {\n                return this.id\n              })\n              .get()\n              .join(';'),\n          }\n        },\n        failure(data) {\n          $('#global-alerts').append(data.xhr.responseText)\n        },\n      },\n      eventClick(info) {\n        $('.fullcalendar-tooltip').remove()\n        const id = info.event.id\n        const details = info.event.extendedProps.details\n\n        $('body')\n          .append(\n            `<div class='fullcalendar-tooltip tooltip-hover' 'id=\"fullcalendar-tooltip\" data-id='\n            ${id}' style=\"position: absolute; z-index: 999; left: ${dynamicPositionPopover(\n              info.jsEvent,\n            )}${closeDiv}${details}</div>`,\n          )\n          .fadeIn('fast')\n        initializeTooltips($('#fullcalendar-tooltip'))\n      },\n      eventDragStart(info) {\n        if (info.event.id.includes('class')) {\n          info.el.dataset.controller = 'confirmation-submit'\n          info.el.dataset.action = 'mouseup->confirmation-submit#showEditConfirmation'\n          info.el.dataset.title = 'Save Changes'\n          info.el.dataset.confirmText = 'Save'\n          info.el.dataset.denyText = 'Cancel'\n          info.el.dataset.message =\n            'Are you sure you would like to save these changes? These changes will only affect this event.'\n        }\n        $('.fullcalendar-tooltip').remove()\n      },\n      eventDrop(info) {\n        updateDate(info)\n      },\n      eventResize(info) {\n        updateDate(info)\n      },\n    })\n    updateCalendarDate()\n    $(window).resize(function () {\n      updateCalendarDate()\n    })\n\n    calendar.render()\n  }\n\n  function updateCalendarDate(options = {}) {\n    if (options.date) {\n      calendar.gotoDate(new Date(options.date))\n    }\n\n    const startDate = calendar.view.currentStart\n    const endDate = calendar.view.activeEnd\n    const shouldShowYear = !window.matchMedia('(min-width: 992px) and (max-width: 1200px)').matches\n\n    switch (calendar.view.type) {\n      case 'dayGridMonth':\n        $('.fc-toolbar-title').text(\n          startDate.toLocaleDateString(undefined, { month: 'long', year: 'numeric', timeZone: 'UTC' }),\n        )\n        break\n      case 'timeGridDay':\n        $('.fc-toolbar-title').text(\n          startDate.toLocaleDateString(undefined, {\n            month: 'long',\n            year: 'numeric',\n            day: 'numeric',\n            timeZone: 'UTC',\n          }),\n        )\n        break\n      case 'customList':\n      case 'timeGridWeek':\n        // FCs activeEnd (and currentEnd) include the day after the range\n        endDate.setDate(endDate.getDate() - 1)\n\n        if (shouldShowYear) {\n          $('.fc-toolbar-title').text(`\n          ${startDate.toLocaleDateString(undefined, {\n            month: 'short',\n            year: 'numeric',\n            day: 'numeric',\n            timeZone: 'UTC',\n          })}\n          -\n          ${endDate.toLocaleDateString(undefined, {\n            month: 'short',\n            year: 'numeric',\n            day: 'numeric',\n            timeZone: 'UTC',\n          })}\n        `)\n        } else {\n          $('.fc-toolbar-title').text(`\n            ${startDate.toLocaleDateString(undefined, {\n              month: 'short',\n              day: 'numeric',\n              timeZone: 'UTC',\n            })}\n            -\n            ${endDate.toLocaleDateString(undefined, {\n              month: 'short',\n              day: 'numeric',\n              timeZone: 'UTC',\n            })}\n          `)\n        }\n        break\n      default:\n        break\n    }\n  }\n\n  $(document).on('turbo:submit-end', function (event) {\n    if (event.detail.success && event.detail.formSubmission.formElement.action.includes('/calendar')) {\n      if (calendar) {\n        // Hacky way to refresh the Upcoming Schedule\n        const trayFrame = document.getElementById('upcoming-tray')\n        const frame = document.getElementById('upcoming')\n        const { src } = frame\n        frame.src = null\n        frame.src = src\n        trayFrame.src = null\n        trayFrame.src = src\n\n        calendar.refetchEvents()\n      }\n\n      const selectors = ['.lazy-load#students-calendar', '.lazy-load#prospects-calendar']\n      for (const selector of selectors) {\n        const $target = $(`${selector}`)\n        if ($target.length) {\n          const path = $target.data().path\n          loadLazyPartial(path, $target, true, false)\n        }\n      }\n    }\n  })\n\n  function activateTodayButton() {\n    $('.fc-today-button').removeAttr('disabled')\n  }\n\n  $(document).on('calendar:updateCalendarDate', function (event) {\n    const date = event.detail.date\n\n    updateCalendarDate({ date })\n    activateTodayButton()\n  })\n\n  $('.fc-prev-button').click(function () {\n    if (calendar.view.type === 'customList') {\n      const newDate = new Date(calendar.view.currentStart)\n      newDate.setDate(newDate.getDate() - 7)\n      updateCalendarDate({ date: newDate })\n    } else {\n      calendar.prev()\n      updateCalendarDate()\n    }\n\n    activateTodayButton()\n  })\n\n  $('.fc-next-button').click(function () {\n    if (calendar.view.type === 'customList') {\n      const newDate = new Date(calendar.view.currentStart)\n      newDate.setDate(newDate.getDate() + 7)\n      updateCalendarDate({ date: newDate })\n    } else {\n      calendar.next()\n      updateCalendarDate()\n    }\n\n    activateTodayButton()\n  })\n\n  $('.fc-today-button').click(function () {\n    calendar.today()\n    updateCalendarDate({ date: new Date() })\n    $(this).attr('disabled', 'disabled')\n  })\n\n  $('.fc-dayGridMonth-button').click(function () {\n    $(this)\n      .parent()\n      .siblings('li')\n      .each(function () {\n        $(this).find('.active').removeClass('active')\n      })\n    $(this).addClass('active')\n    calendar.changeView('dayGridMonth')\n    $('#mini-calendar-panel').addClass('hidden')\n    updateCalendarDate()\n    setCookie('preferred_calendar_view', 'dayGridMonth')\n  })\n\n  $('.fc-timeGridWeek-button').click(function () {\n    $(this)\n      .parent()\n      .siblings('li')\n      .each(function () {\n        $(this).find('.active').removeClass('active')\n      })\n    $(this).addClass('active')\n    calendar.changeView('timeGridWeek')\n    $('#mini-calendar-panel').removeClass('hidden')\n    updateCalendarDate()\n    setCookie('preferred_calendar_view', 'timeGridWeek')\n  })\n\n  $('.fc-timeGridDay-button').click(function () {\n    $(this)\n      .parent()\n      .siblings('li')\n      .each(function () {\n        $(this).find('.active').removeClass('active')\n      })\n    $(this).addClass('active')\n    calendar.changeView('timeGridDay')\n    $('#mini-calendar-panel').removeClass('hidden')\n    updateCalendarDate()\n    setCookie('preferred_calendar_view', 'timeGridDay')\n  })\n\n  $('.fc-customList-button').click(function () {\n    $(this)\n      .parent()\n      .siblings('li')\n      .each(function () {\n        $(this).find('.active').removeClass('active')\n      })\n    $(this).addClass('active')\n    calendar.changeView('customList')\n    $('#mini-calendar-panel').removeClass('hidden')\n    updateCalendarDate()\n    setCookie('preferred_calendar_view', 'customList')\n  })\n\n  $('.fc-syncButton-button').click(function () {\n    $('#calendar-sync-modal').modal('show')\n  })\n\n  $('#calendar-options input').change(function () {\n    if (this.id === 'classes-calendar-option') {\n      for (const checkbox of [...document.querySelectorAll('#program-options input')]) {\n        checkbox.disabled = !this.checked\n        checkbox.checked = this.checked\n      }\n    }\n\n    calendar.refetchEvents()\n  })\n\n  $('#program-options input').change(function () {\n    calendar.refetchEvents()\n  })\n\n  $('#sidebar-container').on('voltage:sidebar:collapsed voltage:sidebar:expanded', function () {\n    if (calendar) calendar.updateSize()\n  })\n\n  $('body').on('click', '.close-more', function () {\n    $('.fullcalendar-tooltip').remove()\n  })\n\n  $('body').on('click', '.edit-link', function () {\n    editEvent($(this).data().editPath, calendar)\n    $('.fullcalendar-tooltip').remove()\n  })\n\n  $('.new-event').on('click', function () {\n    var $newEventModal = $('#new-event')\n    var $globalAlerts = $('#global-alerts')\n    var path = $(this).data().path\n\n    $newEventModal.html('<div class=\"spinner spinner-grow center\" />')\n    $newEventModal.modal('show')\n\n    $.get(path)\n      .done(function (data) {\n        $newEventModal.html(data)\n        initializeAdditionalInfoModalContent()\n\n        $newEventModal.modal()\n        $newEventModal.find('#description').focus()\n        $newEventModal.find('form').on('ajax:complete', function (e) {\n          if (e.originalEvent.detail[0].status === 200) {\n            $newEventModal.modal('hide')\n            Turbo.visit(window.location.toString())\n          } else {\n            $globalAlerts.append(e.originalEvent.detail[0].responseText)\n            $newEventModal.modal('hide')\n          }\n        })\n      })\n      .fail(function (response) {\n        $globalAlerts.append(response.responseText)\n      })\n  })\n\n  activateClipboard()\n})\n", "/* eslint-env jquery */\n/* global Turbo */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('form#user-login-form').submit(function () {\n    Turbo.cache.clear()\n  })\n})\n", "/* eslint-env jquery */\n\nfunction closeModalAndAlertForSuccess(e, modal) {\n  'use strict'\n  var xhr = e.detail[2]\n  $(modal).modal('toggle')\n  $('person-form form').trigger('reset')\n  $('#global-alerts').html(xhr.responseText)\n}\n\nfunction alertForFailure(e) {\n  'use strict'\n  var xhr = e.detail[2]\n  $('#global-alerts').html(xhr.responseText)\n}\n\ndocument.addEventListener('turbo:load', function () {\n  'use strict'\n  var modal = '#new-profile'\n  $(modal).on('ajax:success', function (e) {\n    closeModalAndAlertForSuccess(e, modal)\n  })\n  $(modal).on('ajax:error', function (e) {\n    alertForFailure(e)\n  })\n})\n", "/* eslint-env jquery */\n$(document).on('hidden.bs.modal', '#new-profile', function () {\n  $('input[name=profile_type]').removeAttr('checked')\n  $('.form-group.form-field.email').removeClass('hidden')\n  $('.phone-toggle-container').removeClass('hidden')\n})\n\n$(document).on('click', '.add-new-profile', function () {\n  $('#sidebar-container').removeClass('active')\n})\n\n$(document).on('mouseenter', '.add-new-profile', function () {\n  $('.add-new-profile').addClass('active')\n})\n\n$(document).on('mouseleave', '.add-new-profile', function () {\n  $('.add-new-profile').removeClass('active')\n  $('#enable-sms').bootstrapToggle('off')\n})\n\nfunction openModalFromHash(hash) {\n  'use strict'\n\n  $(hash).on('shown.bs.modal', function () {\n    $('#new-profile-name').focus()\n    $(`${hash} form`).trigger('reset')\n  })\n}\n\n;['turbo:load', 'hashchange'].forEach(function (e) {\n  'use strict'\n\n  window.addEventListener(e, function () {\n    openModalFromHash('#new-profile')\n  })\n})\n\n$(document).on('turbo:load', function () {\n  'use strict'\n  newProfileToggleBehavior()\n})\n\nfunction newProfileToggleBehavior() {\n  'use strict'\n\n  $('body').on('click', '.new-profile-prospect', function () {\n    newProfileToggle().prospect()\n  })\n\n  $('body').on('click', '.new-profile-student', function () {\n    newProfileToggle().student()\n  })\n\n  $('body').on('click', '.new-profile-family', function () {\n    newProfileToggle().family()\n  })\n}\n\nfunction newProfileToggle() {\n  'use strict'\n\n  var behavior = {\n    prospect() {\n      $('.form-group.form-field.email').removeClass('hidden')\n      $('.phone-toggle-container').removeClass('hidden')\n    },\n    student() {\n      $('.form-group.form-field.email').removeClass('hidden')\n      $('.phone-toggle-container').removeClass('hidden')\n    },\n    family() {\n      $('.form-group.form-field.email').addClass('hidden')\n      $('.phone-toggle-container').addClass('hidden')\n    },\n  }\n\n  return behavior\n}\n", "/* global loadLazyPartial */\n\nfunction bindClickableDays() {\n  'use strict'\n\n  var binds = [\n    '#prospects-calendar .simple-calendar .selectable-day',\n    '#students-calendar .simple-calendar .selectable-day',\n    '.dashboard-calendar .simple-calendar .selectable-day',\n  ]\n  $(binds.join(', ')).on('click', function (e) {\n    e.preventDefault()\n\n    var $this = $(this)\n    var $target = $(this).closest('.lazy-load')\n    var path = $this.data('path')\n\n    loadLazyPartial(path, $target)\n  })\n}\n\nfunction bindMonthTransitions() {\n  'use strict'\n\n  var binds = [\n    '#prospects-calendar .simple-calendar a.next-view',\n    '#prospects-calendar .simple-calendar a.previous-view',\n    '#students-calendar .simple-calendar a.next-view',\n    '#students-calendar .simple-calendar a.previous-view',\n    '.dashboard-calendar .simple-calendar a.next-view',\n    '.dashboard-calendar .simple-calendar a.previous-view',\n  ]\n  $(binds.join(', ')).on('click', function (e) {\n    e.preventDefault()\n\n    var $this = $(this)\n    var $target = $(this).closest('.lazy-load')\n    var path = $this.data('path')\n\n    loadLazyPartial(path, $target, true, false)\n  })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n  bindClickableDays()\n  bindMonthTransitions()\n\n  $('.lazy-load#prospects-calendar, .lazy-load#students-calendar, .lazy-load.dashboard-calendar').on(\n    'lazy-load:complete',\n    function () {\n      bindClickableDays()\n      bindMonthTransitions()\n    },\n  )\n})\n", "/* global initializeDropdownTabs */\n/* global initializeCounters */\n/* global initializeTooltips */\n/* global loadLazyPartial */\n/* global initializeWidgetCollapseExpand */\n\nfunction collapseExpandWidgetIfUserHasNoPreference(userPreferenceSelector) {\n  'use strict'\n\n  var windowWidth = 768\n\n  if (!$(userPreferenceSelector).hasClass('user-preference')) {\n    if (window.innerWidth <= windowWidth) $(userPreferenceSelector).removeClass('in')\n    else $(userPreferenceSelector).addClass('in')\n  }\n}\n\nfunction collapseExpandVitalsWidgetIfUserHasNoPreference() {\n  collapseExpandWidgetIfUserHasNoPreference('#vitals-stat-widgets')\n}\n\nfunction updateVitalsWidgetDisplayPreference(path, isDisplayed) {\n  'use strict'\n\n  $.ajax({\n    type: 'PUT',\n    beforeSend(xhr) {\n      xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n    },\n    url: path,\n    data: { session: { isVitalsWidgetDisplayed: isDisplayed } },\n  })\n\n  $('#vitals-stat-widgets').addClass('user-preference')\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  collapseExpandVitalsWidgetIfUserHasNoPreference()\n\n  $('.lazy-load.dashboard-vitals').on('lazy-load:complete', function () {\n    collapseExpandVitalsWidgetIfUserHasNoPreference()\n\n    initializeDropdownTabs($(this))\n    initializeCounters($(this))\n\n    $('.lazy-load.dashboard-vitals .dropdown-tabs .dropdown-tabs-menu li a').on(\n      'voltage:dropdown-tabs:selected',\n      function () {\n        var $this = $(this)\n        var $target = $(this).closest('.lazy-load')\n        var path = $this.data('path')\n\n        loadLazyPartial(path, $target)\n      },\n    )\n\n    $('#vitals-stat-widgets').on('hidden.bs.collapse', function () {\n      var $this = $(this)\n      var path = $this.data('path')\n      $('#vitals-toggler').addClass('fa-chevron-down')\n      $('#vitals-toggler').removeClass('fa-chevron-up')\n\n      updateVitalsWidgetDisplayPreference(path, false)\n    })\n\n    $('#vitals-stat-widgets').on('shown.bs.collapse', function () {\n      var $this = $(this)\n      var path = $this.data('path')\n\n      $('#vitals-toggler').addClass('fa-chevron-up')\n      $('#vitals-toggler').removeClass('fa-chevron-down')\n\n      updateVitalsWidgetDisplayPreference(path, true)\n    })\n\n    $(window).on('resize', function () {\n      collapseExpandVitalsWidgetIfUserHasNoPreference()\n    })\n  })\n\n  $('.lazy-load.dashboard-recent-activity').on('lazy-load:complete', function () {\n    initializeTooltips($(this))\n\n    var $collapsiblePanel = $(this).find('section.panel.panel-default .panel-body')\n    initializeWidgetCollapseExpand($collapsiblePanel)\n  })\n\n  $('.lazy-load.dashboard-calendar').on('lazy-load:complete', function () {\n    var $collapsiblePanel = $(this).find('section.panel.panel-default .panel-body')\n    initializeWidgetCollapseExpand($collapsiblePanel)\n  })\n\n  $('.lazy-load.dashboard-birthdays').on('lazy-load:complete', function () {\n    const $collapsiblePanel = $(this).find('section.panel.panel-default .panel-body')\n    initializeWidgetCollapseExpand($collapsiblePanel)\n    initializeCollapsibleDropdowns()\n  })\n})\n\n$(document).on('turbo:before-cache', () => {\n  $('[data-toggle=\"tooltip\"]').tooltip('hide')\n  $('select.select2.select2-hidden-accessible').select2('destroy')\n})\n\nfunction initializeCollapsibleDropdown($dropdownName) {\n  'use strict'\n  $dropdownName.find('.birthday').on('show.bs.collapse', function (e) {\n    e.stopPropagation()\n    $dropdownName.removeClass('collapsed')\n    $dropdownName.find('.target-icon').toggleClass('chevron-rotate')\n  })\n\n  $dropdownName.find('.birthday').on('hidden.bs.collapse', function (e) {\n    e.stopPropagation()\n    $dropdownName.addClass('collapsed')\n    $dropdownName.find('.target-icon').toggleClass('chevron-rotate')\n  })\n}\n\nfunction initializeCollapsibleDropdowns() {\n  'use strict'\n  const dropdownNames = ['first-month', 'next-month', 'month-after-next']\n  for (const dropdownName of dropdownNames) {\n    initializeCollapsibleDropdown($(`#${dropdownName}`))\n  }\n}\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n  var fixableHeader = $('.fixable-header')[0]\n\n  if (fixableHeader) {\n    var fixableHeaderAltitude = $('.fixable-header').offset().top\n    var fixableHeaderHeight = $('.fixable-header').outerHeight(true)\n    var fixableHeaderBuffer = $('.fixable-header-buffer')[0]\n    fixableHeaderBuffer.style.height = `${fixableHeaderHeight}px`\n\n    /// Pins the header to the top of the screen on scroll\n    document.addEventListener('scroll', function () {\n      'use strict'\n      var distanceFromTop = Math.abs(document.body.getBoundingClientRect().top)\n\n      var desiredWidth = `${$(fixableHeader).parent().width()}px`\n      var desiredClass = 'fixable-header-fixed'\n\n      if ($(fixableHeader)[0] !== undefined) {\n        if (distanceFromTop >= fixableHeaderAltitude) {\n          fixableHeader.classList.add(desiredClass)\n          fixableHeader.style.width = desiredWidth\n          if (fixableHeaderBuffer) fixableHeaderBuffer.style.display = 'inherit'\n        } else {\n          fixableHeader.classList.remove(desiredClass)\n          fixableHeader.style.width = '100%'\n          if (fixableHeaderBuffer) fixableHeaderBuffer.style.display = 'none'\n        }\n      }\n    })\n  }\n})\n", "$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('#overlay .hide-notification').on('click', function () {\n    var $this = $(this)\n\n    $this.closest('#overlay').fadeOut(function () {\n      var $reminder = $('.reminder-message-container')\n      $reminder.hide()\n      $reminder.removeClass('hidden')\n      $reminder.fadeIn()\n    })\n\n    var path = $this.data('path')\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n    $.ajax({\n      type: 'PUT',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n    })\n  })\n\n  $(document).mousemove(function () {\n    var alertsToHide = $('#global-alerts').find('.alert.alert-fade')\n    alertsToHide.removeClass('alert-fade')\n    alertsToHide.addClass('alert-fading')\n\n    setTimeout(function () {\n      alertsToHide.fadeOut('slow')\n    }, 5000)\n  })\n})\n", "/* eslint-env jquery */\n/* global loadLazyPartial */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  var $$$schoolSearchResponse = null\n  $('#search').on('keyup', function (e) {\n    if (e.key !== 'Tab') {\n      var query = $(this).val()\n\n      var $this = $(this)\n      var $target = $('#search-results')\n      var path = `${$this.data('path')}?query=${query}`\n\n      var before = $this.val()\n      setTimeout(function () {\n        if (before === $this.val()) {\n          if ($$$schoolSearchResponse !== null) $$$schoolSearchResponse.abort()\n\n          $$$schoolSearchResponse = loadLazyPartial(path, $target, true, false)\n        }\n      }, 300)\n    }\n  })\n\n  function toggleSearch() {\n    if ($(window).width() < 768) {\n      $('#profile-dropdown .dropdown').toggleClass('hidden')\n      $('.search-active').toggleClass('w-0 w-full')\n      $('#profile-dropdown').toggleClass('w-fit w-full z-[1002] z-[1003]')\n    }\n    $('#search-button').toggleClass('hidden')\n    $('#search-container').toggleClass('hidden')\n  }\n\n  $('#profile-dropdown').click(function (e) {\n    const clickedOnSearchIcon =\n      e.target.id === 'search-button' ||\n      (e.target.tagName === 'path' && e.target.getAttribute('d').startsWith('M416'))\n\n    if (clickedOnSearchIcon) {\n      toggleSearch()\n      $('#search').focus()\n    }\n  })\n\n  $('#search-close').click(function () {\n    $('#search').val('')\n    toggleSearch()\n  })\n\n  $('#search').on('focus', function () {\n    $('#search-results').removeClass('hidden')\n  })\n\n  $('#search').on('focusout', function () {\n    if ($(this).val() === '') {\n      $('#search-results').addClass('hidden')\n    }\n  })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('nav.navbar-utility .navbar-nav .dropdown-menu .toggle-theme').on('click', function (event) {\n    event.stopPropagation()\n    $('#sidebar-container #nav-sidebar .nav-sidebar-icon').toggleClass('active')\n    $('.modal-body .item-icon img').toggleClass('active')\n  })\n})\n", "/* eslint-env jquery */\n/* global initializeDropdownTabs */\n/* global enableApplyToPreviewButton */\n/* global handleProspectCreationToggle */\n/* global initializeEmbedCodeModal */\n/* eslint no-use-before-define: 0 */\n\nfunction handleLCFNewFieldCreationSubmission(element, lastOrder) {\n  'use strict'\n\n  var $createBtn = $(element)\n  var $customFieldTarget = $createBtn.closest('.custom-form-field-creator-wrapper')\n  var nameValue = $customFieldTarget.find('input').val()\n  if (nameValue.trim().length > 0) {\n    var path = $createBtn.data('path')\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n    $.ajax({\n      type: 'POST',\n      url: path,\n      data: { name: nameValue },\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      complete(data) {\n        if (data.status === 200) {\n          $customFieldTarget.html(data.responseText)\n          initializeLeadCaptureFormFields($customFieldTarget.find('.selected-form-field'))\n          $customFieldTarget\n            .find('.selected-form-field')\n            .find('.selected-form-field-orderness input')\n            .val(lastOrder + 1)\n          enableApplyToPreviewButton()\n\n          var collection = $customFieldTarget.parent().children()\n          collection.find('.selected-form-field-orderness .move-field-down').removeClass('disabled')\n          collection.find('.selected-form-field-orderness .move-field-up').removeClass('disabled')\n          collection.first().find('.selected-form-field-orderness .move-field-up').addClass('disabled')\n          collection.last().find('.selected-form-field-orderness .move-field-down').addClass('disabled')\n\n          $customFieldTarget.find('.selected-form-field').unwrap()\n        } else {\n          $('#global-alerts').append(data.responseText)\n        }\n      },\n    })\n  }\n}\n\nfunction updateLeadCaptureFormStatus(container, path, button) {\n  'use strict'\n\n  button.attr('disabled', true)\n\n  var token = $('meta[name=\"csrf-token\"]').attr('content')\n  $.ajax({\n    type: 'PUT',\n    url: path,\n    beforeSend(xhr) {\n      xhr.setRequestHeader('X-CSRF-Token', token)\n    },\n    complete(data) {\n      if (data.status === 200) {\n        container.fadeOut('fast', function () {\n          container.html(data.responseText)\n          initializeDropdownTabs(container)\n          initializeLeadCaptureFormStatusDropdowns(container)\n\n          container.fadeIn('fast')\n        })\n      } else {\n        $('#global-alerts').append(data.responseText)\n      }\n    },\n  })\n}\n\nfunction initializeLeadCaptureFormStatusDropdowns(parent) {\n  'use strict'\n\n  $(parent)\n    .find('.lead-capture-form-container .dropdown-tabs .dropdown-tabs-menu li a')\n    .on('voltage:dropdown-tabs:selected', function () {\n      var $this = $(this)\n      var $target = $this.closest('.lead-capture-form-wrapper')\n      var path = $this.data('path')\n      var $parentButton = $this.closest('.dropdown-tabs').find('button')\n\n      return updateLeadCaptureFormStatus($target, path, $parentButton)\n    })\n}\n\nfunction initializeLeadCaptureFormFields(parent) {\n  'use strict'\n\n  $(parent)\n    .find('.selected-form-field-requireness')\n    .on('click', function () {\n      if (!$(this).find('.always-required').length) {\n        var $actualFormField = $(this).find('input')\n        $actualFormField.attr('checked', !$actualFormField.attr('checked')).trigger('change')\n\n        $(this).find('.is-required').toggleClass('active')\n        $(this).find('.not-required').toggleClass('active')\n\n        enableApplyToPreviewButton()\n        handleProspectCreationToggle()\n      }\n    })\n\n  $(parent)\n    .find('.selected-form-field-orderness .move-field-up')\n    .on('click', function () {\n      if (!$(this).hasClass('disabled')) {\n        var $widget = $(this).closest('.selected-form-field')\n        var $sibling = $widget.prev()\n\n        var $parent = $(this).closest('.selected-form-field-orderness')\n        var $hiddenFormField = $($parent.find(\"input[type='Number']\")[0])\n        var hiddenFormFieldValue = parseInt($hiddenFormField.val())\n\n        var $hiddenFormFieldDos = $($sibling.find(\".selected-form-field-orderness input[type='Number']\")[0])\n        var hiddenFormFieldDosValue = parseInt($hiddenFormFieldDos.val())\n\n        $widget.find(\".selected-form-field-orderness input[type='Number']\").val(hiddenFormFieldDosValue)\n        $sibling.find(\".selected-form-field-orderness input[type='Number']\").val(hiddenFormFieldValue)\n\n        $sibling.before($widget)\n        $widget.addClass('blink')\n        setTimeout(function () {\n          $widget.removeClass('blink')\n        }, 2000)\n\n        var collection = $widget.parent().children()\n        collection.find('.selected-form-field-orderness .move-field-down').removeClass('disabled')\n        collection.find('.selected-form-field-orderness .move-field-up').removeClass('disabled')\n        collection.first().find('.selected-form-field-orderness .move-field-up').addClass('disabled')\n        collection.last().find('.selected-form-field-orderness .move-field-down').addClass('disabled')\n\n        enableApplyToPreviewButton()\n      }\n    })\n\n  $(parent)\n    .find('.selected-form-field-orderness .move-field-down')\n    .on('click', function () {\n      if (!$(this).hasClass('disabled')) {\n        var $widget = $(this).closest('.selected-form-field')\n        var $sibling = $widget.next()\n\n        var $parent = $(this).closest('.selected-form-field-orderness')\n        var $hiddenFormField = $($parent.find(\"input[type='Number']\")[0])\n        var hiddenFormFieldValue = parseInt($hiddenFormField.val())\n\n        var $hiddenFormFieldDos = $($sibling.find(\".selected-form-field-orderness input[type='Number']\")[0])\n        var hiddenFormFieldDosValue = parseInt($hiddenFormFieldDos.val())\n\n        $widget.find(\".selected-form-field-orderness input[type='Number']\").val(hiddenFormFieldDosValue)\n        $sibling.find(\".selected-form-field-orderness input[type='Number']\").val(hiddenFormFieldValue)\n\n        $widget.before($sibling)\n        $widget.addClass('blink')\n        setTimeout(function () {\n          $widget.removeClass('blink')\n        }, 2000)\n\n        var collection = $widget.parent().children()\n        collection.find('.selected-form-field-orderness .move-field-down').removeClass('disabled')\n        collection.find('.selected-form-field-orderness .move-field-up').removeClass('disabled')\n        collection.first().find('.selected-form-field-orderness .move-field-up').addClass('disabled')\n        collection.last().find('.selected-form-field-orderness .move-field-down').addClass('disabled')\n\n        enableApplyToPreviewButton()\n      }\n    })\n\n  $(parent)\n    .find('.deselect-form-field')\n    .click(function () {\n      var $selectedFormField = $(this).closest('.selected-form-field')\n      var $keyField = $selectedFormField.find('.selected-form-field-label input')\n\n      $selectedFormField.remove()\n      var splittedString = $keyField.attr('name').split('[')\n      if (splittedString.length > 1) {\n        var key = splittedString[1].split(']')[0]\n        $('.form-field-options').find(`.form-option-${key}`).removeClass('disabled')\n        enableApplyToPreviewButton()\n        handleProspectCreationToggle()\n      }\n    })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('.lazy-load#lead-capture-forms').on('lazy-load:complete', function () {\n    initializeDropdownTabs($(this))\n    initializeLeadCaptureFormStatusDropdowns($(this))\n    initializeEmbedCodeModal()\n  })\n\n  initializeLeadCaptureFormStatusDropdowns($(this))\n  initializeEmbedCodeModal()\n  initializeLeadCaptureFormFields($('#additional-sidebar'))\n\n  $('.form-option').on('click', function () {\n    if (!$(this).hasClass('disabled')) {\n      var $this = $(this)\n      var $target = $('#lead-capture-form > .content')\n      if (!$this.hasClass('custom-field-option')) $this.addClass('disabled')\n\n      var lastOrder = parseInt(\n        $('#additional-sidebar')\n          .find('.selected-form-field')\n          .last()\n          .find('.selected-form-field-orderness input')\n          .val(),\n      )\n\n      var path = $this.data('path')\n      $.ajax({\n        type: 'GET',\n        url: path,\n        complete(data) {\n          if (data.status === 200) {\n            $target.append(data.responseText)\n            initializeLeadCaptureFormFields($('#additional-sidebar').find('.selected-form-field').last())\n            var $lastField = $('#additional-sidebar').find('.selected-form-field').last()\n            $lastField.find('.selected-form-field-orderness input').val(lastOrder + 1)\n            if ($this.hasClass('custom-field-option')) {\n              $lastField.find('input').focus()\n\n              $lastField.find('input').on('keydown', function (e) {\n                if (e.keyCode === 13) {\n                  e.preventDefault()\n                  handleLCFNewFieldCreationSubmission($lastField.find('.btn.create-field-btn'), lastOrder)\n                }\n              })\n\n              $lastField.find('.btn.create-field-btn').on('click', function () {\n                handleLCFNewFieldCreationSubmission($(this), lastOrder)\n              })\n            } else {\n              enableApplyToPreviewButton()\n            }\n\n            $lastField[0].scrollIntoView({\n              behavior: 'smooth',\n              block: 'start',\n              inline: 'nearest',\n            })\n          } else {\n            $('#global-alerts').append(data.responseText)\n            $this.removeClass('disabled')\n          }\n        },\n      })\n    }\n  })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('body').on('click', '#add-new-agreement', function () {\n    $('#new-agreement-nav-warning').modal('toggle')\n  })\n\n  $('body').on('click', '.go-to-new-agreement', function () {\n    window.open(window.location.origin + $(this).data().path, '_blank')\n  })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('body').on('click', '.go-to-new-trial-membership', function () {\n    window.open(window.location.origin + $(this).data().path, '_blank')\n  })\n\n  $('body').on('click', '#manage-program-signups', function () {\n    $('#manage-program-signups-nav-warning').modal('toggle')\n  })\n\n  $('body').on('click', '.go-to-program-signups', function () {\n    window.open(window.location.origin + $(this).data().path, '_blank')\n  })\n})\n", "$(document).on('turbo:load', function () {\n  'use strict'\n\n  let $confirmationEmailToggle = $('#confirmation-email-toggle')\n\n  $confirmationEmailToggle.bootstrapToggle('destroy')\n  $confirmationEmailToggle.bootstrapToggle()\n  $confirmationEmailToggle.bootstrapToggle('enable')\n\n  $confirmationEmailToggle.change(function () {\n    if (this.checked) {\n      $('.confirmation-email-container').removeClass('hidden')\n    } else {\n      $('.confirmation-email-container').addClass('hidden')\n    }\n  })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  let $quickConnectToggle = $('#quick-connect-toggle')\n\n  $quickConnectToggle.bootstrapToggle('destroy')\n  $quickConnectToggle.bootstrapToggle()\n  $quickConnectToggle.bootstrapToggle('enable')\n\n  if ($quickConnectToggle.prop('checked') === false) $('.sms-selector-container').addClass('hidden')\n\n  // Display \"You need a Required Phone#\" message when no require phone# (or when on Landing Page)\n  let $phoneNumberRequiredField = $('[name=\"fields[phone][required]\"]').parent()\n  if (!$phoneNumberRequiredField.length) {\n    $quickConnectToggle.parent().addClass('disabled')\n    $('.quick-connect-container .phone-number-needed').removeClass('hidden')\n  }\n\n  // initial check for lcf qc enable-able\n  if ($('.selected-module .lead-capture-form-item input:checked').data('canEnableQuickConnect')) {\n    $quickConnectToggle.parent().removeClass('disabled')\n    $('.quick-connect-container .phone-number-needed').addClass('hidden')\n  }\n\n  // Enable toggling when QC-able LCF selected\n  $('.lead-capture-form-item label').on('click', function (e) {\n    if ($(e.target).parent().find('input').data('canEnableQuickConnect')) {\n      $quickConnectToggle.parent().removeClass('disabled')\n      $('.quick-connect-container .phone-number-needed').addClass('hidden')\n    } else {\n      $quickConnectToggle.parent().addClass('disabled')\n      $quickConnectToggle.bootstrapToggle('off')\n      $('.quick-connect-container .phone-number-needed').removeClass('hidden')\n    }\n  })\n\n  // Enable toggling when phone selected on LCF edit\n  $('li.form-option-phone').on('click', function () {\n    $quickConnectToggle.parent().removeClass('disabled')\n    $('.quick-connect-container .phone-number-needed').addClass('hidden')\n  })\n\n  // Toggle off when phone number set to not required\n  $('input[value=phone]')\n    .parents('.other-fields')\n    .find('.selected-form-field-requireness .btn')\n    .on('click', function (e) {\n      if ($(e.target).parents('.btn').find('.is-required.active')) {\n        $quickConnectToggle.bootstrapToggle('off')\n        $('.quick-connect-container .phone-number-needed').removeClass('hidden')\n      } else {\n        $quickConnectToggle.parent().removeClass('disabled')\n        $('.quick-connect-container .phone-number-needed').addClass('hidden')\n      }\n    })\n\n  $quickConnectToggle.change(function () {\n    if (this.checked) {\n      $('.sms-selector-container').removeClass('hidden')\n\n      $phoneNumberRequiredField.find('input').prop('checked', true)\n      $phoneNumberRequiredField.find('.is-required').toggleClass('active')\n      $phoneNumberRequiredField.find('.not-required').toggleClass('active')\n      $('.quick-connect-container .set-phone-number-required').removeClass('hidden')\n    } else {\n      $('.sms-selector-container').addClass('hidden')\n      $('.quick-connect-container .set-phone-number-required').addClass('hidden')\n    }\n  })\n\n  let $quickConnectEmailToggle = $('#quick-connect-email-toggle')\n\n  $quickConnectEmailToggle.bootstrapToggle('destroy')\n  $quickConnectEmailToggle.bootstrapToggle()\n  $quickConnectEmailToggle.bootstrapToggle('enable')\n\n  $quickConnectEmailToggle.change(function () {\n    if (this.checked) {\n      $('.email-selector-container .form-fields').show()\n      $('.email-selector-container').removeClass('hidden')\n    } else {\n      $('.email-selector-container').addClass('hidden')\n    }\n  })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  let $redirectIframeToggle = $('#redirect-within-iframe')\n\n  $redirectIframeToggle.bootstrapToggle('destroy')\n  $redirectIframeToggle.bootstrapToggle()\n  $redirectIframeToggle.bootstrapToggle('enable')\n\n  $('#redirect-url').on('keyup', function () {\n    let form = document.querySelector('#landing-page-form')\n    var hasInvalidURL =\n      !$('#redirect-url')[0].checkValidity() || ($('#redirect-url').val() === '' && $('#redirect-toggle').checked)\n\n    if (hasInvalidURL) {\n      $('.redirect-url-container').addClass('input-danger')\n      $('.redirect-feedback').removeClass('hidden')\n      form.querySelector('button[type=\"submit\"]').disabled = true\n    } else {\n      $('.redirect-url-container').removeClass('input-danger')\n      $('.redirect-feedback').addClass('hidden')\n      form.querySelector('button[type=\"submit\"]').disabled = false\n    }\n  })\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('.visible').on('click', function () {\n    $(this).find('span').toggleClass('hidden')\n\n    const $hiddenFormField = $(this).find(\"input[type='Checkbox']\")[0]\n    $hiddenFormField.checked = !$hiddenFormField.checked\n  })\n})\n", "/* global loadLazyPartial */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('body').on('click', '.comments_filter_by_staff', function (event) {\n    event.preventDefault()\n\n    var $target = $('#comments')\n    var path = $(this).data().path\n\n    loadLazyPartial(path, $target)\n  })\n})\n", "function profilePhotoUploader() {\n  'use strict'\n\n  $('.uploadable-photo').on('click', function () {\n    $('.uploadable-photo-input').trigger('click')\n  })\n\n  function putFile(e) {\n    var file = null\n\n    var dt = e.dataTransfer || (e.originalEvent && e.originalEvent.dataTransfer)\n    var fileList = e.target.files || (dt && dt.files)\n\n    for (var i = 0; i < fileList.length; i++) {\n      if (fileList[i].type.match(/^image\\//)) {\n        file = fileList[i]\n        break\n      }\n    }\n\n    var formData = new FormData()\n    formData.append('photo', file)\n\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n\n    $.ajax({\n      url: $('.uploadable-photo-container').data().path,\n      enctype: 'multipart/form-data',\n      method: 'PUT',\n      data: formData,\n      processData: false,\n      contentType: false,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n    }).done((data) => {\n      $('.profile-photo-container').html(data)\n      profilePhotoUploader()\n\n      const cw = $('.profile-photo').width()\n      $('.profile-photo').css({ height: `${cw}px` })\n\n      $(window).resize(() => {\n        const width = $('.profile-photo').width()\n        $('.profile-photo').css({ height: `${width}px` })\n      })\n    })\n  }\n\n  $('.uploadable-photo-input').on('change', function (e) {\n    putFile(e)\n  })\n\n  $('.uploadable-photo').on('drop', function (e) {\n    e.stopPropagation()\n    e.preventDefault()\n\n    putFile(e)\n  })\n\n  $('.uploadable-photo-container').on('dragover', function (e) {\n    e.stopPropagation()\n    e.preventDefault()\n\n    e.dataTransfer.dropEffect = 'copy'\n  })\n\n  $('.uploadable-photo-container').on('dragenter', function (e) {\n    e.stopPropagation()\n    e.preventDefault()\n  })\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n  profilePhotoUploader()\n})\n", "/* global Turbo */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n  //\n  // Set sidebar items to expanded or collapsed based on preferences\n  //\n  $('.profile-sidebar-content .sidebar-header').each(function () {\n    var preferences = $('.profile-sidebar-content').data()\n    var section_name = this.id.substring(8) // chop off the 'sidebar_'\n\n    if (preferences[section_name] !== 'expanded') toggleSidebarSection($(this))\n\n    $(this).on('click', function () {\n      toggleSidebarSection($(this))\n\n      section_name = this.id.substring(8) // chop off the 'sidebar_'\n      var pref_update = {}\n      if (preferences[section_name] === 'expanded') pref_update[section_name] = 'collapsed'\n      else pref_update[section_name] = 'expanded'\n\n      updateProfileSidebarPreferences(pref_update)\n    })\n  })\n\n  function updateProfileSidebarPreferences(preferences) {\n    var path = '/preferences/'\n    $.ajax({\n      type: 'PUT',\n      url: path,\n      data: {\n        key: 'profile_sidebar',\n        preferences,\n      },\n      complete(data) {\n        if (data.status === 200) Turbo.cache.clear()\n        else $('#global-alerts').append(data.responseText)\n      },\n    })\n  }\n\n  function toggleSidebarSection($this) {\n    var section = $this.closest('.section')\n    var content = section.find('.section-content')\n    content.toggle('hidden')\n\n    var chevron = $this.find('.pull-right')\n    if (chevron.css('transform') === 'none') chevron.css({ transform: 'rotate(180deg)' })\n    else chevron.css({ transform: 'none' })\n  }\n\n  // Handle expand/collapse of entire sidebar in mobile/tablet\n  $(\n    '#student-profile .toggle-profile-sidebar-content, \\\n     #prospect-profile .toggle-profile-sidebar-content',\n  ).on('click', function () {\n    var section = $(this).parent().find('.profile-sidebar-content')\n    section.toggle('hidden')\n\n    var icon = $(this).find('i')\n    if (icon.css('transform') === 'none') icon.css({ transform: 'rotate(180deg)' })\n    else icon.css({ transform: 'none' })\n  })\n\n  // If we resize and vacate tablet/mobile, we need to clear\n  // display: none that may have been added from above toggling\n  $(window).on('resize', function () {\n    var tabletSize = 993\n    var sidebar = $('.profile-sidebar-content')[0]\n    if (sidebar !== undefined && window.innerWidth >= tabletSize && sidebar.style.display != null) {\n      sidebar.style.display = null\n    }\n  })\n})\n", "/* global loadLazyPartial */\n/* global addPDFPreview */\n/* global intlTelInput */\n\nfunction agreementToggle() {\n  'use strict'\n\n  var behavior = {\n    template() {\n      toggleButton('.template-agreement')\n\n      $('.choose-template').removeClass('text-muted')\n      $('.template-select-box').removeClass('hidden')\n      $('.agreement-template').removeClass('hidden')\n      $('.dummy-select-box').addClass('hidden')\n\n      $('.agreement-editor').addClass('hidden')\n      $('.new-upload-pdf').addClass('hidden')\n      $('.new-agreement-editor').addClass('hidden')\n      $('#add-new-agreement').data().mode = 'template'\n    },\n    custom() {\n      toggleButton('.custom-agreement')\n\n      $('.choose-template').removeClass('text-muted')\n      $('.template-select-box').removeClass('hidden')\n      $('.dummy-select-box').addClass('hidden')\n\n      $('.agreement-template').addClass('hidden')\n      $('.agreement-editor').removeClass('hidden')\n      $('.new-upload-pdf').addClass('hidden')\n      $('.new-agreement-editor').addClass('hidden')\n      $('#add-new-agreement').data().mode = 'custom'\n    },\n    newTemplate() {\n      toggleButton('.new-template-agreement')\n\n      $('.choose-template').addClass('text-muted')\n      $('.template-select-box').addClass('hidden')\n      $('.dummy-select-box').removeClass('hidden')\n      $('.dummy-select-box').addClass('disabled')\n\n      $('.agreement-template').addClass('hidden')\n      $('.agreement-editor').addClass('hidden')\n      $('.new-upload-pdf').removeClass('hidden')\n      $('.new-agreement-editor').removeClass('hidden')\n      $('#add-new-agreement').data().mode = 'newTemplate'\n\n      let dropzoneComp = document.querySelector('.dropzone.dropzone-default').dropzone\n      if (dropzoneComp) {\n        dropzoneComp.removeAllFiles()\n      }\n    },\n  }\n\n  function toggleButton(button) {\n    var buttons = ['.template-agreement', '.custom-agreement', '.new-template-agreement']\n    var disabledButtons = buttons.filter(function (item) {\n      return item !== button\n    })\n    disabledButtons.forEach(function (btn) {\n      $(btn).removeClass('btn-primary')\n      $(btn).addClass('btn-default-alt')\n    })\n\n    $(button).addClass('btn-primary')\n    $(button).removeClass('btn-default-alt')\n  }\n\n  return behavior\n}\n\nfunction agreementToggleBehavior() {\n  'use strict'\n\n  $('body').on('click', '.template-agreement', function () {\n    agreementToggle().template()\n  })\n\n  $('body').on('click', '.custom-agreement', function () {\n    agreementToggle().custom()\n  })\n\n  $('body').on('click', '.new-template-agreement', function () {\n    agreementToggle().newTemplate()\n  })\n}\n\nfunction selectAgreementBehavior() {\n  'use strict'\n\n  var behavior = {\n    loadTemplate(templateText) {\n      $('.template-text').empty()\n      $('.template-text').html(templateText)\n    },\n    loadTrix(templateText) {\n      var trix = $('.agreement-trix')[0]\n      trix.setAttribute('contenteditable', true)\n      $('#agreement-text').val('')\n      trix.editor.loadHTML('')\n      trix.editor.loadHTML(templateText)\n    },\n  }\n\n  return behavior\n}\n\n// I should feel bad for this function tbh\nfunction initializeShareAndSign(modal, response) {\n  'use strict'\n  const shareUrl = response.share_url\n  modal.querySelector('a.sign-here').href = shareUrl\n\n  const emailBtn = modal.querySelector('.open-email')\n  const smsBtn = modal.querySelector('.open-sms')\n  const emailDiv = modal.querySelector('.email')\n  const smsDiv = modal.querySelector('.sms')\n  const sms_field = modal.querySelector('.sms input')\n  const email_field = modal.querySelector('.email input')\n\n  const smsIntlInput = intlTelInput(sms_field, {\n    utilsScript: '/assets/intl-tel-input/utils.js',\n    formatOnDisplay: true,\n    separateDialCode: true,\n    initialCountry: document.body.dataset.countryCode || 'us',\n  })\n\n  modal.querySelector('a.sign-here')\n  $(modal)\n    .find('a.sign-here')\n    .on('click', function () {\n      emailBtn.classList.remove('active')\n      smsBtn.classList.remove('active')\n      emailDiv.classList.add('hidden')\n      smsDiv.classList.add('hidden')\n    })\n\n  $(modal)\n    .find('.open-sms')\n    .on('click', function () {\n      emailBtn.classList.remove('active')\n      smsBtn.classList.add('active')\n      emailDiv.classList.add('hidden')\n      smsDiv.classList.remove('hidden')\n      email_field.required = false\n      sms_field.required = true\n    })\n\n  $(modal)\n    .find('.open-email')\n    .on('click', function () {\n      emailBtn.classList.add('active')\n      smsBtn.classList.remove('active')\n      emailDiv.classList.remove('hidden')\n      smsDiv.classList.add('hidden')\n      email_field.required = true\n      sms_field.required = false\n    })\n\n  $(modal).on('hidden.bs.modal', function () {\n    $('#save-agreement').attr('disabled', false)\n  })\n\n  const agreementId = response.agreement_id\n  const sendSelectors = ['button.send-email', 'button.send-sms']\n\n  for (const selector of sendSelectors) {\n    modal.querySelector(selector).addEventListener('click', () => {\n      const option = selector.split('-')[1]\n\n      if (option === 'email') {\n        email_field.reportValidity()\n        if (!email_field.checkValidity()) return\n      }\n\n      let sms_value = ''\n      if (option === 'sms' && !sms_field.value) {\n        sms_field.reportValidity()\n        if (!sms_field.checkValidity()) return\n      } else {\n        sms_value = smsIntlInput.getNumber()\n      }\n\n      $.post(\n        `/agreements/${agreementId}/share`,\n        {\n          type: option,\n          email: email_field.value,\n          sms: sms_value,\n          share_url: shareUrl,\n        },\n        function () {\n          $(modal).modal('hide')\n          if (option === 'email') {\n            const $email_modal = $('#email-confirmation')\n            $email_modal.modal('show')\n            $email_modal.on('hidden.bs.modal', function () {\n              loadLazyPartial($('.module#agreements').data().path, $('.module#agreements'))\n              $('#save-agreement').attr('disabled', false)\n            })\n          } else if (option === 'sms') {\n            const $sms_modal = $('#sms-confirmation')\n            $sms_modal.modal('show')\n            $sms_modal.on('hidden.bs.modal', function () {\n              loadLazyPartial($('.module#agreements').data().path, $('.module#agreements'))\n              $('#save-agreement').attr('disabled', false)\n            })\n          }\n        },\n      )\n    })\n  }\n}\n\nfunction saveAndShareBehavior() {\n  'use strict'\n  $('body').on('click', '#save-agreement', function () {\n    if ($(this).attr('disabled')) return\n\n    $(this).attr('disabled', true)\n    var templateText = $('#agreement-preview .agreement-content-container').html()\n\n    var selectedTemplate = $('#select-agreements option:selected').data().templateId\n    var signatureType = $('#select-agreements option:selected').data().signatureType\n    const personId = document.querySelector('#add-new-agreement').dataset.personId\n    const personType = document.querySelector('#add-new-agreement').dataset.personType\n\n    if (personId) {\n      var data = {\n        template_id: selectedTemplate,\n        content: templateText,\n        signature_type: signatureType,\n      }\n\n      $.post(`/${personType}/${personId}/agreements`, data, function (response) {\n        $('#preview-agreement-go-back').addClass('hidden')\n        $('#close-agreement-modal').removeClass('hidden')\n\n        $('#agreement-preview').modal('hide')\n\n        const shareModal = document.getElementById('share-and-sign-agreement')\n        $(shareModal).modal('show')\n        initializeShareAndSign(shareModal, response)\n      })\n    }\n  })\n}\n\nfunction goBackBehavior() {\n  'use strict'\n\n  $('body').on('click', '#preview-agreement-go-back', function () {\n    $('#agreement-preview').modal('hide')\n    $('#add-new-agreement').modal('show')\n  })\n}\n\nfunction templateSelectBehavior() {\n  'use strict'\n\n  $(document).on('shown.bs.modal', '#add-new-agreement', function () {\n    $('#dummy-select-agreements').select2({\n      placeholder: $('#dummy-select-agreements').data().placeholder,\n      theme: 'bootstrap',\n      width: '100%',\n    })\n    $('#select-agreements').select2({\n      placeholder: $('#select-agreements').data().placeholder,\n      theme: 'bootstrap',\n      width: '100%',\n    })\n  })\n\n  $('body').on('change', '#select-agreements', function () {\n    var templateText = $(this).val()\n\n    selectAgreementBehavior().loadTemplate(templateText)\n    selectAgreementBehavior().loadTrix(templateText)\n\n    $('.select-template-text').addClass('hidden')\n    $('.preview-agreement')[0].disabled = false\n  })\n\n  $('body').on('click', '.preview-agreement', function () {\n    $('#agreement-preview').modal('show')\n    $('#agreement-preview #save-agreement')[0].disabled = true\n    $('#agreement-preview .agreement-content-container').html(agreementPreviewLoading())\n    var templateId = $('#select-agreements option:selected').data().templateId\n    var studentId = $('#add-new-agreement').data().studentId\n    var previewPath = $(this).data().path\n    var csrfToken = $('meta[name=\"csrf-token\"]').attr('content')\n\n    var override_tokens = {}\n    $('.override-tokens .form-fields input').each(function () {\n      if (this.value !== '') override_tokens[this.id] = this.value\n    })\n\n    var data = {\n      template_id: templateId,\n      student_id: studentId,\n      override_tokens,\n    }\n\n    if ($('#add-new-agreement').data().mode === 'custom') {\n      let trix = $('.agreement-trix')[0]\n      data.content = trix.value\n    } else if ($('#add-new-agreement').data().mode === 'newTemplate') {\n      let trix = $('.new-agreement-trix')[0]\n      data.content = trix.value\n    } else if ($('#add-new-agreement').data().mode === 'template') {\n      data.content = $('.template-text').html()\n    }\n\n    $.ajax({\n      type: 'POST',\n      url: previewPath,\n      data,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', csrfToken)\n      },\n      complete(_data) {\n        if (_data.status === 200) {\n          $('#agreement-preview .agreement-content-container').html(_data.responseText)\n          $('#agreement-preview #save-agreement')[0].disabled = false\n        } else {\n          $('#global-alerts').append(_data.responseText)\n          return false\n        }\n        return false\n      },\n    })\n  })\n}\n\nfunction agreementPreviewLoading() {\n  return `\n  <div class=\"flex justify-center\">\n    <i class='fa fa-spinner fa-2x fa-spin'></i>\n  </div>\n  `\n}\n\nfunction cancelClickBehavior() {\n  $('body').on('click', '#cancel-agreement', function () {\n    $('#select-agreements').val(null).trigger('change')\n\n    var trix = $('.agreement-trix')[0]\n    $('#agreement-text').val('')\n    trix.editor.loadHTML('')\n\n    agreementToggle().template()\n  })\n}\n\nfunction agreementClickBehavior() {\n  'use strict'\n\n  $('body').on('click', '.show-agreement', function () {\n    $('#agreement-show').modal('show')\n    var path = $(this).data().path\n    var title = $(this).data().title\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n    $.ajax({\n      type: 'GET',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      complete(data) {\n        if (data.status === 200) {\n          $('#agreement-show h5.modal-title').text(title)\n          $('#agreement-show .agreement-content-container').html(data.responseJSON.content)\n\n          const pdfViewer = document.querySelector('#agreement-pdf-viewer')\n          if (pdfViewer) {\n            addPDFPreview(pdfViewer)\n          }\n          const form = document.querySelector('#send-agreement-form')\n          if (data.responseJSON.share_url) {\n            $('.share-agreement').removeClass('hidden')\n            const shareModal = document.getElementById('share-and-sign-agreement')\n            initializeShareAndSign(shareModal, data.responseJSON)\n\n            $('.share-agreement').on('click', function () {\n              $('#agreement-show').modal('hide')\n              $(shareModal).modal('show')\n            })\n            $('.send-agreement').addClass('hidden')\n            form.action = null\n          } else {\n            form.action = `/agreements/email_agreements/${data.responseJSON.agreement_id}`\n            $('.share-agreement').addClass('hidden')\n            $('.send-agreement').removeClass('hidden')\n\n            document.addEventListener(\n              'turbo:submit-end',\n              () => {\n                $('#agreement-send').removeClass('open in')\n                $('#agreement-send').modal('hide')\n              },\n              { once: true },\n            )\n          }\n        } else {\n          $('#global-alerts').append(data.responseText)\n          return false\n        }\n        return false\n      },\n    })\n  })\n}\n\nfunction toggleTokenOverrideChevron(e) {\n  $(e.target).prev('.override-token-header').find('i').toggleClass('fa-chevron-down fa-chevron-up')\n}\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  agreementClickBehavior()\n  agreementToggleBehavior()\n  templateSelectBehavior()\n  goBackBehavior()\n  saveAndShareBehavior()\n  cancelClickBehavior()\n\n  $(document).on('hidden.bs.collapse', toggleTokenOverrideChevron)\n  $(document).on('shown.bs.collapse', toggleTokenOverrideChevron)\n})\n", "/* eslint-env jquery */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  $('body').on('click', '.history-metadata-container .fa-plus', function () {\n    $(this).hide()\n    $(this).parent().find('.fa-minus').show()\n    $(this).parent().find('.history-metadata-details').slideDown('fast')\n  })\n\n  $('body').on('click', '.history-metadata-container .fa-minus', function () {\n    $(this).hide()\n    $(this).parent().find('.fa-plus').show()\n    $(this).parent().find('.history-metadata-details').slideUp('fast')\n    $(this).parent().find('.history-metadata-details + .history-metadata-details').show()\n  })\n\n  $('body').on('click', '.view-more-metadata-details', function (e) {\n    e.preventDefault()\n    $(this).parent().parent().find('.history-event').removeClass('hidden')\n    $(this).hide()\n  })\n})\n", "$(document).on('shown.bs.modal', '#ata-submission-modal', function () {\n  $('#queue-for-submission').on('click', function () {\n    var promoId = $('#ata-submission-modal').data('promotionId')\n    var studentId = $('#ata-submission-modal').data('studentId')\n\n    jQuery.ajax({\n      type: 'PUT',\n      url: `/students/${studentId}/promotions/${promoId}`,\n      data: { promotion: { queued: true } },\n      success() {\n        $('#ata-submission-modal').modal('hide')\n        $('#ata-submission-success').modal('show')\n      },\n    })\n  })\n})\n", "/* global loadLazyPartial */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  function initializeSelect2() {\n    $('#select-program').select2({\n      placeholder: $('#select-program').data().placeholder,\n      theme: 'bootstrap',\n    })\n\n    $('#select-rank').select2({\n      placeholder: $('#select-rank').data().placeholder,\n      theme: 'bootstrap',\n    })\n  }\n\n  function initializeProgramRows($row) {\n    $($row).on('click', function (e) {\n      e.preventDefault()\n      $(this).toggleClass('removed')\n      var hidden_field = $(this).find('.program_row_val')\n      hidden_field.prop('disabled', function (i, v) {\n        return !v\n      })\n\n      var icon = $(this).find('i')\n      if (icon.css('transform') === 'none') {\n        icon.css({\n          transform: 'rotate(45deg)',\n          transition: '.25s',\n        })\n      } else {\n        icon.css({ transform: 'none' })\n      }\n\n      $('.subtext').removeClass('hidden')\n    })\n  }\n\n  function loadRanksForProgram(selectedProgram) {\n    var ranks = selectedProgram.data().ranks\n    ranks = $.map(ranks, (id_name) => ({\n      id: id_name[0],\n      text: id_name[1],\n    }))\n\n    $('#select-rank').empty().select2({\n      data: ranks,\n      theme: 'bootstrap',\n    })\n  }\n\n  function createElementFromSelections() {\n    var program_id = $('#select-program').val()\n    var program_name = $('#select-program option:selected').text()\n    var rank_id = $('#select-rank').val()\n    var rank_name = $('#select-rank option:selected').text()\n\n    var belt_html = getBeltHtml(program_id, rank_id)\n    var div = `\n      <div class=\"program-row row\">\n        <div class=\"col-xs-9\">\n          <input type=\"hidden\" name=\"program_rank_ids[${program_id}]\" value=\"${rank_id}\">\n          ${belt_html}\n          <span>\n            ${rank_name}, ${program_name}\n          </span>\n        </div>\n        <div class=\"col-xs-3 pull-right remove-program\">\n          <i class=\"fas fa-times\"></i>\n        </div>\n      </div>\n      `\n    $('.current-programs').append(div)\n    $(`#select-program option[value='${program_id}']`).remove()\n  }\n\n  function getBeltHtml(program_id, rank_id) {\n    var path = `/programs/${program_id}/ranks/${rank_id}/belt_image`\n    var token = $('meta[name=\"csrf-token\"]').attr('content')\n    var html\n    $.ajax({\n      type: 'GET',\n      url: path,\n      beforeSend(xhr) {\n        xhr.setRequestHeader('X-CSRF-Token', token)\n      },\n      async: false,\n      complete(data) {\n        if (data.status === 200) html = data.responseText\n        else return false\n      },\n    })\n    return html\n  }\n\n  $('#student .lazy-load#programs-and-ranks').on('lazy-load:complete', function () {\n    initializeSelect2()\n    $.each($('.program-row'), function (_idx, row) {\n      initializeProgramRows(row)\n    })\n  })\n\n  $(document).on('shown.bs.modal', '#manage-programs-modal', function () {\n    $('#select-program').removeAttr('required')\n    $('#select-rank').removeAttr('required')\n\n    $('#select-program').on('change', function () {\n      var selectedProgram = $('#select-program option:selected')\n      loadRanksForProgram(selectedProgram)\n\n      $('.add-program-btn').removeAttr('disabled')\n    })\n\n    $('.add-program-btn').on('click', function () {\n      if ($(this).attr('disabled')) return false\n\n      $('.subtext').removeClass('hidden')\n\n      createElementFromSelections()\n\n      // clear selections\n      $('#select-program').val(null).trigger('change')\n      $('#select-rank.select2-hidden-accessible').select2('destroy').empty()\n      initializeSelect2()\n      // initialize add/remove for new row\n      initializeProgramRows($('.program-row:last-child')[0])\n      // re-disable add button\n      $('.add-program-btn').attr('disabled', true)\n    })\n\n    $('#manage-programs-modal')\n      .find('form')\n      .on('ajax:complete', function (e) {\n        var $modal = $('#manage-programs-modal')\n        var $globalAlerts = $('#global-alerts')\n        if (e.originalEvent.detail[0].status === 200) {\n          $modal.modal('hide')\n          var $target = $(this).closest('.lazy-load')\n          var path = $target.data().path\n          loadLazyPartial(path, $target, true, true)\n          $('#programs-saved').modal('show')\n        } else {\n          $globalAlerts.append(e.originalEvent.detail[0].responseText)\n          $modal.modal('hide')\n        }\n      })\n\n    var closeBtns = $('#manage-programs-modal').find('[data-dismiss=modal]')\n    $.each(closeBtns, function (i, btn) {\n      $(btn).on('click', function () {\n        $('#program-cancel').modal('show')\n      })\n    })\n  })\n})\n\n$(document).on('shown.bs.modal', '#program-cancel', function () {\n  $('#dont-cancel-programs').on('click', function () {\n    $('#program-cancel').modal('hide')\n    $('#manage-programs-modal').modal('show')\n  })\n\n  $('#confirm-cancel-programs').on('click', function () {\n    // if we refresh the partial, it'll reset the manage modal\n    $('#program-cancel').modal('hide')\n    var $target = $(this).closest('.lazy-load')\n    var path = $target.data().path\n    loadLazyPartial(path, $target, true, true)\n  })\n})\n", "/* global App */\n/* global initializeAttendanceLogProgramSelector */\n/* global handleAttendanceModuleContextSwitching */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  var schoolId = $('body.school').data('school-id')\n  var userId = $('body.school').data('user-id')\n  var isStudentsView = $('body').hasClass('students')\n  var isStudentProfileView = $('body').hasClass('person-profile') && $('div[id=student]').length > 0\n  const shouldSet =\n    schoolId && userId && (isStudentsView || isStudentProfileView) && !App.attendances_delete_notifications\n\n  if (shouldSet) {\n    App.attendances_delete_notifications = App.cable.subscriptions.create(\n      {\n        channel: 'AttendancesDeleteNotificationsChannel',\n        schoolId,\n      },\n      {\n        connected() {\n          // Called when the subscription is ready for use on the server\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n        },\n\n        received(data) {\n          // Called when there's incoming data on the websocket for this channel\n\n          if (validId(data.user_id)) {\n            if (data.updated_partial) {\n              var $attendanceLogItems = $('.student-attendance-log-items')\n              if ($attendanceLogItems.length) {\n                var $attendanceLogItemsParent = $attendanceLogItems.parent()\n                $attendanceLogItemsParent.html(data.updated_partial)\n\n                initializeAttendanceLogProgramSelector(data.selected_program_id)\n                handleAttendanceModuleContextSwitching()\n              }\n            }\n            if (!data.error) {\n              var bulkCheckbox = $('input#select-all')\n              bulkCheckbox.prop('checked', false)\n              bulkCheckbox.parent().find('.spinner.spinner-grow').remove()\n              bulkCheckbox.show()\n            }\n            if (data.message) {\n              if (data.notification_class) $(`.alert.${data.notification_class}`).hide()\n\n              $('#global-alerts').append(data.message)\n            }\n          }\n        },\n      },\n    )\n  }\n  function validId(id) {\n    return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n  }\n})\n", "/* global App */\n/* global loadLazyPartial */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  var schoolId = $('body.school').data('school-id')\n  var userId = $('body.school').data('user-id')\n  var isStudentProfileView = $('body').hasClass('person-profile') && $('div[id=student]').length > 0\n  var isProspectProfileView = $('body').hasClass('person-profile') && $('div[id=prospect]').length > 0\n  var onProfileView = isStudentProfileView || isProspectProfileView\n  const shouldSet = schoolId && userId && onProfileView && !App.person_comment_delete_notifications\n\n  if (shouldSet) {\n    App.person_comment_delete_notifications = App.cable.subscriptions.create(\n      {\n        channel: 'PersonCommentDeleteNotificationsChannel',\n        schoolId,\n      },\n      {\n        connected() {\n          // Called when the subscription is ready for use on the server\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n        },\n\n        received(data) {\n          // Called when there's incoming data on the websocket for this channel\n\n          if (validId(data.user_id)) {\n            if (data.reload) {\n              var $commentsModule = $('#comments')\n              if ($commentsModule.length) {\n                var $this = $('#comments')\n                var path = $this.data('path')\n\n                loadLazyPartial(path, $this)\n              }\n            }\n\n            if (data.message) {\n              if (data.notification_class) $(`.alert.${data.notification_class}`).hide()\n\n              $('#global-alerts').append(data.message)\n            }\n          }\n        },\n      },\n    )\n  }\n  function validId(id) {\n    return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n  }\n})\n", "/* eslint-env jquery */\n\n/* global App */\n/* eslint-disable camelcase */\n/* global initializeTooltips */\n/* global initializeDropdownTabs */\n/* global initializeProspectLeadStateDropdowns */\n/* global initializeSelectAllCheckboxes */\n/* global initializeTrialMembershipScheduling */\n/* global initializeProspectNoting */\n/* global initializeAssignedToFields */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  var schoolId = $('body.school').data('school-id')\n  var userId = $('body.school').data('user-id')\n  var isProspectsView = $('body').hasClass('prospects')\n  const shouldSet = schoolId && userId && isProspectsView && !App.prospects_bulk_edit_notifications\n\n  if (shouldSet) {\n    App.prospects_bulk_edit_notifications = App.cable.subscriptions.create(\n      {\n        channel: 'ProspectsBulkEditNotificationsChannel',\n        schoolId,\n      },\n      {\n        connected() {\n          // Called when the subscription is ready for use on the server\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n        },\n\n        received(data) {\n          // Called when there's incoming data on the websocket for this channel\n\n          if (validId(data.user_id)) {\n            if (data.prospect_id && data.updated_partial) {\n              var $prospectContainer = $(`.prospect-wrapper.prospect-${data.prospect_id}-container`)\n              if ($prospectContainer.length) {\n                $prospectContainer.html(data.updated_partial)\n\n                initializeTooltips($prospectContainer)\n                initializeDropdownTabs($prospectContainer)\n                initializeProspectLeadStateDropdowns($prospectContainer)\n                initializeSelectAllCheckboxes(\n                  $prospectContainer.find(\"input.select-all-item[type='checkbox']\"),\n                  false,\n                )\n                initializeAssignedToFields($prospectContainer)\n                initializeTrialMembershipScheduling($prospectContainer)\n                initializeProspectNoting($prospectContainer)\n              }\n            }\n            if (!data.error) {\n              var bulkCheckbox = $('input#select-all')\n              bulkCheckbox.prop('checked', false)\n              bulkCheckbox.parent().find('.spinner.spinner-grow').remove()\n              bulkCheckbox.show()\n            }\n            if (data.message) {\n              if (data.notification_class) $(`.alert.${data.notification_class}`).hide()\n\n              $('#global-alerts').append(data.message)\n            }\n          }\n        },\n      },\n    )\n  }\n  function validId(id) {\n    return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n  }\n})\n/* eslint-enable camelcase */\n", "/* eslint-env jquery */\n\n/* global App */\n/* eslint-disable camelcase */\n/* global initializeTooltips */\n/* global initializeDropdownTabs */\n/* global initializeSelectAllCheckboxes */\n/* global initializeStudentStatusDropdowns */\n/* global initializeStudentAttendanceLog */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  const schoolId = $('body.school').data('school-id')\n  const userId = $('body.school').data('user-id')\n  const isStudentsView = $('body').hasClass('students')\n  const shouldSet = schoolId && userId && isStudentsView && !App.student_restore_notifications\n\n  if (shouldSet) {\n    App.student_rprospectestore_notifications = App.cable.subscriptions.create(\n      {\n        channel: 'StudentRestoreNotificationsChannel',\n        schoolId,\n      },\n      {\n        connected() {\n          // Called when the subscription is ready for use on the server\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n        },\n\n        received(data) {\n          // Called when there's incoming data on the websocket for this channel\n\n          if (validId(data.user_id)) {\n            if (data.student_id && data.updated_partial) {\n              var $studentContainer = $(`.student-wrapper.student-${data.student_id}-container`)\n              if ($studentContainer.length) {\n                $studentContainer.html(data.updated_partial)\n\n                initializeTooltips($studentContainer)\n                initializeDropdownTabs($studentContainer)\n                initializeStudentStatusDropdowns($studentContainer)\n                initializeSelectAllCheckboxes(\n                  $studentContainer.find(\"input.select-all-item[type='checkbox']\"),\n                  false,\n                )\n                initializeStudentAttendanceLog($studentContainer)\n              }\n            }\n            if (data.message) {\n              if (data.notification_class !== undefined) $(`.alert.${data.notification_class}`).hide()\n\n              $('#global-alerts').append(data.message)\n            }\n          }\n        },\n      },\n    )\n  }\n  function validId(id) {\n    return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n  }\n})\n/* eslint-enable camelcase */\n", "/* eslint-env jquery */\n\n/* global App */\n/* eslint-disable camelcase */\n/* global initializeTooltips */\n/* global initializeDropdownTabs */\n/* global initializeSelectAllCheckboxes */\n/* global initializeStudentStatusDropdowns */\n/* global initializeStudentAttendanceLog */\n\n$(document).on('turbo:load', function () {\n  'use strict'\n\n  var schoolId = $('body.school').data('school-id')\n  var userId = $('body.school').data('user-id')\n  var isStudentsView = $('body').hasClass('students')\n  const shouldSet = schoolId && userId && isStudentsView && !App.students_bulk_edit_notifications\n\n  if (shouldSet) {\n    App.students_bulk_edit_notifications = App.cable.subscriptions.create(\n      {\n        channel: 'StudentsBulkEditNotificationsChannel',\n        schoolId,\n      },\n      {\n        connected() {\n          // Called when the subscription is ready for use on the server\n        },\n\n        disconnected() {\n          // Called when the subscription has been terminated by the server\n        },\n\n        received(data) {\n          // Called when there's incoming data on the websocket for this channel\n\n          if (validId(data.user_id)) {\n            if (data.student_id && data.updated_partial) {\n              var $studentContainer = $(`.student-wrapper.student-${data.student_id}-container`)\n              if ($studentContainer.length) {\n                $studentContainer.html(data.updated_partial)\n\n                initializeTooltips($studentContainer)\n                initializeDropdownTabs($studentContainer)\n                initializeStudentStatusDropdowns($studentContainer)\n                initializeSelectAllCheckboxes(\n                  $studentContainer.find(\"input.select-all-item[type='checkbox']\"),\n                  false,\n                )\n                initializeStudentAttendanceLog($studentContainer)\n              }\n            }\n            if (!data.error) {\n              var bulkCheckbox = $('input#select-all')\n              bulkCheckbox.prop('checked', false)\n              bulkCheckbox.parent().find('.spinner.spinner-grow').remove()\n              bulkCheckbox.show()\n            }\n            if (data.message) {\n              if (data.notification_class !== undefined) $(`.alert.${data.notification_class}`).hide()\n\n              $('#global-alerts').append(data.message)\n            }\n          }\n        },\n      },\n    )\n  }\n  function validId(id) {\n    return id === undefined || (id > 0 && id === userId) || (id < 0 && Math.abs(id) !== userId)\n  }\n})\n/* eslint-enable camelcase */\n", "/* global Pallette */\n/* global Rails */\n/* global showLoadingIndicator */\n/* global hideLoadingIndicator */\n/* eslint-disable camelcase */\n/* eslint-disable new-cap */\n/* global Tokenizer */\n\n$(document).ready(basysOnLoad)\n$(document).on('lazy-load:complete', basysOnLoad)\n\nfunction basysOnLoad() {\n  'use strict'\n\n  if ($('#basys-card-element').length) {\n    // NOTE: Clear it out in case we're re-initializing it\n    $('#basys-card-element').html('')\n\n    var secondaryColor = Pallette.black\n    if ($('#credit-card-token').data('colors-secondary-color').length) {\n      secondaryColor = $('#credit-card-token').data('colors-secondary-color')\n    }\n\n    var tertiaryColor = Pallette.white\n    if ($('#credit-card-token').data('colors-tertiary-color').length) {\n      tertiaryColor = $('#credit-card-token').data('colors-tertiary-color')\n    }\n\n    var invalidColor = Pallette.red\n    if ($('#credit-card-token').data('colors-secondary-color').length) {\n      invalidColor = $('#credit-card-token').data('colors-secondary-color')\n    }\n\n    var BASYS_PUBLIC_KEY = $('#basys-account-token').data('public-key')\n\n    let FORM = $('#basys-card-element').closest('form')[0]\n    var $basysSubmitButton = $('button[data-disable-with]')\n    var BASYS_FORM_SUBMIT_DISABLE_WITH_VALUE = $basysSubmitButton.data('disable-with')\n    var BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE = $basysSubmitButton.html()\n    var BASYS_CHARGE_FORM_READY_FOR_SUBMISSION = false\n    $basysSubmitButton.removeAttr('data-disable-with')\n\n    var tokenizer = new Tokenizer({\n      apikey: BASYS_PUBLIC_KEY,\n      container: document.querySelector('#basys-card-element'),\n      submission(resp) {\n        $('#basys-card-element').removeClass('invalid')\n        switch (resp.status) {\n          case 'success':\n            $('#credit-card-token').val(resp.token)\n            BASYS_CHARGE_FORM_READY_FOR_SUBMISSION = true\n            Rails.fire(FORM, 'submit')\n            break\n          case 'error':\n            if ($('#basys-card-element').closest('.hidden').length) {\n              BASYS_CHARGE_FORM_READY_FOR_SUBMISSION = true\n              Rails.fire(FORM, 'submit')\n            } else {\n              $('#basys-card-errors').html(resp.msg)\n              $basysSubmitButton.attr('disabled', false)\n              $basysSubmitButton.html(BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n              hideLoadingIndicator()\n            }\n            break\n          case 'validation':\n            if ($('#basys-card-element').closest('.hidden').length) {\n              BASYS_CHARGE_FORM_READY_FOR_SUBMISSION = true\n              Rails.fire(FORM, 'submit')\n            } else {\n              $('#basys-card-errors').html('Invalid card information')\n              $basysSubmitButton.attr('disabled', false)\n              $basysSubmitButton.html(BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n              hideLoadingIndicator()\n            }\n            break\n          // skip default case\n        }\n      },\n      settings: {\n        payment: { placeholderCreditCard: 'CARD NUMBER' },\n        styles: {\n          '.payment input': {\n            border: 'none',\n            'border-bottom': `solid 2px ${Pallette.secondaryDark}`,\n            'border-radius': '0',\n\n            'padding-top': '20px',\n            'padding-bottom': '20px',\n\n            'background-color': tertiaryColor,\n            color: secondaryColor,\n            'line-height': '36px',\n            'font-family': '\"Hind Vadodara\", sans-serif',\n            'font-size': '19px',\n            'text-transform': 'uppercase',\n          },\n\n          '.payment .cc input': {\n            'padding-top': '20px',\n            'padding-bottom': '20px',\n          },\n\n          '.payment input.invalid': { 'border-bottom': `solid 2px ${invalidColor}` },\n        },\n      },\n    })\n\n    $('#basys-card-element')\n      .closest('form')\n      .on('submit', function () {\n        $basysSubmitButton.attr('disabled', true)\n        $basysSubmitButton.html(BASYS_FORM_SUBMIT_DISABLE_WITH_VALUE)\n        showLoadingIndicator()\n        return true\n      })\n\n    setTimeout(function () {\n      $('#basys-card-element')\n        .closest('form')\n        .on('submit', function (event) {\n          if (BASYS_CHARGE_FORM_READY_FOR_SUBMISSION) return true\n\n          if (event.isDefaultPrevented()) {\n            $basysSubmitButton.attr('disabled', false)\n            $basysSubmitButton.html(BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n            hideLoadingIndicator()\n\n            return false\n          }\n\n          event.preventDefault()\n          tokenizer.submit()\n          return false\n        })\n    }, 500)\n  }\n}\n", "/* global Pallette */\n/* global Rails */\n/* global Stripe */\n/* global showLoadingIndicator */\n/* global hideLoadingIndicator */\n/* eslint-disable camelcase */\n/* eslint-disable new-cap */\n\n$(document).ready(stripeOnLoad)\n$(document).on('lazy-load:complete', stripeOnLoad)\n\nfunction stripeOnLoad() {\n  'use strict'\n\n  if ($('#stripe-card-element').length) {\n    let FORM = $('#stripe-card-element').closest('form')[0]\n    var STRIPE_PUBLIC_KEY = $('#stripe-account-token').data('public-key')\n    var STRIPE_ACCOUNT_TOKEN = $('#stripe-account-token').data('account')\n\n    var secondaryColor = Pallette.black\n    if ($('#credit-card-token').data('colors-secondary-color').length) {\n      secondaryColor = $('#credit-card-token').data('colors-secondary-color')\n    }\n\n    var tertiaryColor = Pallette.white\n    if ($('#credit-card-token').data('colors-tertiary-color').length) {\n      tertiaryColor = $('#credit-card-token').data('colors-tertiary-color')\n    }\n\n    var invalidColor = Pallette.red\n    if ($('#credit-card-token').data('colors-secondary-color').length) {\n      invalidColor = $('#credit-card-token').data('colors-secondary-color')\n    }\n\n    var stripe = Stripe(STRIPE_PUBLIC_KEY, { stripeAccount: STRIPE_ACCOUNT_TOKEN })\n    var elements = stripe.elements()\n    var card = elements.create('card', {\n      iconStyle: 'solid',\n      style: {\n        base: {\n          iconColor: secondaryColor,\n          backgroundColor: tertiaryColor,\n          color: secondaryColor,\n          lineHeight: '36px',\n          fontFamily: '\"Hind Vadodara\", sans-serif',\n          fontSize: '19px',\n          textTransform: 'uppercase',\n\n          '::placeholder': { color: '#aeaeab' },\n        },\n        invalid: {\n          iconColor: invalidColor,\n          color: invalidColor,\n        },\n      },\n    })\n    card.mount('#stripe-card-element')\n\n    card.addEventListener('change', function (event) {\n      var displayError = document.getElementById('stripe-card-errors')\n      if (event.error) displayError.textContent = event.error.message\n      else displayError.textContent = ''\n    })\n\n    document.querySelector('#stripe-card-element').addEventListener('clear:stripe', () => {\n      card.clear()\n    })\n\n    var $stripeSubmitButton = $('button[data-disable-with]')\n    var STRIPE_FORM_SUBMIT_DISABLE_WITH_VALUE = $stripeSubmitButton.data('disable-with')\n    var STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE = $stripeSubmitButton.html()\n    var STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION = false\n    $stripeSubmitButton.removeAttr('data-disable-with')\n    $('#stripe-card-element')\n      .closest('form')\n      .on('submit', function () {\n        if ($('#stripe-card-element').closest('.hidden').length) {\n          return true\n        }\n\n        if ($('.StripeElement--empty').length) {\n          $('.StripeElement--empty').addClass('StripeElement--invalid')\n          return false\n        }\n\n        $stripeSubmitButton.attr('disabled', true)\n        $stripeSubmitButton.html(STRIPE_FORM_SUBMIT_DISABLE_WITH_VALUE)\n\n        showLoadingIndicator()\n\n        return true\n      })\n\n    // NOTE: Second stage of stripe specific concerns needs to bind after all other binds to this form submit\n    setTimeout(function () {\n      $('#stripe-card-element')\n        .closest('form')\n        .on('submit', function (event) {\n          if (STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION) return true\n\n          if (event.isDefaultPrevented()) {\n            $stripeSubmitButton.attr('disabled', false)\n            $stripeSubmitButton.html(STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n            hideLoadingIndicator()\n\n            return false\n          }\n\n          event.preventDefault()\n\n          if ($('#stripe-card-element').closest('.hidden').length) {\n            STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION = true\n            Rails.fire(FORM, 'submit')\n\n            return false\n          }\n\n          if ($('.StripeElement--empty').length || $('.StripeElement--invalid').length) {\n            $stripeSubmitButton.attr('disabled', false)\n            $stripeSubmitButton.html(STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n            hideLoadingIndicator()\n\n            return false\n          }\n\n          $('input#credit-card-token').val('payment-intent-only')\n          var $form = $(this)\n          $.ajax({\n            type: $form.attr('method'),\n            url: $form.attr('action'),\n            beforeSend(xhr) {\n              xhr.setRequestHeader('X-CSRF-Token', $(\"meta[name='csrf-token']\").attr('content'))\n            },\n            data: $form.serialize(),\n            complete(data) {\n              if (data.status === 200) {\n                // NOTE: This is kinda hacky, but a 200 response should be handled by\n                // landing_pages/new.js.haml or create.js.haml depending on what happened\n              } else if (data.status === 402) {\n                stripe\n                  .confirmCardPayment(data.responseJSON.errors.messages.payment_intent_client_secret, {\n                    payment_method: { card },\n                    setup_future_usage: 'off_session',\n                  })\n                  .then(function (result) {\n                    if (result.error) {\n                      var errorElement = document.getElementById('stripe-card-errors')\n                      errorElement.textContent = result.error.message\n                      $stripeSubmitButton.attr('disabled', false)\n                      $stripeSubmitButton.html(STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n                      hideLoadingIndicator()\n                    } else {\n                      $('input#credit-card-token').val(result.paymentIntent.id)\n\n                      STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION = true\n                      Rails.fire(FORM, 'submit')\n                    }\n                  })\n              } else {\n                $('#global-alerts').append(data.responseText)\n              }\n            },\n          })\n\n          return false\n        })\n    }, 500)\n  }\n}\n", "/* global Pallette */\n/* global Rails */\n/* global showLoadingIndicator */\n/* global hideLoadingIndicator */\n/* global usaepay */\n\n$(document).ready(ePayOnLoad)\n$(document).on('lazy-load:complete', ePayOnLoad)\n\nfunction ePayOnLoad() {\n  'use strict'\n\n  if ($('#usa-epay-card-element').length) {\n    let FORM = $('#usa-epay-card-element').closest('form')[0]\n    var USA_EPAY_PUBLIC_TOKEN = $('#usa-epay-public-token').data('public-token')\n    var $usaEpaySubmitButton = $('button[data-disable-with]')\n    var USA_EPAY_FORM_SUBMIT_DISABLE_WITH_VALUE = $usaEpaySubmitButton.data('disable-with')\n    var USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE = $usaEpaySubmitButton.html()\n    var USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION = false\n    $usaEpaySubmitButton.removeAttr('data-disable-with')\n\n    if (USA_EPAY_PUBLIC_TOKEN === undefined) throw new Error('No public_token found.')\n\n    var secondaryColor = Pallette.black\n    if ($('#credit-card-token').data('colors-secondary-color').length) {\n      secondaryColor = $('#credit-card-token').data('colors-secondary-color')\n    }\n\n    var tertiaryColor = Pallette.white\n    if ($('#credit-card-token').data('colors-tertiary-color').length) {\n      tertiaryColor = $('#credit-card-token').data('colors-tertiary-color')\n    }\n\n    var invalidColor = Pallette.red\n    if ($('#credit-card-token').data('colors-secondary-color').length) {\n      invalidColor = $('#credit-card-token').data('colors-secondary-color')\n    }\n\n    var client = new usaepay.Client(USA_EPAY_PUBLIC_TOKEN)\n    var paymentCard = client.createPaymentCardEntry()\n    var style = {\n      base: {\n        backgroundColor: tertiaryColor,\n        color: secondaryColor,\n        lineHeight: '36px',\n        fontFamily: '\"Hind Vadodara\", sans-serif',\n        fontSize: '16px',\n        textTransform: 'uppercase',\n        height: '36px',\n      },\n      '{}\\n@media (max-width: 767px) { #payjs-cvv { width: 3em; } #payjs-exp { width: 4em; } }': '',\n      invalid: { color: invalidColor },\n    }\n    paymentCard.generateHTML(style)\n\n    if ($('#usa-epay-card-element').html() === '') {\n      paymentCard.addHTML('usa-epay-card-element')\n    }\n\n    paymentCard.addEventListener('error', function (errorMessage) {\n      if ($('#usa-epay-card-element').closest('.hidden').length) {\n        USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION = true\n      } else {\n        var baseErrorContainer = document.getElementById('base-card-errors')\n        baseErrorContainer.textContent = ''\n        var errorContainer = document.getElementById('usa-epay-card-errors')\n        errorContainer.textContent = errorMessage\n        $usaEpaySubmitButton.attr('disabled', false)\n        $usaEpaySubmitButton.html(USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n        hideLoadingIndicator()\n      }\n    })\n\n    document.querySelector('#usa-epay-card-element').addEventListener('clear:usaepay', () => {\n      this.innerHTML = ''\n      paymentCard.addHTML('usa-epay-card-element')\n    })\n\n    $('#usa-epay-card-element')\n      .closest('form')\n      .on('submit', function () {\n        $usaEpaySubmitButton.attr('disabled', true)\n        $usaEpaySubmitButton.html(USA_EPAY_FORM_SUBMIT_DISABLE_WITH_VALUE)\n        showLoadingIndicator()\n\n        return true\n      })\n\n    setTimeout(function () {\n      $('#usa-epay-card-element')\n        .closest('form')\n        .on('submit', function (event) {\n          if (USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION) return true\n\n          if (event.isDefaultPrevented()) {\n            $usaEpaySubmitButton.attr('disabled', false)\n            $usaEpaySubmitButton.html(USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n            hideLoadingIndicator()\n\n            return false\n          }\n\n          event.preventDefault()\n\n          client\n            .getPaymentKey(paymentCard)\n            .then(function (result) {\n              $('input#credit-card-token').val(result)\n              USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION = true\n              Rails.fire(FORM, 'submit')\n            })\n            .catch(function () {\n              if ($('#usa-epay-card-element').closest('.hidden').length) {\n                USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION = true\n                Rails.fire(FORM, 'submit')\n              } else {\n                $usaEpaySubmitButton.attr('disabled', false)\n                $usaEpaySubmitButton.html(USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE)\n                hideLoadingIndicator()\n              }\n            })\n\n          return false\n        })\n    }, 500)\n  }\n}\n", "export function escape(unsafe) {\n  return encodeURI(unsafe)\n}\n", "import { Turbo } from '@hotwired/turbo-rails'\nimport { escape } from '../../javascript/helpers/html_helper'\n\n// TODO: This could use a hefty refactor, it's getting a bit out of hand\n// Basically all of the stuff should just be set on the trigger honestly\nexport function setupConfirmations() {\n  Turbo.setConfirmMethod((message, element) => {\n    const confirmationModal = document.querySelector('#confirmation-modal')\n    const tooltips = document.querySelectorAll('.tooltip')\n    const modalBody = confirmationModal.querySelector('.modal-body')\n    const trigger = document.querySelector(`[data-turbo-confirm=\"${escape(message)}\"]`)\n    const titleOverride = trigger?.dataset.turboConfirmTitle\n    const title = titleOverride || element.dataset.turboConfirmTitle\n    const acceptText = element.dataset.turboConfirmAccept\n    const cancelText = element.dataset.turboConfirmDeny\n    const acceptStyle = element.dataset.turboConfirmAcceptStyle\n    const acceptData = JSON.parse(trigger?.dataset.turboConfirmAcceptData || '{}')\n    const denyData = JSON.parse(trigger?.dataset.turboConfirmDenyData || '{}')\n    const denyStyle = element.dataset.turboConfirmDenyStyle\n    const thingToDelete = element.dataset.turboConfirmDelete\n    const thingToDeleteElement = modalBody.querySelector('.thing-to-delete')\n\n    for (const tooltip of [...tooltips]) {\n      tooltip.remove()\n    }\n\n    setModalSize(confirmationModal, element.dataset.turboConfirmSize)\n\n    modalBody.querySelector('.message').innerHTML = message\n\n    toggleThingToDelete(thingToDelete, thingToDeleteElement)\n\n    setModalText(confirmationModal, title, acceptText, cancelText)\n    setModalAttributes(confirmationModal, acceptStyle, denyStyle, acceptData, denyData)\n\n    confirmationModal.classList.add('open')\n\n    return new Promise((resolve) => {\n      confirmationModal.addEventListener('modal:hidden', ({ detail }) => {\n        resolve(detail.finished)\n      })\n    })\n  })\n}\n\nfunction toggleThingToDelete(thingToDelete, thingToDeleteElement) {\n  if (thingToDelete) {\n    thingToDeleteElement.classList.remove('hidden')\n    thingToDeleteElement.innerHTML = thingToDelete\n  } else {\n    thingToDeleteElement.innerHTML = ''\n    thingToDeleteElement.classList.add('hidden')\n  }\n}\n\nfunction setModalText(confirmationModal, title, acceptText, cancelText) {\n  if (title) confirmationModal.querySelector('.modal-title').innerText = title\n  if (acceptText) confirmationModal.querySelector('#confirmation-modal-accept').innerText = acceptText\n  if (cancelText) confirmationModal.querySelector('#confirmation-modal-deny').innerText = cancelText\n}\n\nfunction setModalAttributes(confirmationModal, acceptStyle, denyStyle, acceptData, denyData) {\n  const acceptButton = confirmationModal.querySelector('#confirmation-modal-accept')\n  const denyButton = confirmationModal.querySelector('#confirmation-modal-deny')\n\n  if (acceptStyle) {\n    acceptButton.classList.remove(...acceptButton.classList)\n    acceptButton.classList.add('btn')\n    acceptButton.classList.add(`btn-${acceptStyle}`)\n  }\n  if (denyStyle) {\n    denyButton.classList.remove(...denyButton.classList)\n    denyButton.classList.add('btn')\n    denyButton.classList.add(`btn-${denyStyle}`)\n  }\n\n  acceptButton.dataset.action = 'click->modal--component#confirm'\n  denyButton.dataset.action = 'click->modal--component#hide'\n\n  for (const [key, value] of Object.entries(acceptData)) {\n    if (key === 'action') {\n      acceptButton.dataset.action += ` ${value}`\n    } else {\n      acceptButton.setAttribute(`data-${key.replace(/_/g, '-')}`, value)\n    }\n  }\n\n  for (const [key, value] of Object.entries(denyData)) {\n    if (key === 'action') {\n      denyButton.dataset.action += ` ${value}`\n    } else {\n      denyButton.setAttribute(`data-${key.replace(/_/g, '-')}`, value)\n    }\n  }\n}\n\nfunction setModalSize(confirmationModal, size) {\n  confirmationModal.querySelector('.modal-dialog').classList.add(`modal-${size}`)\n}\n", "import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n    add: function (obj, key, document) {\n        obj[key] = this.value;\n        return { newDocument: document };\n    },\n    remove: function (obj, key, document) {\n        var removed = obj[key];\n        delete obj[key];\n        return { newDocument: document, removed: removed };\n    },\n    replace: function (obj, key, document) {\n        var removed = obj[key];\n        obj[key] = this.value;\n        return { newDocument: document, removed: removed };\n    },\n    move: function (obj, key, document) {\n        /* in case move target overwrites an existing value,\n        return the removed value, this can be taxing performance-wise,\n        and is potentially unneeded */\n        var removed = getValueByPointer(document, this.path);\n        if (removed) {\n            removed = _deepClone(removed);\n        }\n        var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n        applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n        return { newDocument: document, removed: removed };\n    },\n    copy: function (obj, key, document) {\n        var valueToCopy = getValueByPointer(document, this.from);\n        // enforce copy by value so further operations don't affect source (see issue #177)\n        applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n        return { newDocument: document };\n    },\n    test: function (obj, key, document) {\n        return { newDocument: document, test: _areEquals(obj[key], this.value) };\n    },\n    _get: function (obj, key, document) {\n        this.value = obj[key];\n        return { newDocument: document };\n    }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n    add: function (arr, i, document) {\n        if (isInteger(i)) {\n            arr.splice(i, 0, this.value);\n        }\n        else { // array props\n            arr[i] = this.value;\n        }\n        // this may be needed when using '-' in an array\n        return { newDocument: document, index: i };\n    },\n    remove: function (arr, i, document) {\n        var removedList = arr.splice(i, 1);\n        return { newDocument: document, removed: removedList[0] };\n    },\n    replace: function (arr, i, document) {\n        var removed = arr[i];\n        arr[i] = this.value;\n        return { newDocument: document, removed: removed };\n    },\n    move: objOps.move,\n    copy: objOps.copy,\n    test: objOps.test,\n    _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n    if (pointer == '') {\n        return document;\n    }\n    var getOriginalDestination = { op: \"_get\", path: pointer };\n    applyOperation(document, getOriginalDestination);\n    return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n    if (validateOperation === void 0) { validateOperation = false; }\n    if (mutateDocument === void 0) { mutateDocument = true; }\n    if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n    if (index === void 0) { index = 0; }\n    if (validateOperation) {\n        if (typeof validateOperation == 'function') {\n            validateOperation(operation, 0, document, operation.path);\n        }\n        else {\n            validator(operation, 0);\n        }\n    }\n    /* ROOT OPERATIONS */\n    if (operation.path === \"\") {\n        var returnValue = { newDocument: document };\n        if (operation.op === 'add') {\n            returnValue.newDocument = operation.value;\n            return returnValue;\n        }\n        else if (operation.op === 'replace') {\n            returnValue.newDocument = operation.value;\n            returnValue.removed = document; //document we removed\n            return returnValue;\n        }\n        else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n            returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n            if (operation.op === 'move') { // report removed item\n                returnValue.removed = document;\n            }\n            return returnValue;\n        }\n        else if (operation.op === 'test') {\n            returnValue.test = _areEquals(document, operation.value);\n            if (returnValue.test === false) {\n                throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n            }\n            returnValue.newDocument = document;\n            return returnValue;\n        }\n        else if (operation.op === 'remove') { // a remove on root\n            returnValue.removed = document;\n            returnValue.newDocument = null;\n            return returnValue;\n        }\n        else if (operation.op === '_get') {\n            operation.value = document;\n            return returnValue;\n        }\n        else { /* bad operation */\n            if (validateOperation) {\n                throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n            }\n            else {\n                return returnValue;\n            }\n        }\n    } /* END ROOT OPERATIONS */\n    else {\n        if (!mutateDocument) {\n            document = _deepClone(document);\n        }\n        var path = operation.path || \"\";\n        var keys = path.split('/');\n        var obj = document;\n        var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n        var len = keys.length;\n        var existingPathFragment = undefined;\n        var key = void 0;\n        var validateFunction = void 0;\n        if (typeof validateOperation == 'function') {\n            validateFunction = validateOperation;\n        }\n        else {\n            validateFunction = validator;\n        }\n        while (true) {\n            key = keys[t];\n            if (key && key.indexOf('~') != -1) {\n                key = unescapePathComponent(key);\n            }\n            if (banPrototypeModifications &&\n                (key == '__proto__' ||\n                    (key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {\n                throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n            }\n            if (validateOperation) {\n                if (existingPathFragment === undefined) {\n                    if (obj[key] === undefined) {\n                        existingPathFragment = keys.slice(0, t).join('/');\n                    }\n                    else if (t == len - 1) {\n                        existingPathFragment = operation.path;\n                    }\n                    if (existingPathFragment !== undefined) {\n                        validateFunction(operation, 0, document, existingPathFragment);\n                    }\n                }\n            }\n            t++;\n            if (Array.isArray(obj)) {\n                if (key === '-') {\n                    key = obj.length;\n                }\n                else {\n                    if (validateOperation && !isInteger(key)) {\n                        throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n                    } // only parse key when it's an integer for `arr.prop` to work\n                    else if (isInteger(key)) {\n                        key = ~~key;\n                    }\n                }\n                if (t >= len) {\n                    if (validateOperation && operation.op === \"add\" && key > obj.length) {\n                        throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n                    }\n                    var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n                    if (returnValue.test === false) {\n                        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n                    }\n                    return returnValue;\n                }\n            }\n            else {\n                if (t >= len) {\n                    var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n                    if (returnValue.test === false) {\n                        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n                    }\n                    return returnValue;\n                }\n            }\n            obj = obj[key];\n            // If we have more keys in the path, but the next value isn't a non-null object,\n            // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n            if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n                throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n            }\n        }\n    }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n    if (mutateDocument === void 0) { mutateDocument = true; }\n    if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n    if (validateOperation) {\n        if (!Array.isArray(patch)) {\n            throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n        }\n    }\n    if (!mutateDocument) {\n        document = _deepClone(document);\n    }\n    var results = new Array(patch.length);\n    for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n        // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n        results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n        document = results[i].newDocument; // in case root was replaced\n    }\n    results.newDocument = document;\n    return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n    var operationResult = applyOperation(document, operation);\n    if (operationResult.test === false) { // failed test\n        throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n    }\n    return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n    if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n        throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n    }\n    else if (!objOps[operation.op]) {\n        throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n    }\n    else if (typeof operation.path !== 'string') {\n        throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n    }\n    else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n        // paths that aren't empty string should start with \"/\"\n        throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n    }\n    else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n        throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n    }\n    else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n        throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n    }\n    else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n        throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n    }\n    else if (document) {\n        if (operation.op == \"add\") {\n            var pathLen = operation.path.split(\"/\").length;\n            var existingPathLen = existingPathFragment.split(\"/\").length;\n            if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n                throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n            }\n        }\n        else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n            if (operation.path !== existingPathFragment) {\n                throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n            }\n        }\n        else if (operation.op === 'move' || operation.op === 'copy') {\n            var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n            var error = validate([existingValue], document);\n            if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n                throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n            }\n        }\n    }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n    try {\n        if (!Array.isArray(sequence)) {\n            throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n        }\n        if (document) {\n            //clone document and sequence so that we can safely try applying operations\n            applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n        }\n        else {\n            externalValidator = externalValidator || validator;\n            for (var i = 0; i < sequence.length; i++) {\n                externalValidator(sequence[i], i, document, undefined);\n            }\n        }\n    }\n    catch (e) {\n        if (e instanceof JsonPatchError) {\n            return e;\n        }\n        else {\n            throw e;\n        }\n    }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n    if (a === b)\n        return true;\n    if (a && b && typeof a == 'object' && typeof b == 'object') {\n        var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n        if (arrA && arrB) {\n            length = a.length;\n            if (length != b.length)\n                return false;\n            for (i = length; i-- !== 0;)\n                if (!_areEquals(a[i], b[i]))\n                    return false;\n            return true;\n        }\n        if (arrA != arrB)\n            return false;\n        var keys = Object.keys(a);\n        length = keys.length;\n        if (length !== Object.keys(b).length)\n            return false;\n        for (i = length; i-- !== 0;)\n            if (!b.hasOwnProperty(keys[i]))\n                return false;\n        for (i = length; i-- !== 0;) {\n            key = keys[i];\n            if (!_areEquals(a[key], b[key]))\n                return false;\n        }\n        return true;\n    }\n    return a !== a && b !== b;\n}\n;\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n    return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n    if (Array.isArray(obj)) {\n        var keys_1 = new Array(obj.length);\n        for (var k = 0; k < keys_1.length; k++) {\n            keys_1[k] = \"\" + k;\n        }\n        return keys_1;\n    }\n    if (Object.keys) {\n        return Object.keys(obj);\n    }\n    var keys = [];\n    for (var i in obj) {\n        if (hasOwnProperty(obj, i)) {\n            keys.push(i);\n        }\n    }\n    return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param  {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n    switch (typeof obj) {\n        case \"object\":\n            return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n        case \"undefined\":\n            return null; //this is how JSON.stringify behaves for array items\n        default:\n            return obj; //no need to clone primitives\n    }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n    var i = 0;\n    var len = str.length;\n    var charCode;\n    while (i < len) {\n        charCode = str.charCodeAt(i);\n        if (charCode >= 48 && charCode <= 57) {\n            i++;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n    if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n        return path;\n    return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n    return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n    var found;\n    for (var key in root) {\n        if (hasOwnProperty(root, key)) {\n            if (root[key] === obj) {\n                return escapePathComponent(key) + '/';\n            }\n            else if (typeof root[key] === 'object') {\n                found = _getPathRecursive(root[key], obj);\n                if (found != '') {\n                    return escapePathComponent(key) + '/' + found;\n                }\n            }\n        }\n    }\n    return '';\n}\nexport function getPath(root, obj) {\n    if (root === obj) {\n        return '/';\n    }\n    var path = _getPathRecursive(root, obj);\n    if (path === '') {\n        throw new Error(\"Object not found in root\");\n    }\n    return \"/\" + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n    if (obj === undefined) {\n        return true;\n    }\n    if (obj) {\n        if (Array.isArray(obj)) {\n            for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n                if (hasUndefined(obj[i_1])) {\n                    return true;\n                }\n            }\n        }\n        else if (typeof obj === \"object\") {\n            var objKeys = _objectKeys(obj);\n            var objKeysLength = objKeys.length;\n            for (var i = 0; i < objKeysLength; i++) {\n                if (hasUndefined(obj[objKeys[i]])) {\n                    return true;\n                }\n            }\n        }\n    }\n    return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n    var messageParts = [message];\n    for (var key in args) {\n        var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n        if (typeof value !== 'undefined') {\n            messageParts.push(key + \": \" + value);\n        }\n    }\n    return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n    __extends(PatchError, _super);\n    function PatchError(message, name, index, operation, tree) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n        _this.name = name;\n        _this.index = index;\n        _this.operation = operation;\n        _this.tree = tree;\n        Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n        _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n        return _this;\n    }\n    return PatchError;\n}(Error));\nexport { PatchError };\n", "/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n    function Mirror(obj) {\n        this.observers = new Map();\n        this.obj = obj;\n    }\n    return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n    function ObserverInfo(callback, observer) {\n        this.callback = callback;\n        this.observer = observer;\n    }\n    return ObserverInfo;\n}());\nfunction getMirror(obj) {\n    return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n    return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n    mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n    observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n    var patches = [];\n    var observer;\n    var mirror = getMirror(obj);\n    if (!mirror) {\n        mirror = new Mirror(obj);\n        beforeDict.set(obj, mirror);\n    }\n    else {\n        var observerInfo = getObserverFromMirror(mirror, callback);\n        observer = observerInfo && observerInfo.observer;\n    }\n    if (observer) {\n        return observer;\n    }\n    observer = {};\n    mirror.value = _deepClone(obj);\n    if (callback) {\n        observer.callback = callback;\n        observer.next = null;\n        var dirtyCheck = function () {\n            generate(observer);\n        };\n        var fastCheck = function () {\n            clearTimeout(observer.next);\n            observer.next = setTimeout(dirtyCheck);\n        };\n        if (typeof window !== 'undefined') { //not Node\n            window.addEventListener('mouseup', fastCheck);\n            window.addEventListener('keyup', fastCheck);\n            window.addEventListener('mousedown', fastCheck);\n            window.addEventListener('keydown', fastCheck);\n            window.addEventListener('change', fastCheck);\n        }\n    }\n    observer.patches = patches;\n    observer.object = obj;\n    observer.unobserve = function () {\n        generate(observer);\n        clearTimeout(observer.next);\n        removeObserverFromMirror(mirror, observer);\n        if (typeof window !== 'undefined') {\n            window.removeEventListener('mouseup', fastCheck);\n            window.removeEventListener('keyup', fastCheck);\n            window.removeEventListener('mousedown', fastCheck);\n            window.removeEventListener('keydown', fastCheck);\n            window.removeEventListener('change', fastCheck);\n        }\n    };\n    mirror.observers.set(callback, new ObserverInfo(callback, observer));\n    return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n    if (invertible === void 0) { invertible = false; }\n    var mirror = beforeDict.get(observer.object);\n    _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n    if (observer.patches.length) {\n        applyPatch(mirror.value, observer.patches);\n    }\n    var temp = observer.patches;\n    if (temp.length > 0) {\n        observer.patches = [];\n        if (observer.callback) {\n            observer.callback(temp);\n        }\n    }\n    return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n    if (obj === mirror) {\n        return;\n    }\n    if (typeof obj.toJSON === \"function\") {\n        obj = obj.toJSON();\n    }\n    var newKeys = _objectKeys(obj);\n    var oldKeys = _objectKeys(mirror);\n    var changed = false;\n    var deleted = false;\n    //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n    for (var t = oldKeys.length - 1; t >= 0; t--) {\n        var key = oldKeys[t];\n        var oldVal = mirror[key];\n        if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n            var newVal = obj[key];\n            if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n                _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n            }\n            else {\n                if (oldVal !== newVal) {\n                    changed = true;\n                    if (invertible) {\n                        patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n                    }\n                    patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n                }\n            }\n        }\n        else if (Array.isArray(mirror) === Array.isArray(obj)) {\n            if (invertible) {\n                patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n            }\n            patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n            deleted = true; // property has been deleted\n        }\n        else {\n            if (invertible) {\n                patches.push({ op: \"test\", path: path, value: mirror });\n            }\n            patches.push({ op: \"replace\", path: path, value: obj });\n            changed = true;\n        }\n    }\n    if (!deleted && newKeys.length == oldKeys.length) {\n        return;\n    }\n    for (var t = 0; t < newKeys.length; t++) {\n        var key = newKeys[t];\n        if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n            patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n        }\n    }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n    if (invertible === void 0) { invertible = false; }\n    var patches = [];\n    _generate(tree1, tree2, patches, '', invertible);\n    return patches;\n}\n", "export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n    PatchError as JsonPatchError,\n    _deepClone as deepClone,\n    escapePathComponent,\n    unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n    PatchError as JsonPatchError,\n    _deepClone as deepClone,\n    escapePathComponent,\n    unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n    JsonPatchError,\n    deepClone,\n    escapePathComponent,\n    unescapePathComponent\n});", "import { extend } from 'vega-util';\nexport * from 'vega-util';\nimport { transforms } from 'vega-dataflow';\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, changeset, definition, ingest, isTuple, transform, transforms, tupleid } from 'vega-dataflow';\nimport * as tx from 'vega-transforms';\nimport * as vtx from 'vega-view-transforms';\nimport * as encode from 'vega-encode';\nimport * as geo from 'vega-geo';\nimport * as force from 'vega-force';\nimport * as tree from 'vega-hierarchy';\nimport * as label from 'vega-label';\nimport * as reg from 'vega-regression';\nimport * as voronoi from 'vega-voronoi';\nimport * as wordcloud from 'vega-wordcloud';\nimport * as xf from 'vega-crossfilter';\nexport * from 'vega-statistics';\nexport * from 'vega-time';\nexport * from 'vega-loader';\nexport * from 'vega-scenegraph';\nexport { interpolate, interpolateColors, interpolateRange, quantizeInterpolator, scale, scheme } from 'vega-scale';\nexport { projection } from 'vega-projection';\nexport { View } from 'vega-view';\nexport { defaultLocale, numberFormatDefaultLocale as formatLocale, locale, resetDefaultLocale, timeFormatDefaultLocale as timeFormatLocale } from 'vega-format';\nexport { expressionFunction } from 'vega-functions';\nexport { parse } from 'vega-parser';\nexport { context as runtimeContext } from 'vega-runtime';\nexport { codegenExpression, parseExpression } from 'vega-expression';\nexport { parseSelector } from 'vega-event-selector';\n\nvar version = \"5.26.1\";\n\n// -- Transforms -----\n\nextend(transforms, tx, vtx, encode, geo, force, label, tree, reg, voronoi, wordcloud, xf);\n\nexport { version };\n", "function accessor (fn, fields, name) {\n  fn.fields = fields || [];\n  fn.fname = name;\n  return fn;\n}\nfunction accessorName(fn) {\n  return fn == null ? null : fn.fname;\n}\nfunction accessorFields(fn) {\n  return fn == null ? null : fn.fields;\n}\n\nfunction getter (path) {\n  return path.length === 1 ? get1(path[0]) : getN(path);\n}\nconst get1 = field => function (obj) {\n  return obj[field];\n};\nconst getN = path => {\n  const len = path.length;\n  return function (obj) {\n    for (let i = 0; i < len; ++i) {\n      obj = obj[path[i]];\n    }\n    return obj;\n  };\n};\n\nfunction error (message) {\n  throw Error(message);\n}\n\nfunction splitAccessPath (p) {\n  const path = [],\n    n = p.length;\n  let q = null,\n    b = 0,\n    s = '',\n    i,\n    j,\n    c;\n  p = p + '';\n  function push() {\n    path.push(s + p.substring(i, j));\n    s = '';\n    i = j + 1;\n  }\n  for (i = j = 0; j < n; ++j) {\n    c = p[j];\n    if (c === '\\\\') {\n      s += p.substring(i, j++);\n      i = j;\n    } else if (c === q) {\n      push();\n      q = null;\n      b = -1;\n    } else if (q) {\n      continue;\n    } else if (i === b && c === '\"') {\n      i = j + 1;\n      q = c;\n    } else if (i === b && c === \"'\") {\n      i = j + 1;\n      q = c;\n    } else if (c === '.' && !b) {\n      if (j > i) {\n        push();\n      } else {\n        i = j + 1;\n      }\n    } else if (c === '[') {\n      if (j > i) push();\n      b = i = j + 1;\n    } else if (c === ']') {\n      if (!b) error('Access path missing open bracket: ' + p);\n      if (b > 0) push();\n      b = 0;\n      i = j + 1;\n    }\n  }\n  if (b) error('Access path missing closing bracket: ' + p);\n  if (q) error('Access path missing closing quote: ' + p);\n  if (j > i) {\n    j++;\n    push();\n  }\n  return path;\n}\n\nfunction field (field, name, opt) {\n  const path = splitAccessPath(field);\n  field = path.length === 1 ? path[0] : field;\n  return accessor((opt && opt.get || getter)(path), [field], name || field);\n}\n\nconst id = field('id');\nconst identity = accessor(_ => _, [], 'identity');\nconst zero = accessor(() => 0, [], 'zero');\nconst one = accessor(() => 1, [], 'one');\nconst truthy = accessor(() => true, [], 'true');\nconst falsy = accessor(() => false, [], 'false');\n\nfunction log$1(method, level, input) {\n  const args = [level].concat([].slice.call(input));\n  console[method].apply(console, args); // eslint-disable-line no-console\n}\n\nconst None = 0;\nconst Error$1 = 1;\nconst Warn = 2;\nconst Info = 3;\nconst Debug = 4;\nfunction logger (_, method) {\n  let handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : log$1;\n  let level = _ || None;\n  return {\n    level(_) {\n      if (arguments.length) {\n        level = +_;\n        return this;\n      } else {\n        return level;\n      }\n    },\n    error() {\n      if (level >= Error$1) handler(method || 'error', 'ERROR', arguments);\n      return this;\n    },\n    warn() {\n      if (level >= Warn) handler(method || 'warn', 'WARN', arguments);\n      return this;\n    },\n    info() {\n      if (level >= Info) handler(method || 'log', 'INFO', arguments);\n      return this;\n    },\n    debug() {\n      if (level >= Debug) handler(method || 'log', 'DEBUG', arguments);\n      return this;\n    }\n  };\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (_) {\n  return _ === Object(_);\n}\n\nconst isLegalKey = key => key !== '__proto__';\nfunction mergeConfig() {\n  for (var _len = arguments.length, configs = new Array(_len), _key = 0; _key < _len; _key++) {\n    configs[_key] = arguments[_key];\n  }\n  return configs.reduce((out, source) => {\n    for (const key in source) {\n      if (key === 'signals') {\n        // for signals, we merge the signals arrays\n        // source signals take precedence over\n        // existing signals with the same name\n        out.signals = mergeNamed(out.signals, source.signals);\n      } else {\n        // otherwise, merge objects subject to recursion constraints\n        // for legend block, recurse for the layout entry only\n        // for style block, recurse for all properties\n        // otherwise, no recursion: objects overwrite, no merging\n        const r = key === 'legend' ? {\n          layout: 1\n        } : key === 'style' ? true : null;\n        writeConfig(out, key, source[key], r);\n      }\n    }\n    return out;\n  }, {});\n}\nfunction writeConfig(output, key, value, recurse) {\n  if (!isLegalKey(key)) return;\n  let k, o;\n  if (isObject(value) && !isArray(value)) {\n    o = isObject(output[key]) ? output[key] : output[key] = {};\n    for (k in value) {\n      if (recurse && (recurse === true || recurse[k])) {\n        writeConfig(o, k, value[k]);\n      } else if (isLegalKey(k)) {\n        o[k] = value[k];\n      }\n    }\n  } else {\n    output[key] = value;\n  }\n}\nfunction mergeNamed(a, b) {\n  if (a == null) return b;\n  const map = {},\n    out = [];\n  function add(_) {\n    if (!map[_.name]) {\n      map[_.name] = 1;\n      out.push(_);\n    }\n  }\n  b.forEach(add);\n  a.forEach(add);\n  return out;\n}\n\nfunction peek (array) {\n  return array[array.length - 1];\n}\n\nfunction toNumber (_) {\n  return _ == null || _ === '' ? null : +_;\n}\n\nconst exp = sign => x => sign * Math.exp(x);\nconst log = sign => x => Math.log(sign * x);\nconst symlog = c => x => Math.sign(x) * Math.log1p(Math.abs(x / c));\nconst symexp = c => x => Math.sign(x) * Math.expm1(Math.abs(x)) * c;\nconst pow = exponent => x => x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\nfunction pan(domain, delta, lift, ground) {\n  const d0 = lift(domain[0]),\n    d1 = lift(peek(domain)),\n    dd = (d1 - d0) * delta;\n  return [ground(d0 - dd), ground(d1 - dd)];\n}\nfunction panLinear(domain, delta) {\n  return pan(domain, delta, toNumber, identity);\n}\nfunction panLog(domain, delta) {\n  var sign = Math.sign(domain[0]);\n  return pan(domain, delta, log(sign), exp(sign));\n}\nfunction panPow(domain, delta, exponent) {\n  return pan(domain, delta, pow(exponent), pow(1 / exponent));\n}\nfunction panSymlog(domain, delta, constant) {\n  return pan(domain, delta, symlog(constant), symexp(constant));\n}\nfunction zoom(domain, anchor, scale, lift, ground) {\n  const d0 = lift(domain[0]),\n    d1 = lift(peek(domain)),\n    da = anchor != null ? lift(anchor) : (d0 + d1) / 2;\n  return [ground(da + (d0 - da) * scale), ground(da + (d1 - da) * scale)];\n}\nfunction zoomLinear(domain, anchor, scale) {\n  return zoom(domain, anchor, scale, toNumber, identity);\n}\nfunction zoomLog(domain, anchor, scale) {\n  const sign = Math.sign(domain[0]);\n  return zoom(domain, anchor, scale, log(sign), exp(sign));\n}\nfunction zoomPow(domain, anchor, scale, exponent) {\n  return zoom(domain, anchor, scale, pow(exponent), pow(1 / exponent));\n}\nfunction zoomSymlog(domain, anchor, scale, constant) {\n  return zoom(domain, anchor, scale, symlog(constant), symexp(constant));\n}\n\nfunction quarter(date) {\n  return 1 + ~~(new Date(date).getMonth() / 3);\n}\nfunction utcquarter(date) {\n  return 1 + ~~(new Date(date).getUTCMonth() / 3);\n}\n\nfunction array (_) {\n  return _ != null ? isArray(_) ? _ : [_] : [];\n}\n\n/**\n * Span-preserving range clamp. If the span of the input range is less\n * than (max - min) and an endpoint exceeds either the min or max value,\n * the range is translated such that the span is preserved and one\n * endpoint touches the boundary of the min/max range.\n * If the span exceeds (max - min), the range [min, max] is returned.\n */\nfunction clampRange (range, min, max) {\n  let lo = range[0],\n    hi = range[1],\n    span;\n  if (hi < lo) {\n    span = hi;\n    hi = lo;\n    lo = span;\n  }\n  span = hi - lo;\n  return span >= max - min ? [min, max] : [lo = Math.min(Math.max(lo, min), max - span), lo + span];\n}\n\nfunction isFunction (_) {\n  return typeof _ === 'function';\n}\n\nconst DESCENDING = 'descending';\nfunction compare (fields, orders, opt) {\n  opt = opt || {};\n  orders = array(orders) || [];\n  const ord = [],\n    get = [],\n    fmap = {},\n    gen = opt.comparator || comparator;\n  array(fields).forEach((f, i) => {\n    if (f == null) return;\n    ord.push(orders[i] === DESCENDING ? -1 : 1);\n    get.push(f = isFunction(f) ? f : field(f, null, opt));\n    (accessorFields(f) || []).forEach(_ => fmap[_] = 1);\n  });\n  return get.length === 0 ? null : accessor(gen(get, ord), Object.keys(fmap));\n}\nconst ascending = (u, v) => (u < v || u == null) && v != null ? -1 : (u > v || v == null) && u != null ? 1 : (v = v instanceof Date ? +v : v, u = u instanceof Date ? +u : u) !== u && v === v ? -1 : v !== v && u === u ? 1 : 0;\nconst comparator = (fields, orders) => fields.length === 1 ? compare1(fields[0], orders[0]) : compareN(fields, orders, fields.length);\nconst compare1 = (field, order) => function (a, b) {\n  return ascending(field(a), field(b)) * order;\n};\nconst compareN = (fields, orders, n) => {\n  orders.push(0); // pad zero for convenient lookup\n  return function (a, b) {\n    let f,\n      c = 0,\n      i = -1;\n    while (c === 0 && ++i < n) {\n      f = fields[i];\n      c = ascending(f(a), f(b));\n    }\n    return c * orders[i];\n  };\n};\n\nfunction constant (_) {\n  return isFunction(_) ? _ : () => _;\n}\n\nfunction debounce (delay, handler) {\n  let tid;\n  return e => {\n    if (tid) clearTimeout(tid);\n    tid = setTimeout(() => (handler(e), tid = null), delay);\n  };\n}\n\nfunction extend (_) {\n  for (let x, k, i = 1, len = arguments.length; i < len; ++i) {\n    x = arguments[i];\n    for (k in x) {\n      _[k] = x[k];\n    }\n  }\n  return _;\n}\n\n/**\n * Return an array with minimum and maximum values, in the\n * form [min, max]. Ignores null, undefined, and NaN values.\n */\nfunction extent (array, f) {\n  let i = 0,\n    n,\n    v,\n    min,\n    max;\n  if (array && (n = array.length)) {\n    if (f == null) {\n      // find first valid value\n      for (v = array[i]; i < n && (v == null || v !== v); v = array[++i]);\n      min = max = v;\n\n      // visit all other values\n      for (; i < n; ++i) {\n        v = array[i];\n        // skip null/undefined; NaN will fail all comparisons\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    } else {\n      // find first valid value\n      for (v = f(array[i]); i < n && (v == null || v !== v); v = f(array[++i]));\n      min = max = v;\n\n      // visit all other values\n      for (; i < n; ++i) {\n        v = f(array[i]);\n        // skip null/undefined; NaN will fail all comparisons\n        if (v != null) {\n          if (v < min) min = v;\n          if (v > max) max = v;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n\nfunction extentIndex (array, f) {\n  const n = array.length;\n  let i = -1,\n    a,\n    b,\n    c,\n    u,\n    v;\n  if (f == null) {\n    while (++i < n) {\n      b = array[i];\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n    if (i === n) return [-1, -1];\n    u = v = i;\n    while (++i < n) {\n      b = array[i];\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  } else {\n    while (++i < n) {\n      b = f(array[i], i, array);\n      if (b != null && b >= b) {\n        a = c = b;\n        break;\n      }\n    }\n    if (i === n) return [-1, -1];\n    u = v = i;\n    while (++i < n) {\n      b = f(array[i], i, array);\n      if (b != null) {\n        if (a > b) {\n          a = b;\n          u = i;\n        }\n        if (c < b) {\n          c = b;\n          v = i;\n        }\n      }\n    }\n  }\n  return [u, v];\n}\n\nconst hop = Object.prototype.hasOwnProperty;\nfunction has (object, property) {\n  return hop.call(object, property);\n}\n\nconst NULL = {};\nfunction fastmap (input) {\n  let obj = {},\n    test;\n  function has$1(key) {\n    return has(obj, key) && obj[key] !== NULL;\n  }\n  const map = {\n    size: 0,\n    empty: 0,\n    object: obj,\n    has: has$1,\n    get(key) {\n      return has$1(key) ? obj[key] : undefined;\n    },\n    set(key, value) {\n      if (!has$1(key)) {\n        ++map.size;\n        if (obj[key] === NULL) --map.empty;\n      }\n      obj[key] = value;\n      return this;\n    },\n    delete(key) {\n      if (has$1(key)) {\n        --map.size;\n        ++map.empty;\n        obj[key] = NULL;\n      }\n      return this;\n    },\n    clear() {\n      map.size = map.empty = 0;\n      map.object = obj = {};\n    },\n    test(_) {\n      if (arguments.length) {\n        test = _;\n        return map;\n      } else {\n        return test;\n      }\n    },\n    clean() {\n      const next = {};\n      let size = 0;\n      for (const key in obj) {\n        const value = obj[key];\n        if (value !== NULL && (!test || !test(value))) {\n          next[key] = value;\n          ++size;\n        }\n      }\n      map.size = size;\n      map.empty = 0;\n      map.object = obj = next;\n    }\n  };\n  if (input) Object.keys(input).forEach(key => {\n    map.set(key, input[key]);\n  });\n  return map;\n}\n\nfunction flush (range, value, threshold, left, right, center) {\n  if (!threshold && threshold !== 0) return center;\n  const t = +threshold;\n  let a = range[0],\n    b = peek(range),\n    l;\n\n  // swap endpoints if range is reversed\n  if (b < a) {\n    l = a;\n    a = b;\n    b = l;\n  }\n\n  // compare value to endpoints\n  l = Math.abs(value - a);\n  const r = Math.abs(b - value);\n\n  // adjust if value is within threshold distance of endpoint\n  return l < r && l <= t ? left : r <= t ? right : center;\n}\n\nfunction inherits (child, parent, members) {\n  const proto = child.prototype = Object.create(parent.prototype);\n  Object.defineProperty(proto, 'constructor', {\n    value: child,\n    writable: true,\n    enumerable: true,\n    configurable: true\n  });\n  return extend(proto, members);\n}\n\n/**\n * Predicate that returns true if the value lies within the span\n * of the given range. The left and right flags control the use\n * of inclusive (true) or exclusive (false) comparisons.\n */\nfunction inrange (value, range, left, right) {\n  let r0 = range[0],\n    r1 = range[range.length - 1],\n    t;\n  if (r0 > r1) {\n    t = r0;\n    r0 = r1;\n    r1 = t;\n  }\n  left = left === undefined || left;\n  right = right === undefined || right;\n  return (left ? r0 <= value : r0 < value) && (right ? value <= r1 : value < r1);\n}\n\nfunction isBoolean (_) {\n  return typeof _ === 'boolean';\n}\n\nfunction isDate (_) {\n  return Object.prototype.toString.call(_) === '[object Date]';\n}\n\nfunction isIterable (_) {\n  return _ && isFunction(_[Symbol.iterator]);\n}\n\nfunction isNumber (_) {\n  return typeof _ === 'number';\n}\n\nfunction isRegExp (_) {\n  return Object.prototype.toString.call(_) === '[object RegExp]';\n}\n\nfunction isString (_) {\n  return typeof _ === 'string';\n}\n\nfunction key (fields, flat, opt) {\n  if (fields) {\n    fields = flat ? array(fields).map(f => f.replace(/\\\\(.)/g, '$1')) : array(fields);\n  }\n  const len = fields && fields.length,\n    gen = opt && opt.get || getter,\n    map = f => gen(flat ? [f] : splitAccessPath(f));\n  let fn;\n  if (!len) {\n    fn = function () {\n      return '';\n    };\n  } else if (len === 1) {\n    const get = map(fields[0]);\n    fn = function (_) {\n      return '' + get(_);\n    };\n  } else {\n    const get = fields.map(map);\n    fn = function (_) {\n      let s = '' + get[0](_),\n        i = 0;\n      while (++i < len) s += '|' + get[i](_);\n      return s;\n    };\n  }\n  return accessor(fn, fields, 'key');\n}\n\nfunction lerp (array, frac) {\n  const lo = array[0],\n    hi = peek(array),\n    f = +frac;\n  return !f ? lo : f === 1 ? hi : lo + f * (hi - lo);\n}\n\nconst DEFAULT_MAX_SIZE = 10000;\n\n// adapted from https://github.com/dominictarr/hashlru/ (MIT License)\nfunction lruCache (maxsize) {\n  maxsize = +maxsize || DEFAULT_MAX_SIZE;\n  let curr, prev, size;\n  const clear = () => {\n    curr = {};\n    prev = {};\n    size = 0;\n  };\n  const update = (key, value) => {\n    if (++size > maxsize) {\n      prev = curr;\n      curr = {};\n      size = 1;\n    }\n    return curr[key] = value;\n  };\n  clear();\n  return {\n    clear,\n    has: key => has(curr, key) || has(prev, key),\n    get: key => has(curr, key) ? curr[key] : has(prev, key) ? update(key, prev[key]) : undefined,\n    set: (key, value) => has(curr, key) ? curr[key] = value : update(key, value)\n  };\n}\n\nfunction merge (compare, array0, array1, output) {\n  const n0 = array0.length,\n    n1 = array1.length;\n  if (!n1) return array0;\n  if (!n0) return array1;\n  const merged = output || new array0.constructor(n0 + n1);\n  let i0 = 0,\n    i1 = 0,\n    i = 0;\n  for (; i0 < n0 && i1 < n1; ++i) {\n    merged[i] = compare(array0[i0], array1[i1]) > 0 ? array1[i1++] : array0[i0++];\n  }\n  for (; i0 < n0; ++i0, ++i) {\n    merged[i] = array0[i0];\n  }\n  for (; i1 < n1; ++i1, ++i) {\n    merged[i] = array1[i1];\n  }\n  return merged;\n}\n\nfunction repeat (str, reps) {\n  let s = '';\n  while (--reps >= 0) s += str;\n  return s;\n}\n\nfunction pad (str, length, padchar, align) {\n  const c = padchar || ' ',\n    s = str + '',\n    n = length - s.length;\n  return n <= 0 ? s : align === 'left' ? repeat(c, n) + s : align === 'center' ? repeat(c, ~~(n / 2)) + s + repeat(c, Math.ceil(n / 2)) : s + repeat(c, n);\n}\n\n/**\n * Return the numerical span of an array: the difference between\n * the last and first values.\n */\nfunction span (array) {\n  return array && peek(array) - array[0] || 0;\n}\n\nfunction $(x) {\n  return isArray(x) ? '[' + x.map($) + ']' : isObject(x) || isString(x) ?\n  // Output valid JSON and JS source strings.\n  // See http://timelessrepo.com/json-isnt-a-javascript-subset\n  JSON.stringify(x).replace('\\u2028', '\\\\u2028').replace('\\u2029', '\\\\u2029') : x;\n}\n\nfunction toBoolean (_) {\n  return _ == null || _ === '' ? null : !_ || _ === 'false' || _ === '0' ? false : !!_;\n}\n\nconst defaultParser = _ => isNumber(_) ? _ : isDate(_) ? _ : Date.parse(_);\nfunction toDate (_, parser) {\n  parser = parser || defaultParser;\n  return _ == null || _ === '' ? null : parser(_);\n}\n\nfunction toString (_) {\n  return _ == null || _ === '' ? null : _ + '';\n}\n\nfunction toSet (_) {\n  const s = {},\n    n = _.length;\n  for (let i = 0; i < n; ++i) s[_[i]] = true;\n  return s;\n}\n\nfunction truncate (str, length, align, ellipsis) {\n  const e = ellipsis != null ? ellipsis : '\\u2026',\n    s = str + '',\n    n = s.length,\n    l = Math.max(0, length - e.length);\n  return n <= length ? s : align === 'left' ? e + s.slice(n - l) : align === 'center' ? s.slice(0, Math.ceil(l / 2)) + e + s.slice(n - ~~(l / 2)) : s.slice(0, l) + e;\n}\n\nfunction visitArray (array, filter, visitor) {\n  if (array) {\n    if (filter) {\n      const n = array.length;\n      for (let i = 0; i < n; ++i) {\n        const t = filter(array[i]);\n        if (t) visitor(t, i, array);\n      }\n    } else {\n      array.forEach(visitor);\n    }\n  }\n}\n\nexport { Debug, Error$1 as Error, Info, None, Warn, accessor, accessorFields, accessorName, array, ascending, clampRange, compare, constant, debounce, error, extend, extent, extentIndex, falsy, fastmap, field, flush, has as hasOwnProperty, id, identity, inherits, inrange, isArray, isBoolean, isDate, isFunction, isIterable, isNumber, isObject, isRegExp, isString, key, lerp, logger, lruCache, merge, mergeConfig, one, pad, panLinear, panLog, panPow, panSymlog, peek, quarter, repeat, span, splitAccessPath, $ as stringValue, toBoolean, toDate, toNumber, toSet, toString, truncate, truthy, utcquarter, visitArray, writeConfig, zero, zoomLinear, zoomLog, zoomPow, zoomSymlog };\n", "var EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\nexport default function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n}\n", "export default function(x) {\n  return x;\n}\n", "import identity from \"./identity.js\";\n\nexport default function(transform) {\n  if (transform == null) return identity;\n  var x0,\n      y0,\n      kx = transform.scale[0],\n      ky = transform.scale[1],\n      dx = transform.translate[0],\n      dy = transform.translate[1];\n  return function(input, i) {\n    if (!i) x0 = y0 = 0;\n    var j = 2, n = input.length, output = new Array(n);\n    output[0] = (x0 += input[0]) * kx + dx;\n    output[1] = (y0 += input[1]) * ky + dy;\n    while (j < n) output[j] = input[j], ++j;\n    return output;\n  };\n}\n", "export default function(array, n) {\n  var t, j = array.length, i = j - n;\n  while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n", "import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\n\nexport default function(topology, o) {\n  if (typeof o === \"string\") o = topology.objects[o];\n  return o.type === \"GeometryCollection\"\n      ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n      : feature(topology, o);\n}\n\nfunction feature(topology, o) {\n  var id = o.id,\n      bbox = o.bbox,\n      properties = o.properties == null ? {} : o.properties,\n      geometry = object(topology, o);\n  return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n      : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n      : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n  var transformPoint = transform(topology.transform),\n      arcs = topology.arcs;\n\n  function arc(i, points) {\n    if (points.length) points.pop();\n    for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n      points.push(transformPoint(a[k], k));\n    }\n    if (i < 0) reverse(points, n);\n  }\n\n  function point(p) {\n    return transformPoint(p);\n  }\n\n  function line(arcs) {\n    var points = [];\n    for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n    if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n    return points;\n  }\n\n  function ring(arcs) {\n    var points = line(arcs);\n    while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n    return points;\n  }\n\n  function polygon(arcs) {\n    return arcs.map(ring);\n  }\n\n  function geometry(o) {\n    var type = o.type, coordinates;\n    switch (type) {\n      case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n      case \"Point\": coordinates = point(o.coordinates); break;\n      case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n      case \"LineString\": coordinates = line(o.arcs); break;\n      case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n      case \"Polygon\": coordinates = polygon(o.arcs); break;\n      case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n      default: return null;\n    }\n    return {type: type, coordinates: coordinates};\n  }\n\n  return geometry(o);\n}\n", "export default function(topology, arcs) {\n  var stitchedArcs = {},\n      fragmentByStart = {},\n      fragmentByEnd = {},\n      fragments = [],\n      emptyIndex = -1;\n\n  // Stitch empty arcs first, since they may be subsumed by other arcs.\n  arcs.forEach(function(i, j) {\n    var arc = topology.arcs[i < 0 ? ~i : i], t;\n    if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n      t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n    }\n  });\n\n  arcs.forEach(function(i) {\n    var e = ends(i),\n        start = e[0],\n        end = e[1],\n        f, g;\n\n    if (f = fragmentByEnd[start]) {\n      delete fragmentByEnd[f.end];\n      f.push(i);\n      f.end = end;\n      if (g = fragmentByStart[end]) {\n        delete fragmentByStart[g.start];\n        var fg = g === f ? f : f.concat(g);\n        fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n      } else {\n        fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n      }\n    } else if (f = fragmentByStart[end]) {\n      delete fragmentByStart[f.start];\n      f.unshift(i);\n      f.start = start;\n      if (g = fragmentByEnd[start]) {\n        delete fragmentByEnd[g.end];\n        var gf = g === f ? f : g.concat(f);\n        fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n      } else {\n        fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n      }\n    } else {\n      f = [i];\n      fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n    }\n  });\n\n  function ends(i) {\n    var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n    if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n    else p1 = arc[arc.length - 1];\n    return i < 0 ? [p1, p0] : [p0, p1];\n  }\n\n  function flush(fragmentByEnd, fragmentByStart) {\n    for (var k in fragmentByEnd) {\n      var f = fragmentByEnd[k];\n      delete fragmentByStart[f.start];\n      delete f.start;\n      delete f.end;\n      f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n      fragments.push(f);\n    }\n  }\n\n  flush(fragmentByEnd, fragmentByStart);\n  flush(fragmentByStart, fragmentByEnd);\n  arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n  return fragments;\n}\n", "import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nexport default function(topology) {\n  return object(topology, meshArcs.apply(this, arguments));\n}\n\nexport function meshArcs(topology, object, filter) {\n  var arcs, i, n;\n  if (arguments.length > 1) arcs = extractArcs(topology, object, filter);\n  else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n  return {type: \"MultiLineString\", arcs: stitch(topology, arcs)};\n}\n\nfunction extractArcs(topology, object, filter) {\n  var arcs = [],\n      geomsByArc = [],\n      geom;\n\n  function extract0(i) {\n    var j = i < 0 ? ~i : i;\n    (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n  }\n\n  function extract1(arcs) {\n    arcs.forEach(extract0);\n  }\n\n  function extract2(arcs) {\n    arcs.forEach(extract1);\n  }\n\n  function extract3(arcs) {\n    arcs.forEach(extract2);\n  }\n\n  function geometry(o) {\n    switch (geom = o, o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n      case \"LineString\": extract1(o.arcs); break;\n      case \"MultiLineString\": case \"Polygon\": extract2(o.arcs); break;\n      case \"MultiPolygon\": extract3(o.arcs); break;\n    }\n  }\n\n  geometry(object);\n\n  geomsByArc.forEach(filter == null\n      ? function(geoms) { arcs.push(geoms[0].i); }\n      : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\n  return arcs;\n}\n", "export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n", "import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can\u2019t do this\n  // for a comparator (except for specific, known comparators) because we can\u2019t\n  // tell if the comparator is symmetric, and an asymmetric comparator can\u2019t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n", "export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n", "import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n", "export default function variance(values, valueof) {\n  let count = 0;\n  let delta;\n  let mean = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n  if (count > 1) return sum / (count - 1);\n}\n", "import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n  const v = variance(values, valueof);\n  return v ? Math.sqrt(v) : v;\n}\n", "// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n  constructor() {\n    this._partials = new Float64Array(32);\n    this._n = 0;\n  }\n  add(x) {\n    const p = this._partials;\n    let i = 0;\n    for (let j = 0; j < this._n && j < 32; j++) {\n      const y = p[j],\n        hi = x + y,\n        lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n      if (lo) p[i++] = lo;\n      x = hi;\n    }\n    p[i] = x;\n    this._n = i + 1;\n    return this;\n  }\n  valueOf() {\n    const p = this._partials;\n    let n = this._n, x, y, lo, hi = 0;\n    if (n > 0) {\n      hi = p[--n];\n      while (n > 0) {\n        x = hi;\n        y = p[--n];\n        hi = x + y;\n        lo = y - (hi - x);\n        if (lo) break;\n      }\n      if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n        y = lo * 2;\n        x = hi + y;\n        if (y == x - hi) hi = x;\n      }\n    }\n    return hi;\n  }\n}\n\nexport function fsum(values, valueof) {\n  const adder = new Adder();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        adder.add(value);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        adder.add(value);\n      }\n    }\n  }\n  return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n  const adder = new Adder();\n  let index = -1;\n  return Float64Array.from(values, valueof === undefined\n      ? v => adder.add(+v || 0)\n      : v => adder.add(+valueof(v, ++index, values) || 0)\n  );\n}\n", "export class InternMap extends Map {\n  constructor(entries, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (entries != null) for (const [key, value] of entries) this.set(key, value);\n  }\n  get(key) {\n    return super.get(intern_get(this, key));\n  }\n  has(key) {\n    return super.has(intern_get(this, key));\n  }\n  set(key, value) {\n    return super.set(intern_set(this, key), value);\n  }\n  delete(key) {\n    return super.delete(intern_delete(this, key));\n  }\n}\n\nexport class InternSet extends Set {\n  constructor(values, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (values != null) for (const value of values) this.add(value);\n  }\n  has(value) {\n    return super.has(intern_get(this, value));\n  }\n  add(value) {\n    return super.add(intern_set(this, value));\n  }\n  delete(value) {\n    return super.delete(intern_delete(this, value));\n  }\n}\n\nfunction intern_get({_intern, _key}, value) {\n  const key = _key(value);\n  return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) return _intern.get(key);\n  _intern.set(key, value);\n  return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) {\n    value = _intern.get(key);\n    _intern.delete(key);\n  }\n  return value;\n}\n\nfunction keyof(value) {\n  return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n", "export default function permute(source, keys) {\n  return Array.from(keys, key => source[key]);\n}\n", "import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  values = Array.from(values);\n  let [f] = F;\n  if ((f && f.length !== 2) || F.length > 1) {\n    const index = Uint32Array.from(values, (d, i) => i);\n    if (F.length > 1) {\n      F = F.map(f => values.map(f));\n      index.sort((i, j) => {\n        for (const f of F) {\n          const c = ascendingDefined(f[i], f[j]);\n          if (c) return c;\n        }\n      });\n    } else {\n      f = values.map(f);\n      index.sort((i, j) => ascendingDefined(f[i], f[j]));\n    }\n    return permute(values, index);\n  }\n  return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n  if (compare === ascending) return ascendingDefined;\n  if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n  return (a, b) => {\n    const x = compare(a, b);\n    if (x || x === 0) return x;\n    return (compare(b, b) === 0) - (compare(a, a) === 0);\n  };\n}\n\nexport function ascendingDefined(a, b) {\n  return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n", "const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n", "export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n", "export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n", "import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n  k = Math.floor(k);\n  left = Math.floor(Math.max(0, left));\n  right = Math.floor(Math.min(array.length - 1, right));\n\n  if (!(left <= k && k <= right)) return array;\n\n  compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n", "import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n  if (isNaN(p = +p)) return;\n  numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n  if (p <= 0) return minIndex(numbers);\n  if (p >= 1) return maxIndex(numbers);\n  var numbers,\n      index = Uint32Array.from(values, (_, i) => i),\n      j = numbers.length - 1,\n      i = Math.floor(j * p);\n  quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n  i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n  return i >= 0 ? i : -1;\n}\n", "export default function mean(values, valueof) {\n  let count = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count, sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        ++count, sum += value;\n      }\n    }\n  }\n  if (count) return sum / count;\n}\n", "import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n  return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n  return quantileIndex(values, 0.5, valueof);\n}\n", "function* flatten(arrays) {\n  for (const array of arrays) {\n    yield* array;\n  }\n}\n\nexport default function merge(arrays) {\n  return Array.from(flatten(arrays));\n}\n", "export default function range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n", "export default function sum(values, valueof) {\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        sum += value;\n      }\n    }\n  }\n  return sum;\n}\n", "import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n  values = new InternSet(values);\n  others = others.map(set);\n  out: for (const value of values) {\n    for (const other of others) {\n      if (!other.has(value)) {\n        values.delete(value);\n        continue out;\n      }\n    }\n  }\n  return values;\n}\n\nfunction set(values) {\n  return values instanceof InternSet ? values : new InternSet(values);\n}\n", "import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n  const set = new InternSet();\n  for (const other of others) {\n    for (const o of other) {\n      set.add(o);\n    }\n  }\n  return set;\n}\n", "export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n", "export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n", "export default function(x) {\n  return x;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n        // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n", "import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n", "const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    let previous;\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (date, step) => {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = (start, end) => {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n", "import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n", "import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n", "import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n", "import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n", "import { array, error, hasOwnProperty, extend, peek, toSet, constant, zero, one, span } from 'vega-util';\nimport { timeDay, timeWeek, utcDay, utcWeek, timeYear, timeMonth, timeHour, timeMinute, timeSecond, timeMillisecond, utcYear, utcMonth, utcHour, utcMinute, utcSecond, utcMillisecond } from 'd3-time';\nimport { bisector, tickStep } from 'd3-array';\n\nconst YEAR = 'year';\nconst QUARTER = 'quarter';\nconst MONTH = 'month';\nconst WEEK = 'week';\nconst DATE = 'date';\nconst DAY = 'day';\nconst DAYOFYEAR = 'dayofyear';\nconst HOURS = 'hours';\nconst MINUTES = 'minutes';\nconst SECONDS = 'seconds';\nconst MILLISECONDS = 'milliseconds';\nconst TIME_UNITS = [YEAR, QUARTER, MONTH, WEEK, DATE, DAY, DAYOFYEAR, HOURS, MINUTES, SECONDS, MILLISECONDS];\nconst UNITS = TIME_UNITS.reduce((o, u, i) => (o[u] = 1 + i, o), {});\nfunction timeUnits(units) {\n  const u = array(units).slice(),\n    m = {};\n\n  // check validity\n  if (!u.length) error('Missing time unit.');\n  u.forEach(unit => {\n    if (hasOwnProperty(UNITS, unit)) {\n      m[unit] = 1;\n    } else {\n      error(`Invalid time unit: ${unit}.`);\n    }\n  });\n  const numTypes = (m[WEEK] || m[DAY] ? 1 : 0) + (m[QUARTER] || m[MONTH] || m[DATE] ? 1 : 0) + (m[DAYOFYEAR] ? 1 : 0);\n  if (numTypes > 1) {\n    error(`Incompatible time units: ${units}`);\n  }\n\n  // ensure proper sort order\n  u.sort((a, b) => UNITS[a] - UNITS[b]);\n  return u;\n}\nconst defaultSpecifiers = {\n  [YEAR]: '%Y ',\n  [QUARTER]: 'Q%q ',\n  [MONTH]: '%b ',\n  [DATE]: '%d ',\n  [WEEK]: 'W%U ',\n  [DAY]: '%a ',\n  [DAYOFYEAR]: '%j ',\n  [HOURS]: '%H:00',\n  [MINUTES]: '00:%M',\n  [SECONDS]: ':%S',\n  [MILLISECONDS]: '.%L',\n  [`${YEAR}-${MONTH}`]: '%Y-%m ',\n  [`${YEAR}-${MONTH}-${DATE}`]: '%Y-%m-%d ',\n  [`${HOURS}-${MINUTES}`]: '%H:%M'\n};\nfunction timeUnitSpecifier(units, specifiers) {\n  const s = extend({}, defaultSpecifiers, specifiers),\n    u = timeUnits(units),\n    n = u.length;\n  let fmt = '',\n    start = 0,\n    end,\n    key;\n  for (start = 0; start < n;) {\n    for (end = u.length; end > start; --end) {\n      key = u.slice(start, end).join('-');\n      if (s[key] != null) {\n        fmt += s[key];\n        start = end;\n        break;\n      }\n    }\n  }\n  return fmt.trim();\n}\n\nconst t0 = new Date();\nfunction localYear(y) {\n  t0.setFullYear(y);\n  t0.setMonth(0);\n  t0.setDate(1);\n  t0.setHours(0, 0, 0, 0);\n  return t0;\n}\nfunction dayofyear(d) {\n  return localDayOfYear(new Date(d));\n}\nfunction week(d) {\n  return localWeekNum(new Date(d));\n}\nfunction localDayOfYear(d) {\n  return timeDay.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localWeekNum(d) {\n  return timeWeek.count(localYear(d.getFullYear()) - 1, d);\n}\nfunction localFirst(y) {\n  return localYear(y).getDay();\n}\nfunction localDate(y, m, d, H, M, S, L) {\n  if (0 <= y && y < 100) {\n    const date = new Date(-1, m, d, H, M, S, L);\n    date.setFullYear(y);\n    return date;\n  }\n  return new Date(y, m, d, H, M, S, L);\n}\nfunction utcdayofyear(d) {\n  return utcDayOfYear(new Date(d));\n}\nfunction utcweek(d) {\n  return utcWeekNum(new Date(d));\n}\nfunction utcDayOfYear(d) {\n  const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n  return utcDay.count(y - 1, d);\n}\nfunction utcWeekNum(d) {\n  const y = Date.UTC(d.getUTCFullYear(), 0, 1);\n  return utcWeek.count(y - 1, d);\n}\nfunction utcFirst(y) {\n  t0.setTime(Date.UTC(y, 0, 1));\n  return t0.getUTCDay();\n}\nfunction utcDate(y, m, d, H, M, S, L) {\n  if (0 <= y && y < 100) {\n    const date = new Date(Date.UTC(-1, m, d, H, M, S, L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(y, m, d, H, M, S, L));\n}\n\nfunction floor(units, step, get, inv, newDate) {\n  const s = step || 1,\n    b = peek(units),\n    _ = (unit, p, key) => {\n      key = key || unit;\n      return getUnit(get[key], inv[key], unit === b && s, p);\n    };\n  const t = new Date(),\n    u = toSet(units),\n    y = u[YEAR] ? _(YEAR) : constant(2012),\n    m = u[MONTH] ? _(MONTH) : u[QUARTER] ? _(QUARTER) : zero,\n    d = u[WEEK] && u[DAY] ? _(DAY, 1, WEEK + DAY) : u[WEEK] ? _(WEEK, 1) : u[DAY] ? _(DAY, 1) : u[DATE] ? _(DATE, 1) : u[DAYOFYEAR] ? _(DAYOFYEAR, 1) : one,\n    H = u[HOURS] ? _(HOURS) : zero,\n    M = u[MINUTES] ? _(MINUTES) : zero,\n    S = u[SECONDS] ? _(SECONDS) : zero,\n    L = u[MILLISECONDS] ? _(MILLISECONDS) : zero;\n  return function (v) {\n    t.setTime(+v);\n    const year = y(t);\n    return newDate(year, m(t), d(t, year), H(t), M(t), S(t), L(t));\n  };\n}\nfunction getUnit(f, inv, step, phase) {\n  const u = step <= 1 ? f : phase ? (d, y) => phase + step * Math.floor((f(d, y) - phase) / step) : (d, y) => step * Math.floor(f(d, y) / step);\n  return inv ? (d, y) => inv(u(d, y), y) : u;\n}\n\n// returns the day of the year based on week number, day of week,\n// and the day of the week for the first day of the year\nfunction weekday(week, day, firstDay) {\n  return day + week * 7 - (firstDay + 6) % 7;\n}\n\n// -- LOCAL TIME --\n\nconst localGet = {\n  [YEAR]: d => d.getFullYear(),\n  [QUARTER]: d => Math.floor(d.getMonth() / 3),\n  [MONTH]: d => d.getMonth(),\n  [DATE]: d => d.getDate(),\n  [HOURS]: d => d.getHours(),\n  [MINUTES]: d => d.getMinutes(),\n  [SECONDS]: d => d.getSeconds(),\n  [MILLISECONDS]: d => d.getMilliseconds(),\n  [DAYOFYEAR]: d => localDayOfYear(d),\n  [WEEK]: d => localWeekNum(d),\n  [WEEK + DAY]: (d, y) => weekday(localWeekNum(d), d.getDay(), localFirst(y)),\n  [DAY]: (d, y) => weekday(1, d.getDay(), localFirst(y))\n};\nconst localInv = {\n  [QUARTER]: q => 3 * q,\n  [WEEK]: (w, y) => weekday(w, 0, localFirst(y))\n};\nfunction timeFloor(units, step) {\n  return floor(units, step || 1, localGet, localInv, localDate);\n}\n\n// -- UTC TIME --\n\nconst utcGet = {\n  [YEAR]: d => d.getUTCFullYear(),\n  [QUARTER]: d => Math.floor(d.getUTCMonth() / 3),\n  [MONTH]: d => d.getUTCMonth(),\n  [DATE]: d => d.getUTCDate(),\n  [HOURS]: d => d.getUTCHours(),\n  [MINUTES]: d => d.getUTCMinutes(),\n  [SECONDS]: d => d.getUTCSeconds(),\n  [MILLISECONDS]: d => d.getUTCMilliseconds(),\n  [DAYOFYEAR]: d => utcDayOfYear(d),\n  [WEEK]: d => utcWeekNum(d),\n  [DAY]: (d, y) => weekday(1, d.getUTCDay(), utcFirst(y)),\n  [WEEK + DAY]: (d, y) => weekday(utcWeekNum(d), d.getUTCDay(), utcFirst(y))\n};\nconst utcInv = {\n  [QUARTER]: q => 3 * q,\n  [WEEK]: (w, y) => weekday(w, 0, utcFirst(y))\n};\nfunction utcFloor(units, step) {\n  return floor(units, step || 1, utcGet, utcInv, utcDate);\n}\n\nconst timeIntervals = {\n  [YEAR]: timeYear,\n  [QUARTER]: timeMonth.every(3),\n  [MONTH]: timeMonth,\n  [WEEK]: timeWeek,\n  [DATE]: timeDay,\n  [DAY]: timeDay,\n  [DAYOFYEAR]: timeDay,\n  [HOURS]: timeHour,\n  [MINUTES]: timeMinute,\n  [SECONDS]: timeSecond,\n  [MILLISECONDS]: timeMillisecond\n};\nconst utcIntervals = {\n  [YEAR]: utcYear,\n  [QUARTER]: utcMonth.every(3),\n  [MONTH]: utcMonth,\n  [WEEK]: utcWeek,\n  [DATE]: utcDay,\n  [DAY]: utcDay,\n  [DAYOFYEAR]: utcDay,\n  [HOURS]: utcHour,\n  [MINUTES]: utcMinute,\n  [SECONDS]: utcSecond,\n  [MILLISECONDS]: utcMillisecond\n};\nfunction timeInterval(unit) {\n  return timeIntervals[unit];\n}\nfunction utcInterval(unit) {\n  return utcIntervals[unit];\n}\nfunction offset(ival, date, step) {\n  return ival ? ival.offset(date, step) : undefined;\n}\nfunction timeOffset(unit, date, step) {\n  return offset(timeInterval(unit), date, step);\n}\nfunction utcOffset(unit, date, step) {\n  return offset(utcInterval(unit), date, step);\n}\nfunction sequence(ival, start, stop, step) {\n  return ival ? ival.range(start, stop, step) : undefined;\n}\nfunction timeSequence(unit, start, stop, step) {\n  return sequence(timeInterval(unit), start, stop, step);\n}\nfunction utcSequence(unit, start, stop, step) {\n  return sequence(utcInterval(unit), start, stop, step);\n}\n\nconst durationSecond = 1000,\n  durationMinute = durationSecond * 60,\n  durationHour = durationMinute * 60,\n  durationDay = durationHour * 24,\n  durationWeek = durationDay * 7,\n  durationMonth = durationDay * 30,\n  durationYear = durationDay * 365;\nconst Milli = [YEAR, MONTH, DATE, HOURS, MINUTES, SECONDS, MILLISECONDS],\n  Seconds = Milli.slice(0, -1),\n  Minutes = Seconds.slice(0, -1),\n  Hours = Minutes.slice(0, -1),\n  Day = Hours.slice(0, -1),\n  Week = [YEAR, WEEK],\n  Month = [YEAR, MONTH],\n  Year = [YEAR];\nconst intervals = [[Seconds, 1, durationSecond], [Seconds, 5, 5 * durationSecond], [Seconds, 15, 15 * durationSecond], [Seconds, 30, 30 * durationSecond], [Minutes, 1, durationMinute], [Minutes, 5, 5 * durationMinute], [Minutes, 15, 15 * durationMinute], [Minutes, 30, 30 * durationMinute], [Hours, 1, durationHour], [Hours, 3, 3 * durationHour], [Hours, 6, 6 * durationHour], [Hours, 12, 12 * durationHour], [Day, 1, durationDay], [Week, 1, durationWeek], [Month, 1, durationMonth], [Month, 3, 3 * durationMonth], [Year, 1, durationYear]];\nfunction bin (opt) {\n  const ext = opt.extent,\n    max = opt.maxbins || 40,\n    target = Math.abs(span(ext)) / max;\n  let i = bisector(i => i[2]).right(intervals, target),\n    units,\n    step;\n  if (i === intervals.length) {\n    units = Year, step = tickStep(ext[0] / durationYear, ext[1] / durationYear, max);\n  } else if (i) {\n    i = intervals[target / intervals[i - 1][2] < intervals[i][2] / target ? i - 1 : i];\n    units = i[0];\n    step = i[1];\n  } else {\n    units = Milli;\n    step = Math.max(tickStep(ext[0], ext[1], max), 1);\n  }\n  return {\n    units,\n    step\n  };\n}\n\nexport { DATE, DAY, DAYOFYEAR, HOURS, MILLISECONDS, MINUTES, MONTH, QUARTER, SECONDS, TIME_UNITS, WEEK, YEAR, dayofyear, bin as timeBin, timeFloor, timeInterval, timeOffset, timeSequence, timeUnitSpecifier, timeUnits, utcFloor, utcInterval, utcOffset, utcSequence, utcdayofyear, utcweek, week };\n", "import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n", "import { tickStep } from 'd3-array';\nimport { formatSpecifier, precisionFixed, precisionRound, precisionPrefix, format, formatPrefix, formatLocale } from 'd3-format';\nimport { SECONDS, MINUTES, HOURS, DATE, WEEK, MONTH, QUARTER, YEAR, MILLISECONDS, DAY, timeInterval, utcInterval } from 'vega-time';\nimport { isString, isObject, error, extend } from 'vega-util';\nimport { timeFormat, timeParse, utcFormat, utcParse, timeFormatLocale as timeFormatLocale$1 } from 'd3-time-format';\n\nfunction memoize (method) {\n  const cache = {};\n  return spec => cache[spec] || (cache[spec] = method(spec));\n}\n\nfunction trimZeroes(numberFormat, decimalChar) {\n  return x => {\n    const str = numberFormat(x),\n      dec = str.indexOf(decimalChar);\n    if (dec < 0) return str;\n    let idx = rightmostDigit(str, dec);\n    const end = idx < str.length ? str.slice(idx) : '';\n    while (--idx > dec) if (str[idx] !== '0') {\n      ++idx;\n      break;\n    }\n    return str.slice(0, idx) + end;\n  };\n}\nfunction rightmostDigit(str, dec) {\n  let i = str.lastIndexOf('e'),\n    c;\n  if (i > 0) return i;\n  for (i = str.length; --i > dec;) {\n    c = str.charCodeAt(i);\n    if (c >= 48 && c <= 57) return i + 1; // is digit\n  }\n}\n\nfunction numberLocale(locale) {\n  const format = memoize(locale.format),\n    formatPrefix = locale.formatPrefix;\n  return {\n    format,\n    formatPrefix,\n    formatFloat(spec) {\n      const s = formatSpecifier(spec || ',');\n      if (s.precision == null) {\n        s.precision = 12;\n        switch (s.type) {\n          case '%':\n            s.precision -= 2;\n            break;\n          case 'e':\n            s.precision -= 1;\n            break;\n        }\n        return trimZeroes(format(s),\n        // number format\n        format('.1f')(1)[1] // decimal point character\n        );\n      } else {\n        return format(s);\n      }\n    },\n    formatSpan(start, stop, count, specifier) {\n      specifier = formatSpecifier(specifier == null ? ',f' : specifier);\n      const step = tickStep(start, stop, count),\n        value = Math.max(Math.abs(start), Math.abs(stop));\n      let precision;\n      if (specifier.precision == null) {\n        switch (specifier.type) {\n          case 's':\n            {\n              if (!isNaN(precision = precisionPrefix(step, value))) {\n                specifier.precision = precision;\n              }\n              return formatPrefix(specifier, value);\n            }\n          case '':\n          case 'e':\n          case 'g':\n          case 'p':\n          case 'r':\n            {\n              if (!isNaN(precision = precisionRound(step, value))) {\n                specifier.precision = precision - (specifier.type === 'e');\n              }\n              break;\n            }\n          case 'f':\n          case '%':\n            {\n              if (!isNaN(precision = precisionFixed(step))) {\n                specifier.precision = precision - (specifier.type === '%') * 2;\n              }\n              break;\n            }\n        }\n      }\n      return format(specifier);\n    }\n  };\n}\nlet defaultNumberLocale;\nresetNumberFormatDefaultLocale();\nfunction resetNumberFormatDefaultLocale() {\n  return defaultNumberLocale = numberLocale({\n    format: format,\n    formatPrefix: formatPrefix\n  });\n}\nfunction numberFormatLocale(definition) {\n  return numberLocale(formatLocale(definition));\n}\nfunction numberFormatDefaultLocale(definition) {\n  return arguments.length ? defaultNumberLocale = numberFormatLocale(definition) : defaultNumberLocale;\n}\n\nfunction timeMultiFormat(format, interval, spec) {\n  spec = spec || {};\n  if (!isObject(spec)) {\n    error(`Invalid time multi-format specifier: ${spec}`);\n  }\n  const second = interval(SECONDS),\n    minute = interval(MINUTES),\n    hour = interval(HOURS),\n    day = interval(DATE),\n    week = interval(WEEK),\n    month = interval(MONTH),\n    quarter = interval(QUARTER),\n    year = interval(YEAR),\n    L = format(spec[MILLISECONDS] || '.%L'),\n    S = format(spec[SECONDS] || ':%S'),\n    M = format(spec[MINUTES] || '%I:%M'),\n    H = format(spec[HOURS] || '%I %p'),\n    d = format(spec[DATE] || spec[DAY] || '%a %d'),\n    w = format(spec[WEEK] || '%b %d'),\n    m = format(spec[MONTH] || '%B'),\n    q = format(spec[QUARTER] || '%B'),\n    y = format(spec[YEAR] || '%Y');\n  return date => (second(date) < date ? L : minute(date) < date ? S : hour(date) < date ? M : day(date) < date ? H : month(date) < date ? week(date) < date ? d : w : year(date) < date ? quarter(date) < date ? m : q : y)(date);\n}\nfunction timeLocale(locale) {\n  const timeFormat = memoize(locale.format),\n    utcFormat = memoize(locale.utcFormat);\n  return {\n    timeFormat: spec => isString(spec) ? timeFormat(spec) : timeMultiFormat(timeFormat, timeInterval, spec),\n    utcFormat: spec => isString(spec) ? utcFormat(spec) : timeMultiFormat(utcFormat, utcInterval, spec),\n    timeParse: memoize(locale.parse),\n    utcParse: memoize(locale.utcParse)\n  };\n}\nlet defaultTimeLocale;\nresetTimeFormatDefaultLocale();\nfunction resetTimeFormatDefaultLocale() {\n  return defaultTimeLocale = timeLocale({\n    format: timeFormat,\n    parse: timeParse,\n    utcFormat: utcFormat,\n    utcParse: utcParse\n  });\n}\nfunction timeFormatLocale(definition) {\n  return timeLocale(timeFormatLocale$1(definition));\n}\nfunction timeFormatDefaultLocale(definition) {\n  return arguments.length ? defaultTimeLocale = timeFormatLocale(definition) : defaultTimeLocale;\n}\n\nconst createLocale = (number, time) => extend({}, number, time);\nfunction locale(numberSpec, timeSpec) {\n  const number = numberSpec ? numberFormatLocale(numberSpec) : numberFormatDefaultLocale();\n  const time = timeSpec ? timeFormatLocale(timeSpec) : timeFormatDefaultLocale();\n  return createLocale(number, time);\n}\nfunction defaultLocale(numberSpec, timeSpec) {\n  const args = arguments.length;\n  if (args && args !== 2) {\n    error('defaultLocale expects either zero or two arguments.');\n  }\n  return args ? createLocale(numberFormatDefaultLocale(numberSpec), timeFormatDefaultLocale(timeSpec)) : createLocale(numberFormatDefaultLocale(), timeFormatDefaultLocale());\n}\nfunction resetDefaultLocale() {\n  resetNumberFormatDefaultLocale();\n  resetTimeFormatDefaultLocale();\n  return defaultLocale();\n}\n\nexport { defaultLocale, locale, numberFormatDefaultLocale, numberFormatLocale, resetDefaultLocale, resetNumberFormatDefaultLocale, resetTimeFormatDefaultLocale, timeFormatDefaultLocale, timeFormatLocale };\n", "import { extend, error, stringValue, isFunction, toBoolean, toNumber, toDate, toString, identity, field, isObject, isArray, isIterable, hasOwnProperty } from 'vega-util';\nimport { dsvFormat } from 'd3-dsv';\nimport { feature, mesh } from 'topojson-client';\nimport { timeFormatDefaultLocale } from 'vega-format';\n\n// Matches absolute URLs with optional protocol\n//   https://...    file://...    //...\nconst protocol_re = /^(data:|([A-Za-z]+:)?\\/\\/)/;\n\n// Matches allowed URIs. From https://github.com/cure53/DOMPurify/blob/master/src/regexp.js with added file://\nconst allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i; // eslint-disable-line no-useless-escape\nconst whitespace_re = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g; // eslint-disable-line no-control-regex\n\n// Special treatment in node.js for the file: protocol\nconst fileProtocol = 'file://';\n\n/**\n * Factory for a loader constructor that provides methods for requesting\n * files from either the network or disk, and for sanitizing request URIs.\n * @param {function} fetch - The Fetch API for HTTP network requests.\n *   If null or undefined, HTTP loading will be disabled.\n * @param {object} fs - The file system interface for file loading.\n *   If null or undefined, local file loading will be disabled.\n * @return {function} A loader constructor with the following signature:\n *   param {object} [options] - Optional default loading options to use.\n *   return {object} - A new loader instance.\n */\nfunction loaderFactory (fetch, fs) {\n  return options => ({\n    options: options || {},\n    sanitize: sanitize,\n    load: load,\n    fileAccess: !!fs,\n    file: fileLoader(fs),\n    http: httpLoader(fetch)\n  });\n}\n\n/**\n * Load an external resource, typically either from the web or from the local\n * filesystem. This function uses {@link sanitize} to first sanitize the uri,\n * then calls either {@link http} (for web requests) or {@link file} (for\n * filesystem loading).\n * @param {string} uri - The resource indicator (e.g., URL or filename).\n * @param {object} [options] - Optional loading options. These options will\n *   override any existing default options.\n * @return {Promise} - A promise that resolves to the loaded content.\n */\nasync function load(uri, options) {\n  const opt = await this.sanitize(uri, options),\n    url = opt.href;\n  return opt.localFile ? this.file(url) : this.http(url, options);\n}\n\n/**\n * URI sanitizer function.\n * @param {string} uri - The uri (url or filename) to check.\n * @param {object} options - An options hash.\n * @return {Promise} - A promise that resolves to an object containing\n *  sanitized uri data, or rejects it the input uri is deemed invalid.\n *  The properties of the resolved object are assumed to be\n *  valid attributes for an HTML 'a' tag. The sanitized uri *must* be\n *  provided by the 'href' property of the returned object.\n */\nasync function sanitize(uri, options) {\n  options = extend({}, this.options, options);\n  const fileAccess = this.fileAccess,\n    result = {\n      href: null\n    };\n  let isFile, loadFile, base;\n  const isAllowed = allowed_re.test(uri.replace(whitespace_re, ''));\n  if (uri == null || typeof uri !== 'string' || !isAllowed) {\n    error('Sanitize failure, invalid URI: ' + stringValue(uri));\n  }\n  const hasProtocol = protocol_re.test(uri);\n\n  // if relative url (no protocol/host), prepend baseURL\n  if ((base = options.baseURL) && !hasProtocol) {\n    // Ensure that there is a slash between the baseURL (e.g. hostname) and url\n    if (!uri.startsWith('/') && !base.endsWith('/')) {\n      uri = '/' + uri;\n    }\n    uri = base + uri;\n  }\n\n  // should we load from file system?\n  loadFile = (isFile = uri.startsWith(fileProtocol)) || options.mode === 'file' || options.mode !== 'http' && !hasProtocol && fileAccess;\n  if (isFile) {\n    // strip file protocol\n    uri = uri.slice(fileProtocol.length);\n  } else if (uri.startsWith('//')) {\n    if (options.defaultProtocol === 'file') {\n      // if is file, strip protocol and set loadFile flag\n      uri = uri.slice(2);\n      loadFile = true;\n    } else {\n      // if relative protocol (starts with '//'), prepend default protocol\n      uri = (options.defaultProtocol || 'http') + ':' + uri;\n    }\n  }\n\n  // set non-enumerable mode flag to indicate local file load\n  Object.defineProperty(result, 'localFile', {\n    value: !!loadFile\n  });\n\n  // set uri\n  result.href = uri;\n\n  // set default result target, if specified\n  if (options.target) {\n    result.target = options.target + '';\n  }\n\n  // set default result rel, if specified (#1542)\n  if (options.rel) {\n    result.rel = options.rel + '';\n  }\n\n  // provide control over cross-origin image handling (#2238)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n  if (options.context === 'image' && options.crossOrigin) {\n    result.crossOrigin = options.crossOrigin + '';\n  }\n\n  // return\n  return result;\n}\n\n/**\n * File system loader factory.\n * @param {object} fs - The file system interface.\n * @return {function} - A file loader with the following signature:\n *   param {string} filename - The file system path to load.\n *   param {string} filename - The file system path to load.\n *   return {Promise} A promise that resolves to the file contents.\n */\nfunction fileLoader(fs) {\n  return fs ? filename => new Promise((accept, reject) => {\n    fs.readFile(filename, (error, data) => {\n      if (error) reject(error);else accept(data);\n    });\n  }) : fileReject;\n}\n\n/**\n * Default file system loader that simply rejects.\n */\nasync function fileReject() {\n  error('No file system access.');\n}\n\n/**\n * HTTP request handler factory.\n * @param {function} fetch - The Fetch API method.\n * @return {function} - An http loader with the following signature:\n *   param {string} url - The url to request.\n *   param {object} options - An options hash.\n *   return {Promise} - A promise that resolves to the file contents.\n */\nfunction httpLoader(fetch) {\n  return fetch ? async function (url, options) {\n    const opt = extend({}, this.options.http, options),\n      type = options && options.response,\n      response = await fetch(url, opt);\n    return !response.ok ? error(response.status + '' + response.statusText) : isFunction(response[type]) ? response[type]() : response.text();\n  } : httpReject;\n}\n\n/**\n * Default http request handler that simply rejects.\n */\nasync function httpReject() {\n  error('No HTTP fetch method available.');\n}\n\nconst isValid = _ => _ != null && _ === _;\nconst isBoolean = _ => _ === 'true' || _ === 'false' || _ === true || _ === false;\nconst isDate = _ => !Number.isNaN(Date.parse(_));\nconst isNumber = _ => !Number.isNaN(+_) && !(_ instanceof Date);\nconst isInteger = _ => isNumber(_) && Number.isInteger(+_);\nconst typeParsers = {\n  boolean: toBoolean,\n  integer: toNumber,\n  number: toNumber,\n  date: toDate,\n  string: toString,\n  unknown: identity\n};\nconst typeTests = [isBoolean, isInteger, isNumber, isDate];\nconst typeList = ['boolean', 'integer', 'number', 'date'];\nfunction inferType(values, field) {\n  if (!values || !values.length) return 'unknown';\n  const n = values.length,\n    m = typeTests.length,\n    a = typeTests.map((_, i) => i + 1);\n  for (let i = 0, t = 0, j, value; i < n; ++i) {\n    value = field ? values[i][field] : values[i];\n    for (j = 0; j < m; ++j) {\n      if (a[j] && isValid(value) && !typeTests[j](value)) {\n        a[j] = 0;\n        ++t;\n        if (t === typeTests.length) return 'string';\n      }\n    }\n  }\n  return typeList[a.reduce((u, v) => u === 0 ? v : u, 0) - 1];\n}\nfunction inferTypes(data, fields) {\n  return fields.reduce((types, field) => {\n    types[field] = inferType(data, field);\n    return types;\n  }, {});\n}\n\nfunction delimitedFormat(delimiter) {\n  const parse = function (data, format) {\n    const delim = {\n      delimiter: delimiter\n    };\n    return dsv(data, format ? extend(format, delim) : delim);\n  };\n  parse.responseType = 'text';\n  return parse;\n}\nfunction dsv(data, format) {\n  if (format.header) {\n    data = format.header.map(stringValue).join(format.delimiter) + '\\n' + data;\n  }\n  return dsvFormat(format.delimiter).parse(data + '');\n}\ndsv.responseType = 'text';\n\nfunction isBuffer(_) {\n  return typeof Buffer === 'function' && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(_) : false;\n}\nfunction json(data, format) {\n  const prop = format && format.property ? field(format.property) : identity;\n  return isObject(data) && !isBuffer(data) ? parseJSON(prop(data), format) : prop(JSON.parse(data));\n}\njson.responseType = 'json';\nfunction parseJSON(data, format) {\n  if (!isArray(data) && isIterable(data)) {\n    data = [...data];\n  }\n  return format && format.copy ? JSON.parse(JSON.stringify(data)) : data;\n}\n\nconst filters = {\n  interior: (a, b) => a !== b,\n  exterior: (a, b) => a === b\n};\nfunction topojson(data, format) {\n  let method, object, property, filter;\n  data = json(data, format);\n  if (format && format.feature) {\n    method = feature;\n    property = format.feature;\n  } else if (format && format.mesh) {\n    method = mesh;\n    property = format.mesh;\n    filter = filters[format.filter];\n  } else {\n    error('Missing TopoJSON feature or mesh parameter.');\n  }\n  object = (object = data.objects[property]) ? method(data, object, filter) : error('Invalid TopoJSON object: ' + property);\n  return object && object.features || [object];\n}\ntopojson.responseType = 'json';\n\nconst format = {\n  dsv: dsv,\n  csv: delimitedFormat(','),\n  tsv: delimitedFormat('\\t'),\n  json: json,\n  topojson: topojson\n};\nfunction formats(name, reader) {\n  if (arguments.length > 1) {\n    format[name] = reader;\n    return this;\n  } else {\n    return hasOwnProperty(format, name) ? format[name] : null;\n  }\n}\nfunction responseType(type) {\n  const f = formats(type);\n  return f && f.responseType || 'text';\n}\n\nfunction read (data, schema, timeParser, utcParser) {\n  schema = schema || {};\n  const reader = formats(schema.type || 'json');\n  if (!reader) error('Unknown data format type: ' + schema.type);\n  data = reader(data, schema);\n  if (schema.parse) parse(data, schema.parse, timeParser, utcParser);\n  if (hasOwnProperty(data, 'columns')) delete data.columns;\n  return data;\n}\nfunction parse(data, types, timeParser, utcParser) {\n  if (!data.length) return; // early exit for empty data\n\n  const locale = timeFormatDefaultLocale();\n  timeParser = timeParser || locale.timeParse;\n  utcParser = utcParser || locale.utcParse;\n  let fields = data.columns || Object.keys(data[0]),\n    datum,\n    field,\n    i,\n    j,\n    n,\n    m;\n  if (types === 'auto') types = inferTypes(data, fields);\n  fields = Object.keys(types);\n  const parsers = fields.map(field => {\n    const type = types[field];\n    let parts, pattern;\n    if (type && (type.startsWith('date:') || type.startsWith('utc:'))) {\n      parts = type.split(/:(.+)?/, 2); // split on first :\n      pattern = parts[1];\n      if (pattern[0] === '\\'' && pattern[pattern.length - 1] === '\\'' || pattern[0] === '\"' && pattern[pattern.length - 1] === '\"') {\n        pattern = pattern.slice(1, -1);\n      }\n      const parse = parts[0] === 'utc' ? utcParser : timeParser;\n      return parse(pattern);\n    }\n    if (!typeParsers[type]) {\n      throw Error('Illegal format pattern: ' + field + ':' + type);\n    }\n    return typeParsers[type];\n  });\n  for (i = 0, n = data.length, m = fields.length; i < n; ++i) {\n    datum = data[i];\n    for (j = 0; j < m; ++j) {\n      field = fields[j];\n      datum[field] = parsers[j](datum[field]);\n    }\n  }\n}\n\nconst loader = loaderFactory(typeof fetch !== 'undefined' && fetch,\n// use built-in fetch API\nnull // no file system access\n);\n\nexport { format, formats, inferType, inferTypes, loader, read, responseType, typeParsers };\n", "import { identity, array, isFunction, constant, isArray, id, error, truthy, debounce, extend, visitArray, inherits, logger, Error, hasOwnProperty } from 'vega-util';\nimport { read, responseType, loader } from 'vega-loader';\nimport { defaultLocale } from 'vega-format';\n\nfunction UniqueList(idFunc) {\n  const $ = idFunc || identity,\n    list = [],\n    ids = {};\n  list.add = _ => {\n    const id = $(_);\n    if (!ids[id]) {\n      ids[id] = 1;\n      list.push(_);\n    }\n    return list;\n  };\n  list.remove = _ => {\n    const id = $(_);\n    if (ids[id]) {\n      ids[id] = 0;\n      const idx = list.indexOf(_);\n      if (idx >= 0) list.splice(idx, 1);\n    }\n    return list;\n  };\n  return list;\n}\n\n/**\n * Invoke and await a potentially async callback function. If\n * an error occurs, trap it and route to Dataflow.error.\n * @param {Dataflow} df - The dataflow instance\n * @param {function} callback - A callback function to invoke\n *   and then await. The dataflow will be passed as the single\n *   argument to the function.\n */\nasync function asyncCallback (df, callback) {\n  try {\n    await callback(df);\n  } catch (err) {\n    df.error(err);\n  }\n}\n\nconst TUPLE_ID_KEY = Symbol('vega_id');\nlet TUPLE_ID = 1;\n\n/**\n * Checks if an input value is a registered tuple.\n * @param {*} t - The value to check.\n * @return {boolean} True if the input is a tuple, false otherwise.\n */\nfunction isTuple(t) {\n  return !!(t && tupleid(t));\n}\n\n/**\n * Returns the id of a tuple.\n * @param {object} t - The input tuple.\n * @return {*} the tuple id.\n */\nfunction tupleid(t) {\n  return t[TUPLE_ID_KEY];\n}\n\n/**\n * Sets the id of a tuple.\n * @param {object} t - The input tuple.\n * @param {*} id - The id value to set.\n * @return {object} the input tuple.\n */\nfunction setid(t, id) {\n  t[TUPLE_ID_KEY] = id;\n  return t;\n}\n\n/**\n * Ingest an object or value as a data tuple.\n * If the input value is an object, an id field will be added to it. For\n * efficiency, the input object is modified directly. A copy is not made.\n * If the input value is a literal, it will be wrapped in a new object\n * instance, with the value accessible as the 'data' property.\n * @param datum - The value to ingest.\n * @return {object} The ingested data tuple.\n */\nfunction ingest$1(datum) {\n  const t = datum === Object(datum) ? datum : {\n    data: datum\n  };\n  return tupleid(t) ? t : setid(t, TUPLE_ID++);\n}\n\n/**\n * Given a source tuple, return a derived copy.\n * @param {object} t - The source tuple.\n * @return {object} The derived tuple.\n */\nfunction derive(t) {\n  return rederive(t, ingest$1({}));\n}\n\n/**\n * Rederive a derived tuple by copying values from the source tuple.\n * @param {object} t - The source tuple.\n * @param {object} d - The derived tuple.\n * @return {object} The derived tuple.\n */\nfunction rederive(t, d) {\n  for (const k in t) d[k] = t[k];\n  return d;\n}\n\n/**\n * Replace an existing tuple with a new tuple.\n * @param {object} t - The existing data tuple.\n * @param {object} d - The new tuple that replaces the old.\n * @return {object} The new tuple.\n */\nfunction replace(t, d) {\n  return setid(d, tupleid(t));\n}\n\n/**\n * Generate an augmented comparator function that provides stable\n * sorting by tuple id when the given comparator produces ties.\n * @param {function} cmp - The comparator to augment.\n * @param {function} [f] - Optional tuple accessor function.\n * @return {function} An augmented comparator function.\n */\nfunction stableCompare(cmp, f) {\n  return !cmp ? null : f ? (a, b) => cmp(a, b) || tupleid(f(a)) - tupleid(f(b)) : (a, b) => cmp(a, b) || tupleid(a) - tupleid(b);\n}\n\nfunction isChangeSet(v) {\n  return v && v.constructor === changeset;\n}\nfunction changeset() {\n  const add = [],\n    // insert tuples\n    rem = [],\n    // remove tuples\n    mod = [],\n    // modify tuples\n    remp = [],\n    // remove by predicate\n    modp = []; // modify by predicate\n  let clean = null,\n    reflow = false;\n  return {\n    constructor: changeset,\n    insert(t) {\n      const d = array(t),\n        n = d.length;\n      for (let i = 0; i < n; ++i) add.push(d[i]);\n      return this;\n    },\n    remove(t) {\n      const a = isFunction(t) ? remp : rem,\n        d = array(t),\n        n = d.length;\n      for (let i = 0; i < n; ++i) a.push(d[i]);\n      return this;\n    },\n    modify(t, field, value) {\n      const m = {\n        field: field,\n        value: constant(value)\n      };\n      if (isFunction(t)) {\n        m.filter = t;\n        modp.push(m);\n      } else {\n        m.tuple = t;\n        mod.push(m);\n      }\n      return this;\n    },\n    encode(t, set) {\n      if (isFunction(t)) modp.push({\n        filter: t,\n        field: set\n      });else mod.push({\n        tuple: t,\n        field: set\n      });\n      return this;\n    },\n    clean(value) {\n      clean = value;\n      return this;\n    },\n    reflow() {\n      reflow = true;\n      return this;\n    },\n    pulse(pulse, tuples) {\n      const cur = {},\n        out = {};\n      let i, n, m, f, t, id;\n\n      // build lookup table of current tuples\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        cur[tupleid(tuples[i])] = 1;\n      }\n\n      // process individual tuples to remove\n      for (i = 0, n = rem.length; i < n; ++i) {\n        t = rem[i];\n        cur[tupleid(t)] = -1;\n      }\n\n      // process predicate-based removals\n      for (i = 0, n = remp.length; i < n; ++i) {\n        f = remp[i];\n        tuples.forEach(t => {\n          if (f(t)) cur[tupleid(t)] = -1;\n        });\n      }\n\n      // process all add tuples\n      for (i = 0, n = add.length; i < n; ++i) {\n        t = add[i];\n        id = tupleid(t);\n        if (cur[id]) {\n          // tuple already resides in dataset\n          // if flagged for both add and remove, cancel\n          cur[id] = 1;\n        } else {\n          // tuple does not reside in dataset, add\n          pulse.add.push(ingest$1(add[i]));\n        }\n      }\n\n      // populate pulse rem list\n      for (i = 0, n = tuples.length; i < n; ++i) {\n        t = tuples[i];\n        if (cur[tupleid(t)] < 0) pulse.rem.push(t);\n      }\n\n      // modify helper method\n      function modify(t, f, v) {\n        if (v) {\n          t[f] = v(t);\n        } else {\n          pulse.encode = f;\n        }\n        if (!reflow) out[tupleid(t)] = t;\n      }\n\n      // process individual tuples to modify\n      for (i = 0, n = mod.length; i < n; ++i) {\n        m = mod[i];\n        t = m.tuple;\n        f = m.field;\n        id = cur[tupleid(t)];\n        if (id > 0) {\n          modify(t, f, m.value);\n          pulse.modifies(f);\n        }\n      }\n\n      // process predicate-based modifications\n      for (i = 0, n = modp.length; i < n; ++i) {\n        m = modp[i];\n        f = m.filter;\n        tuples.forEach(t => {\n          if (f(t) && cur[tupleid(t)] > 0) {\n            modify(t, m.field, m.value);\n          }\n        });\n        pulse.modifies(m.field);\n      }\n\n      // upon reflow request, populate mod with all non-removed tuples\n      // otherwise, populate mod with modified tuples only\n      if (reflow) {\n        pulse.mod = rem.length || remp.length ? tuples.filter(t => cur[tupleid(t)] > 0) : tuples.slice();\n      } else {\n        for (id in out) pulse.mod.push(out[id]);\n      }\n\n      // set pulse garbage collection request\n      if (clean || clean == null && (rem.length || remp.length)) {\n        pulse.clean(true);\n      }\n      return pulse;\n    }\n  };\n}\n\nconst CACHE = '_:mod:_';\n\n/**\n * Hash that tracks modifications to assigned values.\n * Callers *must* use the set method to update values.\n */\nfunction Parameters() {\n  Object.defineProperty(this, CACHE, {\n    writable: true,\n    value: {}\n  });\n}\nParameters.prototype = {\n  /**\n   * Set a parameter value. If the parameter value changes, the parameter\n   * will be recorded as modified.\n   * @param {string} name - The parameter name.\n   * @param {number} index - The index into an array-value parameter. Ignored if\n   *   the argument is undefined, null or less than zero.\n   * @param {*} value - The parameter value to set.\n   * @param {boolean} [force=false] - If true, records the parameter as modified\n   *   even if the value is unchanged.\n   * @return {Parameters} - This parameter object.\n   */\n  set(name, index, value, force) {\n    const o = this,\n      v = o[name],\n      mod = o[CACHE];\n    if (index != null && index >= 0) {\n      if (v[index] !== value || force) {\n        v[index] = value;\n        mod[index + ':' + name] = -1;\n        mod[name] = -1;\n      }\n    } else if (v !== value || force) {\n      o[name] = value;\n      mod[name] = isArray(value) ? 1 + value.length : -1;\n    }\n    return o;\n  },\n  /**\n   * Tests if one or more parameters has been modified. If invoked with no\n   * arguments, returns true if any parameter value has changed. If the first\n   * argument is array, returns trues if any parameter name in the array has\n   * changed. Otherwise, tests if the given name and optional array index has\n   * changed.\n   * @param {string} name - The parameter name to test.\n   * @param {number} [index=undefined] - The parameter array index to test.\n   * @return {boolean} - Returns true if a queried parameter was modified.\n   */\n  modified(name, index) {\n    const mod = this[CACHE];\n    if (!arguments.length) {\n      for (const k in mod) {\n        if (mod[k]) return true;\n      }\n      return false;\n    } else if (isArray(name)) {\n      for (let k = 0; k < name.length; ++k) {\n        if (mod[name[k]]) return true;\n      }\n      return false;\n    }\n    return index != null && index >= 0 ? index + 1 < mod[name] || !!mod[index + ':' + name] : !!mod[name];\n  },\n  /**\n   * Clears the modification records. After calling this method,\n   * all parameters are considered unmodified.\n   */\n  clear() {\n    this[CACHE] = {};\n    return this;\n  }\n};\n\nlet OP_ID = 0;\nconst PULSE = 'pulse',\n  NO_PARAMS = new Parameters();\n\n// Boolean Flags\nconst SKIP$1 = 1,\n  MODIFIED = 2;\n\n/**\n * An Operator is a processing node in a dataflow graph.\n * Each operator stores a value and an optional value update function.\n * Operators can accept a hash of named parameters. Parameter values can\n * either be direct (JavaScript literals, arrays, objects) or indirect\n * (other operators whose values will be pulled dynamically). Operators\n * included as parameters will have this operator added as a dependency.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {function(object, Pulse)} [update] - An update function. Upon\n *   evaluation of this operator, the update function will be invoked and the\n *   return value will be used as the new value of this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @see parameters\n */\nfunction Operator(init, update, params, react) {\n  this.id = ++OP_ID;\n  this.value = init;\n  this.stamp = -1;\n  this.rank = -1;\n  this.qrank = -1;\n  this.flags = 0;\n  if (update) {\n    this._update = update;\n  }\n  if (params) this.parameters(params, react);\n}\nfunction flag(bit) {\n  return function (state) {\n    const f = this.flags;\n    if (arguments.length === 0) return !!(f & bit);\n    this.flags = state ? f | bit : f & ~bit;\n    return this;\n  };\n}\nOperator.prototype = {\n  /**\n   * Returns a list of target operators dependent on this operator.\n   * If this list does not exist, it is created and then returned.\n   * @return {UniqueList}\n   */\n  targets() {\n    return this._targets || (this._targets = UniqueList(id));\n  },\n  /**\n   * Sets the value of this operator.\n   * @param {*} value - the value to set.\n   * @return {Number} Returns 1 if the operator value has changed\n   *   according to strict equality, returns 0 otherwise.\n   */\n  set(value) {\n    if (this.value !== value) {\n      this.value = value;\n      return 1;\n    } else {\n      return 0;\n    }\n  },\n  /**\n   * Indicates that operator evaluation should be skipped on the next pulse.\n   * This operator will still propagate incoming pulses, but its update function\n   * will not be invoked. The skip flag is reset after every pulse, so calling\n   * this method will affect processing of the next pulse only.\n   */\n  skip: flag(SKIP$1),\n  /**\n   * Indicates that this operator's value has been modified on its most recent\n   * pulse. Normally modification is checked via strict equality; however, in\n   * some cases it is more efficient to update the internal state of an object.\n   * In those cases, the modified flag can be used to trigger propagation. Once\n   * set, the modification flag persists across pulses until unset. The flag can\n   * be used with the last timestamp to test if a modification is recent.\n   */\n  modified: flag(MODIFIED),\n  /**\n   * Sets the parameters for this operator. The parameter values are analyzed for\n   * operator instances. If found, this operator will be added as a dependency\n   * of the parameterizing operator. Operator values are dynamically marshalled\n   * from each operator parameter prior to evaluation. If a parameter value is\n   * an array, the array will also be searched for Operator instances. However,\n   * the search does not recurse into sub-arrays or object properties.\n   * @param {object} params - A hash of operator parameters.\n   * @param {boolean} [react=true] - A flag indicating if this operator should\n   *   automatically update (react) when parameter values change. In other words,\n   *   this flag determines if the operator registers itself as a listener on\n   *   any upstream operators included in the parameters.\n   * @param {boolean} [initonly=false] - A flag indicating if this operator\n   *   should calculate an update only upon its initial evaluation, then\n   *   deregister dependencies and suppress all future update invocations.\n   * @return {Operator[]} - An array of upstream dependencies.\n   */\n  parameters(params, react, initonly) {\n    react = react !== false;\n    const argval = this._argval = this._argval || new Parameters(),\n      argops = this._argops = this._argops || [],\n      deps = [];\n    let name, value, n, i;\n    const add = (name, index, value) => {\n      if (value instanceof Operator) {\n        if (value !== this) {\n          if (react) value.targets().add(this);\n          deps.push(value);\n        }\n        argops.push({\n          op: value,\n          name: name,\n          index: index\n        });\n      } else {\n        argval.set(name, index, value);\n      }\n    };\n    for (name in params) {\n      value = params[name];\n      if (name === PULSE) {\n        array(value).forEach(op => {\n          if (!(op instanceof Operator)) {\n            error('Pulse parameters must be operator instances.');\n          } else if (op !== this) {\n            op.targets().add(this);\n            deps.push(op);\n          }\n        });\n        this.source = value;\n      } else if (isArray(value)) {\n        argval.set(name, -1, Array(n = value.length));\n        for (i = 0; i < n; ++i) add(name, i, value[i]);\n      } else {\n        add(name, -1, value);\n      }\n    }\n    this.marshall().clear(); // initialize values\n    if (initonly) argops.initonly = true;\n    return deps;\n  },\n  /**\n   * Internal method for marshalling parameter values.\n   * Visits each operator dependency to pull the latest value.\n   * @return {Parameters} A Parameters object to pass to the update function.\n   */\n  marshall(stamp) {\n    const argval = this._argval || NO_PARAMS,\n      argops = this._argops;\n    let item, i, op, mod;\n    if (argops) {\n      const n = argops.length;\n      for (i = 0; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n        mod = op.modified() && op.stamp === stamp;\n        argval.set(item.name, item.index, op.value, mod);\n      }\n      if (argops.initonly) {\n        for (i = 0; i < n; ++i) {\n          item = argops[i];\n          item.op.targets().remove(this);\n        }\n        this._argops = null;\n        this._update = null;\n      }\n    }\n    return argval;\n  },\n  /**\n   * Detach this operator from the dataflow.\n   * Unregisters listeners on upstream dependencies.\n   */\n  detach() {\n    const argops = this._argops;\n    let i, n, item, op;\n    if (argops) {\n      for (i = 0, n = argops.length; i < n; ++i) {\n        item = argops[i];\n        op = item.op;\n        if (op._targets) {\n          op._targets.remove(this);\n        }\n      }\n    }\n\n    // remove references to the source and pulse object,\n    // if present, to prevent memory leaks of old data.\n    this.pulse = null;\n    this.source = null;\n  },\n  /**\n   * Delegate method to perform operator processing.\n   * Subclasses can override this method to perform custom processing.\n   * By default, it marshalls parameters and calls the update function\n   * if that function is defined. If the update function does not\n   * change the operator value then StopPropagation is returned.\n   * If no update function is defined, this method does nothing.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return The output pulse or StopPropagation. A falsy return value\n   *   (including undefined) will let the input pulse pass through.\n   */\n  evaluate(pulse) {\n    const update = this._update;\n    if (update) {\n      const params = this.marshall(pulse.stamp),\n        v = update.call(this, params, pulse);\n      params.clear();\n      if (v !== this.value) {\n        this.value = v;\n      } else if (!this.modified()) {\n        return pulse.StopPropagation;\n      }\n    }\n  },\n  /**\n   * Run this operator for the current pulse. If this operator has already\n   * been run at (or after) the pulse timestamp, returns StopPropagation.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n    if (this.skip()) {\n      this.skip(false);\n      rv = 0;\n    } else {\n      rv = this.evaluate(pulse);\n    }\n    return this.pulse = rv || pulse;\n  }\n};\n\n/**\n * Add an operator to the dataflow graph. This function accepts a\n * variety of input argument types. The basic signature supports an\n * initial value, update function and parameters. If the first parameter\n * is an Operator instance, it will be added directly. If it is a\n * constructor for an Operator subclass, a new instance will be instantiated.\n * Otherwise, if the first parameter is a function instance, it will be used\n * as the update function and a null initial value is assumed.\n * @param {*} init - One of: the operator to add, the initial value of\n *   the operator, an operator class to instantiate, or an update function.\n * @param {function} [update] - The operator update function.\n * @param {object} [params] - The operator parameters.\n * @param {boolean} [react=true] - Flag indicating if this operator should\n *   listen for changes to upstream operators included as parameters.\n * @return {Operator} - The added operator.\n */\nfunction add (init, update, params, react) {\n  let shift = 1,\n    op;\n  if (init instanceof Operator) {\n    op = init;\n  } else if (init && init.prototype instanceof Operator) {\n    op = new init();\n  } else if (isFunction(init)) {\n    op = new Operator(null, init);\n  } else {\n    shift = 0;\n    op = new Operator(init, update);\n  }\n  this.rank(op);\n  if (shift) {\n    react = params;\n    params = update;\n  }\n  if (params) this.connect(op, op.parameters(params, react));\n  this.touch(op);\n  return op;\n}\n\n/**\n * Connect a target operator as a dependent of source operators.\n * If necessary, this method will rerank the target operator and its\n * dependents to ensure propagation proceeds in a topologically sorted order.\n * @param {Operator} target - The target operator.\n * @param {Array<Operator>} - The source operators that should propagate\n *   to the target operator.\n */\nfunction connect (target, sources) {\n  const targetRank = target.rank,\n    n = sources.length;\n  for (let i = 0; i < n; ++i) {\n    if (targetRank < sources[i].rank) {\n      this.rerank(target);\n      return;\n    }\n  }\n}\n\nlet STREAM_ID = 0;\n\n/**\n * Models an event stream.\n * @constructor\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @param {function(Object)} [receive] - Event callback function to invoke\n *   upon receipt of a new event. Use to override standard event processing.\n */\nfunction EventStream(filter, apply, receive) {\n  this.id = ++STREAM_ID;\n  this.value = null;\n  if (receive) this.receive = receive;\n  if (filter) this._filter = filter;\n  if (apply) this._apply = apply;\n}\n\n/**\n * Creates a new event stream instance with the provided\n * (optional) filter, apply and receive functions.\n * @param {function(Object, number): boolean} [filter] - Filter predicate.\n *   Events pass through when truthy, events are suppressed when falsy.\n * @param {function(Object): *} [apply] - Applied to input events to produce\n *   new event values.\n * @see EventStream\n */\nfunction stream(filter, apply, receive) {\n  return new EventStream(filter, apply, receive);\n}\nEventStream.prototype = {\n  _filter: truthy,\n  _apply: identity,\n  targets() {\n    return this._targets || (this._targets = UniqueList(id));\n  },\n  consume(_) {\n    if (!arguments.length) return !!this._consume;\n    this._consume = !!_;\n    return this;\n  },\n  receive(evt) {\n    if (this._filter(evt)) {\n      const val = this.value = this._apply(evt),\n        trg = this._targets,\n        n = trg ? trg.length : 0;\n      for (let i = 0; i < n; ++i) trg[i].receive(val);\n      if (this._consume) {\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n  },\n  filter(filter) {\n    const s = stream(filter);\n    this.targets().add(s);\n    return s;\n  },\n  apply(apply) {\n    const s = stream(null, apply);\n    this.targets().add(s);\n    return s;\n  },\n  merge() {\n    const s = stream();\n    this.targets().add(s);\n    for (let i = 0, n = arguments.length; i < n; ++i) {\n      arguments[i].targets().add(s);\n    }\n    return s;\n  },\n  throttle(pause) {\n    let t = -1;\n    return this.filter(() => {\n      const now = Date.now();\n      if (now - t > pause) {\n        t = now;\n        return 1;\n      } else {\n        return 0;\n      }\n    });\n  },\n  debounce(delay) {\n    const s = stream();\n    this.targets().add(stream(null, null, debounce(delay, e => {\n      const df = e.dataflow;\n      s.receive(e);\n      if (df && df.run) df.run();\n    })));\n    return s;\n  },\n  between(a, b) {\n    let active = false;\n    a.targets().add(stream(null, null, () => active = true));\n    b.targets().add(stream(null, null, () => active = false));\n    return this.filter(() => active);\n  },\n  detach() {\n    // ensures compatibility with operators (#2753)\n    // remove references to other streams and filter functions that may\n    // be bound to subcontexts that need to be garbage collected.\n    this._filter = truthy;\n    this._targets = null;\n  }\n};\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor. The input must\n *  support the addEventListener method.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @param {function(object): *} [apply] - Event application function.\n *   If provided, this function will be invoked and the result will be\n *   used as the downstream event value.\n * @return {EventStream}\n */\nfunction events (source, type, filter, apply) {\n  const df = this,\n    s = stream(filter, apply),\n    send = function (e) {\n      e.dataflow = df;\n      try {\n        s.receive(e);\n      } catch (error) {\n        df.error(error);\n      } finally {\n        df.run();\n      }\n    };\n  let sources;\n  if (typeof source === 'string' && typeof document !== 'undefined') {\n    sources = document.querySelectorAll(source);\n  } else {\n    sources = array(source);\n  }\n  const n = sources.length;\n  for (let i = 0; i < n; ++i) {\n    sources[i].addEventListener(type, send);\n  }\n  return s;\n}\n\nfunction parse(data, format) {\n  const locale = this.locale();\n  return read(data, format, locale.timeParse, locale.utcParse);\n}\n\n/**\n * Ingests new data into the dataflow. First parses the data using the\n * vega-loader read method, then pulses a changeset to the target operator.\n * @param {Operator} target - The Operator to target with ingested data,\n *   typically a Collect transform instance.\n * @param {*} data - The input data, prior to parsing. For JSON this may\n *   be a string or an object. For CSV, TSV, etc should be a string.\n * @param {object} format - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @returns {Dataflow}\n */\nfunction ingest(target, data, format) {\n  data = this.parse(data, format);\n  return this.pulse(target, this.changeset().insert(data));\n}\n\n/**\n * Request data from an external source, parse it, and return a Promise.\n * @param {string} url - The URL from which to load the data. This string\n *   is passed to the vega-loader load method.\n * @param {object} [format] - The data format description for parsing\n *   loaded data. This object is passed to the vega-loader read method.\n * @return {Promise} A Promise that resolves upon completion of the request.\n *   The resolved object contains the following properties:\n *   - data: an array of parsed data (or null upon error)\n *   - status: a code for success (0), load fail (-1), or parse fail (-2)\n */\nasync function request(url, format) {\n  const df = this;\n  let status = 0,\n    data;\n  try {\n    data = await df.loader().load(url, {\n      context: 'dataflow',\n      response: responseType(format && format.type)\n    });\n    try {\n      data = df.parse(data, format);\n    } catch (err) {\n      status = -2;\n      df.warn('Data ingestion failed', url, err);\n    }\n  } catch (err) {\n    status = -1;\n    df.warn('Loading failed', url, err);\n  }\n  return {\n    data,\n    status\n  };\n}\nasync function preload(target, url, format) {\n  const df = this,\n    pending = df._pending || loadPending(df);\n  pending.requests += 1;\n  const res = await df.request(url, format);\n  df.pulse(target, df.changeset().remove(truthy).insert(res.data || []));\n  pending.done();\n  return res;\n}\nfunction loadPending(df) {\n  let accept;\n  const pending = new Promise(a => accept = a);\n  pending.requests = 0;\n  pending.done = () => {\n    if (--pending.requests === 0) {\n      df._pending = null;\n      accept(df);\n    }\n  };\n  return df._pending = pending;\n}\n\nconst SKIP = {\n  skip: true\n};\n\n/**\n * Perform operator updates in response to events. Applies an\n * update function to compute a new operator value. If the update function\n * returns a {@link ChangeSet}, the operator will be pulsed with those tuple\n * changes. Otherwise, the operator value will be updated to the return value.\n * @param {EventStream|Operator} source - The event source to react to.\n *   This argument can be either an EventStream or an Operator.\n * @param {Operator|function(object):Operator} target - The operator to update.\n *   This argument can either be an Operator instance or (if the source\n *   argument is an EventStream), a function that accepts an event object as\n *   input and returns an Operator to target.\n * @param {function(Parameters,Event): *} [update] - Optional update function\n *   to compute the new operator value, or a literal value to set. Update\n *   functions expect to receive a parameter object and event as arguments.\n *   This function can either return a new operator value or (if the source\n *   argument is an EventStream) a {@link ChangeSet} instance to pulse\n *   the target operator with tuple changes.\n * @param {object} [params] - The update function parameters.\n * @param {object} [options] - Additional options hash. If not overridden,\n *   updated operators will be skipped by default.\n * @param {boolean} [options.skip] - If true, the operator will\n *  be skipped: it will not be evaluated, but its dependents will be.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @return {Dataflow}\n */\nfunction on (source, target, update, params, options) {\n  const fn = source instanceof Operator ? onOperator : onStream;\n  fn(this, source, target, update, params, options);\n  return this;\n}\nfunction onStream(df, stream, target, update, params, options) {\n  const opt = extend({}, options, SKIP);\n  let func, op;\n  if (!isFunction(target)) target = constant(target);\n  if (update === undefined) {\n    func = e => df.touch(target(e));\n  } else if (isFunction(update)) {\n    op = new Operator(null, update, params, false);\n    func = e => {\n      op.evaluate(e);\n      const t = target(e),\n        v = op.value;\n      isChangeSet(v) ? df.pulse(t, v, options) : df.update(t, v, opt);\n    };\n  } else {\n    func = e => df.update(target(e), update, opt);\n  }\n  stream.apply(func);\n}\nfunction onOperator(df, source, target, update, params, options) {\n  if (update === undefined) {\n    source.targets().add(target);\n  } else {\n    const opt = options || {},\n      op = new Operator(null, updater(target, update), params, false);\n    op.modified(opt.force);\n    op.rank = source.rank; // immediately follow source\n    source.targets().add(op); // add dependency\n\n    if (target) {\n      op.skip(true); // skip first invocation\n      op.value = target.value; // initialize value\n      op.targets().add(target); // chain dependencies\n      df.connect(target, [op]); // rerank as needed, #1672\n    }\n  }\n}\n\nfunction updater(target, update) {\n  update = isFunction(update) ? update : constant(update);\n  return target ? function (_, pulse) {\n    const value = update(_, pulse);\n    if (!target.skip()) {\n      target.skip(value !== this.value).value = value;\n    }\n    return value;\n  } : update;\n}\n\n/**\n * Assigns a rank to an operator. Ranks are assigned in increasing order\n * by incrementing an internal rank counter.\n * @param {Operator} op - The operator to assign a rank.\n */\nfunction rank(op) {\n  op.rank = ++this._rank;\n}\n\n/**\n * Re-ranks an operator and all downstream target dependencies. This\n * is necessary when upstream dependencies of higher rank are added to\n * a target operator.\n * @param {Operator} op - The operator to re-rank.\n */\nfunction rerank(op) {\n  const queue = [op];\n  let cur, list, i;\n  while (queue.length) {\n    this.rank(cur = queue.pop());\n    if (list = cur._targets) {\n      for (i = list.length; --i >= 0;) {\n        queue.push(cur = list[i]);\n        if (cur === op) error('Cycle detected in dataflow graph.');\n      }\n    }\n  }\n}\n\n/**\n * Sentinel value indicating pulse propagation should stop.\n */\nconst StopPropagation = {};\n\n// Pulse visit type flags\nconst ADD = 1 << 0,\n  REM = 1 << 1,\n  MOD = 1 << 2,\n  ADD_REM = ADD | REM,\n  ADD_MOD = ADD | MOD,\n  ALL = ADD | REM | MOD,\n  REFLOW = 1 << 3,\n  SOURCE = 1 << 4,\n  NO_SOURCE = 1 << 5,\n  NO_FIELDS = 1 << 6;\n\n/**\n * A Pulse enables inter-operator communication during a run of the\n * dataflow graph. In addition to the current timestamp, a pulse may also\n * contain a change-set of added, removed or modified data tuples, as well as\n * a pointer to a full backing data source. Tuple change sets may not\n * be fully materialized; for example, to prevent needless array creation\n * a change set may include larger arrays and corresponding filter functions.\n * The pulse provides a {@link visit} method to enable proper and efficient\n * iteration over requested data tuples.\n *\n * In addition, each pulse can track modification flags for data tuple fields.\n * Responsible transform operators should call the {@link modifies} method to\n * indicate changes to data fields. The {@link modified} method enables\n * querying of this modification state.\n *\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The current propagation timestamp.\n * @param {string} [encode] - An optional encoding set name, which is then\n *   accessible as Pulse.encode. Operators can respond to (or ignore) this\n *   setting as appropriate. This parameter can be used in conjunction with\n *   the Encode transform in the vega-encode module.\n */\nfunction Pulse(dataflow, stamp, encode) {\n  this.dataflow = dataflow;\n  this.stamp = stamp == null ? -1 : stamp;\n  this.add = [];\n  this.rem = [];\n  this.mod = [];\n  this.fields = null;\n  this.encode = encode || null;\n}\nfunction materialize(data, filter) {\n  const out = [];\n  visitArray(data, filter, _ => out.push(_));\n  return out;\n}\nfunction filter(pulse, flags) {\n  const map = {};\n  pulse.visit(flags, t => {\n    map[tupleid(t)] = 1;\n  });\n  return t => map[tupleid(t)] ? null : t;\n}\nfunction addFilter(a, b) {\n  return a ? (t, i) => a(t, i) && b(t, i) : b;\n}\nPulse.prototype = {\n  /**\n   * Sentinel value indicating pulse propagation should stop.\n   */\n  StopPropagation,\n  /**\n   * Boolean flag indicating ADD (added) tuples.\n   */\n  ADD,\n  /**\n   * Boolean flag indicating REM (removed) tuples.\n   */\n  REM,\n  /**\n   * Boolean flag indicating MOD (modified) tuples.\n   */\n  MOD,\n  /**\n   * Boolean flag indicating ADD (added) and REM (removed) tuples.\n   */\n  ADD_REM,\n  /**\n   * Boolean flag indicating ADD (added) and MOD (modified) tuples.\n   */\n  ADD_MOD,\n  /**\n   * Boolean flag indicating ADD, REM and MOD tuples.\n   */\n  ALL,\n  /**\n   * Boolean flag indicating all tuples in a data source\n   * except for the ADD, REM and MOD tuples.\n   */\n  REFLOW,\n  /**\n   * Boolean flag indicating a 'pass-through' to a\n   * backing data source, ignoring ADD, REM and MOD tuples.\n   */\n  SOURCE,\n  /**\n   * Boolean flag indicating that source data should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_SOURCE,\n  /**\n   * Boolean flag indicating that field modifications should be\n   * suppressed when creating a forked pulse.\n   */\n  NO_FIELDS,\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created.\n   * @return {Pulse} - The forked pulse instance.\n   * @see init\n   */\n  fork(flags) {\n    return new Pulse(this.dataflow).init(this, flags);\n  },\n  /**\n   * Creates a copy of this pulse with new materialized array\n   * instances for the ADD, REM, MOD, and SOURCE arrays.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse} - The cloned pulse instance.\n   * @see init\n   */\n  clone() {\n    const p = this.fork(ALL);\n    p.add = p.add.slice();\n    p.rem = p.rem.slice();\n    p.mod = p.mod.slice();\n    if (p.source) p.source = p.source.slice();\n    return p.materialize(ALL | SOURCE);\n  },\n  /**\n   * Returns a pulse that adds all tuples from a backing source. This is\n   * useful for cases where operators are added to a dataflow after an\n   * upstream data pipeline has already been processed, ensuring that\n   * new operators can observe all tuples within a stream.\n   * @return {Pulse} - A pulse instance with all source tuples included\n   *   in the add array. If the current pulse already has all source\n   *   tuples in its add array, it is returned directly. If the current\n   *   pulse does not have a backing source, it is returned directly.\n   */\n  addAll() {\n    let p = this;\n    const reuse = !p.source || p.add === p.rem // special case for indexed set (e.g., crossfilter)\n    || !p.rem.length && p.source.length === p.add.length;\n    if (reuse) {\n      return p;\n    } else {\n      p = new Pulse(this.dataflow).init(this);\n      p.add = p.source;\n      p.rem = []; // new operators can ignore rem #2769\n      return p;\n    }\n  },\n  /**\n   * Initialize this pulse based on the values of another pulse. This method\n   * is used internally by {@link fork} to initialize a new forked tuple.\n   * The dataflow, time stamp and field modification values are copied over.\n   * By default, new empty ADD, REM and MOD arrays are created.\n   * @param {Pulse} src - The source pulse to copy from.\n   * @param {number} flags - Integer of boolean flags indicating which (if any)\n   *   tuple arrays should be copied to the new pulse. The supported flag values\n   *   are ADD, REM and MOD. Array references are copied directly: new array\n   *   instances are not created. By default, source data arrays are copied\n   *   to the new pulse. Use the NO_SOURCE flag to enforce a null source.\n   * @return {Pulse} - Returns this Pulse instance.\n   */\n  init(src, flags) {\n    const p = this;\n    p.stamp = src.stamp;\n    p.encode = src.encode;\n    if (src.fields && !(flags & NO_FIELDS)) {\n      p.fields = src.fields;\n    }\n    if (flags & ADD) {\n      p.addF = src.addF;\n      p.add = src.add;\n    } else {\n      p.addF = null;\n      p.add = [];\n    }\n    if (flags & REM) {\n      p.remF = src.remF;\n      p.rem = src.rem;\n    } else {\n      p.remF = null;\n      p.rem = [];\n    }\n    if (flags & MOD) {\n      p.modF = src.modF;\n      p.mod = src.mod;\n    } else {\n      p.modF = null;\n      p.mod = [];\n    }\n    if (flags & NO_SOURCE) {\n      p.srcF = null;\n      p.source = null;\n    } else {\n      p.srcF = src.srcF;\n      p.source = src.source;\n      if (src.cleans) p.cleans = src.cleans;\n    }\n    return p;\n  },\n  /**\n   * Schedules a function to run after pulse propagation completes.\n   * @param {function} func - The function to run.\n   */\n  runAfter(func) {\n    this.dataflow.runAfter(func);\n  },\n  /**\n   * Indicates if tuples have been added, removed or modified.\n   * @param {number} [flags] - The tuple types (ADD, REM or MOD) to query.\n   *   Defaults to ALL, returning true if any tuple type has changed.\n   * @return {boolean} - Returns true if one or more queried tuple types have\n   *   changed, false otherwise.\n   */\n  changed(flags) {\n    const f = flags || ALL;\n    return f & ADD && this.add.length || f & REM && this.rem.length || f & MOD && this.mod.length;\n  },\n  /**\n   * Forces a \"reflow\" of tuple values, such that all tuples in the backing\n   * source are added to the MOD set, unless already present in the ADD set.\n   * @param {boolean} [fork=false] - If true, returns a forked copy of this\n   *   pulse, and invokes reflow on that derived pulse.\n   * @return {Pulse} - The reflowed pulse instance.\n   */\n  reflow(fork) {\n    if (fork) return this.fork(ALL).reflow();\n    const len = this.add.length,\n      src = this.source && this.source.length;\n    if (src && src !== len) {\n      this.mod = this.source;\n      if (len) this.filter(MOD, filter(this, ADD));\n    }\n    return this;\n  },\n  /**\n   * Get/set metadata to pulse requesting garbage collection\n   * to reclaim currently unused resources.\n   */\n  clean(value) {\n    if (arguments.length) {\n      this.cleans = !!value;\n      return this;\n    } else {\n      return this.cleans;\n    }\n  },\n  /**\n   * Marks one or more data field names as modified to assist dependency\n   * tracking and incremental processing by transform operators.\n   * @param {string|Array<string>} _ - The field(s) to mark as modified.\n   * @return {Pulse} - This pulse instance.\n   */\n  modifies(_) {\n    const hash = this.fields || (this.fields = {});\n    if (isArray(_)) {\n      _.forEach(f => hash[f] = true);\n    } else {\n      hash[_] = true;\n    }\n    return this;\n  },\n  /**\n   * Checks if one or more data fields have been modified during this pulse\n   * propagation timestamp.\n   * @param {string|Array<string>} _ - The field(s) to check for modified.\n   * @param {boolean} nomod - If true, will check the modified flag even if\n   *   no mod tuples exist. If false (default), mod tuples must be present.\n   * @return {boolean} - Returns true if any of the provided fields has been\n   *   marked as modified, false otherwise.\n   */\n  modified(_, nomod) {\n    const fields = this.fields;\n    return !((nomod || this.mod.length) && fields) ? false : !arguments.length ? !!fields : isArray(_) ? _.some(f => fields[f]) : fields[_];\n  },\n  /**\n   * Adds a filter function to one more tuple sets. Filters are applied to\n   * backing tuple arrays, to determine the actual set of tuples considered\n   * added, removed or modified. They can be used to delay materialization of\n   * a tuple set in order to avoid expensive array copies. In addition, the\n   * filter functions can serve as value transformers: unlike standard predicate\n   * function (which return boolean values), Pulse filters should return the\n   * actual tuple value to process. If a tuple set is already filtered, the\n   * new filter function will be appended into a conjuntive ('and') query.\n   * @param {number} flags - Flags indicating the tuple set(s) to filter.\n   * @param {function(*):object} filter - Filter function that will be applied\n   *   to the tuple set array, and should return a data tuple if the value\n   *   should be included in the tuple set, and falsy (or null) otherwise.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  filter(flags, filter) {\n    const p = this;\n    if (flags & ADD) p.addF = addFilter(p.addF, filter);\n    if (flags & REM) p.remF = addFilter(p.remF, filter);\n    if (flags & MOD) p.modF = addFilter(p.modF, filter);\n    if (flags & SOURCE) p.srcF = addFilter(p.srcF, filter);\n    return p;\n  },\n  /**\n   * Materialize one or more tuple sets in this pulse. If the tuple set(s) have\n   * a registered filter function, it will be applied and the tuple set(s) will\n   * be replaced with materialized tuple arrays.\n   * @param {number} flags - Flags indicating the tuple set(s) to materialize.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  materialize(flags) {\n    flags = flags || ALL;\n    const p = this;\n    if (flags & ADD && p.addF) {\n      p.add = materialize(p.add, p.addF);\n      p.addF = null;\n    }\n    if (flags & REM && p.remF) {\n      p.rem = materialize(p.rem, p.remF);\n      p.remF = null;\n    }\n    if (flags & MOD && p.modF) {\n      p.mod = materialize(p.mod, p.modF);\n      p.modF = null;\n    }\n    if (flags & SOURCE && p.srcF) {\n      p.source = p.source.filter(p.srcF);\n      p.srcF = null;\n    }\n    return p;\n  },\n  /**\n   * Visit one or more tuple sets in this pulse.\n   * @param {number} flags - Flags indicating the tuple set(s) to visit.\n   *   Legal values are ADD, REM, MOD and SOURCE (if a backing data source\n   *   has been set).\n   * @param {function(object):*} - Visitor function invoked per-tuple.\n   * @return {Pulse} - Returns this pulse instance.\n   */\n  visit(flags, visitor) {\n    const p = this,\n      v = visitor;\n    if (flags & SOURCE) {\n      visitArray(p.source, p.srcF, v);\n      return p;\n    }\n    if (flags & ADD) visitArray(p.add, p.addF, v);\n    if (flags & REM) visitArray(p.rem, p.remF, v);\n    if (flags & MOD) visitArray(p.mod, p.modF, v);\n    const src = p.source;\n    if (flags & REFLOW && src) {\n      const sum = p.add.length + p.mod.length;\n      if (sum === src.length) ; else if (sum) {\n        visitArray(src, filter(p, ADD_MOD), v);\n      } else {\n        // if no add/rem/mod tuples, visit source\n        visitArray(src, p.srcF, v);\n      }\n    }\n    return p;\n  }\n};\n\n/**\n * Represents a set of multiple pulses. Used as input for operators\n * that accept multiple pulses at a time. Contained pulses are\n * accessible via the public \"pulses\" array property. This pulse doe\n * not carry added, removed or modified tuples directly. However,\n * the visit method can be used to traverse all such tuples contained\n * in sub-pulses with a timestamp matching this parent multi-pulse.\n * @constructor\n * @param {Dataflow} dataflow - The backing dataflow instance.\n * @param {number} stamp - The timestamp.\n * @param {Array<Pulse>} pulses - The sub-pulses for this multi-pulse.\n */\nfunction MultiPulse(dataflow, stamp, pulses, encode) {\n  const p = this;\n  let c = 0;\n  this.dataflow = dataflow;\n  this.stamp = stamp;\n  this.fields = null;\n  this.encode = encode || null;\n  this.pulses = pulses;\n  for (const pulse of pulses) {\n    if (pulse.stamp !== stamp) continue;\n    if (pulse.fields) {\n      const hash = p.fields || (p.fields = {});\n      for (const f in pulse.fields) {\n        hash[f] = 1;\n      }\n    }\n    if (pulse.changed(p.ADD)) c |= p.ADD;\n    if (pulse.changed(p.REM)) c |= p.REM;\n    if (pulse.changed(p.MOD)) c |= p.MOD;\n  }\n  this.changes = c;\n}\ninherits(MultiPulse, Pulse, {\n  /**\n   * Creates a new pulse based on the values of this pulse.\n   * The dataflow, time stamp and field modification values are copied over.\n   * @return {Pulse}\n   */\n  fork(flags) {\n    const p = new Pulse(this.dataflow).init(this, flags & this.NO_FIELDS);\n    if (flags !== undefined) {\n      if (flags & p.ADD) this.visit(p.ADD, t => p.add.push(t));\n      if (flags & p.REM) this.visit(p.REM, t => p.rem.push(t));\n      if (flags & p.MOD) this.visit(p.MOD, t => p.mod.push(t));\n    }\n    return p;\n  },\n  changed(flags) {\n    return this.changes & flags;\n  },\n  modified(_) {\n    const p = this,\n      fields = p.fields;\n    return !(fields && p.changes & p.MOD) ? 0 : isArray(_) ? _.some(f => fields[f]) : fields[_];\n  },\n  filter() {\n    error('MultiPulse does not support filtering.');\n  },\n  materialize() {\n    error('MultiPulse does not support materialization.');\n  },\n  visit(flags, visitor) {\n    const p = this,\n      pulses = p.pulses,\n      n = pulses.length;\n    let i = 0;\n    if (flags & p.SOURCE) {\n      for (; i < n; ++i) {\n        pulses[i].visit(flags, visitor);\n      }\n    } else {\n      for (; i < n; ++i) {\n        if (pulses[i].stamp === p.stamp) {\n          pulses[i].visit(flags, visitor);\n        }\n      }\n    }\n    return p;\n  }\n});\n\n/* eslint-disable require-atomic-updates */\n\n/**\n * Evaluates the dataflow and returns a Promise that resolves when pulse\n * propagation completes. This method will increment the current timestamp\n * and process all updated, pulsed and touched operators. When invoked for\n * the first time, all registered operators will be processed. This method\n * should not be invoked by third-party clients, use {@link runAsync} or\n * {@link run} instead.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\nasync function evaluate(encode, prerun, postrun) {\n  const df = this,\n    async = [];\n\n  // if the pulse value is set, this is a re-entrant call\n  if (df._pulse) return reentrant(df);\n\n  // wait for pending datasets to load\n  if (df._pending) await df._pending;\n\n  // invoke prerun function, if provided\n  if (prerun) await asyncCallback(df, prerun);\n\n  // exit early if there are no updates\n  if (!df._touched.length) {\n    df.debug('Dataflow invoked, but nothing to do.');\n    return df;\n  }\n\n  // increment timestamp clock\n  const stamp = ++df._clock;\n\n  // set the current pulse\n  df._pulse = new Pulse(df, stamp, encode);\n\n  // initialize priority queue, reset touched operators\n  df._touched.forEach(op => df._enqueue(op, true));\n  df._touched = UniqueList(id);\n  let count = 0,\n    op,\n    next,\n    error;\n  try {\n    while (df._heap.size() > 0) {\n      // dequeue operator with highest priority\n      op = df._heap.pop();\n\n      // re-queue if rank changed\n      if (op.rank !== op.qrank) {\n        df._enqueue(op, true);\n        continue;\n      }\n\n      // otherwise, evaluate the operator\n      next = op.run(df._getPulse(op, encode));\n      if (next.then) {\n        // await if operator returns a promise directly\n        next = await next;\n      } else if (next.async) {\n        // queue parallel asynchronous execution\n        async.push(next.async);\n        next = StopPropagation;\n      }\n\n      // propagate evaluation, enqueue dependent operators\n      if (next !== StopPropagation) {\n        if (op._targets) op._targets.forEach(op => df._enqueue(op));\n      }\n\n      // increment visit counter\n      ++count;\n    }\n  } catch (err) {\n    df._heap.clear();\n    error = err;\n  }\n\n  // reset pulse map\n  df._input = {};\n  df._pulse = null;\n  df.debug(`Pulse ${stamp}: ${count} operators`);\n  if (error) {\n    df._postrun = [];\n    df.error(error);\n  }\n\n  // invoke callbacks queued via runAfter\n  if (df._postrun.length) {\n    const pr = df._postrun.sort((a, b) => b.priority - a.priority);\n    df._postrun = [];\n    for (let i = 0; i < pr.length; ++i) {\n      await asyncCallback(df, pr[i].callback);\n    }\n  }\n\n  // invoke postrun function, if provided\n  if (postrun) await asyncCallback(df, postrun);\n\n  // handle non-blocking asynchronous callbacks\n  if (async.length) {\n    Promise.all(async).then(cb => df.runAsync(null, () => {\n      cb.forEach(f => {\n        try {\n          f(df);\n        } catch (err) {\n          df.error(err);\n        }\n      });\n    }));\n  }\n  return df;\n}\n\n/**\n * Queues dataflow evaluation to run once any other queued evaluations have\n * completed and returns a Promise that resolves when the queued pulse\n * propagation completes. If provided, a callback function will be invoked\n * immediately before evaluation commences. This method will ensure a\n * separate evaluation is invoked for each time it is called.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode package.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Promise} - A promise that resolves to this dataflow after\n *   evaluation completes.\n */\nasync function runAsync(encode, prerun, postrun) {\n  // await previously queued functions\n  while (this._running) await this._running;\n\n  // run dataflow, manage running promise\n  const clear = () => this._running = null;\n  (this._running = this.evaluate(encode, prerun, postrun)).then(clear, clear);\n  return this._running;\n}\n\n/**\n * Requests dataflow evaluation and the immediately returns this dataflow\n * instance. If there are pending data loading or other asynchronous\n * operations, the dataflow will evaluate asynchronously after this method\n * has been invoked. To track when dataflow evaluation completes, use the\n * {@link runAsync} method instead. This method will raise an error if\n * invoked while the dataflow is already in the midst of evaluation.\n * @param {string} [encode] - The name of an encoding set to invoke during\n *   propagation. This value is added to generated Pulse instances;\n *   operators can then respond to (or ignore) this setting as appropriate.\n *   This parameter can be used in conjunction with the Encode transform in\n *   the vega-encode module.\n * @param {function} [prerun] - An optional callback function to invoke\n *   immediately before dataflow evaluation commences.\n * @param {function} [postrun] - An optional callback function to invoke\n *   after dataflow evaluation completes. The callback will be invoked\n *   after those registered via {@link runAfter}.\n * @return {Dataflow} - This dataflow instance.\n */\nfunction run(encode, prerun, postrun) {\n  return this._pulse ? reentrant(this) : (this.evaluate(encode, prerun, postrun), this);\n}\n\n/**\n * Schedules a callback function to be invoked after the current pulse\n * propagation completes. If no propagation is currently occurring,\n * the function is invoked immediately. Callbacks scheduled via runAfter\n * are invoked immediately upon completion of the current cycle, before\n * any request queued via runAsync. This method is primarily intended for\n * internal use. Third-party callers using runAfter to schedule a callback\n * that invokes {@link run} or {@link runAsync} should not use this method,\n * but instead use {@link runAsync} with prerun or postrun arguments.\n * @param {function(Dataflow)} callback - The callback function to run.\n *   The callback will be invoked with this Dataflow instance as its\n *   sole argument.\n * @param {boolean} enqueue - A boolean flag indicating that the\n *   callback should be queued up to run after the next propagation\n *   cycle, suppressing immediate invocation when propagation is not\n *   currently occurring.\n * @param {number} [priority] - A priority value used to sort registered\n *   callbacks to determine execution order. This argument is intended\n *   for internal Vega use only.\n */\nfunction runAfter(callback, enqueue, priority) {\n  if (this._pulse || enqueue) {\n    // pulse propagation is currently running, queue to run after\n    this._postrun.push({\n      priority: priority || 0,\n      callback: callback\n    });\n  } else {\n    // pulse propagation already complete, invoke immediately\n    try {\n      callback(this);\n    } catch (err) {\n      this.error(err);\n    }\n  }\n}\n\n/**\n * Raise an error for re-entrant dataflow evaluation.\n */\nfunction reentrant(df) {\n  df.error('Dataflow already running. Use runAsync() to chain invocations.');\n  return df;\n}\n\n/**\n * Enqueue an operator into the priority queue for evaluation. The operator\n * will be enqueued if it has no registered pulse for the current cycle, or if\n * the force argument is true. Upon enqueue, this method also sets the\n * operator's qrank to the current rank value.\n * @param {Operator} op - The operator to enqueue.\n * @param {boolean} [force] - A flag indicating if the operator should be\n *   forceably added to the queue, even if it has already been previously\n *   enqueued during the current pulse propagation. This is useful when the\n *   dataflow graph is dynamically modified and the operator rank changes.\n */\nfunction enqueue(op, force) {\n  const q = op.stamp < this._clock;\n  if (q) op.stamp = this._clock;\n  if (q || force) {\n    op.qrank = op.rank;\n    this._heap.push(op);\n  }\n}\n\n/**\n * Provide a correct pulse for evaluating an operator. If the operator has an\n * explicit source operator, we will try to pull the pulse(s) from it.\n * If there is an array of source operators, we build a multi-pulse.\n * Otherwise, we return a current pulse with correct source data.\n * If the pulse is the pulse map has an explicit target set, we use that.\n * Else if the pulse on the upstream source operator is current, we use that.\n * Else we use the pulse from the pulse map, but copy the source tuple array.\n * @param {Operator} op - The operator for which to get an input pulse.\n * @param {string} [encode] - An (optional) encoding set name with which to\n *   annotate the returned pulse. See {@link run} for more information.\n */\nfunction getPulse(op, encode) {\n  const s = op.source,\n    stamp = this._clock;\n  return s && isArray(s) ? new MultiPulse(this, stamp, s.map(_ => _.pulse), encode) : this._input[op.id] || singlePulse(this._pulse, s && s.pulse);\n}\nfunction singlePulse(p, s) {\n  if (s && s.stamp === p.stamp) {\n    return s;\n  }\n  p = p.fork();\n  if (s && s !== StopPropagation) {\n    p.source = s.source;\n  }\n  return p;\n}\n\nconst NO_OPT = {\n  skip: false,\n  force: false\n};\n\n/**\n * Touches an operator, scheduling it to be evaluated. If invoked outside of\n * a pulse propagation, the operator will be evaluated the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the operator\n * will be queued for evaluation if and only if the operator has not yet been\n * evaluated on the current propagation timestamp.\n * @param {Operator} op - The operator to touch.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction touch(op, options) {\n  const opt = options || NO_OPT;\n  if (this._pulse) {\n    // if in midst of propagation, add to priority queue\n    this._enqueue(op);\n  } else {\n    // otherwise, queue for next propagation\n    this._touched.add(op);\n  }\n  if (opt.skip) op.skip(true);\n  return this;\n}\n\n/**\n * Updates the value of the given operator.\n * @param {Operator} op - The operator to update.\n * @param {*} value - The value to set.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.force] - If true, the operator will\n *   be re-evaluated even if its value has not changed.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction update(op, value, options) {\n  const opt = options || NO_OPT;\n  if (op.set(value) || opt.force) {\n    this.touch(op, opt);\n  }\n  return this;\n}\n\n/**\n * Pulses an operator with a changeset of tuples. If invoked outside of\n * a pulse propagation, the pulse will be applied the next time this\n * dataflow is run. If invoked in the midst of pulse propagation, the pulse\n * will be added to the set of active pulses and will be applied if and\n * only if the target operator has not yet been evaluated on the current\n * propagation timestamp.\n * @param {Operator} op - The operator to pulse.\n * @param {ChangeSet} value - The tuple changeset to apply.\n * @param {object} [options] - Additional options hash.\n * @param {boolean} [options.skip] - If true, the operator will\n *   be skipped: it will not be evaluated, but its dependents will be.\n * @return {Dataflow}\n */\nfunction pulse(op, changeset, options) {\n  this.touch(op, options || NO_OPT);\n  const p = new Pulse(this, this._clock + (this._pulse ? 0 : 1)),\n    t = op.pulse && op.pulse.source || [];\n  p.target = op;\n  this._input[op.id] = changeset.pulse(p, t);\n  return this;\n}\n\nfunction Heap(cmp) {\n  let nodes = [];\n  return {\n    clear: () => nodes = [],\n    size: () => nodes.length,\n    peek: () => nodes[0],\n    push: x => {\n      nodes.push(x);\n      return siftdown(nodes, 0, nodes.length - 1, cmp);\n    },\n    pop: () => {\n      const last = nodes.pop();\n      let item;\n      if (nodes.length) {\n        item = nodes[0];\n        nodes[0] = last;\n        siftup(nodes, 0, cmp);\n      } else {\n        item = last;\n      }\n      return item;\n    }\n  };\n}\nfunction siftdown(array, start, idx, cmp) {\n  let parent, pidx;\n  const item = array[idx];\n  while (idx > start) {\n    pidx = idx - 1 >> 1;\n    parent = array[pidx];\n    if (cmp(item, parent) < 0) {\n      array[idx] = parent;\n      idx = pidx;\n      continue;\n    }\n    break;\n  }\n  return array[idx] = item;\n}\nfunction siftup(array, idx, cmp) {\n  const start = idx,\n    end = array.length,\n    item = array[idx];\n  let cidx = (idx << 1) + 1,\n    ridx;\n  while (cidx < end) {\n    ridx = cidx + 1;\n    if (ridx < end && cmp(array[cidx], array[ridx]) >= 0) {\n      cidx = ridx;\n    }\n    array[idx] = array[cidx];\n    idx = cidx;\n    cidx = (idx << 1) + 1;\n  }\n  array[idx] = item;\n  return siftdown(array, start, idx, cmp);\n}\n\n/**\n * A dataflow graph for reactive processing of data streams.\n * @constructor\n */\nfunction Dataflow() {\n  this.logger(logger());\n  this.logLevel(Error);\n  this._clock = 0;\n  this._rank = 0;\n  this._locale = defaultLocale();\n  try {\n    this._loader = loader();\n  } catch (e) {\n    // do nothing if loader module is unavailable\n  }\n  this._touched = UniqueList(id);\n  this._input = {};\n  this._pulse = null;\n  this._heap = Heap((a, b) => a.qrank - b.qrank);\n  this._postrun = [];\n}\nfunction logMethod(method) {\n  return function () {\n    return this._log[method].apply(this, arguments);\n  };\n}\nDataflow.prototype = {\n  /**\n   * The current timestamp of this dataflow. This value reflects the\n   * timestamp of the previous dataflow run. The dataflow is initialized\n   * with a stamp value of 0. The initial run of the dataflow will have\n   * a timestap of 1, and so on. This value will match the\n   * {@link Pulse.stamp} property.\n   * @return {number} - The current timestamp value.\n   */\n  stamp() {\n    return this._clock;\n  },\n  /**\n   * Gets or sets the loader instance to use for data file loading. A\n   * loader object must provide a \"load\" method for loading files and a\n   * \"sanitize\" method for checking URL/filename validity. Both methods\n   * should accept a URI and options hash as arguments, and return a Promise\n   * that resolves to the loaded file contents (load) or a hash containing\n   * sanitized URI data with the sanitized url assigned to the \"href\" property\n   * (sanitize).\n   * @param {object} _ - The loader instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current loader instance. Otherwise returns this Dataflow instance.\n   */\n  loader(_) {\n    if (arguments.length) {\n      this._loader = _;\n      return this;\n    } else {\n      return this._loader;\n    }\n  },\n  /**\n   * Gets or sets the locale instance to use for formatting and parsing\n   * string values. The locale object should be provided by the\n   * vega-format library, and include methods such as format, timeFormat,\n   * utcFormat, timeParse, and utcParse.\n   * @param {object} _ - The locale instance to use.\n   * @return {object|Dataflow} - If no arguments are provided, returns\n   *   the current locale instance. Otherwise returns this Dataflow instance.\n   */\n  locale(_) {\n    if (arguments.length) {\n      this._locale = _;\n      return this;\n    } else {\n      return this._locale;\n    }\n  },\n  /**\n   * Get or set the logger instance used to log messages. If no arguments are\n   * provided, returns the current logger instance. Otherwise, sets the logger\n   * and return this Dataflow instance. Provided loggers must support the full\n   * API of logger objects generated by the vega-util logger method. Note that\n   * by default the log level of the new logger will be used; use the logLevel\n   * method to adjust the log level as needed.\n   */\n  logger(logger) {\n    if (arguments.length) {\n      this._log = logger;\n      return this;\n    } else {\n      return this._log;\n    }\n  },\n  /**\n   * Logs an error message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit error messages.\n   */\n  error: logMethod('error'),\n  /**\n   * Logs a warning message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit warning messages.\n   */\n  warn: logMethod('warn'),\n  /**\n   * Logs a information message. By default, logged messages are written to\n   * console output. The message will only be logged if the current log level is\n   * high enough to permit information messages.\n   */\n  info: logMethod('info'),\n  /**\n   * Logs a debug message. By default, logged messages are written to console\n   * output. The message will only be logged if the current log level is high\n   * enough to permit debug messages.\n   */\n  debug: logMethod('debug'),\n  /**\n   * Get or set the current log level. If an argument is provided, it\n   * will be used as the new log level.\n   * @param {number} [level] - Should be one of None, Warn, Info\n   * @return {number} - The current log level.\n   */\n  logLevel: logMethod('level'),\n  /**\n   * Empty entry threshold for garbage cleaning. Map data structures will\n   * perform cleaning once the number of empty entries exceeds this value.\n   */\n  cleanThreshold: 1e4,\n  // OPERATOR REGISTRATION\n  add,\n  connect,\n  rank,\n  rerank,\n  // OPERATOR UPDATES\n  pulse,\n  touch,\n  update,\n  changeset,\n  // DATA LOADING\n  ingest,\n  parse,\n  preload,\n  request,\n  // EVENT HANDLING\n  events,\n  on,\n  // PULSE PROPAGATION\n  evaluate,\n  run,\n  runAsync,\n  runAfter,\n  _enqueue: enqueue,\n  _getPulse: getPulse\n};\n\n/**\n * Abstract class for operators that process data tuples.\n * Subclasses must provide a {@link transform} method for operator processing.\n * @constructor\n * @param {*} [init] - The initial value for this operator.\n * @param {object} [params] - The parameters for this operator.\n * @param {Operator} [source] - The operator from which to receive pulses.\n */\nfunction Transform(init, params) {\n  Operator.call(this, init, null, params);\n}\ninherits(Transform, Operator, {\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Internally, this method calls {@link evaluate} to perform processing.\n   * If {@link evaluate} returns a falsy value, the input pulse is returned.\n   * This method should NOT be overridden, instead overrride {@link evaluate}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return the output pulse for this operator (or StopPropagation)\n   */\n  run(pulse) {\n    if (pulse.stamp < this.stamp) return pulse.StopPropagation;\n    let rv;\n    if (this.skip()) {\n      this.skip(false);\n    } else {\n      rv = this.evaluate(pulse);\n    }\n    rv = rv || pulse;\n    if (rv.then) {\n      rv = rv.then(_ => this.pulse = _);\n    } else if (rv !== pulse.StopPropagation) {\n      this.pulse = rv;\n    }\n    return rv;\n  },\n  /**\n   * Overrides {@link Operator.evaluate} for transform operators.\n   * Marshalls parameter values and then invokes {@link transform}.\n   * @param {Pulse} pulse - the current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n       value (including undefined) will let the input pulse pass through.\n  */\n  evaluate(pulse) {\n    const params = this.marshall(pulse.stamp),\n      out = this.transform(params, pulse);\n    params.clear();\n    return out;\n  },\n  /**\n   * Process incoming pulses.\n   * Subclasses should override this method to implement transforms.\n   * @param {Parameters} _ - The operator parameter values.\n   * @param {Pulse} pulse - The current dataflow pulse.\n   * @return {Pulse} The output pulse (or StopPropagation). A falsy return\n   *   value (including undefined) will let the input pulse pass through.\n   */\n  transform() {}\n});\n\nconst transforms = {};\nfunction definition(type) {\n  const t = transform(type);\n  return t && t.Definition || null;\n}\nfunction transform(type) {\n  type = type && type.toLowerCase();\n  return hasOwnProperty(transforms, type) ? transforms[type] : null;\n}\n\nexport { Dataflow, EventStream, MultiPulse, Operator, Parameters, Pulse, Transform, UniqueList, asyncCallback, changeset, definition, derive, ingest$1 as ingest, isChangeSet, isTuple, rederive, replace, stableCompare, transform, transforms, tupleid };\n", "import { extend, identity, field, hasOwnProperty, extentIndex, inherits, array, accessorName, error, accessorFields, accessor, toNumber, merge, compare, truthy, extent, span, fastmap, isArray, key, ascending, peek, zero, constant } from 'vega-util';\nimport { tupleid, Transform, replace, ingest, stableCompare, Operator, derive, rederive } from 'vega-dataflow';\nimport { quartiles, bootstrapCI, bin, randomKDE, randomMixture, randomNormal, randomLogNormal, randomUniform, sampleCurve, dotbin, quantiles, random } from 'vega-statistics';\nimport { median, mean, min, max, range, bisector } from 'd3-array';\nimport { TIME_UNITS, utcInterval, timeInterval, timeBin, timeUnits, utcFloor, timeFloor } from 'vega-time';\n\nfunction multikey(f) {\n  return x => {\n    const n = f.length;\n    let i = 1,\n      k = String(f[0](x));\n    for (; i < n; ++i) {\n      k += '|' + f[i](x);\n    }\n    return k;\n  };\n}\nfunction groupkey(fields) {\n  return !fields || !fields.length ? function () {\n    return '';\n  } : fields.length === 1 ? fields[0] : multikey(fields);\n}\n\nfunction measureName(op, field, as) {\n  return as || op + (!field ? '' : '_' + field);\n}\nconst noop = () => {};\nconst base_op = {\n  init: noop,\n  add: noop,\n  rem: noop,\n  idx: 0\n};\nconst AggregateOps = {\n  values: {\n    init: m => m.cell.store = true,\n    value: m => m.cell.data.values(),\n    idx: -1\n  },\n  count: {\n    value: m => m.cell.num\n  },\n  __count__: {\n    value: m => m.missing + m.valid\n  },\n  missing: {\n    value: m => m.missing\n  },\n  valid: {\n    value: m => m.valid\n  },\n  sum: {\n    init: m => m.sum = 0,\n    value: m => m.sum,\n    add: (m, v) => m.sum += +v,\n    rem: (m, v) => m.sum -= v\n  },\n  product: {\n    init: m => m.product = 1,\n    value: m => m.valid ? m.product : undefined,\n    add: (m, v) => m.product *= v,\n    rem: (m, v) => m.product /= v\n  },\n  mean: {\n    init: m => m.mean = 0,\n    value: m => m.valid ? m.mean : undefined,\n    add: (m, v) => (m.mean_d = v - m.mean, m.mean += m.mean_d / m.valid),\n    rem: (m, v) => (m.mean_d = v - m.mean, m.mean -= m.valid ? m.mean_d / m.valid : m.mean)\n  },\n  average: {\n    value: m => m.valid ? m.mean : undefined,\n    req: ['mean'],\n    idx: 1\n  },\n  variance: {\n    init: m => m.dev = 0,\n    value: m => m.valid > 1 ? m.dev / (m.valid - 1) : undefined,\n    add: (m, v) => m.dev += m.mean_d * (v - m.mean),\n    rem: (m, v) => m.dev -= m.mean_d * (v - m.mean),\n    req: ['mean'],\n    idx: 1\n  },\n  variancep: {\n    value: m => m.valid > 1 ? m.dev / m.valid : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stdev: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid - 1)) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stdevp: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / m.valid) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  stderr: {\n    value: m => m.valid > 1 ? Math.sqrt(m.dev / (m.valid * (m.valid - 1))) : undefined,\n    req: ['variance'],\n    idx: 2\n  },\n  distinct: {\n    value: m => m.cell.data.distinct(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  ci0: {\n    value: m => m.cell.data.ci0(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  ci1: {\n    value: m => m.cell.data.ci1(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  median: {\n    value: m => m.cell.data.q2(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  q1: {\n    value: m => m.cell.data.q1(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  q3: {\n    value: m => m.cell.data.q3(m.get),\n    req: ['values'],\n    idx: 3\n  },\n  min: {\n    init: m => m.min = undefined,\n    value: m => m.min = Number.isNaN(m.min) ? m.cell.data.min(m.get) : m.min,\n    add: (m, v) => {\n      if (v < m.min || m.min === undefined) m.min = v;\n    },\n    rem: (m, v) => {\n      if (v <= m.min) m.min = NaN;\n    },\n    req: ['values'],\n    idx: 4\n  },\n  max: {\n    init: m => m.max = undefined,\n    value: m => m.max = Number.isNaN(m.max) ? m.cell.data.max(m.get) : m.max,\n    add: (m, v) => {\n      if (v > m.max || m.max === undefined) m.max = v;\n    },\n    rem: (m, v) => {\n      if (v >= m.max) m.max = NaN;\n    },\n    req: ['values'],\n    idx: 4\n  },\n  argmin: {\n    init: m => m.argmin = undefined,\n    value: m => m.argmin || m.cell.data.argmin(m.get),\n    add: (m, v, t) => {\n      if (v < m.min) m.argmin = t;\n    },\n    rem: (m, v) => {\n      if (v <= m.min) m.argmin = undefined;\n    },\n    req: ['min', 'values'],\n    idx: 3\n  },\n  argmax: {\n    init: m => m.argmax = undefined,\n    value: m => m.argmax || m.cell.data.argmax(m.get),\n    add: (m, v, t) => {\n      if (v > m.max) m.argmax = t;\n    },\n    rem: (m, v) => {\n      if (v >= m.max) m.argmax = undefined;\n    },\n    req: ['max', 'values'],\n    idx: 3\n  },\n  exponential: {\n    init: (m, r) => {\n      m.exp = 0;\n      m.exp_r = r;\n    },\n    value: m => m.valid ? m.exp * (1 - m.exp_r) / (1 - m.exp_r ** m.valid) : undefined,\n    add: (m, v) => m.exp = m.exp_r * m.exp + v,\n    rem: (m, v) => m.exp = (m.exp - v / m.exp_r ** (m.valid - 1)) / m.exp_r\n  },\n  exponentialb: {\n    value: m => m.valid ? m.exp * (1 - m.exp_r) : undefined,\n    req: ['exponential'],\n    idx: 1\n  }\n};\nconst ValidAggregateOps = Object.keys(AggregateOps).filter(d => d !== '__count__');\nfunction measure(key, value) {\n  return (out, aggregate_param) => extend({\n    name: key,\n    aggregate_param: aggregate_param,\n    out: out || key\n  }, base_op, value);\n}\n[...ValidAggregateOps, '__count__'].forEach(key => {\n  AggregateOps[key] = measure(key, AggregateOps[key]);\n});\nfunction createMeasure(op, param, name) {\n  return AggregateOps[op](name, param);\n}\nfunction compareIndex(a, b) {\n  return a.idx - b.idx;\n}\nfunction resolve(agg) {\n  const map = {};\n  agg.forEach(a => map[a.name] = a);\n  const getreqs = a => {\n    if (!a.req) return;\n    a.req.forEach(key => {\n      if (!map[key]) getreqs(map[key] = AggregateOps[key]());\n    });\n  };\n  agg.forEach(getreqs);\n  return Object.values(map).sort(compareIndex);\n}\nfunction init() {\n  this.valid = 0;\n  this.missing = 0;\n  this._ops.forEach(op => op.aggregate_param == null ? op.init(this) : op.init(this, op.aggregate_param));\n}\nfunction add(v, t) {\n  if (v == null || v === '') {\n    ++this.missing;\n    return;\n  }\n  if (v !== v) return;\n  ++this.valid;\n  this._ops.forEach(op => op.add(this, v, t));\n}\nfunction rem(v, t) {\n  if (v == null || v === '') {\n    --this.missing;\n    return;\n  }\n  if (v !== v) return;\n  --this.valid;\n  this._ops.forEach(op => op.rem(this, v, t));\n}\nfunction set(t) {\n  this._out.forEach(op => t[op.out] = op.value(this));\n  return t;\n}\nfunction compileMeasures(agg, field) {\n  const get = field || identity,\n    ops = resolve(agg),\n    out = agg.slice().sort(compareIndex);\n  function ctr(cell) {\n    this._ops = ops;\n    this._out = out;\n    this.cell = cell;\n    this.init();\n  }\n  ctr.prototype.init = init;\n  ctr.prototype.add = add;\n  ctr.prototype.rem = rem;\n  ctr.prototype.set = set;\n  ctr.prototype.get = get;\n  ctr.fields = agg.map(op => op.out);\n  return ctr;\n}\n\nfunction TupleStore(key) {\n  this._key = key ? field(key) : tupleid;\n  this.reset();\n}\nconst prototype$1 = TupleStore.prototype;\nprototype$1.reset = function () {\n  this._add = [];\n  this._rem = [];\n  this._ext = null;\n  this._get = null;\n  this._q = null;\n};\nprototype$1.add = function (v) {\n  this._add.push(v);\n};\nprototype$1.rem = function (v) {\n  this._rem.push(v);\n};\nprototype$1.values = function () {\n  this._get = null;\n  if (this._rem.length === 0) return this._add;\n  const a = this._add,\n    r = this._rem,\n    k = this._key,\n    n = a.length,\n    m = r.length,\n    x = Array(n - m),\n    map = {};\n  let i, j, v;\n\n  // use unique key field to clear removed values\n  for (i = 0; i < m; ++i) {\n    map[k(r[i])] = 1;\n  }\n  for (i = 0, j = 0; i < n; ++i) {\n    if (map[k(v = a[i])]) {\n      map[k(v)] = 0;\n    } else {\n      x[j++] = v;\n    }\n  }\n  this._rem = [];\n  return this._add = x;\n};\n\n// memoizing statistics methods\n\nprototype$1.distinct = function (get) {\n  const v = this.values(),\n    map = {};\n  let n = v.length,\n    count = 0,\n    s;\n  while (--n >= 0) {\n    s = get(v[n]) + '';\n    if (!hasOwnProperty(map, s)) {\n      map[s] = 1;\n      ++count;\n    }\n  }\n  return count;\n};\nprototype$1.extent = function (get) {\n  if (this._get !== get || !this._ext) {\n    const v = this.values(),\n      i = extentIndex(v, get);\n    this._ext = [v[i[0]], v[i[1]]];\n    this._get = get;\n  }\n  return this._ext;\n};\nprototype$1.argmin = function (get) {\n  return this.extent(get)[0] || {};\n};\nprototype$1.argmax = function (get) {\n  return this.extent(get)[1] || {};\n};\nprototype$1.min = function (get) {\n  const m = this.extent(get)[0];\n  return m != null ? get(m) : undefined;\n};\nprototype$1.max = function (get) {\n  const m = this.extent(get)[1];\n  return m != null ? get(m) : undefined;\n};\nprototype$1.quartile = function (get) {\n  if (this._get !== get || !this._q) {\n    this._q = quartiles(this.values(), get);\n    this._get = get;\n  }\n  return this._q;\n};\nprototype$1.q1 = function (get) {\n  return this.quartile(get)[0];\n};\nprototype$1.q2 = function (get) {\n  return this.quartile(get)[1];\n};\nprototype$1.q3 = function (get) {\n  return this.quartile(get)[2];\n};\nprototype$1.ci = function (get) {\n  if (this._get !== get || !this._ci) {\n    this._ci = bootstrapCI(this.values(), 1000, 0.05, get);\n    this._get = get;\n  }\n  return this._ci;\n};\nprototype$1.ci0 = function (get) {\n  return this.ci(get)[0];\n};\nprototype$1.ci1 = function (get) {\n  return this.ci(get)[1];\n};\n\n/**\n * Group-by aggregation operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors to aggregate.\n * @param {Array<string>} [params.ops] - An array of strings indicating aggregation operations.\n * @param {Array<object>} [params.aggregate_params=[null]] - An optional array of parameters for aggregation operations.\n * @param {Array<string>} [params.as] - An array of output field names for aggregated values.\n * @param {boolean} [params.cross=false] - A flag indicating that the full\n *   cross-product of groupby values should be generated, including empty cells.\n *   If true, the drop parameter is ignored and empty cells are retained.\n * @param {boolean} [params.drop=true] - A flag indicating if empty cells should be removed.\n */\nfunction Aggregate(params) {\n  Transform.call(this, null, params);\n  this._adds = []; // array of added output tuples\n  this._mods = []; // array of modified output tuples\n  this._alen = 0; // number of active added tuples\n  this._mlen = 0; // number of active modified tuples\n  this._drop = true; // should empty aggregation cells be removed\n  this._cross = false; // produce full cross-product of group-by values\n\n  this._dims = []; // group-by dimension accessors\n  this._dnames = []; // group-by dimension names\n\n  this._measures = []; // collection of aggregation monoids\n  this._countOnly = false; // flag indicating only count aggregation\n  this._counts = null; // collection of count fields\n  this._prev = null; // previous aggregation cells\n\n  this._inputs = null; // array of dependent input tuple field names\n  this._outputs = null; // array of output tuple field names\n}\n\nAggregate.Definition = {\n  'type': 'Aggregate',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidAggregateOps\n  }, {\n    'name': 'aggregate_params',\n    'type': 'field',\n    'null': true,\n    'array': true,\n    'default': [null]\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'drop',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'cross',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\ninherits(Aggregate, Transform, {\n  transform(_, pulse) {\n    const aggr = this,\n      out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n      mod = _.modified();\n    aggr.stamp = out.stamp;\n    if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n      aggr._prev = aggr.value;\n      aggr.value = mod ? aggr.init(_) : Object.create(null);\n      pulse.visit(pulse.SOURCE, t => aggr.add(t));\n    } else {\n      aggr.value = aggr.value || aggr.init(_);\n      pulse.visit(pulse.REM, t => aggr.rem(t));\n      pulse.visit(pulse.ADD, t => aggr.add(t));\n    }\n\n    // Indicate output fields and return aggregate tuples.\n    out.modifies(aggr._outputs);\n\n    // Should empty cells be dropped?\n    aggr._drop = _.drop !== false;\n\n    // If domain cross-product requested, generate empty cells as needed\n    // and ensure that empty cells are not dropped\n    if (_.cross && aggr._dims.length > 1) {\n      aggr._drop = false;\n      aggr.cross();\n    }\n    if (pulse.clean() && aggr._drop) {\n      out.clean(true).runAfter(() => this.clean());\n    }\n    return aggr.changes(out);\n  },\n  cross() {\n    const aggr = this,\n      curr = aggr.value,\n      dims = aggr._dnames,\n      vals = dims.map(() => ({})),\n      n = dims.length;\n\n    // collect all group-by domain values\n    function collect(cells) {\n      let key, i, t, v;\n      for (key in cells) {\n        t = cells[key].tuple;\n        for (i = 0; i < n; ++i) {\n          vals[i][v = t[dims[i]]] = v;\n        }\n      }\n    }\n    collect(aggr._prev);\n    collect(curr);\n\n    // iterate over key cross-product, create cells as needed\n    function generate(base, tuple, index) {\n      const name = dims[index],\n        v = vals[index++];\n      for (const k in v) {\n        const key = base ? base + '|' + k : k;\n        tuple[name] = v[k];\n        if (index < n) generate(key, tuple, index);else if (!curr[key]) aggr.cell(key, tuple);\n      }\n    }\n    generate('', {}, 0);\n  },\n  init(_) {\n    // initialize input and output fields\n    const inputs = this._inputs = [],\n      outputs = this._outputs = [],\n      inputMap = {};\n    function inputVisit(get) {\n      const fields = array(accessorFields(get)),\n        n = fields.length;\n      let i = 0,\n        f;\n      for (; i < n; ++i) {\n        if (!inputMap[f = fields[i]]) {\n          inputMap[f] = 1;\n          inputs.push(f);\n        }\n      }\n    }\n\n    // initialize group-by dimensions\n    this._dims = array(_.groupby);\n    this._dnames = this._dims.map(d => {\n      const dname = accessorName(d);\n      inputVisit(d);\n      outputs.push(dname);\n      return dname;\n    });\n    this.cellkey = _.key ? _.key : groupkey(this._dims);\n\n    // initialize aggregate measures\n    this._countOnly = true;\n    this._counts = [];\n    this._measures = [];\n    const fields = _.fields || [null],\n      ops = _.ops || ['count'],\n      aggregate_params = _.aggregate_params || [null],\n      as = _.as || [],\n      n = fields.length,\n      map = {};\n    let field, op, aggregate_param, m, mname, outname, i;\n    if (n !== ops.length) {\n      error('Unmatched number of fields and aggregate ops.');\n    }\n    for (i = 0; i < n; ++i) {\n      field = fields[i];\n      op = ops[i];\n      aggregate_param = aggregate_params[i] || null;\n      if (field == null && op !== 'count') {\n        error('Null aggregate field specified.');\n      }\n      mname = accessorName(field);\n      outname = measureName(op, mname, as[i]);\n      outputs.push(outname);\n      if (op === 'count') {\n        this._counts.push(outname);\n        continue;\n      }\n      m = map[mname];\n      if (!m) {\n        inputVisit(field);\n        m = map[mname] = [];\n        m.field = field;\n        this._measures.push(m);\n      }\n      if (op !== 'count') this._countOnly = false;\n      m.push(createMeasure(op, aggregate_param, outname));\n    }\n    this._measures = this._measures.map(m => compileMeasures(m, m.field));\n    return Object.create(null); // aggregation cells (this.value)\n  },\n\n  // -- Cell Management -----\n\n  cellkey: groupkey(),\n  cell(key, t) {\n    let cell = this.value[key];\n    if (!cell) {\n      cell = this.value[key] = this.newcell(key, t);\n      this._adds[this._alen++] = cell;\n    } else if (cell.num === 0 && this._drop && cell.stamp < this.stamp) {\n      cell.stamp = this.stamp;\n      this._adds[this._alen++] = cell;\n    } else if (cell.stamp < this.stamp) {\n      cell.stamp = this.stamp;\n      this._mods[this._mlen++] = cell;\n    }\n    return cell;\n  },\n  newcell(key, t) {\n    const cell = {\n      key: key,\n      num: 0,\n      agg: null,\n      tuple: this.newtuple(t, this._prev && this._prev[key]),\n      stamp: this.stamp,\n      store: false\n    };\n    if (!this._countOnly) {\n      const measures = this._measures,\n        n = measures.length;\n      cell.agg = Array(n);\n      for (let i = 0; i < n; ++i) {\n        cell.agg[i] = new measures[i](cell);\n      }\n    }\n    if (cell.store) {\n      cell.data = new TupleStore();\n    }\n    return cell;\n  },\n  newtuple(t, p) {\n    const names = this._dnames,\n      dims = this._dims,\n      n = dims.length,\n      x = {};\n    for (let i = 0; i < n; ++i) {\n      x[names[i]] = dims[i](t);\n    }\n    return p ? replace(p.tuple, x) : ingest(x);\n  },\n  clean() {\n    const cells = this.value;\n    for (const key in cells) {\n      if (cells[key].num === 0) {\n        delete cells[key];\n      }\n    }\n  },\n  // -- Process Tuples -----\n\n  add(t) {\n    const key = this.cellkey(t),\n      cell = this.cell(key, t);\n    cell.num += 1;\n    if (this._countOnly) return;\n    if (cell.store) cell.data.add(t);\n    const agg = cell.agg;\n    for (let i = 0, n = agg.length; i < n; ++i) {\n      agg[i].add(agg[i].get(t), t);\n    }\n  },\n  rem(t) {\n    const key = this.cellkey(t),\n      cell = this.cell(key, t);\n    cell.num -= 1;\n    if (this._countOnly) return;\n    if (cell.store) cell.data.rem(t);\n    const agg = cell.agg;\n    for (let i = 0, n = agg.length; i < n; ++i) {\n      agg[i].rem(agg[i].get(t), t);\n    }\n  },\n  celltuple(cell) {\n    const tuple = cell.tuple,\n      counts = this._counts;\n\n    // consolidate stored values\n    if (cell.store) {\n      cell.data.values();\n    }\n\n    // update tuple properties\n    for (let i = 0, n = counts.length; i < n; ++i) {\n      tuple[counts[i]] = cell.num;\n    }\n    if (!this._countOnly) {\n      const agg = cell.agg;\n      for (let i = 0, n = agg.length; i < n; ++i) {\n        agg[i].set(tuple);\n      }\n    }\n    return tuple;\n  },\n  changes(out) {\n    const adds = this._adds,\n      mods = this._mods,\n      prev = this._prev,\n      drop = this._drop,\n      add = out.add,\n      rem = out.rem,\n      mod = out.mod;\n    let cell, key, i, n;\n    if (prev) for (key in prev) {\n      cell = prev[key];\n      if (!drop || cell.num) rem.push(cell.tuple);\n    }\n    for (i = 0, n = this._alen; i < n; ++i) {\n      add.push(this.celltuple(adds[i]));\n      adds[i] = null; // for garbage collection\n    }\n\n    for (i = 0, n = this._mlen; i < n; ++i) {\n      cell = mods[i];\n      (cell.num === 0 && drop ? rem : mod).push(this.celltuple(cell));\n      mods[i] = null; // for garbage collection\n    }\n\n    this._alen = this._mlen = 0; // reset list of active cells\n    this._prev = null;\n    return out;\n  }\n});\n\n// epsilon bias to offset floating point error (#1737)\nconst EPSILON$1 = 1e-14;\n\n/**\n * Generates a binning function for discretizing data.\n * @constructor\n * @param {object} params - The parameters for this operator. The\n *   provided values should be valid options for the {@link bin} function.\n * @param {function(object): *} params.field - The data field to bin.\n */\nfunction Bin(params) {\n  Transform.call(this, null, params);\n}\nBin.Definition = {\n  'type': 'Bin',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'interval',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'anchor',\n    'type': 'number'\n  }, {\n    'name': 'maxbins',\n    'type': 'number',\n    'default': 20\n  }, {\n    'name': 'base',\n    'type': 'number',\n    'default': 10\n  }, {\n    'name': 'divide',\n    'type': 'number',\n    'array': true,\n    'default': [5, 2]\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'span',\n    'type': 'number'\n  }, {\n    'name': 'step',\n    'type': 'number'\n  }, {\n    'name': 'steps',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'minstep',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'name',\n    'type': 'string'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['bin0', 'bin1']\n  }]\n};\ninherits(Bin, Transform, {\n  transform(_, pulse) {\n    const band = _.interval !== false,\n      bins = this._bins(_),\n      start = bins.start,\n      step = bins.step,\n      as = _.as || ['bin0', 'bin1'],\n      b0 = as[0],\n      b1 = as[1];\n    let flag;\n    if (_.modified()) {\n      pulse = pulse.reflow(true);\n      flag = pulse.SOURCE;\n    } else {\n      flag = pulse.modified(accessorFields(_.field)) ? pulse.ADD_MOD : pulse.ADD;\n    }\n    pulse.visit(flag, band ? t => {\n      const v = bins(t);\n      // minimum bin value (inclusive)\n      t[b0] = v;\n      // maximum bin value (exclusive)\n      // use convoluted math for better floating point agreement\n      // see https://github.com/vega/vega/issues/830\n      // infinite values propagate through this formula! #2227\n      t[b1] = v == null ? null : start + step * (1 + (v - start) / step);\n    } : t => t[b0] = bins(t));\n    return pulse.modifies(band ? as : b0);\n  },\n  _bins(_) {\n    if (this.value && !_.modified()) {\n      return this.value;\n    }\n    const field = _.field,\n      bins = bin(_),\n      step = bins.step;\n    let start = bins.start,\n      stop = start + Math.ceil((bins.stop - start) / step) * step,\n      a,\n      d;\n    if ((a = _.anchor) != null) {\n      d = a - (start + step * Math.floor((a - start) / step));\n      start += d;\n      stop += d;\n    }\n    const f = function (t) {\n      let v = toNumber(field(t));\n      return v == null ? null : v < start ? -Infinity : v > stop ? +Infinity : (v = Math.max(start, Math.min(v, stop - step)), start + step * Math.floor(EPSILON$1 + (v - start) / step));\n    };\n    f.start = start;\n    f.stop = bins.stop;\n    f.step = step;\n    return this.value = accessor(f, accessorFields(field), _.name || 'bin_' + accessorName(field));\n  }\n});\n\nfunction SortedList (idFunc, source, input) {\n  const $ = idFunc;\n  let data = source || [],\n    add = input || [],\n    rem = {},\n    cnt = 0;\n  return {\n    add: t => add.push(t),\n    remove: t => rem[$(t)] = ++cnt,\n    size: () => data.length,\n    data: (compare, resort) => {\n      if (cnt) {\n        data = data.filter(t => !rem[$(t)]);\n        rem = {};\n        cnt = 0;\n      }\n      if (resort && compare) {\n        data.sort(compare);\n      }\n      if (add.length) {\n        data = compare ? merge(compare, data, add.sort(compare)) : data.concat(add);\n        add = [];\n      }\n      return data;\n    }\n  };\n}\n\n/**\n * Collects all data tuples that pass through this operator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for additionally sorting the collected tuples.\n */\nfunction Collect(params) {\n  Transform.call(this, [], params);\n}\nCollect.Definition = {\n  'type': 'Collect',\n  'metadata': {\n    'source': true\n  },\n  'params': [{\n    'name': 'sort',\n    'type': 'compare'\n  }]\n};\ninherits(Collect, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.ALL),\n      list = SortedList(tupleid, this.value, out.materialize(out.ADD).add),\n      sort = _.sort,\n      mod = pulse.changed() || sort && (_.modified('sort') || pulse.modified(sort.fields));\n    out.visit(out.REM, list.remove);\n    this.modified(mod);\n    this.value = out.source = list.data(stableCompare(sort), mod);\n\n    // propagate tree root if defined\n    if (pulse.source && pulse.source.root) {\n      this.value.root = pulse.source.root;\n    }\n    return out;\n  }\n});\n\n/**\n * Generates a comparator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string|function>} params.fields - The fields to compare.\n * @param {Array<string>} [params.orders] - The sort orders.\n *   Each entry should be one of \"ascending\" (default) or \"descending\".\n */\nfunction Compare(params) {\n  Operator.call(this, null, update$5, params);\n}\ninherits(Compare, Operator);\nfunction update$5(_) {\n  return this.value && !_.modified() ? this.value : compare(_.fields, _.orders);\n}\n\n/**\n * Count regexp-defined pattern occurrences in a text field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the text field.\n * @param {string} [params.pattern] - RegExp string defining the text pattern.\n * @param {string} [params.case] - One of 'lower', 'upper' or null (mixed) case.\n * @param {string} [params.stopwords] - RegExp string of words to ignore.\n */\nfunction CountPattern(params) {\n  Transform.call(this, null, params);\n}\nCountPattern.Definition = {\n  'type': 'CountPattern',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'case',\n    'type': 'enum',\n    'values': ['upper', 'lower', 'mixed'],\n    'default': 'mixed'\n  }, {\n    'name': 'pattern',\n    'type': 'string',\n    'default': '[\\\\w\"]+'\n  }, {\n    'name': 'stopwords',\n    'type': 'string',\n    'default': ''\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['text', 'count']\n  }]\n};\nfunction tokenize(text, tcase, match) {\n  switch (tcase) {\n    case 'upper':\n      text = text.toUpperCase();\n      break;\n    case 'lower':\n      text = text.toLowerCase();\n      break;\n  }\n  return text.match(match);\n}\ninherits(CountPattern, Transform, {\n  transform(_, pulse) {\n    const process = update => tuple => {\n      var tokens = tokenize(get(tuple), _.case, match) || [],\n        t;\n      for (var i = 0, n = tokens.length; i < n; ++i) {\n        if (!stop.test(t = tokens[i])) update(t);\n      }\n    };\n    const init = this._parameterCheck(_, pulse),\n      counts = this._counts,\n      match = this._match,\n      stop = this._stop,\n      get = _.field,\n      as = _.as || ['text', 'count'],\n      add = process(t => counts[t] = 1 + (counts[t] || 0)),\n      rem = process(t => counts[t] -= 1);\n    if (init) {\n      pulse.visit(pulse.SOURCE, add);\n    } else {\n      pulse.visit(pulse.ADD, add);\n      pulse.visit(pulse.REM, rem);\n    }\n    return this._finish(pulse, as); // generate output tuples\n  },\n\n  _parameterCheck(_, pulse) {\n    let init = false;\n    if (_.modified('stopwords') || !this._stop) {\n      this._stop = new RegExp('^' + (_.stopwords || '') + '$', 'i');\n      init = true;\n    }\n    if (_.modified('pattern') || !this._match) {\n      this._match = new RegExp(_.pattern || '[\\\\w\\']+', 'g');\n      init = true;\n    }\n    if (_.modified('field') || pulse.modified(_.field.fields)) {\n      init = true;\n    }\n    if (init) this._counts = {};\n    return init;\n  },\n  _finish(pulse, as) {\n    const counts = this._counts,\n      tuples = this._tuples || (this._tuples = {}),\n      text = as[0],\n      count = as[1],\n      out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n    let w, t, c;\n    for (w in counts) {\n      t = tuples[w];\n      c = counts[w] || 0;\n      if (!t && c) {\n        tuples[w] = t = ingest({});\n        t[text] = w;\n        t[count] = c;\n        out.add.push(t);\n      } else if (c === 0) {\n        if (t) out.rem.push(t);\n        counts[w] = null;\n        tuples[w] = null;\n      } else if (t[count] !== c) {\n        t[count] = c;\n        out.mod.push(t);\n      }\n    }\n    return out.modifies(as);\n  }\n});\n\n/**\n * Perform a cross-product of a tuple stream with itself.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object):boolean} [params.filter] - An optional filter\n *   function for selectively including tuples in the cross product.\n * @param {Array<string>} [params.as] - The names of the output fields.\n */\nfunction Cross(params) {\n  Transform.call(this, null, params);\n}\nCross.Definition = {\n  'type': 'Cross',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'filter',\n    'type': 'expr'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['a', 'b']\n  }]\n};\ninherits(Cross, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n      as = _.as || ['a', 'b'],\n      a = as[0],\n      b = as[1],\n      reset = !this.value || pulse.changed(pulse.ADD_REM) || _.modified('as') || _.modified('filter');\n    let data = this.value;\n    if (reset) {\n      if (data) out.rem = data;\n      data = pulse.materialize(pulse.SOURCE).source;\n      out.add = this.value = cross(data, a, b, _.filter || truthy);\n    } else {\n      out.mod = data;\n    }\n    out.source = this.value;\n    return out.modifies(as);\n  }\n});\nfunction cross(input, a, b, filter) {\n  var data = [],\n    t = {},\n    n = input.length,\n    i = 0,\n    j,\n    left;\n  for (; i < n; ++i) {\n    t[a] = left = input[i];\n    for (j = 0; j < n; ++j) {\n      t[b] = input[j];\n      if (filter(t)) {\n        data.push(ingest(t));\n        t = {};\n        t[a] = left;\n      }\n    }\n  }\n  return data;\n}\n\nconst Distributions = {\n  kde: randomKDE,\n  mixture: randomMixture,\n  normal: randomNormal,\n  lognormal: randomLogNormal,\n  uniform: randomUniform\n};\nconst DISTRIBUTIONS = 'distributions',\n  FUNCTION = 'function',\n  FIELD = 'field';\n\n/**\n * Parse a parameter object for a probability distribution.\n * @param {object} def - The distribution parameter object.\n * @param {function():Array<object>} - A method for requesting\n *   source data. Used for distributions (such as KDE) that\n *   require sample data points. This method will only be\n *   invoked if the 'from' parameter for a target data source\n *   is not provided. Typically this method returns backing\n *   source data for a Pulse object.\n * @return {object} - The output distribution object.\n */\nfunction parse(def, data) {\n  const func = def[FUNCTION];\n  if (!hasOwnProperty(Distributions, func)) {\n    error('Unknown distribution function: ' + func);\n  }\n  const d = Distributions[func]();\n  for (const name in def) {\n    // if data field, extract values\n    if (name === FIELD) {\n      d.data((def.from || data()).map(def[name]));\n    }\n\n    // if distribution mixture, recurse to parse each definition\n    else if (name === DISTRIBUTIONS) {\n      d[name](def[name].map(_ => parse(_, data)));\n    }\n\n    // otherwise, simply set the parameter\n    else if (typeof d[name] === FUNCTION) {\n      d[name](def[name]);\n    }\n  }\n  return d;\n}\n\n/**\n * Grid sample points for a probability density. Given a distribution and\n * a sampling extent, will generate points suitable for plotting either\n * PDF (probability density function) or CDF (cumulative distribution\n * function) curves.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.distribution - The probability distribution. This\n *   is an object parameter dependent on the distribution type.\n * @param {string} [params.method='pdf'] - The distribution method to sample.\n *   One of 'pdf' or 'cdf'.\n * @param {Array<number>} [params.extent] - The [min, max] extent over which\n *   to sample the distribution. This argument is required in most cases, but\n *   can be omitted if the distribution (e.g., 'kde') supports a 'data' method\n *   that returns numerical sample points from which the extent can be deduced.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n *   for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n *   for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n *   plotting the density. If specified, overrides both minsteps and maxsteps\n *   to set an exact number of uniform samples. Useful in conjunction with\n *   a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction Density(params) {\n  Transform.call(this, null, params);\n}\nconst distributions = [{\n  'key': {\n    'function': 'normal'\n  },\n  'params': [{\n    'name': 'mean',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'stdev',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'lognormal'\n  },\n  'params': [{\n    'name': 'mean',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'stdev',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'uniform'\n  },\n  'params': [{\n    'name': 'min',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'max',\n    'type': 'number',\n    'default': 1\n  }]\n}, {\n  'key': {\n    'function': 'kde'\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'from',\n    'type': 'data'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0\n  }]\n}];\nconst mixture = {\n  'key': {\n    'function': 'mixture'\n  },\n  'params': [{\n    'name': 'distributions',\n    'type': 'param',\n    'array': true,\n    'params': distributions\n  }, {\n    'name': 'weights',\n    'type': 'number',\n    'array': true\n  }]\n};\nDensity.Definition = {\n  'type': 'Density',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'steps',\n    'type': 'number'\n  }, {\n    'name': 'minsteps',\n    'type': 'number',\n    'default': 25\n  }, {\n    'name': 'maxsteps',\n    'type': 'number',\n    'default': 200\n  }, {\n    'name': 'method',\n    'type': 'string',\n    'default': 'pdf',\n    'values': ['pdf', 'cdf']\n  }, {\n    'name': 'distribution',\n    'type': 'param',\n    'params': distributions.concat(mixture)\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['value', 'density']\n  }]\n};\ninherits(Density, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n    if (!this.value || pulse.changed() || _.modified()) {\n      const dist = parse(_.distribution, source(pulse)),\n        minsteps = _.steps || _.minsteps || 25,\n        maxsteps = _.steps || _.maxsteps || 200;\n      let method = _.method || 'pdf';\n      if (method !== 'pdf' && method !== 'cdf') {\n        error('Invalid density method: ' + method);\n      }\n      if (!_.extent && !dist.data) {\n        error('Missing density extent parameter.');\n      }\n      method = dist[method];\n      const as = _.as || ['value', 'density'],\n        domain = _.extent || extent(dist.data()),\n        values = sampleCurve(method, domain, minsteps, maxsteps).map(v => {\n          const tuple = {};\n          tuple[as[0]] = v[0];\n          tuple[as[1]] = v[1];\n          return ingest(tuple);\n        });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n    return out;\n  }\n});\nfunction source(pulse) {\n  return () => pulse.materialize(pulse.SOURCE).source;\n}\n\n// use either provided alias or accessor field name\nfunction fieldNames(fields, as) {\n  if (!fields) return null;\n  return fields.map((f, i) => as[i] || accessorName(f));\n}\nfunction partition$1(data, groupby, field) {\n  const groups = [],\n    get = f => f(t);\n  let map, i, n, t, k, g;\n\n  // partition data points into groups\n  if (groupby == null) {\n    groups.push(data.map(field));\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n      g.push(field(t));\n    }\n  }\n  return groups;\n}\n\nconst Output = 'bin';\n\n/**\n * Dot density binning for dot plot construction.\n * Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n * https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to bin.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.step] - The step size (bin width) within which dots should be\n *   stacked. Defaults to 1/30 of the extent of the data *field*.\n * @param {boolean} [params.smooth=false] - A boolean flag indicating if dot density\n *   stacks should be smoothed to reduce variance.\n */\nfunction DotBin(params) {\n  Transform.call(this, null, params);\n}\nDotBin.Definition = {\n  'type': 'DotBin',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number'\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': Output\n  }]\n};\nconst autostep = (data, field) => span(extent(data, field)) / 30;\ninherits(DotBin, Transform, {\n  transform(_, pulse) {\n    if (this.value && !(_.modified() || pulse.changed())) {\n      return pulse; // early exit\n    }\n\n    const source = pulse.materialize(pulse.SOURCE).source,\n      groups = partition$1(pulse.source, _.groupby, identity),\n      smooth = _.smooth || false,\n      field = _.field,\n      step = _.step || autostep(source, field),\n      sort = stableCompare((a, b) => field(a) - field(b)),\n      as = _.as || Output,\n      n = groups.length;\n\n    // compute dotplot bins per group\n    let min = Infinity,\n      max = -Infinity,\n      i = 0,\n      j;\n    for (; i < n; ++i) {\n      const g = groups[i].sort(sort);\n      j = -1;\n      for (const v of dotbin(g, step, smooth, field)) {\n        if (v < min) min = v;\n        if (v > max) max = v;\n        g[++j][as] = v;\n      }\n    }\n    this.value = {\n      start: min,\n      stop: max,\n      step: step\n    };\n    return pulse.reflow(true).modifies(as);\n  }\n});\n\n/**\n * Wraps an expression function with access to external parameters.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function} params.expr - The expression function. The\n *  function should accept both a datum and a parameter object.\n *  This operator's value will be a new function that wraps the\n *  expression function with access to this operator's parameters.\n */\nfunction Expression(params) {\n  Operator.call(this, null, update$4, params);\n  this.modified(true);\n}\ninherits(Expression, Operator);\nfunction update$4(_) {\n  const expr = _.expr;\n  return this.value && !_.modified('expr') ? this.value : accessor(datum => expr(datum, _), accessorFields(expr), accessorName(expr));\n}\n\n/**\n * Computes extents (min/max) for a data field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field over which to compute extends.\n */\nfunction Extent(params) {\n  Transform.call(this, [undefined, undefined], params);\n}\nExtent.Definition = {\n  'type': 'Extent',\n  'metadata': {},\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }]\n};\ninherits(Extent, Transform, {\n  transform(_, pulse) {\n    const extent = this.value,\n      field = _.field,\n      mod = pulse.changed() || pulse.modified(field.fields) || _.modified('field');\n    let min = extent[0],\n      max = extent[1];\n    if (mod || min == null) {\n      min = +Infinity;\n      max = -Infinity;\n    }\n    pulse.visit(mod ? pulse.SOURCE : pulse.ADD, t => {\n      const v = toNumber(field(t));\n      if (v != null) {\n        // NaNs will fail all comparisons!\n        if (v < min) min = v;\n        if (v > max) max = v;\n      }\n    });\n    if (!Number.isFinite(min) || !Number.isFinite(max)) {\n      let name = accessorName(field);\n      if (name) name = ` for field \"${name}\"`;\n      pulse.dataflow.warn(`Infinite extent${name}: [${min}, ${max}]`);\n      min = max = undefined;\n    }\n    this.value = [min, max];\n  }\n});\n\n/**\n * Provides a bridge between a parent transform and a target subflow that\n * consumes only a subset of the tuples that pass through the parent.\n * @constructor\n * @param {Pulse} pulse - A pulse to use as the value of this operator.\n * @param {Transform} parent - The parent transform (typically a Facet instance).\n */\nfunction Subflow(pulse, parent) {\n  Operator.call(this, pulse);\n  this.parent = parent;\n  this.count = 0;\n}\ninherits(Subflow, Operator, {\n  /**\n   * Routes pulses from this subflow to a target transform.\n   * @param {Transform} target - A transform that receives the subflow of tuples.\n   */\n  connect(target) {\n    this.detachSubflow = target.detachSubflow;\n    this.targets().add(target);\n    return target.source = this;\n  },\n  /**\n   * Add an 'add' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being added.\n   */\n  add(t) {\n    this.count += 1;\n    this.value.add.push(t);\n  },\n  /**\n   * Add a 'rem' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being removed.\n   */\n  rem(t) {\n    this.count -= 1;\n    this.value.rem.push(t);\n  },\n  /**\n   * Add a 'mod' tuple to the subflow pulse.\n   * @param {Tuple} t - The tuple being modified.\n   */\n  mod(t) {\n    this.value.mod.push(t);\n  },\n  /**\n   * Re-initialize this operator's pulse value.\n   * @param {Pulse} pulse - The pulse to copy from.\n   * @see Pulse.init\n   */\n  init(pulse) {\n    this.value.init(pulse, pulse.NO_SOURCE);\n  },\n  /**\n   * Evaluate this operator. This method overrides the\n   * default behavior to simply return the contained pulse value.\n   * @return {Pulse}\n   */\n  evaluate() {\n    // assert: this.value.stamp === pulse.stamp\n    return this.value;\n  }\n});\n\n/**\n * Facets a dataflow into a set of subflows based on a key.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n *   that generates a subflow of operators and returns its root operator.\n * @param {function(object): *} params.key - The key field to facet by.\n */\nfunction Facet(params) {\n  Transform.call(this, {}, params);\n  this._keys = fastmap(); // cache previously calculated key values\n\n  // keep track of active subflows, use as targets array for listeners\n  // this allows us to limit propagation to only updated subflows\n  const a = this._targets = [];\n  a.active = 0;\n  a.forEach = f => {\n    for (let i = 0, n = a.active; i < n; ++i) {\n      f(a[i], i, a);\n    }\n  };\n}\ninherits(Facet, Transform, {\n  activate(flow) {\n    this._targets[this._targets.active++] = flow;\n  },\n  // parent argument provided by PreFacet subclass\n  subflow(key, flow, pulse, parent) {\n    const flows = this.value;\n    let sf = hasOwnProperty(flows, key) && flows[key],\n      df,\n      p;\n    if (!sf) {\n      p = parent || (p = this._group[key]) && p.tuple;\n      df = pulse.dataflow;\n      sf = new Subflow(pulse.fork(pulse.NO_SOURCE), this);\n      df.add(sf).connect(flow(df, key, p));\n      flows[key] = sf;\n      this.activate(sf);\n    } else if (sf.value.stamp < pulse.stamp) {\n      sf.init(pulse);\n      this.activate(sf);\n    }\n    return sf;\n  },\n  clean() {\n    const flows = this.value;\n    let detached = 0;\n    for (const key in flows) {\n      if (flows[key].count === 0) {\n        const detach = flows[key].detachSubflow;\n        if (detach) detach();\n        delete flows[key];\n        ++detached;\n      }\n    }\n\n    // remove inactive targets from the active targets array\n    if (detached) {\n      const active = this._targets.filter(sf => sf && sf.count > 0);\n      this.initTargets(active);\n    }\n  },\n  initTargets(act) {\n    const a = this._targets,\n      n = a.length,\n      m = act ? act.length : 0;\n    let i = 0;\n    for (; i < m; ++i) {\n      a[i] = act[i];\n    }\n    for (; i < n && a[i] != null; ++i) {\n      a[i] = null; // ensure old flows can be garbage collected\n    }\n\n    a.active = m;\n  },\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n      key = _.key,\n      flow = _.subflow,\n      cache = this._keys,\n      rekey = _.modified('key'),\n      subflow = key => this.subflow(key, flow, pulse);\n    this._group = _.group || {};\n    this.initTargets(); // reset list of active subflows\n\n    pulse.visit(pulse.REM, t => {\n      const id = tupleid(t),\n        k = cache.get(id);\n      if (k !== undefined) {\n        cache.delete(id);\n        subflow(k).rem(t);\n      }\n    });\n    pulse.visit(pulse.ADD, t => {\n      const k = key(t);\n      cache.set(tupleid(t), k);\n      subflow(k).add(t);\n    });\n    if (rekey || pulse.modified(key.fields)) {\n      pulse.visit(pulse.MOD, t => {\n        const id = tupleid(t),\n          k0 = cache.get(id),\n          k1 = key(t);\n        if (k0 === k1) {\n          subflow(k1).mod(t);\n        } else {\n          cache.set(id, k1);\n          subflow(k0).rem(t);\n          subflow(k1).add(t);\n        }\n      });\n    } else if (pulse.changed(pulse.MOD)) {\n      pulse.visit(pulse.MOD, t => {\n        subflow(cache.get(tupleid(t))).mod(t);\n      });\n    }\n    if (rekey) {\n      pulse.visit(pulse.REFLOW, t => {\n        const id = tupleid(t),\n          k0 = cache.get(id),\n          k1 = key(t);\n        if (k0 !== k1) {\n          cache.set(id, k1);\n          subflow(k0).rem(t);\n          subflow(k1).add(t);\n        }\n      });\n    }\n    if (pulse.clean()) {\n      df.runAfter(() => {\n        this.clean();\n        cache.clean();\n      });\n    } else if (cache.empty > df.cleanThreshold) {\n      df.runAfter(cache.clean);\n    }\n    return pulse;\n  }\n});\n\n/**\n * Generates one or more field accessor functions.\n * If the 'name' parameter is an array, an array of field accessors\n * will be created and the 'as' parameter will be ignored.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.name - The field name(s) to access.\n * @param {string} params.as - The accessor function name.\n */\nfunction Field(params) {\n  Operator.call(this, null, update$3, params);\n}\ninherits(Field, Operator);\nfunction update$3(_) {\n  return this.value && !_.modified() ? this.value : isArray(_.name) ? array(_.name).map(f => field(f)) : field(_.name, _.as);\n}\n\n/**\n * Filters data tuples according to a predicate function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The predicate expression function\n *   that determines a tuple's filter status. Truthy values pass the filter.\n */\nfunction Filter(params) {\n  Transform.call(this, fastmap(), params);\n}\nFilter.Definition = {\n  'type': 'Filter',\n  'metadata': {\n    'changes': true\n  },\n  'params': [{\n    'name': 'expr',\n    'type': 'expr',\n    'required': true\n  }]\n};\ninherits(Filter, Transform, {\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n      cache = this.value,\n      // cache ids of filtered tuples\n      output = pulse.fork(),\n      add = output.add,\n      rem = output.rem,\n      mod = output.mod,\n      test = _.expr;\n    let isMod = true;\n    pulse.visit(pulse.REM, t => {\n      const id = tupleid(t);\n      if (!cache.has(id)) rem.push(t);else cache.delete(id);\n    });\n    pulse.visit(pulse.ADD, t => {\n      if (test(t, _)) add.push(t);else cache.set(tupleid(t), 1);\n    });\n    function revisit(t) {\n      const id = tupleid(t),\n        b = test(t, _),\n        s = cache.get(id);\n      if (b && s) {\n        cache.delete(id);\n        add.push(t);\n      } else if (!b && !s) {\n        cache.set(id, 1);\n        rem.push(t);\n      } else if (isMod && b && !s) {\n        mod.push(t);\n      }\n    }\n    pulse.visit(pulse.MOD, revisit);\n    if (_.modified()) {\n      isMod = false;\n      pulse.visit(pulse.REFLOW, revisit);\n    }\n    if (cache.empty > df.cleanThreshold) df.runAfter(cache.clean);\n    return output;\n  }\n});\n\n/**\n * Flattens array-typed field values into new data objects.\n * If multiple fields are specified, they are treated as parallel arrays,\n * with output values included for each matching index (or null if missing).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of field\n *   accessors for the tuple fields that should be flattened.\n * @param {string} [params.index] - Optional output field name for index\n *   value. If unspecified, no index field is included in the output.\n * @param {Array<string>} [params.as] - Output field names for flattened\n *   array fields. Any unspecified fields will use the field name provided\n *   by the fields accessors.\n */\nfunction Flatten(params) {\n  Transform.call(this, [], params);\n}\nFlatten.Definition = {\n  'type': 'Flatten',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'index',\n    'type': 'string'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\ninherits(Flatten, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n      fields = _.fields,\n      as = fieldNames(fields, _.as || []),\n      index = _.index || null,\n      m = as.length;\n\n    // remove any previous results\n    out.rem = this.value;\n\n    // generate flattened tuples\n    pulse.visit(pulse.SOURCE, t => {\n      const arrays = fields.map(f => f(t)),\n        maxlen = arrays.reduce((l, a) => Math.max(l, a.length), 0);\n      let i = 0,\n        j,\n        d,\n        v;\n      for (; i < maxlen; ++i) {\n        d = derive(t);\n        for (j = 0; j < m; ++j) {\n          d[as[j]] = (v = arrays[j][i]) == null ? null : v;\n        }\n        if (index) {\n          d[index] = i;\n        }\n        out.add.push(d);\n      }\n    });\n    this.value = out.source = out.add;\n    if (index) out.modifies(index);\n    return out.modifies(as);\n  }\n});\n\n/**\n * Folds one more tuple fields into multiple tuples in which the field\n * name and values are available under new 'key' and 'value' fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.fields - An array of field accessors\n *   for the tuple fields that should be folded.\n * @param {Array<string>} [params.as] - Output field names for folded key\n *   and value fields, defaults to ['key', 'value'].\n */\nfunction Fold(params) {\n  Transform.call(this, [], params);\n}\nFold.Definition = {\n  'type': 'Fold',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['key', 'value']\n  }]\n};\ninherits(Fold, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n      fields = _.fields,\n      fnames = fields.map(accessorName),\n      as = _.as || ['key', 'value'],\n      k = as[0],\n      v = as[1],\n      n = fields.length;\n    out.rem = this.value;\n    pulse.visit(pulse.SOURCE, t => {\n      for (let i = 0, d; i < n; ++i) {\n        d = derive(t);\n        d[k] = fnames[i];\n        d[v] = fields[i](t);\n        out.add.push(d);\n      }\n    });\n    this.value = out.source = out.add;\n    return out.modifies(as);\n  }\n});\n\n/**\n * Invokes a function for each data tuple and saves the results as a new field.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.expr - The formula function to invoke for each tuple.\n * @param {string} params.as - The field name under which to save the result.\n * @param {boolean} [params.initonly=false] - If true, the formula is applied to\n *   added tuples only, and does not update in response to modifications.\n */\nfunction Formula(params) {\n  Transform.call(this, null, params);\n}\nFormula.Definition = {\n  'type': 'Formula',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'expr',\n    'type': 'expr',\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'required': true\n  }, {\n    'name': 'initonly',\n    'type': 'boolean'\n  }]\n};\ninherits(Formula, Transform, {\n  transform(_, pulse) {\n    const func = _.expr,\n      as = _.as,\n      mod = _.modified(),\n      flag = _.initonly ? pulse.ADD : mod ? pulse.SOURCE : pulse.modified(func.fields) || pulse.modified(as) ? pulse.ADD_MOD : pulse.ADD;\n    if (mod) {\n      // parameters updated, need to reflow\n      pulse = pulse.materialize().reflow(true);\n    }\n    if (!_.initonly) {\n      pulse.modifies(as);\n    }\n    return pulse.visit(flag, t => t[as] = func(t, _));\n  }\n});\n\n/**\n * Generates data tuples using a provided generator function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Parameters): object} params.generator - A tuple generator\n *   function. This function is given the operator parameters as input.\n *   Changes to any additional parameters will not trigger re-calculation\n *   of previously generated tuples. Only future tuples are affected.\n * @param {number} params.size - The number of tuples to produce.\n */\nfunction Generate(params) {\n  Transform.call(this, [], params);\n}\ninherits(Generate, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.ALL),\n      gen = _.generator;\n    let data = this.value,\n      num = _.size - data.length,\n      add,\n      rem,\n      t;\n    if (num > 0) {\n      // need more tuples, generate and add\n      for (add = []; --num >= 0;) {\n        add.push(t = ingest(gen(_)));\n        data.push(t);\n      }\n      out.add = out.add.length ? out.materialize(out.ADD).add.concat(add) : add;\n    } else {\n      // need fewer tuples, remove\n      rem = data.slice(0, -num);\n      out.rem = out.rem.length ? out.materialize(out.REM).rem.concat(rem) : rem;\n      data = data.slice(-num);\n    }\n    out.source = this.value = data;\n    return out;\n  }\n});\n\nconst Methods = {\n  value: 'value',\n  median: median,\n  mean: mean,\n  min: min,\n  max: max\n};\nconst Empty = [];\n\n/**\n * Impute missing values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to impute.\n * @param {Array<function(object): *>} [params.groupby] - An array of\n *   accessors to determine series within which to perform imputation.\n * @param {function(object): *} params.key - An accessor for a key value.\n *   Each key value should be unique within a group. New tuples will be\n *   imputed for any key values that are not found within a group.\n * @param {Array<*>} [params.keyvals] - Optional array of required key\n *   values. New tuples will be imputed for any key values that are not\n *   found within a group. In addition, these values will be automatically\n *   augmented with the key values observed in the input data.\n * @param {string} [method='value'] - The imputation method to use. One of\n *   'value', 'mean', 'median', 'max', 'min'.\n * @param {*} [value=0] - The constant value to use for imputation\n *   when using method 'value'.\n */\nfunction Impute(params) {\n  Transform.call(this, [], params);\n}\nImpute.Definition = {\n  'type': 'Impute',\n  'metadata': {\n    'changes': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'key',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'keyvals',\n    'array': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'value',\n    'values': ['value', 'mean', 'median', 'max', 'min']\n  }, {\n    'name': 'value',\n    'default': 0\n  }]\n};\nfunction getValue(_) {\n  var m = _.method || Methods.value,\n    v;\n  if (Methods[m] == null) {\n    error('Unrecognized imputation method: ' + m);\n  } else if (m === Methods.value) {\n    v = _.value !== undefined ? _.value : 0;\n    return () => v;\n  } else {\n    return Methods[m];\n  }\n}\nfunction getField(_) {\n  const f = _.field;\n  return t => t ? f(t) : NaN;\n}\ninherits(Impute, Transform, {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n      impute = getValue(_),\n      field = getField(_),\n      fName = accessorName(_.field),\n      kName = accessorName(_.key),\n      gNames = (_.groupby || []).map(accessorName),\n      groups = partition(pulse.source, _.groupby, _.key, _.keyvals),\n      curr = [],\n      prev = this.value,\n      m = groups.domain.length,\n      group,\n      value,\n      gVals,\n      kVal,\n      g,\n      i,\n      j,\n      l,\n      n,\n      t;\n    for (g = 0, l = groups.length; g < l; ++g) {\n      group = groups[g];\n      gVals = group.values;\n      value = NaN;\n\n      // add tuples for missing values\n      for (j = 0; j < m; ++j) {\n        if (group[j] != null) continue;\n        kVal = groups.domain[j];\n        t = {\n          _impute: true\n        };\n        for (i = 0, n = gVals.length; i < n; ++i) t[gNames[i]] = gVals[i];\n        t[kName] = kVal;\n        t[fName] = Number.isNaN(value) ? value = impute(group, field) : value;\n        curr.push(ingest(t));\n      }\n    }\n\n    // update pulse with imputed tuples\n    if (curr.length) out.add = out.materialize(out.ADD).add.concat(curr);\n    if (prev.length) out.rem = out.materialize(out.REM).rem.concat(prev);\n    this.value = curr;\n    return out;\n  }\n});\nfunction partition(data, groupby, key, keyvals) {\n  var get = f => f(t),\n    groups = [],\n    domain = keyvals ? keyvals.slice() : [],\n    kMap = {},\n    gMap = {},\n    gVals,\n    gKey,\n    group,\n    i,\n    j,\n    k,\n    n,\n    t;\n  domain.forEach((k, i) => kMap[k] = i + 1);\n  for (i = 0, n = data.length; i < n; ++i) {\n    t = data[i];\n    k = key(t);\n    j = kMap[k] || (kMap[k] = domain.push(k));\n    gKey = (gVals = groupby ? groupby.map(get) : Empty) + '';\n    if (!(group = gMap[gKey])) {\n      group = gMap[gKey] = [];\n      groups.push(group);\n      group.values = gVals;\n    }\n    group[j - 1] = t;\n  }\n  groups.domain = domain;\n  return groups;\n}\n\n/**\n * Extend input tuples with aggregate values.\n * Calcuates aggregate values and joins them with the input stream.\n * @constructor\n */\nfunction JoinAggregate(params) {\n  Aggregate.call(this, params);\n}\nJoinAggregate.Definition = {\n  'type': 'JoinAggregate',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidAggregateOps\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\ninherits(JoinAggregate, Aggregate, {\n  transform(_, pulse) {\n    const aggr = this,\n      mod = _.modified();\n    let cells;\n\n    // process all input tuples to calculate aggregates\n    if (aggr.value && (mod || pulse.modified(aggr._inputs, true))) {\n      cells = aggr.value = mod ? aggr.init(_) : {};\n      pulse.visit(pulse.SOURCE, t => aggr.add(t));\n    } else {\n      cells = aggr.value = aggr.value || this.init(_);\n      pulse.visit(pulse.REM, t => aggr.rem(t));\n      pulse.visit(pulse.ADD, t => aggr.add(t));\n    }\n\n    // update aggregation cells\n    aggr.changes();\n\n    // write aggregate values to input tuples\n    pulse.visit(pulse.SOURCE, t => {\n      extend(t, cells[aggr.cellkey(t)].tuple);\n    });\n    return pulse.reflow(mod).modifies(this._outputs);\n  },\n  changes() {\n    const adds = this._adds,\n      mods = this._mods;\n    let i, n;\n    for (i = 0, n = this._alen; i < n; ++i) {\n      this.celltuple(adds[i]);\n      adds[i] = null; // for garbage collection\n    }\n\n    for (i = 0, n = this._mlen; i < n; ++i) {\n      this.celltuple(mods[i]);\n      mods[i] = null; // for garbage collection\n    }\n\n    this._alen = this._mlen = 0; // reset list of active cells\n  }\n});\n\n/**\n * Compute kernel density estimates (KDE) for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {function(object): *} params.field - An accessor for the data field\n *   to estimate.\n * @param {number} [params.bandwidth=0] - The KDE kernel bandwidth.\n *   If zero or unspecified, the bandwidth is automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n *   output values should be probability estimates (false, default) or\n *   smoothed counts (true).\n * @param {string} [params.cumulative=false] - A boolean flag indicating if a\n *   density (false) or cumulative distribution (true) should be generated.\n * @param {Array<number>} [params.extent] - The domain extent over which to\n *   plot the density. If unspecified, the [min, max] data extent is used.\n * @param {string} [params.resolve='independent'] - Indicates how parameters for\n *   multiple densities should be resolved. If \"independent\" (the default), each\n *   density may have its own domain extent and dynamic number of curve sample\n *   steps. If \"shared\", the KDE transform will ensure that all densities are\n *   defined over a shared domain and curve steps, enabling stacking.\n * @param {number} [params.minsteps=25] - The minimum number of curve samples\n *   for plotting the density.\n * @param {number} [params.maxsteps=200] - The maximum number of curve samples\n *   for plotting the density.\n * @param {number} [params.steps] - The exact number of curve samples for\n *   plotting the density. If specified, overrides both minsteps and maxsteps\n *   to set an exact number of uniform samples. Useful in conjunction with\n *   a fixed extent to ensure consistent sample points for stacked densities.\n */\nfunction KDE(params) {\n  Transform.call(this, null, params);\n}\nKDE.Definition = {\n  'type': 'KDE',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'cumulative',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'counts',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'steps',\n    'type': 'number'\n  }, {\n    'name': 'minsteps',\n    'type': 'number',\n    'default': 25\n  }, {\n    'name': 'maxsteps',\n    'type': 'number',\n    'default': 200\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['value', 'density']\n  }]\n};\ninherits(KDE, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n        groups = partition$1(source, _.groupby, _.field),\n        names = (_.groupby || []).map(accessorName),\n        bandwidth = _.bandwidth,\n        method = _.cumulative ? 'cdf' : 'pdf',\n        as = _.as || ['value', 'density'],\n        values = [];\n      let domain = _.extent,\n        minsteps = _.steps || _.minsteps || 25,\n        maxsteps = _.steps || _.maxsteps || 200;\n      if (method !== 'pdf' && method !== 'cdf') {\n        error('Invalid density method: ' + method);\n      }\n      if (_.resolve === 'shared') {\n        if (!domain) domain = extent(source, _.field);\n        minsteps = maxsteps = _.steps || maxsteps;\n      }\n      groups.forEach(g => {\n        const density = randomKDE(g, bandwidth)[method],\n          scale = _.counts ? g.length : 1,\n          local = domain || extent(g);\n        sampleCurve(density, local, minsteps, maxsteps).forEach(v => {\n          const t = {};\n          for (let i = 0; i < names.length; ++i) {\n            t[names[i]] = g.dims[i];\n          }\n          t[as[0]] = v[0];\n          t[as[1]] = v[1] * scale;\n          values.push(ingest(t));\n        });\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n    return out;\n  }\n});\n\n/**\n * Generates a key function.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<string>} params.fields - The field name(s) for the key function.\n * @param {boolean} params.flat - A boolean flag indicating if the field names\n *  should be treated as flat property names, side-stepping nested field\n *  lookups normally indicated by dot or bracket notation.\n */\nfunction Key(params) {\n  Operator.call(this, null, update$2, params);\n}\ninherits(Key, Operator);\nfunction update$2(_) {\n  return this.value && !_.modified() ? this.value : key(_.fields, _.flat);\n}\n\n/**\n * Load and parse data from an external source. Marshalls parameter\n * values and then invokes the Dataflow request method.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.url - The URL to load from.\n * @param {object} params.format - The data format options.\n */\nfunction Load(params) {\n  Transform.call(this, [], params);\n  this._pending = null;\n}\ninherits(Load, Transform, {\n  transform(_, pulse) {\n    const df = pulse.dataflow;\n    if (this._pending) {\n      // update state and return pulse\n      return output(this, pulse, this._pending);\n    }\n    if (stop(_)) return pulse.StopPropagation;\n    if (_.values) {\n      // parse and ingest values, return output pulse\n      return output(this, pulse, df.parse(_.values, _.format));\n    } else if (_.async) {\n      // return promise for non-blocking async loading\n      const p = df.request(_.url, _.format).then(res => {\n        this._pending = array(res.data);\n        return df => df.touch(this);\n      });\n      return {\n        async: p\n      };\n    } else {\n      // return promise for synchronous loading\n      return df.request(_.url, _.format).then(res => output(this, pulse, array(res.data)));\n    }\n  }\n});\nfunction stop(_) {\n  return _.modified('async') && !(_.modified('values') || _.modified('url') || _.modified('format'));\n}\nfunction output(op, pulse, data) {\n  data.forEach(ingest);\n  const out = pulse.fork(pulse.NO_FIELDS & pulse.NO_SOURCE);\n  out.rem = op.value;\n  op.value = out.source = out.add = data;\n  op._pending = null;\n  if (out.rem.length) out.clean(true);\n  return out;\n}\n\n/**\n * Extend tuples by joining them with values from a lookup table.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Map} params.index - The lookup table map.\n * @param {Array<function(object): *} params.fields - The fields to lookup.\n * @param {Array<string>} params.as - Output field names for each lookup value.\n * @param {*} [params.default] - A default value to use if lookup fails.\n */\nfunction Lookup(params) {\n  Transform.call(this, {}, params);\n}\nLookup.Definition = {\n  'type': 'Lookup',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'index',\n    'type': 'index',\n    'params': [{\n      'name': 'from',\n      'type': 'data',\n      'required': true\n    }, {\n      'name': 'key',\n      'type': 'field',\n      'required': true\n    }]\n  }, {\n    'name': 'values',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }, {\n    'name': 'default',\n    'default': null\n  }]\n};\ninherits(Lookup, Transform, {\n  transform(_, pulse) {\n    const keys = _.fields,\n      index = _.index,\n      values = _.values,\n      defaultValue = _.default == null ? null : _.default,\n      reset = _.modified(),\n      n = keys.length;\n    let flag = reset ? pulse.SOURCE : pulse.ADD,\n      out = pulse,\n      as = _.as,\n      set,\n      m,\n      mods;\n    if (values) {\n      m = values.length;\n      if (n > 1 && !as) {\n        error('Multi-field lookup requires explicit \"as\" parameter.');\n      }\n      if (as && as.length !== n * m) {\n        error('The \"as\" parameter has too few output field names.');\n      }\n      as = as || values.map(accessorName);\n      set = function (t) {\n        for (var i = 0, k = 0, j, v; i < n; ++i) {\n          v = index.get(keys[i](t));\n          if (v == null) for (j = 0; j < m; ++j, ++k) t[as[k]] = defaultValue;else for (j = 0; j < m; ++j, ++k) t[as[k]] = values[j](v);\n        }\n      };\n    } else {\n      if (!as) {\n        error('Missing output field names.');\n      }\n      set = function (t) {\n        for (var i = 0, v; i < n; ++i) {\n          v = index.get(keys[i](t));\n          t[as[i]] = v == null ? defaultValue : v;\n        }\n      };\n    }\n    if (reset) {\n      out = pulse.reflow(true);\n    } else {\n      mods = keys.some(k => pulse.modified(k.fields));\n      flag |= mods ? pulse.MOD : 0;\n    }\n    pulse.visit(flag, set);\n    return out.modifies(as);\n  }\n});\n\n/**\n * Computes global min/max extents over a collection of extents.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<number>>} params.extents - The input extents.\n */\nfunction MultiExtent(params) {\n  Operator.call(this, null, update$1, params);\n}\ninherits(MultiExtent, Operator);\nfunction update$1(_) {\n  if (this.value && !_.modified()) {\n    return this.value;\n  }\n  const ext = _.extents,\n    n = ext.length;\n  let min = +Infinity,\n    max = -Infinity,\n    i,\n    e;\n  for (i = 0; i < n; ++i) {\n    e = ext[i];\n    if (e[0] < min) min = e[0];\n    if (e[1] > max) max = e[1];\n  }\n  return [min, max];\n}\n\n/**\n * Merge a collection of value arrays.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<Array<*>>} params.values - The input value arrrays.\n */\nfunction MultiValues(params) {\n  Operator.call(this, null, update, params);\n}\ninherits(MultiValues, Operator);\nfunction update(_) {\n  return this.value && !_.modified() ? this.value : _.values.reduce((data, _) => data.concat(_), []);\n}\n\n/**\n * Operator whose value is simply its parameter hash. This operator is\n * useful for enabling reactive updates to values of nested objects.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Params(params) {\n  Transform.call(this, null, params);\n}\ninherits(Params, Transform, {\n  transform(_, pulse) {\n    this.modified(_.modified());\n    this.value = _;\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); // do not pass tuples\n  }\n});\n\n/**\n * Aggregate and pivot selected field values to become new fields.\n * This operator is useful to construction cross-tabulations.\n * @constructor\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *  to groupby. These fields act just like groupby fields of an Aggregate transform.\n * @param {function(object): *} params.field - The field to pivot on. The unique\n *  values of this field become new field names in the output stream.\n * @param {function(object): *} params.value - The field to populate pivoted fields.\n *  The aggregate values of this field become the values of the new pivoted fields.\n * @param {string} [params.op] - The aggregation operation for the value field,\n *  applied per cell in the output stream. The default is \"sum\".\n * @param {number} [params.limit] - An optional parameter indicating the maximum\n *  number of pivoted fields to generate. The pivoted field names are sorted in\n *  ascending order prior to enforcing the limit.\n */\nfunction Pivot(params) {\n  Aggregate.call(this, params);\n}\nPivot.Definition = {\n  'type': 'Pivot',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'value',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'op',\n    'type': 'enum',\n    'values': ValidAggregateOps,\n    'default': 'sum'\n  }, {\n    'name': 'limit',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'key',\n    'type': 'field'\n  }]\n};\ninherits(Pivot, Aggregate, {\n  _transform: Aggregate.prototype.transform,\n  transform(_, pulse) {\n    return this._transform(aggregateParams(_, pulse), pulse);\n  }\n});\n\n// Shoehorn a pivot transform into an aggregate transform!\n// First collect all unique pivot field values.\n// Then generate aggregate fields for each output pivot field.\nfunction aggregateParams(_, pulse) {\n  const key = _.field,\n    value = _.value,\n    op = (_.op === 'count' ? '__count__' : _.op) || 'sum',\n    fields = accessorFields(key).concat(accessorFields(value)),\n    keys = pivotKeys(key, _.limit || 0, pulse);\n\n  // if data stream content changes, pivot fields may change\n  // flag parameter modification to ensure re-initialization\n  if (pulse.changed()) _.set('__pivot__', null, null, true);\n  return {\n    key: _.key,\n    groupby: _.groupby,\n    ops: keys.map(() => op),\n    fields: keys.map(k => get(k, key, value, fields)),\n    as: keys.map(k => k + ''),\n    modified: _.modified.bind(_)\n  };\n}\n\n// Generate aggregate field accessor.\n// Output NaN for non-existent values; aggregator will ignore!\nfunction get(k, key, value, fields) {\n  return accessor(d => key(d) === k ? value(d) : NaN, fields, k + '');\n}\n\n// Collect (and optionally limit) all unique pivot values.\nfunction pivotKeys(key, limit, pulse) {\n  const map = {},\n    list = [];\n  pulse.visit(pulse.SOURCE, t => {\n    const k = key(t);\n    if (!map[k]) {\n      map[k] = 1;\n      list.push(k);\n    }\n  });\n  list.sort(ascending);\n  return limit ? list.slice(0, limit) : list;\n}\n\n/**\n * Partitions pre-faceted data into tuple subflows.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(Dataflow, string): Operator} params.subflow - A function\n *   that generates a subflow of operators and returns its root operator.\n * @param {function(object): Array<object>} params.field - The field\n *   accessor for an array of subflow tuple objects.\n */\nfunction PreFacet(params) {\n  Facet.call(this, params);\n}\ninherits(PreFacet, Facet, {\n  transform(_, pulse) {\n    const flow = _.subflow,\n      field = _.field,\n      subflow = t => this.subflow(tupleid(t), flow, pulse, t);\n    if (_.modified('field') || field && pulse.modified(accessorFields(field))) {\n      error('PreFacet does not support field modification.');\n    }\n    this.initTargets(); // reset list of active subflows\n\n    if (field) {\n      pulse.visit(pulse.MOD, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.mod(_));\n      });\n      pulse.visit(pulse.ADD, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.add(ingest(_)));\n      });\n      pulse.visit(pulse.REM, t => {\n        const sf = subflow(t);\n        field(t).forEach(_ => sf.rem(_));\n      });\n    } else {\n      pulse.visit(pulse.MOD, t => subflow(t).mod(t));\n      pulse.visit(pulse.ADD, t => subflow(t).add(t));\n      pulse.visit(pulse.REM, t => subflow(t).rem(t));\n    }\n    if (pulse.clean()) {\n      pulse.runAfter(() => this.clean());\n    }\n    return pulse;\n  }\n});\n\n/**\n * Performs a relational projection, copying selected fields from source\n * tuples to a new set of derived tuples.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *} params.fields - The fields to project,\n *   as an array of field accessors. If unspecified, all fields will be\n *   copied with names unchanged.\n * @param {Array<string>} [params.as] - Output field names for each projected\n *   field. Any unspecified fields will use the field name provided by\n *   the field accessor.\n */\nfunction Project(params) {\n  Transform.call(this, null, params);\n}\nProject.Definition = {\n  'type': 'Project',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }]\n};\ninherits(Project, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n      fields = _.fields,\n      as = fieldNames(_.fields, _.as || []),\n      derive = fields ? (s, t) => project(s, t, fields, as) : rederive;\n    let lut;\n    if (this.value) {\n      lut = this.value;\n    } else {\n      pulse = pulse.addAll();\n      lut = this.value = {};\n    }\n    pulse.visit(pulse.REM, t => {\n      const id = tupleid(t);\n      out.rem.push(lut[id]);\n      lut[id] = null;\n    });\n    pulse.visit(pulse.ADD, t => {\n      const dt = derive(t, ingest({}));\n      lut[tupleid(t)] = dt;\n      out.add.push(dt);\n    });\n    pulse.visit(pulse.MOD, t => {\n      out.mod.push(derive(t, lut[tupleid(t)]));\n    });\n    return out;\n  }\n});\nfunction project(s, t, fields, as) {\n  for (let i = 0, n = fields.length; i < n; ++i) {\n    t[as[i]] = fields[i](s);\n  }\n  return t;\n}\n\n/**\n * Proxy the value of another operator as a pure signal value.\n * Ensures no tuples are propagated.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {*} params.value - The value to proxy, becomes the value of this operator.\n */\nfunction Proxy(params) {\n  Transform.call(this, null, params);\n}\ninherits(Proxy, Transform, {\n  transform(_, pulse) {\n    this.value = _.value;\n    return _.modified('value') ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n  }\n});\n\n/**\n * Generates sample quantile values from an input data stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - An accessor for the data field\n *   over which to calculate quantile values.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {Array<number>} [params.probs] - An array of probabilities in\n *   the range (0, 1) for which to compute quantile values. If not specified,\n *   the *step* parameter will be used.\n * @param {Array<number>} [params.step=0.01] - A probability step size for\n *   sampling quantile values. All values from one-half the step size up to\n *   1 (exclusive) will be sampled. This parameter is only used if the\n *   *quantiles* parameter is not provided.\n */\nfunction Quantile(params) {\n  Transform.call(this, null, params);\n}\nQuantile.Definition = {\n  'type': 'Quantile',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'probs',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 0.01\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'default': ['prob', 'value']\n  }]\n};\nconst EPSILON = 1e-14;\ninherits(Quantile, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n      as = _.as || ['prob', 'value'];\n    if (this.value && !_.modified() && !pulse.changed()) {\n      out.source = this.value;\n      return out;\n    }\n    const source = pulse.materialize(pulse.SOURCE).source,\n      groups = partition$1(source, _.groupby, _.field),\n      names = (_.groupby || []).map(accessorName),\n      values = [],\n      step = _.step || 0.01,\n      p = _.probs || range(step / 2, 1 - EPSILON, step),\n      n = p.length;\n    groups.forEach(g => {\n      const q = quantiles(g, p);\n      for (let i = 0; i < n; ++i) {\n        const t = {};\n        for (let i = 0; i < names.length; ++i) {\n          t[names[i]] = g.dims[i];\n        }\n        t[as[0]] = p[i];\n        t[as[1]] = q[i];\n        values.push(ingest(t));\n      }\n    });\n    if (this.value) out.rem = this.value;\n    this.value = out.add = out.source = values;\n    return out;\n  }\n});\n\n/**\n * Relays a data stream between data processing pipelines.\n * If the derive parameter is set, this transform will create derived\n * copies of observed tuples. This provides derived data streams in which\n * modifications to the tuples do not pollute an upstream data source.\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.derive=false] - Boolean flag indicating if\n *   the transform should make derived copies of incoming tuples.\n * @constructor\n */\nfunction Relay(params) {\n  Transform.call(this, null, params);\n}\ninherits(Relay, Transform, {\n  transform(_, pulse) {\n    let out, lut;\n    if (this.value) {\n      lut = this.value;\n    } else {\n      out = pulse = pulse.addAll();\n      lut = this.value = {};\n    }\n    if (_.derive) {\n      out = pulse.fork(pulse.NO_SOURCE);\n      pulse.visit(pulse.REM, t => {\n        const id = tupleid(t);\n        out.rem.push(lut[id]);\n        lut[id] = null;\n      });\n      pulse.visit(pulse.ADD, t => {\n        const dt = derive(t);\n        lut[tupleid(t)] = dt;\n        out.add.push(dt);\n      });\n      pulse.visit(pulse.MOD, t => {\n        const dt = lut[tupleid(t)];\n        for (const k in t) {\n          dt[k] = t[k];\n          // down stream writes may overwrite re-derived tuples\n          // conservatively mark all source fields as modified\n          out.modifies(k);\n        }\n        out.mod.push(dt);\n      });\n    }\n    return out;\n  }\n});\n\n/**\n * Samples tuples passing through this operator.\n * Uses reservoir sampling to maintain a representative sample.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} [params.size=1000] - The maximum number of samples.\n */\nfunction Sample(params) {\n  Transform.call(this, [], params);\n  this.count = 0;\n}\nSample.Definition = {\n  'type': 'Sample',\n  'metadata': {},\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'default': 1000\n  }]\n};\ninherits(Sample, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE),\n      mod = _.modified('size'),\n      num = _.size,\n      map = this.value.reduce((m, t) => (m[tupleid(t)] = 1, m), {});\n    let res = this.value,\n      cnt = this.count,\n      cap = 0;\n\n    // sample reservoir update function\n    function update(t) {\n      let p, idx;\n      if (res.length < num) {\n        res.push(t);\n      } else {\n        idx = ~~((cnt + 1) * random());\n        if (idx < res.length && idx >= cap) {\n          p = res[idx];\n          if (map[tupleid(p)]) out.rem.push(p); // eviction\n          res[idx] = t;\n        }\n      }\n      ++cnt;\n    }\n    if (pulse.rem.length) {\n      // find all tuples that should be removed, add to output\n      pulse.visit(pulse.REM, t => {\n        const id = tupleid(t);\n        if (map[id]) {\n          map[id] = -1;\n          out.rem.push(t);\n        }\n        --cnt;\n      });\n\n      // filter removed tuples out of the sample reservoir\n      res = res.filter(t => map[tupleid(t)] !== -1);\n    }\n    if ((pulse.rem.length || mod) && res.length < num && pulse.source) {\n      // replenish sample if backing data source is available\n      cap = cnt = res.length;\n      pulse.visit(pulse.SOURCE, t => {\n        // update, but skip previously sampled tuples\n        if (!map[tupleid(t)]) update(t);\n      });\n      cap = -1;\n    }\n    if (mod && res.length > num) {\n      const n = res.length - num;\n      for (let i = 0; i < n; ++i) {\n        map[tupleid(res[i])] = -1;\n        out.rem.push(res[i]);\n      }\n      res = res.slice(n);\n    }\n    if (pulse.mod.length) {\n      // propagate modified tuples in the sample reservoir\n      pulse.visit(pulse.MOD, t => {\n        if (map[tupleid(t)]) out.mod.push(t);\n      });\n    }\n    if (pulse.add.length) {\n      // update sample reservoir\n      pulse.visit(pulse.ADD, update);\n    }\n    if (pulse.add.length || cap < 0) {\n      // output newly added tuples\n      out.add = res.filter(t => !map[tupleid(t)]);\n    }\n    this.count = cnt;\n    this.value = out.source = res;\n    return out;\n  }\n});\n\n/**\n * Generates data tuples for a specified sequence range of numbers.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {number} params.start - The first number in the sequence.\n * @param {number} params.stop - The last number (exclusive) in the sequence.\n * @param {number} [params.step=1] - The step size between numbers in the sequence.\n */\nfunction Sequence(params) {\n  Transform.call(this, null, params);\n}\nSequence.Definition = {\n  'type': 'Sequence',\n  'metadata': {\n    'generates': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'start',\n    'type': 'number',\n    'required': true\n  }, {\n    'name': 'stop',\n    'type': 'number',\n    'required': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'data'\n  }]\n};\ninherits(Sequence, Transform, {\n  transform(_, pulse) {\n    if (this.value && !_.modified()) return;\n    const out = pulse.materialize().fork(pulse.MOD),\n      as = _.as || 'data';\n    out.rem = this.value ? pulse.rem.concat(this.value) : pulse.rem;\n    this.value = range(_.start, _.stop, _.step || 1).map(v => {\n      const t = {};\n      t[as] = v;\n      return ingest(t);\n    });\n    out.add = pulse.add.concat(this.value);\n    return out;\n  }\n});\n\n/**\n * Propagates a new pulse without any tuples so long as the input\n * pulse contains some added, removed or modified tuples.\n * @param {object} params - The parameters for this operator.\n * @constructor\n */\nfunction Sieve(params) {\n  Transform.call(this, null, params);\n  this.modified(true); // always treat as modified\n}\n\ninherits(Sieve, Transform, {\n  transform(_, pulse) {\n    this.value = pulse.source;\n    return pulse.changed() ? pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS) : pulse.StopPropagation;\n  }\n});\n\n/**\n * Discretize dates to specific time units.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The data field containing date/time values.\n */\nfunction TimeUnit(params) {\n  Transform.call(this, null, params);\n}\nconst OUTPUT = ['unit0', 'unit1'];\nTimeUnit.Definition = {\n  'type': 'TimeUnit',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'interval',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'units',\n    'type': 'enum',\n    'values': TIME_UNITS,\n    'array': true\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'maxbins',\n    'type': 'number',\n    'default': 40\n  }, {\n    'name': 'extent',\n    'type': 'date',\n    'array': true\n  }, {\n    'name': 'timezone',\n    'type': 'enum',\n    'default': 'local',\n    'values': ['local', 'utc']\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': OUTPUT\n  }]\n};\ninherits(TimeUnit, Transform, {\n  transform(_, pulse) {\n    const field = _.field,\n      band = _.interval !== false,\n      utc = _.timezone === 'utc',\n      floor = this._floor(_, pulse),\n      offset = (utc ? utcInterval : timeInterval)(floor.unit).offset,\n      as = _.as || OUTPUT,\n      u0 = as[0],\n      u1 = as[1],\n      step = floor.step;\n    let min = floor.start || Infinity,\n      max = floor.stop || -Infinity,\n      flag = pulse.ADD;\n    if (_.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(field))) {\n      pulse = pulse.reflow(true);\n      flag = pulse.SOURCE;\n      min = Infinity;\n      max = -Infinity;\n    }\n    pulse.visit(flag, t => {\n      const v = field(t);\n      let a, b;\n      if (v == null) {\n        t[u0] = null;\n        if (band) t[u1] = null;\n      } else {\n        t[u0] = a = b = floor(v);\n        if (band) t[u1] = b = offset(a, step);\n        if (a < min) min = a;\n        if (b > max) max = b;\n      }\n    });\n    floor.start = min;\n    floor.stop = max;\n    return pulse.modifies(band ? as : u0);\n  },\n  _floor(_, pulse) {\n    const utc = _.timezone === 'utc';\n\n    // get parameters\n    const {\n      units,\n      step\n    } = _.units ? {\n      units: _.units,\n      step: _.step || 1\n    } : timeBin({\n      extent: _.extent || extent(pulse.materialize(pulse.SOURCE).source, _.field),\n      maxbins: _.maxbins\n    });\n\n    // check / standardize time units\n    const tunits = timeUnits(units),\n      prev = this.value || {},\n      floor = (utc ? utcFloor : timeFloor)(tunits, step);\n    floor.unit = peek(tunits);\n    floor.units = tunits;\n    floor.step = step;\n    floor.start = prev.start;\n    floor.stop = prev.stop;\n    return this.value = floor;\n  }\n});\n\n/**\n * An index that maps from unique, string-coerced, field values to tuples.\n * Assumes that the field serves as a unique key with no duplicate values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The field accessor to index.\n */\nfunction TupleIndex(params) {\n  Transform.call(this, fastmap(), params);\n}\ninherits(TupleIndex, Transform, {\n  transform(_, pulse) {\n    const df = pulse.dataflow,\n      field = _.field,\n      index = this.value,\n      set = t => index.set(field(t), t);\n    let mod = true;\n    if (_.modified('field') || pulse.modified(field.fields)) {\n      index.clear();\n      pulse.visit(pulse.SOURCE, set);\n    } else if (pulse.changed()) {\n      pulse.visit(pulse.REM, t => index.delete(field(t)));\n      pulse.visit(pulse.ADD, set);\n    } else {\n      mod = false;\n    }\n    this.modified(mod);\n    if (index.empty > df.cleanThreshold) df.runAfter(index.clean);\n    return pulse.fork();\n  }\n});\n\n/**\n * Extracts an array of values. Assumes the source data has already been\n * reduced as needed (e.g., by an upstream Aggregate transform).\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The domain field to extract.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for sorting the values. The comparator will be\n *   applied to backing tuples prior to value extraction.\n */\nfunction Values(params) {\n  Transform.call(this, null, params);\n}\ninherits(Values, Transform, {\n  transform(_, pulse) {\n    const run = !this.value || _.modified('field') || _.modified('sort') || pulse.changed() || _.sort && pulse.modified(_.sort.fields);\n    if (run) {\n      this.value = (_.sort ? pulse.source.slice().sort(stableCompare(_.sort)) : pulse.source).map(_.field);\n    }\n  }\n});\n\nfunction WindowOp(op, field, param, as) {\n  const fn = WindowOps[op](field, param);\n  return {\n    init: fn.init || zero,\n    update: function (w, t) {\n      t[as] = fn.next(w);\n    }\n  };\n}\nconst WindowOps = {\n  row_number: function () {\n    return {\n      next: w => w.index + 1\n    };\n  },\n  rank: function () {\n    let rank;\n    return {\n      init: () => rank = 1,\n      next: w => {\n        const i = w.index,\n          data = w.data;\n        return i && w.compare(data[i - 1], data[i]) ? rank = i + 1 : rank;\n      }\n    };\n  },\n  dense_rank: function () {\n    let drank;\n    return {\n      init: () => drank = 1,\n      next: w => {\n        const i = w.index,\n          d = w.data;\n        return i && w.compare(d[i - 1], d[i]) ? ++drank : drank;\n      }\n    };\n  },\n  percent_rank: function () {\n    const rank = WindowOps.rank(),\n      next = rank.next;\n    return {\n      init: rank.init,\n      next: w => (next(w) - 1) / (w.data.length - 1)\n    };\n  },\n  cume_dist: function () {\n    let cume;\n    return {\n      init: () => cume = 0,\n      next: w => {\n        const d = w.data,\n          c = w.compare;\n        let i = w.index;\n        if (cume < i) {\n          while (i + 1 < d.length && !c(d[i], d[i + 1])) ++i;\n          cume = i;\n        }\n        return (1 + cume) / d.length;\n      }\n    };\n  },\n  ntile: function (field, num) {\n    num = +num;\n    if (!(num > 0)) error('ntile num must be greater than zero.');\n    const cume = WindowOps.cume_dist(),\n      next = cume.next;\n    return {\n      init: cume.init,\n      next: w => Math.ceil(num * next(w))\n    };\n  },\n  lag: function (field, offset) {\n    offset = +offset || 1;\n    return {\n      next: w => {\n        const i = w.index - offset;\n        return i >= 0 ? field(w.data[i]) : null;\n      }\n    };\n  },\n  lead: function (field, offset) {\n    offset = +offset || 1;\n    return {\n      next: w => {\n        const i = w.index + offset,\n          d = w.data;\n        return i < d.length ? field(d[i]) : null;\n      }\n    };\n  },\n  first_value: function (field) {\n    return {\n      next: w => field(w.data[w.i0])\n    };\n  },\n  last_value: function (field) {\n    return {\n      next: w => field(w.data[w.i1 - 1])\n    };\n  },\n  nth_value: function (field, nth) {\n    nth = +nth;\n    if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n    return {\n      next: w => {\n        const i = w.i0 + (nth - 1);\n        return i < w.i1 ? field(w.data[i]) : null;\n      }\n    };\n  },\n  prev_value: function (field) {\n    let prev;\n    return {\n      init: () => prev = null,\n      next: w => {\n        const v = field(w.data[w.index]);\n        return v != null ? prev = v : prev;\n      }\n    };\n  },\n  next_value: function (field) {\n    let v, i;\n    return {\n      init: () => (v = null, i = -1),\n      next: w => {\n        const d = w.data;\n        return w.index <= i ? v : (i = find(field, d, w.index)) < 0 ? (i = d.length, v = null) : v = field(d[i]);\n      }\n    };\n  }\n};\nfunction find(field, data, index) {\n  for (let n = data.length; index < n; ++index) {\n    const v = field(data[index]);\n    if (v != null) return index;\n  }\n  return -1;\n}\nconst ValidWindowOps = Object.keys(WindowOps);\n\nfunction WindowState(_) {\n  const ops = array(_.ops),\n    fields = array(_.fields),\n    params = array(_.params),\n    aggregate_params = array(_.aggregate_params),\n    as = array(_.as),\n    outputs = this.outputs = [],\n    windows = this.windows = [],\n    inputs = {},\n    map = {},\n    counts = [],\n    measures = [];\n  let countOnly = true;\n  function visitInputs(f) {\n    array(accessorFields(f)).forEach(_ => inputs[_] = 1);\n  }\n  visitInputs(_.sort);\n  ops.forEach((op, i) => {\n    const field = fields[i],\n      param = params[i],\n      aggregate_param = aggregate_params[i] || null,\n      mname = accessorName(field),\n      name = measureName(op, mname, as[i]);\n    visitInputs(field);\n    outputs.push(name);\n\n    // Window operation\n    if (hasOwnProperty(WindowOps, op)) {\n      windows.push(WindowOp(op, field, param, name));\n    }\n\n    // Aggregate operation\n    else {\n      if (field == null && op !== 'count') {\n        error('Null aggregate field specified.');\n      }\n      if (op === 'count') {\n        counts.push(name);\n        return;\n      }\n      countOnly = false;\n      let m = map[mname];\n      if (!m) {\n        m = map[mname] = [];\n        m.field = field;\n        measures.push(m);\n      }\n      m.push(createMeasure(op, aggregate_param, name));\n    }\n  });\n  if (counts.length || measures.length) {\n    this.cell = cell(measures, counts, countOnly);\n  }\n  this.inputs = Object.keys(inputs);\n}\nconst prototype = WindowState.prototype;\nprototype.init = function () {\n  this.windows.forEach(_ => _.init());\n  if (this.cell) this.cell.init();\n};\nprototype.update = function (w, t) {\n  const cell = this.cell,\n    wind = this.windows,\n    data = w.data,\n    m = wind && wind.length;\n  let j;\n  if (cell) {\n    for (j = w.p0; j < w.i0; ++j) cell.rem(data[j]);\n    for (j = w.p1; j < w.i1; ++j) cell.add(data[j]);\n    cell.set(t);\n  }\n  for (j = 0; j < m; ++j) wind[j].update(w, t);\n};\nfunction cell(measures, counts, countOnly) {\n  measures = measures.map(m => compileMeasures(m, m.field));\n  const cell = {\n    num: 0,\n    agg: null,\n    store: false,\n    count: counts\n  };\n  if (!countOnly) {\n    var n = measures.length,\n      a = cell.agg = Array(n),\n      i = 0;\n    for (; i < n; ++i) a[i] = new measures[i](cell);\n  }\n  if (cell.store) {\n    var store = cell.data = new TupleStore();\n  }\n  cell.add = function (t) {\n    cell.num += 1;\n    if (countOnly) return;\n    if (store) store.add(t);\n    for (let i = 0; i < n; ++i) {\n      a[i].add(a[i].get(t), t);\n    }\n  };\n  cell.rem = function (t) {\n    cell.num -= 1;\n    if (countOnly) return;\n    if (store) store.rem(t);\n    for (let i = 0; i < n; ++i) {\n      a[i].rem(a[i].get(t), t);\n    }\n  };\n  cell.set = function (t) {\n    let i, n;\n\n    // consolidate stored values\n    if (store) store.values();\n\n    // update tuple properties\n    for (i = 0, n = counts.length; i < n; ++i) t[counts[i]] = cell.num;\n    if (!countOnly) for (i = 0, n = a.length; i < n; ++i) a[i].set(t);\n  };\n  cell.init = function () {\n    cell.num = 0;\n    if (store) store.reset();\n    for (let i = 0; i < n; ++i) a[i].init();\n  };\n  return cell;\n}\n\n/**\n * Perform window calculations and write results to the input stream.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator function for sorting tuples within a window.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors by which to partition tuples into separate windows.\n * @param {Array<string>} params.ops - An array of strings indicating window operations to perform.\n * @param {Array<function(object): *>} [params.fields] - An array of accessors\n *   for data fields to use as inputs to window operations.\n * @param {Array<*>} [params.params] - An array of parameter values for window operations.\n * @param {Array<object>} [params.aggregate_params] - An optional array of parameter values for aggregation operations.\n * @param {Array<string>} [params.as] - An array of output field names for window operations.\n * @param {Array<number>} [params.frame] - Window frame definition as two-element array.\n * @param {boolean} [params.ignorePeers=false] - If true, base window frame boundaries on row\n *   number alone, ignoring peers with identical sort values. If false (default),\n *   the window boundaries will be adjusted to include peer values.\n */\nfunction Window(params) {\n  Transform.call(this, {}, params);\n  this._mlen = 0;\n  this._mods = [];\n}\nWindow.Definition = {\n  'type': 'Window',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'ops',\n    'type': 'enum',\n    'array': true,\n    'values': ValidWindowOps.concat(ValidAggregateOps)\n  }, {\n    'name': 'params',\n    'type': 'number',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'aggregate_params',\n    'type': 'field',\n    'null': true,\n    'array': true,\n    'default': [null]\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'array': true\n  }, {\n    'name': 'frame',\n    'type': 'number',\n    'null': true,\n    'array': true,\n    'length': 2,\n    'default': [null, 0]\n  }, {\n    'name': 'ignorePeers',\n    'type': 'boolean',\n    'default': false\n  }]\n};\ninherits(Window, Transform, {\n  transform(_, pulse) {\n    this.stamp = pulse.stamp;\n    const mod = _.modified(),\n      cmp = stableCompare(_.sort),\n      key = groupkey(_.groupby),\n      group = t => this.group(key(t));\n\n    // initialize window state\n    let state = this.state;\n    if (!state || mod) {\n      state = this.state = new WindowState(_);\n    }\n\n    // partition input tuples\n    if (mod || pulse.modified(state.inputs)) {\n      this.value = {};\n      pulse.visit(pulse.SOURCE, t => group(t).add(t));\n    } else {\n      pulse.visit(pulse.REM, t => group(t).remove(t));\n      pulse.visit(pulse.ADD, t => group(t).add(t));\n    }\n\n    // perform window calculations for each modified partition\n    for (let i = 0, n = this._mlen; i < n; ++i) {\n      processPartition(this._mods[i], state, cmp, _);\n    }\n    this._mlen = 0;\n    this._mods = [];\n\n    // TODO don't reflow everything?\n    return pulse.reflow(mod).modifies(state.outputs);\n  },\n  group(key) {\n    let group = this.value[key];\n    if (!group) {\n      group = this.value[key] = SortedList(tupleid);\n      group.stamp = -1;\n    }\n    if (group.stamp < this.stamp) {\n      group.stamp = this.stamp;\n      this._mods[this._mlen++] = group;\n    }\n    return group;\n  }\n});\nfunction processPartition(list, state, cmp, _) {\n  const sort = _.sort,\n    range = sort && !_.ignorePeers,\n    frame = _.frame || [null, 0],\n    data = list.data(cmp),\n    // use cmp for stable sort\n    n = data.length,\n    b = range ? bisector(sort) : null,\n    w = {\n      i0: 0,\n      i1: 0,\n      p0: 0,\n      p1: 0,\n      index: 0,\n      data: data,\n      compare: sort || constant(-1)\n    };\n  state.init();\n  for (let i = 0; i < n; ++i) {\n    setWindow(w, frame, i, n);\n    if (range) adjustRange(w, b);\n    state.update(w, data[i]);\n  }\n}\nfunction setWindow(w, f, i, n) {\n  w.p0 = w.i0;\n  w.p1 = w.i1;\n  w.i0 = f[0] == null ? 0 : Math.max(0, i - Math.abs(f[0]));\n  w.i1 = f[1] == null ? n : Math.min(n, i + Math.abs(f[1]) + 1);\n  w.index = i;\n}\n\n// if frame type is 'range', adjust window for peer values\nfunction adjustRange(w, bisect) {\n  const r0 = w.i0,\n    r1 = w.i1 - 1,\n    c = w.compare,\n    d = w.data,\n    n = d.length - 1;\n  if (r0 > 0 && !c(d[r0], d[r0 - 1])) w.i0 = bisect.left(d, d[r0]);\n  if (r1 < n && !c(d[r1], d[r1 + 1])) w.i1 = bisect.right(d, d[r1]);\n}\n\nexport { Aggregate as aggregate, Bin as bin, Collect as collect, Compare as compare, CountPattern as countpattern, Cross as cross, Density as density, DotBin as dotbin, Expression as expression, Extent as extent, Facet as facet, Field as field, Filter as filter, Flatten as flatten, Fold as fold, Formula as formula, Generate as generate, Impute as impute, JoinAggregate as joinaggregate, KDE as kde, Key as key, Load as load, Lookup as lookup, MultiExtent as multiextent, MultiValues as multivalues, Params as params, Pivot as pivot, PreFacet as prefacet, Project as project, Proxy as proxy, Quantile as quantile, Relay as relay, Sample as sample, Sequence as sequence, Sieve as sieve, Subflow as subflow, TimeUnit as timeunit, TupleIndex as tupleindex, Values as values, Window as window };\n", "import { ascending, quantileSorted, deviation, quantile, median } from 'd3-array';\n\nfunction* numbers (values, valueof) {\n  if (valueof == null) {\n    for (let value of values) {\n      if (value != null && value !== '' && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      value = valueof(value, ++index, values);\n      if (value != null && value !== '' && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n\nfunction quantiles (array, p, f) {\n  const values = Float64Array.from(numbers(array, f));\n\n  // don't depend on return value from typed array sort call\n  // protects against undefined sort results in Safari (vega/vega-lite#4964)\n  values.sort(ascending);\n  return p.map(_ => quantileSorted(values, _));\n}\n\nfunction quartiles (array, f) {\n  return quantiles(array, [0.25, 0.50, 0.75], f);\n}\n\n// Scott, D. W. (1992) Multivariate Density Estimation:\n// Theory, Practice, and Visualization. Wiley.\nfunction estimateBandwidth (array, f) {\n  const n = array.length,\n    d = deviation(array, f),\n    q = quartiles(array, f),\n    h = (q[2] - q[0]) / 1.34,\n    v = Math.min(d, h) || d || Math.abs(q[0]) || 1;\n  return 1.06 * v * Math.pow(n, -0.2);\n}\n\nfunction bin (_) {\n  // determine range\n  const maxb = _.maxbins || 20,\n    base = _.base || 10,\n    logb = Math.log(base),\n    div = _.divide || [5, 2];\n  let min = _.extent[0],\n    max = _.extent[1],\n    step,\n    level,\n    minstep,\n    v,\n    i,\n    n;\n  const span = _.span || max - min || Math.abs(min) || 1;\n  if (_.step) {\n    // if step size is explicitly given, use that\n    step = _.step;\n  } else if (_.steps) {\n    // if provided, limit choice to acceptable step sizes\n    v = span / maxb;\n    for (i = 0, n = _.steps.length; i < n && _.steps[i] < v; ++i);\n    step = _.steps[Math.max(0, i - 1)];\n  } else {\n    // else use span to determine step size\n    level = Math.ceil(Math.log(maxb) / logb);\n    minstep = _.minstep || 0;\n    step = Math.max(minstep, Math.pow(base, Math.round(Math.log(span) / logb) - level));\n\n    // increase step size if too many bins\n    while (Math.ceil(span / step) > maxb) {\n      step *= base;\n    }\n\n    // decrease step size if allowed\n    for (i = 0, n = div.length; i < n; ++i) {\n      v = step / div[i];\n      if (v >= minstep && span / v <= maxb) step = v;\n    }\n  }\n\n  // update precision, min and max\n  v = Math.log(step);\n  const precision = v >= 0 ? 0 : ~~(-v / logb) + 1,\n    eps = Math.pow(base, -precision - 1);\n  if (_.nice || _.nice === undefined) {\n    v = Math.floor(min / step + eps) * step;\n    min = min < v ? v - step : v;\n    max = Math.ceil(max / step) * step;\n  }\n  return {\n    start: min,\n    stop: max === min ? min + step : max,\n    step: step\n  };\n}\n\nvar random = Math.random;\nfunction setRandom(r) {\n  random = r;\n}\n\nfunction bootstrapCI (array, samples, alpha, f) {\n  if (!array.length) return [undefined, undefined];\n  const values = Float64Array.from(numbers(array, f)),\n    n = values.length,\n    m = samples;\n  let a, i, j, mu;\n  for (j = 0, mu = Array(m); j < m; ++j) {\n    for (a = 0, i = 0; i < n; ++i) {\n      a += values[~~(random() * n)];\n    }\n    mu[j] = a / n;\n  }\n  mu.sort(ascending);\n  return [quantile(mu, alpha / 2), quantile(mu, 1 - alpha / 2)];\n}\n\n// Dot density binning for dot plot construction.\n// Based on Leland Wilkinson, Dot Plots, The American Statistician, 1999.\n// https://www.cs.uic.edu/~wilkinson/Publications/dotplots.pdf\nfunction dotbin (array, step, smooth, f) {\n  f = f || (_ => _);\n  const n = array.length,\n    v = new Float64Array(n);\n  let i = 0,\n    j = 1,\n    a = f(array[0]),\n    b = a,\n    w = a + step,\n    x;\n  for (; j < n; ++j) {\n    x = f(array[j]);\n    if (x >= w) {\n      b = (a + b) / 2;\n      for (; i < j; ++i) v[i] = b;\n      w = x + step;\n      a = x;\n    }\n    b = x;\n  }\n  b = (a + b) / 2;\n  for (; i < j; ++i) v[i] = b;\n  return smooth ? smoothing(v, step + step / 4) : v;\n}\n\n// perform smoothing to reduce variance\n// swap points between \"adjacent\" stacks\n// Wilkinson defines adjacent as within step/4 units\nfunction smoothing(v, thresh) {\n  const n = v.length;\n  let a = 0,\n    b = 1,\n    c,\n    d;\n\n  // get left stack\n  while (v[a] === v[b]) ++b;\n  while (b < n) {\n    // get right stack\n    c = b + 1;\n    while (v[b] === v[c]) ++c;\n\n    // are stacks adjacent?\n    // if so, compare sizes and swap as needed\n    if (v[b] - v[b - 1] < thresh) {\n      d = b + (a + c - b - b >> 1);\n      while (d < b) v[d++] = v[b];\n      while (d > b) v[d--] = v[a];\n    }\n\n    // update left stack indices\n    a = b;\n    b = c;\n  }\n  return v;\n}\n\nfunction lcg (seed) {\n  // Random numbers using a Linear Congruential Generator with seed value\n  // Uses glibc values from https://en.wikipedia.org/wiki/Linear_congruential_generator\n  return function () {\n    seed = (1103515245 * seed + 12345) % 2147483647;\n    return seed / 2147483647;\n  };\n}\n\nfunction integer (min, max) {\n  if (max == null) {\n    max = min;\n    min = 0;\n  }\n  let a, b, d;\n  const dist = {\n    min(_) {\n      if (arguments.length) {\n        a = _ || 0;\n        d = b - a;\n        return dist;\n      } else {\n        return a;\n      }\n    },\n    max(_) {\n      if (arguments.length) {\n        b = _ || 0;\n        d = b - a;\n        return dist;\n      } else {\n        return b;\n      }\n    },\n    sample() {\n      return a + Math.floor(d * random());\n    },\n    pdf(x) {\n      return x === Math.floor(x) && x >= a && x < b ? 1 / d : 0;\n    },\n    cdf(x) {\n      const v = Math.floor(x);\n      return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;\n    },\n    icdf(p) {\n      return p >= 0 && p <= 1 ? a - 1 + Math.floor(p * d) : NaN;\n    }\n  };\n  return dist.min(min).max(max);\n}\n\nconst SQRT2PI = Math.sqrt(2 * Math.PI);\nconst SQRT2 = Math.SQRT2;\n\nlet nextSample = NaN;\nfunction sampleNormal(mean, stdev) {\n  mean = mean || 0;\n  stdev = stdev == null ? 1 : stdev;\n  let x = 0,\n    y = 0,\n    rds,\n    c;\n  if (nextSample === nextSample) {\n    x = nextSample;\n    nextSample = NaN;\n  } else {\n    do {\n      x = random() * 2 - 1;\n      y = random() * 2 - 1;\n      rds = x * x + y * y;\n    } while (rds === 0 || rds > 1);\n    c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform\n    x *= c;\n    nextSample = y * c;\n  }\n  return mean + x * stdev;\n}\nfunction densityNormal(value, mean, stdev) {\n  stdev = stdev == null ? 1 : stdev;\n  const z = (value - (mean || 0)) / stdev;\n  return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI);\n}\n\n// Approximation from West (2009)\n// Better Approximations to Cumulative Normal Functions\nfunction cumulativeNormal(value, mean, stdev) {\n  mean = mean || 0;\n  stdev = stdev == null ? 1 : stdev;\n  const z = (value - mean) / stdev,\n    Z = Math.abs(z);\n  let cd;\n  if (Z > 37) {\n    cd = 0;\n  } else {\n    const exp = Math.exp(-Z * Z / 2);\n    let sum;\n    if (Z < 7.07106781186547) {\n      sum = 3.52624965998911e-02 * Z + 0.700383064443688;\n      sum = sum * Z + 6.37396220353165;\n      sum = sum * Z + 33.912866078383;\n      sum = sum * Z + 112.079291497871;\n      sum = sum * Z + 221.213596169931;\n      sum = sum * Z + 220.206867912376;\n      cd = exp * sum;\n      sum = 8.83883476483184e-02 * Z + 1.75566716318264;\n      sum = sum * Z + 16.064177579207;\n      sum = sum * Z + 86.7807322029461;\n      sum = sum * Z + 296.564248779674;\n      sum = sum * Z + 637.333633378831;\n      sum = sum * Z + 793.826512519948;\n      sum = sum * Z + 440.413735824752;\n      cd = cd / sum;\n    } else {\n      sum = Z + 0.65;\n      sum = Z + 4 / sum;\n      sum = Z + 3 / sum;\n      sum = Z + 2 / sum;\n      sum = Z + 1 / sum;\n      cd = exp / sum / 2.506628274631;\n    }\n  }\n  return z > 0 ? 1 - cd : cd;\n}\n\n// Approximation of Probit function using inverse error function.\nfunction quantileNormal(p, mean, stdev) {\n  if (p < 0 || p > 1) return NaN;\n  return (mean || 0) + (stdev == null ? 1 : stdev) * SQRT2 * erfinv(2 * p - 1);\n}\n\n// Approximate inverse error function. Implementation from \"Approximating\n// the erfinv function\" by Mike Giles, GPU Computing Gems, volume 2, 2010.\n// Ported from Apache Commons Math, http://www.apache.org/licenses/LICENSE-2.0\nfunction erfinv(x) {\n  // beware that the logarithm argument must be\n  // commputed as (1.0 - x) * (1.0 + x),\n  // it must NOT be simplified as 1.0 - x * x as this\n  // would induce rounding errors near the boundaries +/-1\n  let w = -Math.log((1 - x) * (1 + x)),\n    p;\n  if (w < 6.25) {\n    w -= 3.125;\n    p = -3.6444120640178196996e-21;\n    p = -1.685059138182016589e-19 + p * w;\n    p = 1.2858480715256400167e-18 + p * w;\n    p = 1.115787767802518096e-17 + p * w;\n    p = -1.333171662854620906e-16 + p * w;\n    p = 2.0972767875968561637e-17 + p * w;\n    p = 6.6376381343583238325e-15 + p * w;\n    p = -4.0545662729752068639e-14 + p * w;\n    p = -8.1519341976054721522e-14 + p * w;\n    p = 2.6335093153082322977e-12 + p * w;\n    p = -1.2975133253453532498e-11 + p * w;\n    p = -5.4154120542946279317e-11 + p * w;\n    p = 1.051212273321532285e-09 + p * w;\n    p = -4.1126339803469836976e-09 + p * w;\n    p = -2.9070369957882005086e-08 + p * w;\n    p = 4.2347877827932403518e-07 + p * w;\n    p = -1.3654692000834678645e-06 + p * w;\n    p = -1.3882523362786468719e-05 + p * w;\n    p = 0.0001867342080340571352 + p * w;\n    p = -0.00074070253416626697512 + p * w;\n    p = -0.0060336708714301490533 + p * w;\n    p = 0.24015818242558961693 + p * w;\n    p = 1.6536545626831027356 + p * w;\n  } else if (w < 16.0) {\n    w = Math.sqrt(w) - 3.25;\n    p = 2.2137376921775787049e-09;\n    p = 9.0756561938885390979e-08 + p * w;\n    p = -2.7517406297064545428e-07 + p * w;\n    p = 1.8239629214389227755e-08 + p * w;\n    p = 1.5027403968909827627e-06 + p * w;\n    p = -4.013867526981545969e-06 + p * w;\n    p = 2.9234449089955446044e-06 + p * w;\n    p = 1.2475304481671778723e-05 + p * w;\n    p = -4.7318229009055733981e-05 + p * w;\n    p = 6.8284851459573175448e-05 + p * w;\n    p = 2.4031110387097893999e-05 + p * w;\n    p = -0.0003550375203628474796 + p * w;\n    p = 0.00095328937973738049703 + p * w;\n    p = -0.0016882755560235047313 + p * w;\n    p = 0.0024914420961078508066 + p * w;\n    p = -0.0037512085075692412107 + p * w;\n    p = 0.005370914553590063617 + p * w;\n    p = 1.0052589676941592334 + p * w;\n    p = 3.0838856104922207635 + p * w;\n  } else if (Number.isFinite(w)) {\n    w = Math.sqrt(w) - 5.0;\n    p = -2.7109920616438573243e-11;\n    p = -2.5556418169965252055e-10 + p * w;\n    p = 1.5076572693500548083e-09 + p * w;\n    p = -3.7894654401267369937e-09 + p * w;\n    p = 7.6157012080783393804e-09 + p * w;\n    p = -1.4960026627149240478e-08 + p * w;\n    p = 2.9147953450901080826e-08 + p * w;\n    p = -6.7711997758452339498e-08 + p * w;\n    p = 2.2900482228026654717e-07 + p * w;\n    p = -9.9298272942317002539e-07 + p * w;\n    p = 4.5260625972231537039e-06 + p * w;\n    p = -1.9681778105531670567e-05 + p * w;\n    p = 7.5995277030017761139e-05 + p * w;\n    p = -0.00021503011930044477347 + p * w;\n    p = -0.00013871931833623122026 + p * w;\n    p = 1.0103004648645343977 + p * w;\n    p = 4.8499064014085844221 + p * w;\n  } else {\n    p = Infinity;\n  }\n  return p * x;\n}\nfunction gaussian (mean, stdev) {\n  let mu, sigma;\n  const dist = {\n    mean(_) {\n      if (arguments.length) {\n        mu = _ || 0;\n        return dist;\n      } else {\n        return mu;\n      }\n    },\n    stdev(_) {\n      if (arguments.length) {\n        sigma = _ == null ? 1 : _;\n        return dist;\n      } else {\n        return sigma;\n      }\n    },\n    sample: () => sampleNormal(mu, sigma),\n    pdf: value => densityNormal(value, mu, sigma),\n    cdf: value => cumulativeNormal(value, mu, sigma),\n    icdf: p => quantileNormal(p, mu, sigma)\n  };\n  return dist.mean(mean).stdev(stdev);\n}\n\nfunction kde (support, bandwidth) {\n  const kernel = gaussian();\n  let n = 0;\n  const dist = {\n    data(_) {\n      if (arguments.length) {\n        support = _;\n        n = _ ? _.length : 0;\n        return dist.bandwidth(bandwidth);\n      } else {\n        return support;\n      }\n    },\n    bandwidth(_) {\n      if (!arguments.length) return bandwidth;\n      bandwidth = _;\n      if (!bandwidth && support) bandwidth = estimateBandwidth(support);\n      return dist;\n    },\n    sample() {\n      return support[~~(random() * n)] + bandwidth * kernel.sample();\n    },\n    pdf(x) {\n      let y = 0,\n        i = 0;\n      for (; i < n; ++i) {\n        y += kernel.pdf((x - support[i]) / bandwidth);\n      }\n      return y / bandwidth / n;\n    },\n    cdf(x) {\n      let y = 0,\n        i = 0;\n      for (; i < n; ++i) {\n        y += kernel.cdf((x - support[i]) / bandwidth);\n      }\n      return y / n;\n    },\n    icdf() {\n      throw Error('KDE icdf not supported.');\n    }\n  };\n  return dist.data(support);\n}\n\nfunction sampleLogNormal(mean, stdev) {\n  mean = mean || 0;\n  stdev = stdev == null ? 1 : stdev;\n  return Math.exp(mean + sampleNormal() * stdev);\n}\nfunction densityLogNormal(value, mean, stdev) {\n  if (value <= 0) return 0;\n  mean = mean || 0;\n  stdev = stdev == null ? 1 : stdev;\n  const z = (Math.log(value) - mean) / stdev;\n  return Math.exp(-0.5 * z * z) / (stdev * SQRT2PI * value);\n}\nfunction cumulativeLogNormal(value, mean, stdev) {\n  return cumulativeNormal(Math.log(value), mean, stdev);\n}\nfunction quantileLogNormal(p, mean, stdev) {\n  return Math.exp(quantileNormal(p, mean, stdev));\n}\nfunction lognormal (mean, stdev) {\n  let mu, sigma;\n  const dist = {\n    mean(_) {\n      if (arguments.length) {\n        mu = _ || 0;\n        return dist;\n      } else {\n        return mu;\n      }\n    },\n    stdev(_) {\n      if (arguments.length) {\n        sigma = _ == null ? 1 : _;\n        return dist;\n      } else {\n        return sigma;\n      }\n    },\n    sample: () => sampleLogNormal(mu, sigma),\n    pdf: value => densityLogNormal(value, mu, sigma),\n    cdf: value => cumulativeLogNormal(value, mu, sigma),\n    icdf: p => quantileLogNormal(p, mu, sigma)\n  };\n  return dist.mean(mean).stdev(stdev);\n}\n\nfunction mixture (dists, weights) {\n  let m = 0,\n    w;\n  function normalize(x) {\n    const w = [];\n    let sum = 0,\n      i;\n    for (i = 0; i < m; ++i) {\n      sum += w[i] = x[i] == null ? 1 : +x[i];\n    }\n    for (i = 0; i < m; ++i) {\n      w[i] /= sum;\n    }\n    return w;\n  }\n  const dist = {\n    weights(_) {\n      if (arguments.length) {\n        w = normalize(weights = _ || []);\n        return dist;\n      }\n      return weights;\n    },\n    distributions(_) {\n      if (arguments.length) {\n        if (_) {\n          m = _.length;\n          dists = _;\n        } else {\n          m = 0;\n          dists = [];\n        }\n        return dist.weights(weights);\n      }\n      return dists;\n    },\n    sample() {\n      const r = random();\n      let d = dists[m - 1],\n        v = w[0],\n        i = 0;\n\n      // first select distribution\n      for (; i < m - 1; v += w[++i]) {\n        if (r < v) {\n          d = dists[i];\n          break;\n        }\n      }\n      // then sample from it\n      return d.sample();\n    },\n    pdf(x) {\n      let p = 0,\n        i = 0;\n      for (; i < m; ++i) {\n        p += w[i] * dists[i].pdf(x);\n      }\n      return p;\n    },\n    cdf(x) {\n      let p = 0,\n        i = 0;\n      for (; i < m; ++i) {\n        p += w[i] * dists[i].cdf(x);\n      }\n      return p;\n    },\n    icdf() {\n      throw Error('Mixture icdf not supported.');\n    }\n  };\n  return dist.distributions(dists).weights(weights);\n}\n\nfunction sampleUniform(min, max) {\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n  return min + (max - min) * random();\n}\nfunction densityUniform(value, min, max) {\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n  return value >= min && value <= max ? 1 / (max - min) : 0;\n}\nfunction cumulativeUniform(value, min, max) {\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n  return value < min ? 0 : value > max ? 1 : (value - min) / (max - min);\n}\nfunction quantileUniform(p, min, max) {\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n  return p >= 0 && p <= 1 ? min + p * (max - min) : NaN;\n}\nfunction uniform (min, max) {\n  let a, b;\n  const dist = {\n    min(_) {\n      if (arguments.length) {\n        a = _ || 0;\n        return dist;\n      } else {\n        return a;\n      }\n    },\n    max(_) {\n      if (arguments.length) {\n        b = _ == null ? 1 : _;\n        return dist;\n      } else {\n        return b;\n      }\n    },\n    sample: () => sampleUniform(a, b),\n    pdf: value => densityUniform(value, a, b),\n    cdf: value => cumulativeUniform(value, a, b),\n    icdf: p => quantileUniform(p, a, b)\n  };\n  if (max == null) {\n    max = min == null ? 1 : min;\n    min = 0;\n  }\n  return dist.min(min).max(max);\n}\n\nfunction constant (data, x, y) {\n  let mean = 0,\n    n = 0;\n  for (const d of data) {\n    const val = y(d);\n    if (x(d) == null || val == null || isNaN(val)) continue;\n    mean += (val - mean) / ++n;\n  }\n  return {\n    coef: [mean],\n    predict: () => mean,\n    rSquared: 0\n  };\n}\n\n// Ordinary Least Squares\nfunction ols (uX, uY, uXY, uX2) {\n  const delta = uX2 - uX * uX,\n    slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n    intercept = uY - slope * uX;\n  return [intercept, slope];\n}\n\nfunction points(data, x, y, sort) {\n  data = data.filter(d => {\n    let u = x(d),\n      v = y(d);\n    return u != null && (u = +u) >= u && v != null && (v = +v) >= v;\n  });\n  if (sort) {\n    data.sort((a, b) => x(a) - x(b));\n  }\n  const n = data.length,\n    X = new Float64Array(n),\n    Y = new Float64Array(n);\n\n  // extract values, calculate means\n  let i = 0,\n    ux = 0,\n    uy = 0,\n    xv,\n    yv,\n    d;\n  for (d of data) {\n    X[i] = xv = +x(d);\n    Y[i] = yv = +y(d);\n    ++i;\n    ux += (xv - ux) / i;\n    uy += (yv - uy) / i;\n  }\n\n  // mean center the data\n  for (i = 0; i < n; ++i) {\n    X[i] -= ux;\n    Y[i] -= uy;\n  }\n  return [X, Y, ux, uy];\n}\nfunction visitPoints(data, x, y, callback) {\n  let i = -1,\n    u,\n    v;\n  for (const d of data) {\n    u = x(d);\n    v = y(d);\n    if (u != null && (u = +u) >= u && v != null && (v = +v) >= v) {\n      callback(u, v, ++i);\n    }\n  }\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction rSquared (data, x, y, uY, predict) {\n  let SSE = 0,\n    SST = 0;\n  visitPoints(data, x, y, (dx, dy) => {\n    const sse = dy - predict(dx),\n      sst = dy - uY;\n    SSE += sse * sse;\n    SST += sst * sst;\n  });\n  return 1 - SSE / SST;\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction linear (data, x, y) {\n  let X = 0,\n    Y = 0,\n    XY = 0,\n    X2 = 0,\n    n = 0;\n  visitPoints(data, x, y, (dx, dy) => {\n    ++n;\n    X += (dx - X) / n;\n    Y += (dy - Y) / n;\n    XY += (dx * dy - XY) / n;\n    X2 += (dx * dx - X2) / n;\n  });\n  const coef = ols(X, Y, XY, X2),\n    predict = x => coef[0] + coef[1] * x;\n  return {\n    coef: coef,\n    predict: predict,\n    rSquared: rSquared(data, x, y, Y, predict)\n  };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction log (data, x, y) {\n  let X = 0,\n    Y = 0,\n    XY = 0,\n    X2 = 0,\n    n = 0;\n  visitPoints(data, x, y, (dx, dy) => {\n    ++n;\n    dx = Math.log(dx);\n    X += (dx - X) / n;\n    Y += (dy - Y) / n;\n    XY += (dx * dy - XY) / n;\n    X2 += (dx * dx - X2) / n;\n  });\n  const coef = ols(X, Y, XY, X2),\n    predict = x => coef[0] + coef[1] * Math.log(x);\n  return {\n    coef: coef,\n    predict: predict,\n    rSquared: rSquared(data, x, y, Y, predict)\n  };\n}\n\nfunction exp (data, x, y) {\n  // eslint-disable-next-line no-unused-vars\n  const [xv, yv, ux, uy] = points(data, x, y);\n  let YL = 0,\n    XY = 0,\n    XYL = 0,\n    X2Y = 0,\n    n = 0,\n    dx,\n    ly,\n    xy;\n  visitPoints(data, x, y, (_, dy) => {\n    dx = xv[n++];\n    ly = Math.log(dy);\n    xy = dx * dy;\n    YL += (dy * ly - YL) / n;\n    XY += (xy - XY) / n;\n    XYL += (xy * ly - XYL) / n;\n    X2Y += (dx * xy - X2Y) / n;\n  });\n  const [c0, c1] = ols(XY / uy, YL / uy, XYL / uy, X2Y / uy),\n    predict = x => Math.exp(c0 + c1 * (x - ux));\n  return {\n    coef: [Math.exp(c0 - c1 * ux), c1],\n    predict: predict,\n    rSquared: rSquared(data, x, y, uy, predict)\n  };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\nfunction pow (data, x, y) {\n  let X = 0,\n    Y = 0,\n    XY = 0,\n    X2 = 0,\n    YS = 0,\n    n = 0;\n  visitPoints(data, x, y, (dx, dy) => {\n    const lx = Math.log(dx),\n      ly = Math.log(dy);\n    ++n;\n    X += (lx - X) / n;\n    Y += (ly - Y) / n;\n    XY += (lx * ly - XY) / n;\n    X2 += (lx * lx - X2) / n;\n    YS += (dy - YS) / n;\n  });\n  const coef = ols(X, Y, XY, X2),\n    predict = x => coef[0] * Math.pow(x, coef[1]);\n  coef[0] = Math.exp(coef[0]);\n  return {\n    coef: coef,\n    predict: predict,\n    rSquared: rSquared(data, x, y, YS, predict)\n  };\n}\n\nfunction quad (data, x, y) {\n  const [xv, yv, ux, uy] = points(data, x, y),\n    n = xv.length;\n  let X2 = 0,\n    X3 = 0,\n    X4 = 0,\n    XY = 0,\n    X2Y = 0,\n    i,\n    dx,\n    dy,\n    x2;\n  for (i = 0; i < n;) {\n    dx = xv[i];\n    dy = yv[i++];\n    x2 = dx * dx;\n    X2 += (x2 - X2) / i;\n    X3 += (x2 * dx - X3) / i;\n    X4 += (x2 * x2 - X4) / i;\n    XY += (dx * dy - XY) / i;\n    X2Y += (x2 * dy - X2Y) / i;\n  }\n  const X2X2 = X4 - X2 * X2,\n    d = X2 * X2X2 - X3 * X3,\n    a = (X2Y * X2 - XY * X3) / d,\n    b = (XY * X2X2 - X2Y * X3) / d,\n    c = -a * X2,\n    predict = x => {\n      x = x - ux;\n      return a * x * x + b * x + c + uy;\n    };\n\n  // transform coefficients back from mean-centered space\n  return {\n    coef: [c - b * ux + a * ux * ux + uy, b - 2 * a * ux, a],\n    predict: predict,\n    rSquared: rSquared(data, x, y, uy, predict)\n  };\n}\n\n// Adapted from d3-regression by Harry Stevens\n// License: https://github.com/HarryStevens/d3-regression/blob/master/LICENSE\n// ... which was adapted from regression-js by Tom Alexander\n// Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n// License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\nfunction poly (data, x, y, order) {\n  // use more efficient methods for lower orders\n  if (order === 0) return constant(data, x, y);\n  if (order === 1) return linear(data, x, y);\n  if (order === 2) return quad(data, x, y);\n  const [xv, yv, ux, uy] = points(data, x, y),\n    n = xv.length,\n    lhs = [],\n    rhs = [],\n    k = order + 1;\n  let i, j, l, v, c;\n  for (i = 0; i < k; ++i) {\n    for (l = 0, v = 0; l < n; ++l) {\n      v += Math.pow(xv[l], i) * yv[l];\n    }\n    lhs.push(v);\n    c = new Float64Array(k);\n    for (j = 0; j < k; ++j) {\n      for (l = 0, v = 0; l < n; ++l) {\n        v += Math.pow(xv[l], i + j);\n      }\n      c[j] = v;\n    }\n    rhs.push(c);\n  }\n  rhs.push(lhs);\n  const coef = gaussianElimination(rhs),\n    predict = x => {\n      x -= ux;\n      let y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n      for (i = 3; i < k; ++i) y += coef[i] * Math.pow(x, i);\n      return y;\n    };\n  return {\n    coef: uncenter(k, coef, -ux, uy),\n    predict: predict,\n    rSquared: rSquared(data, x, y, uy, predict)\n  };\n}\nfunction uncenter(k, a, x, y) {\n  const z = Array(k);\n  let i, j, v, c;\n\n  // initialize to zero\n  for (i = 0; i < k; ++i) z[i] = 0;\n\n  // polynomial expansion\n  for (i = k - 1; i >= 0; --i) {\n    v = a[i];\n    c = 1;\n    z[i] += v;\n    for (j = 1; j <= i; ++j) {\n      c *= (i + 1 - j) / j; // binomial coefficent\n      z[i - j] += v * Math.pow(x, j) * c;\n    }\n  }\n\n  // bias term\n  z[0] += y;\n  return z;\n}\n\n// Given an array for a two-dimensional matrix and the polynomial order,\n// solve A * x = b using Gaussian elimination.\nfunction gaussianElimination(matrix) {\n  const n = matrix.length - 1,\n    coef = [];\n  let i, j, k, r, t;\n  for (i = 0; i < n; ++i) {\n    r = i; // max row\n    for (j = i + 1; j < n; ++j) {\n      if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n        r = j;\n      }\n    }\n    for (k = i; k < n + 1; ++k) {\n      t = matrix[k][i];\n      matrix[k][i] = matrix[k][r];\n      matrix[k][r] = t;\n    }\n    for (j = i + 1; j < n; ++j) {\n      for (k = n; k >= i; k--) {\n        matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n      }\n    }\n  }\n  for (j = n - 1; j >= 0; --j) {\n    t = 0;\n    for (k = j + 1; k < n; ++k) {\n      t += matrix[k][j] * coef[k];\n    }\n    coef[j] = (matrix[n][j] - t) / matrix[j][j];\n  }\n  return coef;\n}\n\nconst maxiters = 2,\n  epsilon = 1e-12;\n\n// Adapted from science.js by Jason Davies\n// Source: https://github.com/jasondavies/science.js/blob/master/src/stats/loess.js\n// License: https://github.com/jasondavies/science.js/blob/master/LICENSE\nfunction loess (data, x, y, bandwidth) {\n  const [xv, yv, ux, uy] = points(data, x, y, true),\n    n = xv.length,\n    bw = Math.max(2, ~~(bandwidth * n)),\n    // # nearest neighbors\n    yhat = new Float64Array(n),\n    residuals = new Float64Array(n),\n    robustWeights = new Float64Array(n).fill(1);\n  for (let iter = -1; ++iter <= maxiters;) {\n    const interval = [0, bw - 1];\n    for (let i = 0; i < n; ++i) {\n      const dx = xv[i],\n        i0 = interval[0],\n        i1 = interval[1],\n        edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n      let W = 0,\n        X = 0,\n        Y = 0,\n        XY = 0,\n        X2 = 0;\n      const denom = 1 / Math.abs(xv[edge] - dx || 1); // avoid singularity!\n\n      for (let k = i0; k <= i1; ++k) {\n        const xk = xv[k],\n          yk = yv[k],\n          w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n          xkw = xk * w;\n        W += w;\n        X += xkw;\n        Y += yk * w;\n        XY += yk * xkw;\n        X2 += xk * xkw;\n      }\n\n      // linear regression fit\n      const [a, b] = ols(X / W, Y / W, XY / W, X2 / W);\n      yhat[i] = a + b * dx;\n      residuals[i] = Math.abs(yv[i] - yhat[i]);\n      updateInterval(xv, i + 1, interval);\n    }\n    if (iter === maxiters) {\n      break;\n    }\n    const medianResidual = median(residuals);\n    if (Math.abs(medianResidual) < epsilon) break;\n    for (let i = 0, arg, w; i < n; ++i) {\n      arg = residuals[i] / (6 * medianResidual);\n      // default to epsilon (rather than zero) for large deviations\n      // keeping weights tiny but non-zero prevents singularites\n      robustWeights[i] = arg >= 1 ? epsilon : (w = 1 - arg * arg) * w;\n    }\n  }\n  return output(xv, yhat, ux, uy);\n}\n\n// weighting kernel for local regression\nfunction tricube(x) {\n  return (x = 1 - x * x * x) * x * x;\n}\n\n// advance sliding window interval of nearest neighbors\nfunction updateInterval(xv, i, interval) {\n  const val = xv[i];\n  let left = interval[0],\n    right = interval[1] + 1;\n  if (right >= xv.length) return;\n\n  // step right if distance to new right edge is <= distance to old left edge\n  // step when distance is equal to ensure movement over duplicate x values\n  while (i > left && xv[right] - val <= val - xv[left]) {\n    interval[0] = ++left;\n    interval[1] = right;\n    ++right;\n  }\n}\n\n// generate smoothed output points\n// average points with repeated x values\nfunction output(xv, yhat, ux, uy) {\n  const n = xv.length,\n    out = [];\n  let i = 0,\n    cnt = 0,\n    prev = [],\n    v;\n  for (; i < n; ++i) {\n    v = xv[i] + ux;\n    if (prev[0] === v) {\n      // average output values via online update\n      prev[1] += (yhat[i] - prev[1]) / ++cnt;\n    } else {\n      // add new output point\n      cnt = 0;\n      prev[1] += uy;\n      prev = [v, yhat[i]];\n      out.push(prev);\n    }\n  }\n  prev[1] += uy;\n  return out;\n}\n\n// subdivide up to accuracy of 0.5 degrees\nconst MIN_RADIANS = 0.5 * Math.PI / 180;\n\n// Adaptively sample an interpolated function over a domain extent\nfunction sampleCurve (f, extent, minSteps, maxSteps) {\n  minSteps = minSteps || 25;\n  maxSteps = Math.max(minSteps, maxSteps || 200);\n  const point = x => [x, f(x)],\n    minX = extent[0],\n    maxX = extent[1],\n    span = maxX - minX,\n    stop = span / maxSteps,\n    prev = [point(minX)],\n    next = [];\n  if (minSteps === maxSteps) {\n    // no adaptation, sample uniform grid directly and return\n    for (let i = 1; i < maxSteps; ++i) {\n      prev.push(point(minX + i / minSteps * span));\n    }\n    prev.push(point(maxX));\n    return prev;\n  } else {\n    // sample minimum points on uniform grid\n    // then move on to perform adaptive refinement\n    next.push(point(maxX));\n    for (let i = minSteps; --i > 0;) {\n      next.push(point(minX + i / minSteps * span));\n    }\n  }\n  let p0 = prev[0];\n  let p1 = next[next.length - 1];\n  const sx = 1 / span;\n  const sy = scaleY(p0[1], next);\n  while (p1) {\n    // midpoint for potential curve subdivision\n    const pm = point((p0[0] + p1[0]) / 2);\n    const dx = pm[0] - p0[0] >= stop;\n    if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {\n      // maximum resolution has not yet been met, and\n      // subdivision midpoint is sufficiently different from endpoint\n      // save subdivision, push midpoint onto the visitation stack\n      next.push(pm);\n    } else {\n      // subdivision midpoint sufficiently similar to endpoint\n      // skip subdivision, store endpoint, move to next point on the stack\n      p0 = p1;\n      prev.push(p1);\n      next.pop();\n    }\n    p1 = next[next.length - 1];\n  }\n  return prev;\n}\nfunction scaleY(init, points) {\n  let ymin = init;\n  let ymax = init;\n  const n = points.length;\n  for (let i = 0; i < n; ++i) {\n    const y = points[i][1];\n    if (y < ymin) ymin = y;\n    if (y > ymax) ymax = y;\n  }\n  return 1 / (ymax - ymin);\n}\nfunction angleDelta(p, q, r, sx, sy) {\n  const a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),\n    a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));\n  return Math.abs(a0 - a1);\n}\n\nexport { estimateBandwidth as bandwidthNRD, bin, bootstrapCI, cumulativeLogNormal, cumulativeNormal, cumulativeUniform, densityLogNormal, densityNormal, densityUniform, dotbin, quantileLogNormal, quantileNormal, quantileUniform, quantiles, quartiles, random, integer as randomInteger, kde as randomKDE, lcg as randomLCG, lognormal as randomLogNormal, mixture as randomMixture, gaussian as randomNormal, uniform as randomUniform, constant as regressionConstant, exp as regressionExp, linear as regressionLinear, loess as regressionLoess, log as regressionLog, poly as regressionPoly, pow as regressionPow, quad as regressionQuad, sampleCurve, sampleLogNormal, sampleNormal, sampleUniform, setRandom };\n", "import { Transform } from 'vega-dataflow';\nimport { Marks, boundClip, GroupItem, Item, Bounds, multiLineOffset, boundStroke } from 'vega-scenegraph';\nimport { inherits, peek, isObject } from 'vega-util';\n\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst TopLeft = 'top-left';\nconst TopRight = 'top-right';\nconst BottomLeft = 'bottom-left';\nconst BottomRight = 'bottom-right';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst X = 'x';\nconst Y = 'y';\nconst Group = 'group';\nconst AxisRole = 'axis';\nconst TitleRole = 'title';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst LegendRole = 'legend';\nconst RowHeader = 'row-header';\nconst RowFooter = 'row-footer';\nconst RowTitle = 'row-title';\nconst ColHeader = 'column-header';\nconst ColFooter = 'column-footer';\nconst ColTitle = 'column-title';\nconst Padding = 'padding';\nconst Symbols = 'symbol';\nconst Fit = 'fit';\nconst FitX = 'fit-x';\nconst FitY = 'fit-y';\nconst Pad = 'pad';\nconst None = 'none';\nconst All = 'all';\nconst Each = 'each';\nconst Flush = 'flush';\nconst Column = 'column';\nconst Row = 'row';\n\n/**\n * Calculate bounding boxes for scenegraph items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - The scenegraph mark instance to bound.\n */\nfunction Bound(params) {\n  Transform.call(this, null, params);\n}\ninherits(Bound, Transform, {\n  transform(_, pulse) {\n    const view = pulse.dataflow,\n      mark = _.mark,\n      type = mark.marktype,\n      entry = Marks[type],\n      bound = entry.bound;\n    let markBounds = mark.bounds,\n      rebound;\n    if (entry.nested) {\n      // multi-item marks have a single bounds instance\n      if (mark.items.length) view.dirty(mark.items[0]);\n      markBounds = boundItem(mark, bound);\n      mark.items.forEach(item => {\n        item.bounds.clear().union(markBounds);\n      });\n    } else if (type === Group || _.modified()) {\n      // operator parameters modified -> re-bound all items\n      // updates group bounds in response to modified group content\n      pulse.visit(pulse.MOD, item => view.dirty(item));\n      markBounds.clear();\n      mark.items.forEach(item => markBounds.union(boundItem(item, bound)));\n\n      // force reflow for axes/legends/titles to propagate any layout changes\n      switch (mark.role) {\n        case AxisRole:\n        case LegendRole:\n        case TitleRole:\n          pulse.reflow();\n      }\n    } else {\n      // incrementally update bounds, re-bound mark as needed\n      rebound = pulse.changed(pulse.REM);\n      pulse.visit(pulse.ADD, item => {\n        markBounds.union(boundItem(item, bound));\n      });\n      pulse.visit(pulse.MOD, item => {\n        rebound = rebound || markBounds.alignsWith(item.bounds);\n        view.dirty(item);\n        markBounds.union(boundItem(item, bound));\n      });\n      if (rebound) {\n        markBounds.clear();\n        mark.items.forEach(item => markBounds.union(item.bounds));\n      }\n    }\n\n    // ensure mark bounds do not exceed any clipping region\n    boundClip(mark);\n    return pulse.modifies('bounds');\n  }\n});\nfunction boundItem(item, bound, opt) {\n  return bound(item.bounds.clear(), item, opt);\n}\n\nconst COUNTER_NAME = ':vega_identifier:';\n\n/**\n * Adds a unique identifier to all added tuples.\n * This transform creates a new signal that serves as an id counter.\n * As a result, the id counter is shared across all instances of this\n * transform, generating unique ids across multiple data streams. In\n * addition, this signal value can be included in a snapshot of the\n * dataflow state, enabling correct resumption of id allocation.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {string} params.as - The field name for the generated identifier.\n */\nfunction Identifier(params) {\n  Transform.call(this, 0, params);\n}\nIdentifier.Definition = {\n  'type': 'Identifier',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'as',\n    'type': 'string',\n    'required': true\n  }]\n};\ninherits(Identifier, Transform, {\n  transform(_, pulse) {\n    const counter = getCounter(pulse.dataflow),\n      as = _.as;\n    let id = counter.value;\n    pulse.visit(pulse.ADD, t => t[as] = t[as] || ++id);\n    counter.set(this.value = id);\n    return pulse;\n  }\n});\nfunction getCounter(view) {\n  return view._signals[COUNTER_NAME] || (view._signals[COUNTER_NAME] = view.add(0));\n}\n\n/**\n * Bind scenegraph items to a scenegraph mark instance.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.markdef - The mark definition for creating the mark.\n *   This is an object of legal scenegraph mark properties which *must* include\n *   the 'marktype' property.\n */\nfunction Mark(params) {\n  Transform.call(this, null, params);\n}\ninherits(Mark, Transform, {\n  transform(_, pulse) {\n    let mark = this.value;\n\n    // acquire mark on first invocation, bind context and group\n    if (!mark) {\n      mark = pulse.dataflow.scenegraph().mark(_.markdef, lookup$1(_), _.index);\n      mark.group.context = _.context;\n      if (!_.context.group) _.context.group = mark.group;\n      mark.source = this.source; // point to upstream collector\n      mark.clip = _.clip;\n      mark.interactive = _.interactive;\n      this.value = mark;\n    }\n\n    // initialize entering items\n    const Init = mark.marktype === Group ? GroupItem : Item;\n    pulse.visit(pulse.ADD, item => Init.call(item, mark));\n\n    // update clipping and/or interactive status\n    if (_.modified('clip') || _.modified('interactive')) {\n      mark.clip = _.clip;\n      mark.interactive = !!_.interactive;\n      mark.zdirty = true; // force scenegraph re-eval\n      pulse.reflow();\n    }\n\n    // bind items array to scenegraph mark\n    mark.items = pulse.source;\n    return pulse;\n  }\n});\nfunction lookup$1(_) {\n  const g = _.groups,\n    p = _.parent;\n  return g && g.size === 1 ? g.get(Object.keys(g.object)[0]) : g && p ? g.lookup(p) : null;\n}\n\n/**\n * Analyze items for overlap, changing opacity to hide items with\n * overlapping bounding boxes. This transform will preserve at least\n * two items (e.g., first and last) even if overlap persists.\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n *   function for sorting items.\n * @param {object} [params.method] - The overlap removal method to apply.\n *   One of 'parity' (default, hide every other item until there is no\n *   more overlap) or 'greedy' (sequentially scan and hide and items that\n *   overlap with the last visible item).\n * @param {object} [params.boundScale] - A scale whose range should be used\n *   to bound the items. Items exceeding the bounds of the scale range\n *   will be treated as overlapping. If null or undefined, no bounds check\n *   will be applied.\n * @param {object} [params.boundOrient] - The orientation of the scale\n *   (top, bottom, left, or right) used to bound items. This parameter is\n *   ignored if boundScale is null or undefined.\n * @param {object} [params.boundTolerance] - The tolerance in pixels for\n *   bound inclusion testing (default 1). This specifies by how many pixels\n *   an item's bounds may exceed the scale range bounds and not be culled.\n * @constructor\n */\nfunction Overlap(params) {\n  Transform.call(this, null, params);\n}\nconst methods = {\n  parity: items => items.filter((item, i) => i % 2 ? item.opacity = 0 : 1),\n  greedy: (items, sep) => {\n    let a;\n    return items.filter((b, i) => !i || !intersect(a.bounds, b.bounds, sep) ? (a = b, 1) : b.opacity = 0);\n  }\n};\n\n// compute bounding box intersection\n// including padding pixels of separation\nconst intersect = (a, b, sep) => sep > Math.max(b.x1 - a.x2, a.x1 - b.x2, b.y1 - a.y2, a.y1 - b.y2);\nconst hasOverlap = (items, pad) => {\n  for (var i = 1, n = items.length, a = items[0].bounds, b; i < n; a = b, ++i) {\n    if (intersect(a, b = items[i].bounds, pad)) return true;\n  }\n};\nconst hasBounds = item => {\n  const b = item.bounds;\n  return b.width() > 1 && b.height() > 1;\n};\nconst boundTest = (scale, orient, tolerance) => {\n  var range = scale.range(),\n    b = new Bounds();\n  if (orient === Top || orient === Bottom) {\n    b.set(range[0], -Infinity, range[1], +Infinity);\n  } else {\n    b.set(-Infinity, range[0], +Infinity, range[1]);\n  }\n  b.expand(tolerance || 1);\n  return item => b.encloses(item.bounds);\n};\n\n// reset all items to be fully opaque\nconst reset = source => {\n  source.forEach(item => item.opacity = 1);\n  return source;\n};\n\n// add all tuples to mod, fork pulse if parameters were modified\n// fork prevents cross-stream tuple pollution (e.g., pulse from scale)\nconst reflow = (pulse, _) => pulse.reflow(_.modified()).modifies('opacity');\ninherits(Overlap, Transform, {\n  transform(_, pulse) {\n    const reduce = methods[_.method] || methods.parity,\n      sep = _.separation || 0;\n    let source = pulse.materialize(pulse.SOURCE).source,\n      items,\n      test;\n    if (!source || !source.length) return;\n    if (!_.method) {\n      // early exit if method is falsy\n      if (_.modified('method')) {\n        reset(source);\n        pulse = reflow(pulse, _);\n      }\n      return pulse;\n    }\n\n    // skip labels with no content\n    source = source.filter(hasBounds);\n\n    // early exit, nothing to do\n    if (!source.length) return;\n    if (_.sort) {\n      source = source.slice().sort(_.sort);\n    }\n    items = reset(source);\n    pulse = reflow(pulse, _);\n    if (items.length >= 3 && hasOverlap(items, sep)) {\n      do {\n        items = reduce(items, sep);\n      } while (items.length >= 3 && hasOverlap(items, sep));\n      if (items.length < 3 && !peek(source).opacity) {\n        if (items.length > 1) peek(items).opacity = 0;\n        peek(source).opacity = 1;\n      }\n    }\n    if (_.boundScale && _.boundTolerance >= 0) {\n      test = boundTest(_.boundScale, _.boundOrient, +_.boundTolerance);\n      source.forEach(item => {\n        if (!test(item)) item.opacity = 0;\n      });\n    }\n\n    // re-calculate mark bounds\n    const bounds = items[0].mark.bounds.clear();\n    source.forEach(item => {\n      if (item.opacity) bounds.union(item.bounds);\n    });\n    return pulse;\n  }\n});\n\n/**\n * Queue modified scenegraph items for rendering.\n * @constructor\n */\nfunction Render(params) {\n  Transform.call(this, null, params);\n}\ninherits(Render, Transform, {\n  transform(_, pulse) {\n    const view = pulse.dataflow;\n    pulse.visit(pulse.ALL, item => view.dirty(item));\n\n    // set z-index dirty flag as needed\n    if (pulse.fields && pulse.fields['zindex']) {\n      const item = pulse.source && pulse.source[0];\n      if (item) item.mark.zdirty = true;\n    }\n  }\n});\n\nconst tempBounds = new Bounds();\nfunction set(item, property, value) {\n  return item[property] === value ? 0 : (item[property] = value, 1);\n}\n\nfunction isYAxis(mark) {\n  var orient = mark.items[0].orient;\n  return orient === Left || orient === Right;\n}\nfunction axisIndices(datum) {\n  let index = +datum.grid;\n  return [datum.ticks ? index++ : -1,\n  // ticks index\n  datum.labels ? index++ : -1,\n  // labels index\n  index + +datum.domain // title index\n  ];\n}\n\nfunction axisLayout(view, axis, width, height) {\n  var item = axis.items[0],\n    datum = item.datum,\n    delta = item.translate != null ? item.translate : 0.5,\n    orient = item.orient,\n    indices = axisIndices(datum),\n    range = item.range,\n    offset = item.offset,\n    position = item.position,\n    minExtent = item.minExtent,\n    maxExtent = item.maxExtent,\n    title = datum.title && item.items[indices[2]].items[0],\n    titlePadding = item.titlePadding,\n    bounds = item.bounds,\n    dl = title && multiLineOffset(title),\n    x = 0,\n    y = 0,\n    i,\n    s;\n  tempBounds.clear().union(bounds);\n  bounds.clear();\n  if ((i = indices[0]) > -1) bounds.union(item.items[i].bounds);\n  if ((i = indices[1]) > -1) bounds.union(item.items[i].bounds);\n\n  // position axis group and title\n  switch (orient) {\n    case Top:\n      x = position || 0;\n      y = -offset;\n      s = Math.max(minExtent, Math.min(maxExtent, -bounds.y1));\n      bounds.add(0, -s).add(range, 0);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 0, -1, bounds);\n      break;\n    case Left:\n      x = -offset;\n      y = position || 0;\n      s = Math.max(minExtent, Math.min(maxExtent, -bounds.x1));\n      bounds.add(-s, 0).add(0, range);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, -1, bounds);\n      break;\n    case Right:\n      x = width + offset;\n      y = position || 0;\n      s = Math.max(minExtent, Math.min(maxExtent, bounds.x2));\n      bounds.add(0, 0).add(s, range);\n      if (title) axisTitleLayout(view, title, s, titlePadding, dl, 1, 1, bounds);\n      break;\n    case Bottom:\n      x = position || 0;\n      y = height + offset;\n      s = Math.max(minExtent, Math.min(maxExtent, bounds.y2));\n      bounds.add(0, 0).add(range, s);\n      if (title) axisTitleLayout(view, title, s, titlePadding, 0, 0, 1, bounds);\n      break;\n    default:\n      x = item.x;\n      y = item.y;\n  }\n\n  // update bounds\n  boundStroke(bounds.translate(x, y), item);\n  if (set(item, 'x', x + delta) | set(item, 'y', y + delta)) {\n    item.bounds = tempBounds;\n    view.dirty(item);\n    item.bounds = bounds;\n    view.dirty(item);\n  }\n  return item.mark.bounds.clear().union(bounds);\n}\nfunction axisTitleLayout(view, title, offset, pad, dl, isYAxis, sign, bounds) {\n  const b = title.bounds;\n  if (title.auto) {\n    const v = sign * (offset + dl + pad);\n    let dx = 0,\n      dy = 0;\n    view.dirty(title);\n    isYAxis ? dx = (title.x || 0) - (title.x = v) : dy = (title.y || 0) - (title.y = v);\n    title.mark.bounds.clear().union(b.translate(-dx, -dy));\n    view.dirty(title);\n  }\n  bounds.union(b);\n}\n\n// aggregation functions for grid margin determination\nconst min = (a, b) => Math.floor(Math.min(a, b));\nconst max = (a, b) => Math.ceil(Math.max(a, b));\nfunction gridLayoutGroups(group) {\n  var groups = group.items,\n    n = groups.length,\n    i = 0,\n    mark,\n    items;\n  const views = {\n    marks: [],\n    rowheaders: [],\n    rowfooters: [],\n    colheaders: [],\n    colfooters: [],\n    rowtitle: null,\n    coltitle: null\n  };\n\n  // layout axes, gather legends, collect bounds\n  for (; i < n; ++i) {\n    mark = groups[i];\n    items = mark.items;\n    if (mark.marktype === Group) {\n      switch (mark.role) {\n        case AxisRole:\n        case LegendRole:\n        case TitleRole:\n          break;\n        case RowHeader:\n          views.rowheaders.push(...items);\n          break;\n        case RowFooter:\n          views.rowfooters.push(...items);\n          break;\n        case ColHeader:\n          views.colheaders.push(...items);\n          break;\n        case ColFooter:\n          views.colfooters.push(...items);\n          break;\n        case RowTitle:\n          views.rowtitle = items[0];\n          break;\n        case ColTitle:\n          views.coltitle = items[0];\n          break;\n        default:\n          views.marks.push(...items);\n      }\n    }\n  }\n  return views;\n}\nfunction bboxFlush(item) {\n  return new Bounds().set(0, 0, item.width || 0, item.height || 0);\n}\nfunction bboxFull(item) {\n  const b = item.bounds.clone();\n  return b.empty() ? b.set(0, 0, 0, 0) : b.translate(-(item.x || 0), -(item.y || 0));\n}\nfunction get(opt, key, d) {\n  const v = isObject(opt) ? opt[key] : opt;\n  return v != null ? v : d !== undefined ? d : 0;\n}\nfunction offsetValue(v) {\n  return v < 0 ? Math.ceil(-v) : 0;\n}\nfunction gridLayout(view, groups, opt) {\n  var dirty = !opt.nodirty,\n    bbox = opt.bounds === Flush ? bboxFlush : bboxFull,\n    bounds = tempBounds.set(0, 0, 0, 0),\n    alignCol = get(opt.align, Column),\n    alignRow = get(opt.align, Row),\n    padCol = get(opt.padding, Column),\n    padRow = get(opt.padding, Row),\n    ncols = opt.columns || groups.length,\n    nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n    n = groups.length,\n    xOffset = Array(n),\n    xExtent = Array(ncols),\n    xMax = 0,\n    yOffset = Array(n),\n    yExtent = Array(nrows),\n    yMax = 0,\n    dx = Array(n),\n    dy = Array(n),\n    boxes = Array(n),\n    m,\n    i,\n    c,\n    r,\n    b,\n    g,\n    px,\n    py,\n    x,\n    y,\n    offset;\n  for (i = 0; i < ncols; ++i) xExtent[i] = 0;\n  for (i = 0; i < nrows; ++i) yExtent[i] = 0;\n\n  // determine offsets for each group\n  for (i = 0; i < n; ++i) {\n    g = groups[i];\n    b = boxes[i] = bbox(g);\n    g.x = g.x || 0;\n    dx[i] = 0;\n    g.y = g.y || 0;\n    dy[i] = 0;\n    c = i % ncols;\n    r = ~~(i / ncols);\n    xMax = Math.max(xMax, px = Math.ceil(b.x2));\n    yMax = Math.max(yMax, py = Math.ceil(b.y2));\n    xExtent[c] = Math.max(xExtent[c], px);\n    yExtent[r] = Math.max(yExtent[r], py);\n    xOffset[i] = padCol + offsetValue(b.x1);\n    yOffset[i] = padRow + offsetValue(b.y1);\n    if (dirty) view.dirty(groups[i]);\n  }\n\n  // set initial alignment offsets\n  for (i = 0; i < n; ++i) {\n    if (i % ncols === 0) xOffset[i] = 0;\n    if (i < ncols) yOffset[i] = 0;\n  }\n\n  // enforce column alignment constraints\n  if (alignCol === Each) {\n    for (c = 1; c < ncols; ++c) {\n      for (offset = 0, i = c; i < n; i += ncols) {\n        if (offset < xOffset[i]) offset = xOffset[i];\n      }\n      for (i = c; i < n; i += ncols) {\n        xOffset[i] = offset + xExtent[c - 1];\n      }\n    }\n  } else if (alignCol === All) {\n    for (offset = 0, i = 0; i < n; ++i) {\n      if (i % ncols && offset < xOffset[i]) offset = xOffset[i];\n    }\n    for (i = 0; i < n; ++i) {\n      if (i % ncols) xOffset[i] = offset + xMax;\n    }\n  } else {\n    for (alignCol = false, c = 1; c < ncols; ++c) {\n      for (i = c; i < n; i += ncols) {\n        xOffset[i] += xExtent[c - 1];\n      }\n    }\n  }\n\n  // enforce row alignment constraints\n  if (alignRow === Each) {\n    for (r = 1; r < nrows; ++r) {\n      for (offset = 0, i = r * ncols, m = i + ncols; i < m; ++i) {\n        if (offset < yOffset[i]) offset = yOffset[i];\n      }\n      for (i = r * ncols; i < m; ++i) {\n        yOffset[i] = offset + yExtent[r - 1];\n      }\n    }\n  } else if (alignRow === All) {\n    for (offset = 0, i = ncols; i < n; ++i) {\n      if (offset < yOffset[i]) offset = yOffset[i];\n    }\n    for (i = ncols; i < n; ++i) {\n      yOffset[i] = offset + yMax;\n    }\n  } else {\n    for (alignRow = false, r = 1; r < nrows; ++r) {\n      for (i = r * ncols, m = i + ncols; i < m; ++i) {\n        yOffset[i] += yExtent[r - 1];\n      }\n    }\n  }\n\n  // perform horizontal grid layout\n  for (x = 0, i = 0; i < n; ++i) {\n    x = xOffset[i] + (i % ncols ? x : 0);\n    dx[i] += x - groups[i].x;\n  }\n\n  // perform vertical grid layout\n  for (c = 0; c < ncols; ++c) {\n    for (y = 0, i = c; i < n; i += ncols) {\n      y += yOffset[i];\n      dy[i] += y - groups[i].y;\n    }\n  }\n\n  // perform horizontal centering\n  if (alignCol && get(opt.center, Column) && nrows > 1) {\n    for (i = 0; i < n; ++i) {\n      b = alignCol === All ? xMax : xExtent[i % ncols];\n      x = b - boxes[i].x2 - groups[i].x - dx[i];\n      if (x > 0) dx[i] += x / 2;\n    }\n  }\n\n  // perform vertical centering\n  if (alignRow && get(opt.center, Row) && ncols !== 1) {\n    for (i = 0; i < n; ++i) {\n      b = alignRow === All ? yMax : yExtent[~~(i / ncols)];\n      y = b - boxes[i].y2 - groups[i].y - dy[i];\n      if (y > 0) dy[i] += y / 2;\n    }\n  }\n\n  // position grid relative to anchor\n  for (i = 0; i < n; ++i) {\n    bounds.union(boxes[i].translate(dx[i], dy[i]));\n  }\n  x = get(opt.anchor, X);\n  y = get(opt.anchor, Y);\n  switch (get(opt.anchor, Column)) {\n    case End:\n      x -= bounds.width();\n      break;\n    case Middle:\n      x -= bounds.width() / 2;\n  }\n  switch (get(opt.anchor, Row)) {\n    case End:\n      y -= bounds.height();\n      break;\n    case Middle:\n      y -= bounds.height() / 2;\n  }\n  x = Math.round(x);\n  y = Math.round(y);\n\n  // update mark positions, bounds, dirty\n  bounds.clear();\n  for (i = 0; i < n; ++i) {\n    groups[i].mark.bounds.clear();\n  }\n  for (i = 0; i < n; ++i) {\n    g = groups[i];\n    g.x += dx[i] += x;\n    g.y += dy[i] += y;\n    bounds.union(g.mark.bounds.union(g.bounds.translate(dx[i], dy[i])));\n    if (dirty) view.dirty(g);\n  }\n  return bounds;\n}\nfunction trellisLayout(view, group, opt) {\n  var views = gridLayoutGroups(group),\n    groups = views.marks,\n    bbox = opt.bounds === Flush ? boundFlush : boundFull,\n    off = opt.offset,\n    ncols = opt.columns || groups.length,\n    nrows = ncols <= 0 ? 1 : Math.ceil(groups.length / ncols),\n    cells = nrows * ncols,\n    x,\n    y,\n    x2,\n    y2,\n    anchor,\n    band,\n    offset;\n\n  // -- initial grid layout\n  const bounds = gridLayout(view, groups, opt);\n  if (bounds.empty()) bounds.set(0, 0, 0, 0); // empty grid\n\n  // -- layout grid headers and footers --\n\n  // perform row header layout\n  if (views.rowheaders) {\n    band = get(opt.headerBand, Row, null);\n    x = layoutHeaders(view, views.rowheaders, groups, ncols, nrows, -get(off, 'rowHeader'), min, 0, bbox, 'x1', 0, ncols, 1, band);\n  }\n\n  // perform column header layout\n  if (views.colheaders) {\n    band = get(opt.headerBand, Column, null);\n    y = layoutHeaders(view, views.colheaders, groups, ncols, ncols, -get(off, 'columnHeader'), min, 1, bbox, 'y1', 0, 1, ncols, band);\n  }\n\n  // perform row footer layout\n  if (views.rowfooters) {\n    band = get(opt.footerBand, Row, null);\n    x2 = layoutHeaders(view, views.rowfooters, groups, ncols, nrows, get(off, 'rowFooter'), max, 0, bbox, 'x2', ncols - 1, ncols, 1, band);\n  }\n\n  // perform column footer layout\n  if (views.colfooters) {\n    band = get(opt.footerBand, Column, null);\n    y2 = layoutHeaders(view, views.colfooters, groups, ncols, ncols, get(off, 'columnFooter'), max, 1, bbox, 'y2', cells - ncols, 1, ncols, band);\n  }\n\n  // perform row title layout\n  if (views.rowtitle) {\n    anchor = get(opt.titleAnchor, Row);\n    offset = get(off, 'rowTitle');\n    offset = anchor === End ? x2 + offset : x - offset;\n    band = get(opt.titleBand, Row, 0.5);\n    layoutTitle(view, views.rowtitle, offset, 0, bounds, band);\n  }\n\n  // perform column title layout\n  if (views.coltitle) {\n    anchor = get(opt.titleAnchor, Column);\n    offset = get(off, 'columnTitle');\n    offset = anchor === End ? y2 + offset : y - offset;\n    band = get(opt.titleBand, Column, 0.5);\n    layoutTitle(view, views.coltitle, offset, 1, bounds, band);\n  }\n}\nfunction boundFlush(item, field) {\n  return field === 'x1' ? item.x || 0 : field === 'y1' ? item.y || 0 : field === 'x2' ? (item.x || 0) + (item.width || 0) : field === 'y2' ? (item.y || 0) + (item.height || 0) : undefined;\n}\nfunction boundFull(item, field) {\n  return item.bounds[field];\n}\nfunction layoutHeaders(view, headers, groups, ncols, limit, offset, agg, isX, bound, bf, start, stride, back, band) {\n  var n = groups.length,\n    init = 0,\n    edge = 0,\n    i,\n    j,\n    k,\n    m,\n    b,\n    h,\n    g,\n    x,\n    y;\n\n  // if no groups, early exit and return 0\n  if (!n) return init;\n\n  // compute margin\n  for (i = start; i < n; i += stride) {\n    if (groups[i]) init = agg(init, bound(groups[i], bf));\n  }\n\n  // if no headers, return margin calculation\n  if (!headers.length) return init;\n\n  // check if number of headers exceeds number of rows or columns\n  if (headers.length > limit) {\n    view.warn('Grid headers exceed limit: ' + limit);\n    headers = headers.slice(0, limit);\n  }\n\n  // apply offset\n  init += offset;\n\n  // clear mark bounds for all headers\n  for (j = 0, m = headers.length; j < m; ++j) {\n    view.dirty(headers[j]);\n    headers[j].mark.bounds.clear();\n  }\n\n  // layout each header\n  for (i = start, j = 0, m = headers.length; j < m; ++j, i += stride) {\n    h = headers[j];\n    b = h.mark.bounds;\n\n    // search for nearest group to align to\n    // necessary if table has empty cells\n    for (k = i; k >= 0 && (g = groups[k]) == null; k -= back);\n\n    // assign coordinates and update bounds\n    if (isX) {\n      x = band == null ? g.x : Math.round(g.bounds.x1 + band * g.bounds.width());\n      y = init;\n    } else {\n      x = init;\n      y = band == null ? g.y : Math.round(g.bounds.y1 + band * g.bounds.height());\n    }\n    b.union(h.bounds.translate(x - (h.x || 0), y - (h.y || 0)));\n    h.x = x;\n    h.y = y;\n    view.dirty(h);\n\n    // update current edge of layout bounds\n    edge = agg(edge, b[bf]);\n  }\n  return edge;\n}\nfunction layoutTitle(view, g, offset, isX, bounds, band) {\n  if (!g) return;\n  view.dirty(g);\n\n  // compute title coordinates\n  var x = offset,\n    y = offset;\n  isX ? x = Math.round(bounds.x1 + band * bounds.width()) : y = Math.round(bounds.y1 + band * bounds.height());\n\n  // assign coordinates and update bounds\n  g.bounds.translate(x - (g.x || 0), y - (g.y || 0));\n  g.mark.bounds.clear().union(g.bounds);\n  g.x = x;\n  g.y = y;\n\n  // queue title for redraw\n  view.dirty(g);\n}\n\n// utility for looking up legend layout configuration\nfunction lookup(config, orient) {\n  const opt = config[orient] || {};\n  return (key, d) => opt[key] != null ? opt[key] : config[key] != null ? config[key] : d;\n}\n\n// if legends specify offset directly, use the maximum specified value\nfunction offsets(legends, value) {\n  let max = -Infinity;\n  legends.forEach(item => {\n    if (item.offset != null) max = Math.max(max, item.offset);\n  });\n  return max > -Infinity ? max : value;\n}\nfunction legendParams(g, orient, config, xb, yb, w, h) {\n  const _ = lookup(config, orient),\n    offset = offsets(g, _('offset', 0)),\n    anchor = _('anchor', Start),\n    mult = anchor === End ? 1 : anchor === Middle ? 0.5 : 0;\n  const p = {\n    align: Each,\n    bounds: _('bounds', Flush),\n    columns: _('direction') === 'vertical' ? 1 : g.length,\n    padding: _('margin', 8),\n    center: _('center'),\n    nodirty: true\n  };\n  switch (orient) {\n    case Left:\n      p.anchor = {\n        x: Math.floor(xb.x1) - offset,\n        column: End,\n        y: mult * (h || xb.height() + 2 * xb.y1),\n        row: anchor\n      };\n      break;\n    case Right:\n      p.anchor = {\n        x: Math.ceil(xb.x2) + offset,\n        y: mult * (h || xb.height() + 2 * xb.y1),\n        row: anchor\n      };\n      break;\n    case Top:\n      p.anchor = {\n        y: Math.floor(yb.y1) - offset,\n        row: End,\n        x: mult * (w || yb.width() + 2 * yb.x1),\n        column: anchor\n      };\n      break;\n    case Bottom:\n      p.anchor = {\n        y: Math.ceil(yb.y2) + offset,\n        x: mult * (w || yb.width() + 2 * yb.x1),\n        column: anchor\n      };\n      break;\n    case TopLeft:\n      p.anchor = {\n        x: offset,\n        y: offset\n      };\n      break;\n    case TopRight:\n      p.anchor = {\n        x: w - offset,\n        y: offset,\n        column: End\n      };\n      break;\n    case BottomLeft:\n      p.anchor = {\n        x: offset,\n        y: h - offset,\n        row: End\n      };\n      break;\n    case BottomRight:\n      p.anchor = {\n        x: w - offset,\n        y: h - offset,\n        column: End,\n        row: End\n      };\n      break;\n  }\n  return p;\n}\nfunction legendLayout(view, legend) {\n  var item = legend.items[0],\n    datum = item.datum,\n    orient = item.orient,\n    bounds = item.bounds,\n    x = item.x,\n    y = item.y,\n    w,\n    h;\n\n  // cache current bounds for later comparison\n  item._bounds ? item._bounds.clear().union(bounds) : item._bounds = bounds.clone();\n  bounds.clear();\n\n  // adjust legend to accommodate padding and title\n  legendGroupLayout(view, item, item.items[0].items[0]);\n\n  // aggregate bounds to determine size, and include origin\n  bounds = legendBounds(item, bounds);\n  w = 2 * item.padding;\n  h = 2 * item.padding;\n  if (!bounds.empty()) {\n    w = Math.ceil(bounds.width() + w);\n    h = Math.ceil(bounds.height() + h);\n  }\n  if (datum.type === Symbols) {\n    legendEntryLayout(item.items[0].items[0].items[0].items);\n  }\n  if (orient !== None) {\n    item.x = x = 0;\n    item.y = y = 0;\n  }\n  item.width = w;\n  item.height = h;\n  boundStroke(bounds.set(x, y, x + w, y + h), item);\n  item.mark.bounds.clear().union(bounds);\n  return item;\n}\nfunction legendBounds(item, b) {\n  // aggregate item bounds\n  item.items.forEach(_ => b.union(_.bounds));\n\n  // anchor to legend origin\n  b.x1 = item.padding;\n  b.y1 = item.padding;\n  return b;\n}\nfunction legendGroupLayout(view, item, entry) {\n  var pad = item.padding,\n    ex = pad - entry.x,\n    ey = pad - entry.y;\n  if (!item.datum.title) {\n    if (ex || ey) translate(view, entry, ex, ey);\n  } else {\n    var title = item.items[1].items[0],\n      anchor = title.anchor,\n      tpad = item.titlePadding || 0,\n      tx = pad - title.x,\n      ty = pad - title.y;\n    switch (title.orient) {\n      case Left:\n        ex += Math.ceil(title.bounds.width()) + tpad;\n        break;\n      case Right:\n      case Bottom:\n        break;\n      default:\n        ey += title.bounds.height() + tpad;\n    }\n    if (ex || ey) translate(view, entry, ex, ey);\n    switch (title.orient) {\n      case Left:\n        ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n        break;\n      case Right:\n        tx += legendTitleOffset(item, entry, title, End, 0, 0) + tpad;\n        ty += legendTitleOffset(item, entry, title, anchor, 1, 1);\n        break;\n      case Bottom:\n        tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n        ty += legendTitleOffset(item, entry, title, End, -1, 0, 1) + tpad;\n        break;\n      default:\n        tx += legendTitleOffset(item, entry, title, anchor, 0, 0);\n    }\n    if (tx || ty) translate(view, title, tx, ty);\n\n    // translate legend if title pushes into negative coordinates\n    if ((tx = Math.round(title.bounds.x1 - pad)) < 0) {\n      translate(view, entry, -tx, 0);\n      translate(view, title, -tx, 0);\n    }\n  }\n}\nfunction legendTitleOffset(item, entry, title, anchor, y, lr, noBar) {\n  const grad = item.datum.type !== 'symbol',\n    vgrad = title.datum.vgrad,\n    e = grad && (lr || !vgrad) && !noBar ? entry.items[0] : entry,\n    s = e.bounds[y ? 'y2' : 'x2'] - item.padding,\n    u = vgrad && lr ? s : 0,\n    v = vgrad && lr ? 0 : s,\n    o = y <= 0 ? 0 : multiLineOffset(title);\n  return Math.round(anchor === Start ? u : anchor === End ? v - o : 0.5 * (s - o));\n}\nfunction translate(view, item, dx, dy) {\n  item.x += dx;\n  item.y += dy;\n  item.bounds.translate(dx, dy);\n  item.mark.bounds.translate(dx, dy);\n  view.dirty(item);\n}\nfunction legendEntryLayout(entries) {\n  // get max widths for each column\n  const widths = entries.reduce((w, g) => {\n    w[g.column] = Math.max(g.bounds.x2 - g.x, w[g.column] || 0);\n    return w;\n  }, {});\n\n  // set dimensions of legend entry groups\n  entries.forEach(g => {\n    g.width = widths[g.column];\n    g.height = g.bounds.y2 - g.y;\n  });\n}\n\nfunction titleLayout(view, mark, width, height, viewBounds) {\n  var group = mark.items[0],\n    frame = group.frame,\n    orient = group.orient,\n    anchor = group.anchor,\n    offset = group.offset,\n    padding = group.padding,\n    title = group.items[0].items[0],\n    subtitle = group.items[1] && group.items[1].items[0],\n    end = orient === Left || orient === Right ? height : width,\n    start = 0,\n    x = 0,\n    y = 0,\n    sx = 0,\n    sy = 0,\n    pos;\n  if (frame !== Group) {\n    orient === Left ? (start = viewBounds.y2, end = viewBounds.y1) : orient === Right ? (start = viewBounds.y1, end = viewBounds.y2) : (start = viewBounds.x1, end = viewBounds.x2);\n  } else if (orient === Left) {\n    start = height, end = 0;\n  }\n  pos = anchor === Start ? start : anchor === End ? end : (start + end) / 2;\n  if (subtitle && subtitle.text) {\n    // position subtitle\n    switch (orient) {\n      case Top:\n      case Bottom:\n        sy = title.bounds.height() + padding;\n        break;\n      case Left:\n        sx = title.bounds.width() + padding;\n        break;\n      case Right:\n        sx = -title.bounds.width() - padding;\n        break;\n    }\n    tempBounds.clear().union(subtitle.bounds);\n    tempBounds.translate(sx - (subtitle.x || 0), sy - (subtitle.y || 0));\n    if (set(subtitle, 'x', sx) | set(subtitle, 'y', sy)) {\n      view.dirty(subtitle);\n      subtitle.bounds.clear().union(tempBounds);\n      subtitle.mark.bounds.clear().union(tempBounds);\n      view.dirty(subtitle);\n    }\n    tempBounds.clear().union(subtitle.bounds);\n  } else {\n    tempBounds.clear();\n  }\n  tempBounds.union(title.bounds);\n\n  // position title group\n  switch (orient) {\n    case Top:\n      x = pos;\n      y = viewBounds.y1 - tempBounds.height() - offset;\n      break;\n    case Left:\n      x = viewBounds.x1 - tempBounds.width() - offset;\n      y = pos;\n      break;\n    case Right:\n      x = viewBounds.x2 + tempBounds.width() + offset;\n      y = pos;\n      break;\n    case Bottom:\n      x = pos;\n      y = viewBounds.y2 + offset;\n      break;\n    default:\n      x = group.x;\n      y = group.y;\n  }\n  if (set(group, 'x', x) | set(group, 'y', y)) {\n    tempBounds.translate(x, y);\n    view.dirty(group);\n    group.bounds.clear().union(tempBounds);\n    mark.bounds.clear().union(tempBounds);\n    view.dirty(group);\n  }\n  return group.bounds;\n}\n\n/**\n * Layout view elements such as axes and legends.\n * Also performs size adjustments.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.mark - Scenegraph mark of groups to layout.\n */\nfunction ViewLayout(params) {\n  Transform.call(this, null, params);\n}\ninherits(ViewLayout, Transform, {\n  transform(_, pulse) {\n    const view = pulse.dataflow;\n    _.mark.items.forEach(group => {\n      if (_.layout) trellisLayout(view, group, _.layout);\n      layoutGroup(view, group, _);\n    });\n    return shouldReflow(_.mark.group) ? pulse.reflow() : pulse;\n  }\n});\nfunction shouldReflow(group) {\n  // We typically should reflow if layout is invoked (#2568), as child items\n  // may have resized and reflow ensures group bounds are re-calculated.\n  // However, legend entries have a special exception to avoid instability.\n  // For example, if a selected legend symbol gains a stroke on hover,\n  // we don't want to re-position subsequent elements in the legend.\n  return group && group.mark.role !== 'legend-entry';\n}\nfunction layoutGroup(view, group, _) {\n  var items = group.items,\n    width = Math.max(0, group.width || 0),\n    height = Math.max(0, group.height || 0),\n    viewBounds = new Bounds().set(0, 0, width, height),\n    xBounds = viewBounds.clone(),\n    yBounds = viewBounds.clone(),\n    legends = [],\n    title,\n    mark,\n    orient,\n    b,\n    i,\n    n;\n\n  // layout axes, gather legends, collect bounds\n  for (i = 0, n = items.length; i < n; ++i) {\n    mark = items[i];\n    switch (mark.role) {\n      case AxisRole:\n        b = isYAxis(mark) ? xBounds : yBounds;\n        b.union(axisLayout(view, mark, width, height));\n        break;\n      case TitleRole:\n        title = mark;\n        break;\n      case LegendRole:\n        legends.push(legendLayout(view, mark));\n        break;\n      case FrameRole:\n      case ScopeRole:\n      case RowHeader:\n      case RowFooter:\n      case RowTitle:\n      case ColHeader:\n      case ColFooter:\n      case ColTitle:\n        xBounds.union(mark.bounds);\n        yBounds.union(mark.bounds);\n        break;\n      default:\n        viewBounds.union(mark.bounds);\n    }\n  }\n\n  // layout legends, adjust viewBounds\n  if (legends.length) {\n    // group legends by orient\n    const l = {};\n    legends.forEach(item => {\n      orient = item.orient || Right;\n      if (orient !== None) (l[orient] || (l[orient] = [])).push(item);\n    });\n\n    // perform grid layout for each orient group\n    for (const orient in l) {\n      const g = l[orient];\n      gridLayout(view, g, legendParams(g, orient, _.legends, xBounds, yBounds, width, height));\n    }\n\n    // update view bounds\n    legends.forEach(item => {\n      const b = item.bounds;\n      if (!b.equals(item._bounds)) {\n        item.bounds = item._bounds;\n        view.dirty(item); // dirty previous location\n        item.bounds = b;\n        view.dirty(item);\n      }\n      if (_.autosize && (_.autosize.type === Fit || _.autosize.type === FitX || _.autosize.type === FitY)) {\n        // For autosize fit, incorporate the orthogonal dimension only.\n        // Legends that overrun the chart area will then be clipped;\n        // otherwise the chart area gets reduced to nothing!\n        switch (item.orient) {\n          case Left:\n          case Right:\n            viewBounds.add(b.x1, 0).add(b.x2, 0);\n            break;\n          case Top:\n          case Bottom:\n            viewBounds.add(0, b.y1).add(0, b.y2);\n        }\n      } else {\n        viewBounds.union(b);\n      }\n    });\n  }\n\n  // combine bounding boxes\n  viewBounds.union(xBounds).union(yBounds);\n\n  // layout title, adjust bounds\n  if (title) {\n    viewBounds.union(titleLayout(view, title, width, height, viewBounds));\n  }\n\n  // override aggregated view bounds if content is clipped\n  if (group.clip) {\n    viewBounds.set(0, 0, group.width || 0, group.height || 0);\n  }\n\n  // perform size adjustment\n  viewSizeLayout(view, group, viewBounds, _);\n}\nfunction viewSizeLayout(view, group, viewBounds, _) {\n  const auto = _.autosize || {},\n    type = auto.type;\n  if (view._autosize < 1 || !type) return;\n  let viewWidth = view._width,\n    viewHeight = view._height,\n    width = Math.max(0, group.width || 0),\n    left = Math.max(0, Math.ceil(-viewBounds.x1)),\n    height = Math.max(0, group.height || 0),\n    top = Math.max(0, Math.ceil(-viewBounds.y1));\n  const right = Math.max(0, Math.ceil(viewBounds.x2 - width)),\n    bottom = Math.max(0, Math.ceil(viewBounds.y2 - height));\n  if (auto.contains === Padding) {\n    const padding = view.padding();\n    viewWidth -= padding.left + padding.right;\n    viewHeight -= padding.top + padding.bottom;\n  }\n  if (type === None) {\n    left = 0;\n    top = 0;\n    width = viewWidth;\n    height = viewHeight;\n  } else if (type === Fit) {\n    width = Math.max(0, viewWidth - left - right);\n    height = Math.max(0, viewHeight - top - bottom);\n  } else if (type === FitX) {\n    width = Math.max(0, viewWidth - left - right);\n    viewHeight = height + top + bottom;\n  } else if (type === FitY) {\n    viewWidth = width + left + right;\n    height = Math.max(0, viewHeight - top - bottom);\n  } else if (type === Pad) {\n    viewWidth = width + left + right;\n    viewHeight = height + top + bottom;\n  }\n  view._resizeView(viewWidth, viewHeight, width, height, [left, top], auto.resize);\n}\n\nexport { Bound as bound, Identifier as identifier, Mark as mark, Overlap as overlap, Render as render, ViewLayout as viewlayout };\n", "export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`M${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`M${x0},${y0}`;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._append`L${x0},${y0}`;\n    }\n\n    // Is this arc empty? We\u2019re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n    }\n  }\n  rect(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n", "import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n  let digits = 3;\n\n  shape.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) {\n      digits = null;\n    } else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    return shape;\n  };\n\n  return () => new Path(digits);\n}\n", "import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null,\n      path = withPath(arc);\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle. If this\n        // intersection fails, it\u2019s probably because the arc is too small, so\n        // disable the corner radius entirely.\n        if (da < pi) {\n          if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n            var ax = x01 - oc[0],\n                ay = y01 - oc[1],\n                bx = x11 - oc[0],\n                by = y11 - oc[1],\n                kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n                lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n            rc0 = min(rc, (r0 - lc) / (kc - 1));\n            rc1 = min(rc, (r1 - lc) / (kc + 1));\n          } else {\n            rc0 = rc1 = 0;\n          }\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector\u2019s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it\u2019s a circular sector?\n      // Or perhaps it\u2019s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector\u2019s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n", "export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(line);\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(area);\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n", "import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n", "import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n  circle,\n  plus,\n  times,\n  triangle2,\n  asterisk,\n  square2,\n  diamond2\n];\n\nexport default function Symbol(type, size) {\n  let context = null,\n      path = withPath(symbol);\n\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    let buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n", "export default function() {}\n", "export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // falls through\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n", "import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n", "import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n", "import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nexport default (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n", "export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nexport function Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n", "import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n", "import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n", "import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > epsilon) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > epsilon) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // falls through\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n", "import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n", "import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n", "import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\n}\n", "function sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n  return new MonotoneY(context);\n}\n", "function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n", "function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n", "function domCanvas(w, h) {\n  if (typeof document !== 'undefined' && document.createElement) {\n    const c = document.createElement('canvas');\n    if (c && c.getContext) {\n      c.width = w;\n      c.height = h;\n      return c;\n    }\n  }\n  return null;\n}\nconst domImage = () => typeof Image !== 'undefined' ? Image : null;\n\nexport { domCanvas as canvas, domCanvas, domImage as image };\n", "export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n", "import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new InternMap(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    let i = index.get(d);\n    if (i === undefined) {\n      if (unknown !== implicit) return unknown;\n      index.set(d, i = domain.push(d) - 1);\n    }\n    return range[i % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new InternMap();\n    for (const value of _) {\n      if (index.has(value)) continue;\n      index.set(value, domain.push(value) - 1);\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n", "export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n", "export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n", "export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * degrees;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * radians;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb() {\n    return hcl2lab(this).rgb();\n  }\n}));\n", "import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n", "export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "export default x => () => x;\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n", "import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n", "export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n", "export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n", "import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n", "import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n", "export default function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n", "import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n  var i = hue(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n}\n", "export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 \u2245 u1.\n    if (d2 < epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4);\n", "import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n", "import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n", "import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n", "import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n", "import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n", "export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n", "export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n", "export default function number(x) {\n  return +x;\n}\n", "import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n", "import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n", "import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n", "import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n", "export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n", "import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n  return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n  const scale = transform(transformLog, transformExp);\n  const domain = scale.domain;\n  let base = 10;\n  let logs;\n  let pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = count => {\n    const d = domain();\n    let u = d[0];\n    let v = d[d.length - 1];\n    const r = v < u;\n\n    if (r) ([u, v] = [v, u]);\n\n    let i = logs(u);\n    let j = logs(v);\n    let k;\n    let t;\n    const n = count == null ? 10 : +count;\n    let z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1; k < base; ++k) {\n          t = i < 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1; k >= 1; --k) {\n          t = i > 0 ? k / pows(-i) : k * pows(i);\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = (count, specifier) => {\n    if (count == null) count = 10;\n    if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n    if (typeof specifier !== \"function\") {\n      if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n      specifier = format(specifier);\n    }\n    if (count === Infinity) return specifier;\n    const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return d => {\n      let i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = () => {\n    return domain(nice(domain(), {\n      floor: x => pows(Math.floor(logs(x))),\n      ceil: x => pows(Math.ceil(logs(x)))\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  const scale = loggish(transformer()).domain([1, 10]);\n  scale.copy = () => copy(scale, log()).base(scale.base());\n  initRange.apply(scale, arguments);\n  return scale;\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n", "import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n", "import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n", "import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n", "import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n  return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n", "import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n", "import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n", "import { toNumber, peek, toSet, array, constant, isNumber, span, isObject, isString, error, isArray } from 'vega-util';\nimport { bisectRight, range, bisect } from 'd3-array';\nimport * as $ from 'd3-scale';\nimport { scaleOrdinal, tickFormat as tickFormat$1 } from 'd3-scale';\nexport { scaleImplicit } from 'd3-scale';\nimport * as $$1 from 'd3-interpolate';\nimport { timeInterval, utcInterval } from 'vega-time';\n\nfunction bandSpace (count, paddingInner, paddingOuter) {\n  const space = count - paddingInner + paddingOuter * 2;\n  return count ? space > 0 ? space : 1 : 0;\n}\n\nconst Identity = 'identity';\nconst Linear = 'linear';\nconst Log = 'log';\nconst Pow = 'pow';\nconst Sqrt = 'sqrt';\nconst Symlog = 'symlog';\nconst Time = 'time';\nconst UTC = 'utc';\nconst Sequential = 'sequential';\nconst Diverging = 'diverging';\nconst Quantile = 'quantile';\nconst Quantize = 'quantize';\nconst Threshold = 'threshold';\nconst Ordinal = 'ordinal';\nconst Point = 'point';\nconst Band = 'band';\nconst BinOrdinal = 'bin-ordinal';\n\n// categories\nconst Continuous = 'continuous';\nconst Discrete = 'discrete';\nconst Discretizing = 'discretizing';\nconst Interpolating = 'interpolating';\nconst Temporal = 'temporal';\n\nfunction invertRange (scale) {\n  return function (_) {\n    let lo = _[0],\n      hi = _[1],\n      t;\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n    return [scale.invert(lo), scale.invert(hi)];\n  };\n}\n\nfunction invertRangeExtent (scale) {\n  return function (_) {\n    const range = scale.range();\n    let lo = _[0],\n      hi = _[1],\n      min = -1,\n      max,\n      t,\n      i,\n      n;\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n    for (i = 0, n = range.length; i < n; ++i) {\n      if (range[i] >= lo && range[i] <= hi) {\n        if (min < 0) min = i;\n        max = i;\n      }\n    }\n    if (min < 0) return undefined;\n    lo = scale.invertExtent(range[min]);\n    hi = scale.invertExtent(range[max]);\n    return [lo[0] === undefined ? lo[1] : lo[0], hi[1] === undefined ? hi[0] : hi[1]];\n  };\n}\n\nfunction band() {\n  const scale = scaleOrdinal().unknown(undefined),\n    domain = scale.domain,\n    ordinalRange = scale.range;\n  let range$1 = [0, 1],\n    step,\n    bandwidth,\n    round = false,\n    paddingInner = 0,\n    paddingOuter = 0,\n    align = 0.5;\n  delete scale.unknown;\n  function rescale() {\n    const n = domain().length,\n      reverse = range$1[1] < range$1[0],\n      stop = range$1[1 - reverse],\n      space = bandSpace(n, paddingInner, paddingOuter);\n    let start = range$1[reverse - 0];\n    step = (stop - start) / (space || 1);\n    if (round) {\n      step = Math.floor(step);\n    }\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) {\n      start = Math.round(start);\n      bandwidth = Math.round(bandwidth);\n    }\n    const values = range(n).map(i => start + step * i);\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain(_);\n      return rescale();\n    } else {\n      return domain();\n    }\n  };\n  scale.range = function (_) {\n    if (arguments.length) {\n      range$1 = [+_[0], +_[1]];\n      return rescale();\n    } else {\n      return range$1.slice();\n    }\n  };\n  scale.rangeRound = function (_) {\n    range$1 = [+_[0], +_[1]];\n    round = true;\n    return rescale();\n  };\n  scale.bandwidth = function () {\n    return bandwidth;\n  };\n  scale.step = function () {\n    return step;\n  };\n  scale.round = function (_) {\n    if (arguments.length) {\n      round = !!_;\n      return rescale();\n    } else {\n      return round;\n    }\n  };\n  scale.padding = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      paddingInner = paddingOuter;\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n  scale.paddingInner = function (_) {\n    if (arguments.length) {\n      paddingInner = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingInner;\n    }\n  };\n  scale.paddingOuter = function (_) {\n    if (arguments.length) {\n      paddingOuter = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return paddingOuter;\n    }\n  };\n  scale.align = function (_) {\n    if (arguments.length) {\n      align = Math.max(0, Math.min(1, _));\n      return rescale();\n    } else {\n      return align;\n    }\n  };\n  scale.invertRange = function (_) {\n    // bail if range has null or undefined values\n    if (_[0] == null || _[1] == null) return;\n    const reverse = range$1[1] < range$1[0],\n      values = reverse ? ordinalRange().reverse() : ordinalRange(),\n      n = values.length - 1;\n    let lo = +_[0],\n      hi = +_[1],\n      a,\n      b,\n      t;\n\n    // bail if either range endpoint is invalid\n    if (lo !== lo || hi !== hi) return;\n\n    // order range inputs, bail if outside of scale range\n    if (hi < lo) {\n      t = lo;\n      lo = hi;\n      hi = t;\n    }\n    if (hi < values[0] || lo > range$1[1 - reverse]) return;\n\n    // binary search to index into scale range\n    a = Math.max(0, bisectRight(values, lo) - 1);\n    b = lo === hi ? a : bisectRight(values, hi) - 1;\n\n    // increment index a if lo is within padding gap\n    if (lo - values[a] > bandwidth + 1e-10) ++a;\n    if (reverse) {\n      // map + swap\n      t = a;\n      a = n - b;\n      b = n - t;\n    }\n    return a > b ? undefined : domain().slice(a, b + 1);\n  };\n  scale.invert = function (_) {\n    const value = scale.invertRange([_, _]);\n    return value ? value[0] : value;\n  };\n  scale.copy = function () {\n    return band().domain(domain()).range(range$1).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align);\n  };\n  return rescale();\n}\nfunction pointish(scale) {\n  const copy = scale.copy;\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  scale.copy = function () {\n    return pointish(copy());\n  };\n  return scale;\n}\nfunction point() {\n  return pointish(band().paddingInner(1));\n}\n\nvar map = Array.prototype.map;\nfunction numbers(_) {\n  return map.call(_, toNumber);\n}\n\nconst slice = Array.prototype.slice;\n\nfunction scaleBinOrdinal() {\n  let domain = [],\n    range = [];\n  function scale(x) {\n    return x == null || x !== x ? undefined : range[(bisect(domain, x) - 1) % range.length];\n  }\n  scale.domain = function (_) {\n    if (arguments.length) {\n      domain = numbers(_);\n      return scale;\n    } else {\n      return domain.slice();\n    }\n  };\n  scale.range = function (_) {\n    if (arguments.length) {\n      range = slice.call(_);\n      return scale;\n    } else {\n      return range.slice();\n    }\n  };\n  scale.tickFormat = function (count, specifier) {\n    return tickFormat$1(domain[0], peek(domain), count == null ? 10 : count, specifier);\n  };\n  scale.copy = function () {\n    return scaleBinOrdinal().domain(scale.domain()).range(scale.range());\n  };\n  return scale;\n}\n\n/** Private scale registry: should not be exported */\nconst scales = new Map();\nconst VEGA_SCALE = Symbol('vega_scale');\nfunction registerScale(scale) {\n  scale[VEGA_SCALE] = true;\n  return scale;\n}\n\n/**\n * Return true if object was created by a constructor from the vega-scale `scale` function.\n */\nfunction isRegisteredScale(scale) {\n  return scale && scale[VEGA_SCALE] === true;\n}\n\n/**\n * Augment scales with their type and needed inverse methods.\n */\nfunction create(type, constructor, metadata) {\n  const ctr = function scale() {\n    const s = constructor();\n    if (!s.invertRange) {\n      s.invertRange = s.invert ? invertRange(s) : s.invertExtent ? invertRangeExtent(s) : undefined;\n    }\n    s.type = type;\n    return registerScale(s);\n  };\n  ctr.metadata = toSet(array(metadata));\n  return ctr;\n}\n\n/**\n * Registry function for adding and accessing scale constructor functions.\n * The *type* argument is a String indicating the name of the scale type.\n *\n * If the *scale* argument is not specified, this method returns the matching scale constructor in the registry, or `null` if not found.\n * If the *scale* argument is provided, it must be a scale constructor function to add to the registry under the given *type* name.\n * The *metadata* argument provides additional information to guide appropriate use of scales within Vega.\n *\n *  *metadata* can be either a string or string array. The valid string values are:\n * - `\"continuous\"` - the scale is defined over a continuous-valued domain.\n * - `\"discrete\"` - the scale is defined over a discrete domain and range.\n * - `\"discretizing\"` - the scale discretizes a continuous domain to a discrete range.\n * - `\"interpolating\"` - the scale range is defined using a color interpolator.\n * - `\"log\"` - the scale performs a logarithmic transform of the continuous domain.\n * - `\"temporal\"` - the scale domain is defined over date-time values.\n */\nfunction scale(type, scale, metadata) {\n  if (arguments.length > 1) {\n    scales.set(type, create(type, scale, metadata));\n    return this;\n  } else {\n    return isValidScaleType(type) ? scales.get(type) : undefined;\n  }\n}\n\n// identity scale\nscale(Identity, $.scaleIdentity);\n\n// continuous scales\nscale(Linear, $.scaleLinear, Continuous);\nscale(Log, $.scaleLog, [Continuous, Log]);\nscale(Pow, $.scalePow, Continuous);\nscale(Sqrt, $.scaleSqrt, Continuous);\nscale(Symlog, $.scaleSymlog, Continuous);\nscale(Time, $.scaleTime, [Continuous, Temporal]);\nscale(UTC, $.scaleUtc, [Continuous, Temporal]);\n\n// sequential scales\nscale(Sequential, $.scaleSequential, [Continuous, Interpolating]); // backwards compat\nscale(`${Sequential}-${Linear}`, $.scaleSequential, [Continuous, Interpolating]);\nscale(`${Sequential}-${Log}`, $.scaleSequentialLog, [Continuous, Interpolating, Log]);\nscale(`${Sequential}-${Pow}`, $.scaleSequentialPow, [Continuous, Interpolating]);\nscale(`${Sequential}-${Sqrt}`, $.scaleSequentialSqrt, [Continuous, Interpolating]);\nscale(`${Sequential}-${Symlog}`, $.scaleSequentialSymlog, [Continuous, Interpolating]);\n\n// diverging scales\nscale(`${Diverging}-${Linear}`, $.scaleDiverging, [Continuous, Interpolating]);\nscale(`${Diverging}-${Log}`, $.scaleDivergingLog, [Continuous, Interpolating, Log]);\nscale(`${Diverging}-${Pow}`, $.scaleDivergingPow, [Continuous, Interpolating]);\nscale(`${Diverging}-${Sqrt}`, $.scaleDivergingSqrt, [Continuous, Interpolating]);\nscale(`${Diverging}-${Symlog}`, $.scaleDivergingSymlog, [Continuous, Interpolating]);\n\n// discretizing scales\nscale(Quantile, $.scaleQuantile, [Discretizing, Quantile]);\nscale(Quantize, $.scaleQuantize, Discretizing);\nscale(Threshold, $.scaleThreshold, Discretizing);\n\n// discrete scales\nscale(BinOrdinal, scaleBinOrdinal, [Discrete, Discretizing]);\nscale(Ordinal, $.scaleOrdinal, Discrete);\nscale(Band, band, Discrete);\nscale(Point, point, Discrete);\nfunction isValidScaleType(type) {\n  return scales.has(type);\n}\nfunction hasType(key, type) {\n  const s = scales.get(key);\n  return s && s.metadata[type];\n}\nfunction isContinuous(key) {\n  return hasType(key, Continuous);\n}\nfunction isDiscrete(key) {\n  return hasType(key, Discrete);\n}\nfunction isDiscretizing(key) {\n  return hasType(key, Discretizing);\n}\nfunction isLogarithmic(key) {\n  return hasType(key, Log);\n}\nfunction isTemporal(key) {\n  return hasType(key, Temporal);\n}\nfunction isInterpolating(key) {\n  return hasType(key, Interpolating);\n}\nfunction isQuantile(key) {\n  return hasType(key, Quantile);\n}\n\nconst scaleProps = ['clamp', 'base', 'constant', 'exponent'];\nfunction interpolateRange(interpolator, range) {\n  const start = range[0],\n    span = peek(range) - start;\n  return function (i) {\n    return interpolator(start + i * span);\n  };\n}\nfunction interpolateColors(colors, type, gamma) {\n  return $$1.piecewise(interpolate(type || 'rgb', gamma), colors);\n}\nfunction quantizeInterpolator(interpolator, count) {\n  const samples = new Array(count),\n    n = count + 1;\n  for (let i = 0; i < count;) samples[i] = interpolator(++i / n);\n  return samples;\n}\nfunction scaleCopy(scale) {\n  const t = scale.type,\n    s = scale.copy();\n  s.type = t;\n  return s;\n}\nfunction scaleFraction(scale$1, min, max) {\n  const delta = max - min;\n  let i, t, s;\n  if (!delta || !Number.isFinite(delta)) {\n    return constant(0.5);\n  } else {\n    i = (t = scale$1.type).indexOf('-');\n    t = i < 0 ? t : t.slice(i + 1);\n    s = scale(t)().domain([min, max]).range([0, 1]);\n    scaleProps.forEach(m => scale$1[m] ? s[m](scale$1[m]()) : 0);\n    return s;\n  }\n}\nfunction interpolate(type, gamma) {\n  const interp = $$1[method(type)];\n  return gamma != null && interp && interp.gamma ? interp.gamma(gamma) : interp;\n}\nfunction method(type) {\n  return 'interpolate' + type.toLowerCase().split('-').map(s => s[0].toUpperCase() + s.slice(1)).join('');\n}\n\nconst continuous = {\n  blues: 'cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90',\n  greens: 'd3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429',\n  greys: 'e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e',\n  oranges: 'fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303',\n  purples: 'e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c',\n  reds: 'fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13',\n  blueGreen: 'd5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429',\n  bluePurple: 'ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71',\n  greenBlue: 'd3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1',\n  orangeRed: 'fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403',\n  purpleBlue: 'dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281',\n  purpleBlueGreen: 'dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353',\n  purpleRed: 'dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a',\n  redPurple: 'fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174',\n  yellowGreen: 'e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034',\n  yellowOrangeBrown: 'feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204',\n  yellowOrangeRed: 'fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225',\n  blueOrange: '134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07',\n  brownBlueGreen: '704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147',\n  purpleGreen: '5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29',\n  purpleOrange: '4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07',\n  redBlue: '8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85',\n  redGrey: '8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434',\n  yellowGreenBlue: 'eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185',\n  redYellowBlue: 'a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695',\n  redYellowGreen: 'a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837',\n  pinkYellowGreen: '8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419',\n  spectral: '9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2',\n  viridis: '440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725',\n  magma: '0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf',\n  inferno: '0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4',\n  plasma: '0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921',\n  cividis: '00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647',\n  rainbow: '6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa',\n  sinebow: 'ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040',\n  turbo: '23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00',\n  browns: 'eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632',\n  tealBlues: 'bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985',\n  teals: 'bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667',\n  warmGreys: 'dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e',\n  goldGreen: 'f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36',\n  goldOrange: 'f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26',\n  goldRed: 'f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e',\n  lightGreyRed: 'efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b',\n  lightGreyTeal: 'e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc',\n  lightMulti: 'e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c',\n  lightOrange: 'f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b',\n  lightTealBlue: 'e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988',\n  darkBlue: '3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff',\n  darkGold: '3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff',\n  darkGreen: '3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa',\n  darkMulti: '3737371f5287197d8c29a86995ce3fffe800ffffff',\n  darkRed: '3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c'\n};\nconst discrete = {\n  category10: '1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf',\n  category20: '1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5',\n  category20b: '393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6',\n  category20c: '3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9',\n  tableau10: '4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac',\n  tableau20: '4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5',\n  accent: '7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666',\n  dark2: '1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666',\n  paired: 'a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928',\n  pastel1: 'fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2',\n  pastel2: 'b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc',\n  set1: 'e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999',\n  set2: '66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3',\n  set3: '8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f'\n};\n\nfunction colors(palette) {\n  const n = palette.length / 6 | 0,\n    c = new Array(n);\n  for (let i = 0; i < n;) {\n    c[i] = '#' + palette.slice(i * 6, ++i * 6);\n  }\n  return c;\n}\nfunction apply(_, f) {\n  for (const k in _) scheme(k, f(_[k]));\n}\nconst schemes = {};\napply(discrete, colors);\napply(continuous, _ => interpolateColors(colors(_)));\nfunction scheme(name, scheme) {\n  name = name && name.toLowerCase();\n  if (arguments.length > 1) {\n    schemes[name] = scheme;\n    return this;\n  } else {\n    return schemes[name];\n  }\n}\n\nconst SymbolLegend = 'symbol';\nconst DiscreteLegend = 'discrete';\nconst GradientLegend = 'gradient';\n\nconst defaultFormatter = value => isArray(value) ? value.map(v => String(v)) : String(value);\nconst ascending = (a, b) => a[1] - b[1];\nconst descending = (a, b) => b[1] - a[1];\n\n/**\n * Determine the tick count or interval function.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} count - The desired tick count or interval specifier.\n * @param {number} minStep - The desired minimum step between tick values.\n * @return {*} - The tick count or interval function.\n */\nfunction tickCount(scale, count, minStep) {\n  let step;\n  if (isNumber(count)) {\n    if (scale.bins) {\n      count = Math.max(count, scale.bins.length);\n    }\n    if (minStep != null) {\n      count = Math.min(count, Math.floor(span(scale.domain()) / minStep || 1) + 1);\n    }\n  }\n  if (isObject(count)) {\n    step = count.step;\n    count = count.interval;\n  }\n  if (isString(count)) {\n    count = scale.type === Time ? timeInterval(count) : scale.type == UTC ? utcInterval(count) : error('Only time and utc scales accept interval strings.');\n    if (step) count = count.every(step);\n  }\n  return count;\n}\n\n/**\n * Filter a set of candidate tick values, ensuring that only tick values\n * that lie within the scale range are included.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {Array<*>} ticks - The candidate tick values.\n * @param {*} count - The tick count or interval function.\n * @return {Array<*>} - The filtered tick values.\n */\nfunction validTicks(scale, ticks, count) {\n  let range = scale.range(),\n    lo = range[0],\n    hi = peek(range),\n    cmp = ascending;\n  if (lo > hi) {\n    range = hi;\n    hi = lo;\n    lo = range;\n    cmp = descending;\n  }\n  lo = Math.floor(lo);\n  hi = Math.ceil(hi);\n\n  // filter ticks to valid values within the range\n  // additionally sort ticks in range order (#2579)\n  ticks = ticks.map(v => [v, scale(v)]).filter(_ => lo <= _[1] && _[1] <= hi).sort(cmp).map(_ => _[0]);\n  if (count > 0 && ticks.length > 1) {\n    const endpoints = [ticks[0], peek(ticks)];\n    while (ticks.length > count && ticks.length >= 3) {\n      ticks = ticks.filter((_, i) => !(i % 2));\n    }\n    if (ticks.length < 3) {\n      ticks = endpoints;\n    }\n  }\n  return ticks;\n}\n\n/**\n * Generate tick values for the given scale and approximate tick count or\n * interval value. If the scale has a 'ticks' method, it will be used to\n * generate the ticks, with the count argument passed as a parameter. If the\n * scale lacks a 'ticks' method, the full scale domain will be returned.\n * @param {Scale} scale - The scale for which to generate tick values.\n * @param {*} [count] - The approximate number of desired ticks.\n * @return {Array<*>} - The generated tick values.\n */\nfunction tickValues(scale, count) {\n  return scale.bins ? validTicks(scale, scale.bins) : scale.ticks ? scale.ticks(count) : scale.domain();\n}\n\n/**\n * Generate a label format function for a scale. If the scale has a\n * 'tickFormat' method, it will be used to generate the formatter, with the\n * count and specifier arguments passed as parameters. If the scale lacks a\n * 'tickFormat' method, the returned formatter performs simple string coercion.\n * If the input scale is a logarithmic scale and the format specifier does not\n * indicate a desired decimal precision, a special variable precision formatter\n * that automatically trims trailing zeroes will be generated.\n * @param {Scale} scale - The scale for which to generate the label formatter.\n * @param {*} [count] - The approximate number of desired ticks.\n * @param {string} [specifier] - The format specifier. Must be a legal d3\n *   specifier string (see https://github.com/d3/d3-format#formatSpecifier) or\n *   time multi-format specifier object.\n * @return {function(*):string} - The generated label formatter.\n */\nfunction tickFormat(locale, scale, count, specifier, formatType, noSkip) {\n  const type = scale.type;\n  let format = defaultFormatter;\n  if (type === Time || formatType === Time) {\n    format = locale.timeFormat(specifier);\n  } else if (type === UTC || formatType === UTC) {\n    format = locale.utcFormat(specifier);\n  } else if (isLogarithmic(type)) {\n    const varfmt = locale.formatFloat(specifier);\n    if (noSkip || scale.bins) {\n      format = varfmt;\n    } else {\n      const test = tickLog(scale, count, false);\n      format = _ => test(_) ? varfmt(_) : '';\n    }\n  } else if (scale.tickFormat) {\n    // if d3 scale has tickFormat, it must be continuous\n    const d = scale.domain();\n    format = locale.formatSpan(d[0], d[d.length - 1], count, specifier);\n  } else if (specifier) {\n    format = locale.format(specifier);\n  }\n  return format;\n}\nfunction tickLog(scale, count, values) {\n  const ticks = tickValues(scale, count),\n    base = scale.base(),\n    logb = Math.log(base),\n    k = Math.max(1, base * count / ticks.length);\n\n  // apply d3-scale's log format filter criteria\n  const test = d => {\n    let i = d / Math.pow(base, Math.round(Math.log(d) / logb));\n    if (i * base < base - 0.5) i *= base;\n    return i <= k;\n  };\n  return values ? ticks.filter(test) : test;\n}\n\nconst symbols = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'thresholds',\n  [Threshold]: 'domain'\n};\nconst formats = {\n  [Quantile]: 'quantiles',\n  [Quantize]: 'domain'\n};\nfunction labelValues(scale, count) {\n  return scale.bins ? binValues(scale.bins) : scale.type === Log ? tickLog(scale, count, true) : symbols[scale.type] ? thresholdValues(scale[symbols[scale.type]]()) : tickValues(scale, count);\n}\nfunction thresholdFormat(locale, scale, specifier) {\n  const _ = scale[formats[scale.type]](),\n    n = _.length;\n  let d = n > 1 ? _[1] - _[0] : _[0],\n    i;\n  for (i = 1; i < n; ++i) {\n    d = Math.min(d, _[i] - _[i - 1]);\n  }\n\n  // tickCount = 3 ticks times 10 for increased resolution\n  return locale.formatSpan(0, d, 3 * 10, specifier);\n}\nfunction thresholdValues(thresholds) {\n  const values = [-Infinity].concat(thresholds);\n  values.max = +Infinity;\n  return values;\n}\nfunction binValues(bins) {\n  const values = bins.slice(0, -1);\n  values.max = peek(bins);\n  return values;\n}\nconst isDiscreteRange = scale => symbols[scale.type] || scale.bins;\nfunction labelFormat(locale, scale, count, type, specifier, formatType, noSkip) {\n  const format = formats[scale.type] && formatType !== Time && formatType !== UTC ? thresholdFormat(locale, scale, specifier) : tickFormat(locale, scale, count, specifier, formatType, noSkip);\n  return type === SymbolLegend && isDiscreteRange(scale) ? formatRange(format) : type === DiscreteLegend ? formatDiscrete(format) : formatPoint(format);\n}\nconst formatRange = format => (value, index, array) => {\n  const limit = get(array[index + 1], get(array.max, +Infinity)),\n    lo = formatValue(value, format),\n    hi = formatValue(limit, format);\n  return lo && hi ? lo + ' \\u2013 ' + hi : hi ? '< ' + hi : '\\u2265 ' + lo;\n};\nconst get = (value, dflt) => value != null ? value : dflt;\nconst formatDiscrete = format => (value, index) => index ? format(value) : null;\nconst formatPoint = format => value => format(value);\nconst formatValue = (value, format) => Number.isFinite(value) ? format(value) : null;\nfunction labelFraction(scale) {\n  const domain = scale.domain(),\n    count = domain.length - 1;\n  let lo = +domain[0],\n    hi = +peek(domain),\n    span = hi - lo;\n  if (scale.type === Threshold) {\n    const adjust = count ? span / count : 0.1;\n    lo -= adjust;\n    hi += adjust;\n    span = hi - lo;\n  }\n  return value => (value - lo) / span;\n}\n\nfunction format(locale, scale, specifier, formatType) {\n  const type = formatType || scale.type;\n\n  // replace abbreviated time specifiers to improve screen reader experience\n  if (isString(specifier) && isTemporal(type)) {\n    specifier = specifier.replace(/%a/g, '%A').replace(/%b/g, '%B');\n  }\n  return !specifier && type === Time ? locale.timeFormat('%A, %d %B %Y, %X') : !specifier && type === UTC ? locale.utcFormat('%A, %d %B %Y, %X UTC') : labelFormat(locale, scale, 5, null, specifier, formatType, true);\n}\nfunction domainCaption(locale, scale, opt) {\n  opt = opt || {};\n  const max = Math.max(3, opt.maxlen || 7),\n    fmt = format(locale, scale, opt.format, opt.formatType);\n\n  // if scale breaks domain into bins, describe boundaries\n  if (isDiscretizing(scale.type)) {\n    const v = labelValues(scale).slice(1).map(fmt),\n      n = v.length;\n    return `${n} boundar${n === 1 ? 'y' : 'ies'}: ${v.join(', ')}`;\n  }\n\n  // if scale domain is discrete, list values\n  else if (isDiscrete(scale.type)) {\n    const d = scale.domain(),\n      n = d.length,\n      v = n > max ? d.slice(0, max - 2).map(fmt).join(', ') + ', ending with ' + d.slice(-1).map(fmt) : d.map(fmt).join(', ');\n    return `${n} value${n === 1 ? '' : 's'}: ${v}`;\n  }\n\n  // if scale domain is continuous, describe value range\n  else {\n    const d = scale.domain();\n    return `values from ${fmt(d[0])} to ${fmt(peek(d))}`;\n  }\n}\n\nexport { Band, BinOrdinal, DiscreteLegend, Diverging, GradientLegend, Identity, Linear, Log, Ordinal, Point, Pow, Quantile, Quantize, Sequential, Sqrt, SymbolLegend, Symlog, Threshold, Time, UTC, bandSpace, domainCaption, interpolate, interpolateColors, interpolateRange, isContinuous, isDiscrete, isDiscretizing, isInterpolating, isLogarithmic, isQuantile, isRegisteredScale, isTemporal, isValidScaleType, labelFormat, labelFraction, labelValues, quantizeInterpolator, registerScale, scale, scaleCopy, scaleFraction, scheme, tickCount, tickFormat, tickValues, validTicks };\n", "import { hasOwnProperty, isFunction, inherits, truthy, lruCache, isArray, error, toSet, array, peek, extend, isNumber, isObject } from 'vega-util';\nimport { curveBasis, curveBasisClosed, curveBasisOpen, curveBundle, curveCardinal, curveCardinalOpen, curveCardinalClosed, curveCatmullRom, curveCatmullRomClosed, curveCatmullRomOpen, curveLinear, curveLinearClosed, curveMonotoneY, curveMonotoneX, curveNatural, curveStep, curveStepAfter, curveStepBefore, arc as arc$2, area as area$2, line as line$2, symbol as symbol$2 } from 'd3-shape';\nimport { path as path$3 } from 'd3-path';\nexport { path } from 'd3-path';\nimport { image as image$1, canvas } from 'vega-canvas';\nimport { loader } from 'vega-loader';\nimport { isDiscrete, domainCaption } from 'vega-scale';\n\nlet gradient_id = 0;\nfunction resetSVGGradientId() {\n  gradient_id = 0;\n}\nconst patternPrefix = 'p_';\nfunction isGradient(value) {\n  return value && value.gradient;\n}\nfunction gradientRef(g, defs, base) {\n  const type = g.gradient;\n  let id = g.id,\n    prefix = type === 'radial' ? patternPrefix : '';\n\n  // check id, assign default values as needed\n  if (!id) {\n    id = g.id = 'gradient_' + gradient_id++;\n    if (type === 'radial') {\n      g.x1 = get(g.x1, 0.5);\n      g.y1 = get(g.y1, 0.5);\n      g.r1 = get(g.r1, 0);\n      g.x2 = get(g.x2, 0.5);\n      g.y2 = get(g.y2, 0.5);\n      g.r2 = get(g.r2, 0.5);\n      prefix = patternPrefix;\n    } else {\n      g.x1 = get(g.x1, 0);\n      g.y1 = get(g.y1, 0);\n      g.x2 = get(g.x2, 1);\n      g.y2 = get(g.y2, 0);\n    }\n  }\n\n  // register definition\n  defs[id] = g;\n\n  // return url reference\n  return 'url(' + (base || '') + '#' + prefix + id + ')';\n}\nfunction get(val, def) {\n  return val != null ? val : def;\n}\nfunction Gradient (p0, p1) {\n  var stops = [],\n    gradient;\n  return gradient = {\n    gradient: 'linear',\n    x1: p0 ? p0[0] : 0,\n    y1: p0 ? p0[1] : 0,\n    x2: p1 ? p1[0] : 1,\n    y2: p1 ? p1[1] : 0,\n    stops: stops,\n    stop: function (offset, color) {\n      stops.push({\n        offset: offset,\n        color: color\n      });\n      return gradient;\n    }\n  };\n}\n\nconst lookup = {\n  'basis': {\n    curve: curveBasis\n  },\n  'basis-closed': {\n    curve: curveBasisClosed\n  },\n  'basis-open': {\n    curve: curveBasisOpen\n  },\n  'bundle': {\n    curve: curveBundle,\n    tension: 'beta',\n    value: 0.85\n  },\n  'cardinal': {\n    curve: curveCardinal,\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-open': {\n    curve: curveCardinalOpen,\n    tension: 'tension',\n    value: 0\n  },\n  'cardinal-closed': {\n    curve: curveCardinalClosed,\n    tension: 'tension',\n    value: 0\n  },\n  'catmull-rom': {\n    curve: curveCatmullRom,\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-closed': {\n    curve: curveCatmullRomClosed,\n    tension: 'alpha',\n    value: 0.5\n  },\n  'catmull-rom-open': {\n    curve: curveCatmullRomOpen,\n    tension: 'alpha',\n    value: 0.5\n  },\n  'linear': {\n    curve: curveLinear\n  },\n  'linear-closed': {\n    curve: curveLinearClosed\n  },\n  'monotone': {\n    horizontal: curveMonotoneY,\n    vertical: curveMonotoneX\n  },\n  'natural': {\n    curve: curveNatural\n  },\n  'step': {\n    curve: curveStep\n  },\n  'step-after': {\n    curve: curveStepAfter\n  },\n  'step-before': {\n    curve: curveStepBefore\n  }\n};\nfunction curves(type, orientation, tension) {\n  var entry = hasOwnProperty(lookup, type) && lookup[type],\n    curve = null;\n  if (entry) {\n    curve = entry.curve || entry[orientation || 'vertical'];\n    if (entry.tension && tension != null) {\n      curve = curve[entry.tension](tension);\n    }\n  }\n  return curve;\n}\n\nconst paramCounts = {\n  m: 2,\n  l: 2,\n  h: 1,\n  v: 1,\n  z: 0,\n  c: 6,\n  s: 4,\n  q: 4,\n  t: 2,\n  a: 7\n};\nconst commandPattern = /[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi;\nconst numberPattern = /^[+-]?(([0-9]*\\.[0-9]+)|([0-9]+\\.)|([0-9]+))([eE][+-]?[0-9]+)?/;\nconst spacePattern = /^((\\s+,?\\s*)|(,\\s*))/;\nconst flagPattern = /^[01]/;\nfunction parse(path) {\n  const commands = [];\n  const matches = path.match(commandPattern) || [];\n  matches.forEach(str => {\n    let cmd = str[0];\n    const type = cmd.toLowerCase();\n\n    // parse parameters\n    const paramCount = paramCounts[type];\n    const params = parseParams(type, paramCount, str.slice(1).trim());\n    const count = params.length;\n\n    // error checking based on parameter count\n    if (count < paramCount || count && count % paramCount !== 0) {\n      throw Error('Invalid SVG path, incorrect parameter count');\n    }\n\n    // register the command\n    commands.push([cmd, ...params.slice(0, paramCount)]);\n\n    // exit now if we're done, also handles zero-param 'z'\n    if (count === paramCount) {\n      return;\n    }\n\n    // handle implicit line-to\n    if (type === 'm') {\n      cmd = cmd === 'M' ? 'L' : 'l';\n    }\n\n    // repeat command when given extended param list\n    for (let i = paramCount; i < count; i += paramCount) {\n      commands.push([cmd, ...params.slice(i, i + paramCount)]);\n    }\n  });\n  return commands;\n}\nfunction parseParams(type, paramCount, segment) {\n  const params = [];\n  for (let index = 0; paramCount && index < segment.length;) {\n    for (let i = 0; i < paramCount; ++i) {\n      const pattern = type === 'a' && (i === 3 || i === 4) ? flagPattern : numberPattern;\n      const match = segment.slice(index).match(pattern);\n      if (match === null) {\n        throw Error('Invalid SVG path, incorrect parameter type');\n      }\n      index += match[0].length;\n      params.push(+match[0]);\n      const ws = segment.slice(index).match(spacePattern);\n      if (ws !== null) {\n        index += ws[0].length;\n      }\n    }\n  }\n  return params;\n}\n\nconst DegToRad = Math.PI / 180;\nconst Epsilon = 1e-14;\nconst HalfPi = Math.PI / 2;\nconst Tau = Math.PI * 2;\nconst HalfSqrt3 = Math.sqrt(3) / 2;\n\nvar segmentCache = {};\nvar bezierCache = {};\nvar join = [].join;\n\n// Copied from Inkscape svgtopdf, thanks!\nfunction segments(x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n  const key = join.call(arguments);\n  if (segmentCache[key]) {\n    return segmentCache[key];\n  }\n  const th = rotateX * DegToRad;\n  const sin_th = Math.sin(th);\n  const cos_th = Math.cos(th);\n  rx = Math.abs(rx);\n  ry = Math.abs(ry);\n  const px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n  const py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n  let pl = px * px / (rx * rx) + py * py / (ry * ry);\n  if (pl > 1) {\n    pl = Math.sqrt(pl);\n    rx *= pl;\n    ry *= pl;\n  }\n  const a00 = cos_th / rx;\n  const a01 = sin_th / rx;\n  const a10 = -sin_th / ry;\n  const a11 = cos_th / ry;\n  const x0 = a00 * ox + a01 * oy;\n  const y0 = a10 * ox + a11 * oy;\n  const x1 = a00 * x + a01 * y;\n  const y1 = a10 * x + a11 * y;\n  const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n  let sfactor_sq = 1 / d - 0.25;\n  if (sfactor_sq < 0) sfactor_sq = 0;\n  let sfactor = Math.sqrt(sfactor_sq);\n  if (sweep == large) sfactor = -sfactor;\n  const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n  const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n  const th0 = Math.atan2(y0 - yc, x0 - xc);\n  const th1 = Math.atan2(y1 - yc, x1 - xc);\n  let th_arc = th1 - th0;\n  if (th_arc < 0 && sweep === 1) {\n    th_arc += Tau;\n  } else if (th_arc > 0 && sweep === 0) {\n    th_arc -= Tau;\n  }\n  const segs = Math.ceil(Math.abs(th_arc / (HalfPi + 0.001)));\n  const result = [];\n  for (let i = 0; i < segs; ++i) {\n    const th2 = th0 + i * th_arc / segs;\n    const th3 = th0 + (i + 1) * th_arc / segs;\n    result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n  }\n  return segmentCache[key] = result;\n}\nfunction bezier(params) {\n  const key = join.call(params);\n  if (bezierCache[key]) {\n    return bezierCache[key];\n  }\n  var cx = params[0],\n    cy = params[1],\n    th0 = params[2],\n    th1 = params[3],\n    rx = params[4],\n    ry = params[5],\n    sin_th = params[6],\n    cos_th = params[7];\n  const a00 = cos_th * rx;\n  const a01 = -sin_th * ry;\n  const a10 = sin_th * rx;\n  const a11 = cos_th * ry;\n  const cos_th0 = Math.cos(th0);\n  const sin_th0 = Math.sin(th0);\n  const cos_th1 = Math.cos(th1);\n  const sin_th1 = Math.sin(th1);\n  const th_half = 0.5 * (th1 - th0);\n  const sin_th_h2 = Math.sin(th_half * 0.5);\n  const t = 8 / 3 * sin_th_h2 * sin_th_h2 / Math.sin(th_half);\n  const x1 = cx + cos_th0 - t * sin_th0;\n  const y1 = cy + sin_th0 + t * cos_th0;\n  const x3 = cx + cos_th1;\n  const y3 = cy + sin_th1;\n  const x2 = x3 + t * sin_th1;\n  const y2 = y3 - t * cos_th1;\n  return bezierCache[key] = [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n}\n\nconst temp = ['l', 0, 0, 0, 0, 0, 0, 0];\nfunction scale$1(current, sX, sY) {\n  const c = temp[0] = current[0];\n  if (c === 'a' || c === 'A') {\n    temp[1] = sX * current[1];\n    temp[2] = sY * current[2];\n    temp[3] = current[3];\n    temp[4] = current[4];\n    temp[5] = current[5];\n    temp[6] = sX * current[6];\n    temp[7] = sY * current[7];\n  } else if (c === 'h' || c === 'H') {\n    temp[1] = sX * current[1];\n  } else if (c === 'v' || c === 'V') {\n    temp[1] = sY * current[1];\n  } else {\n    for (var i = 1, n = current.length; i < n; ++i) {\n      temp[i] = (i % 2 == 1 ? sX : sY) * current[i];\n    }\n  }\n  return temp;\n}\nfunction pathRender (context, path, l, t, sX, sY) {\n  var current,\n    // current instruction\n    previous = null,\n    x = 0,\n    // current x\n    y = 0,\n    // current y\n    controlX = 0,\n    // current control point x\n    controlY = 0,\n    // current control point y\n    tempX,\n    tempY,\n    tempControlX,\n    tempControlY,\n    anchorX = 0,\n    anchorY = 0;\n  if (l == null) l = 0;\n  if (t == null) t = 0;\n  if (sX == null) sX = 1;\n  if (sY == null) sY = sX;\n  if (context.beginPath) context.beginPath();\n  for (var i = 0, len = path.length; i < len; ++i) {\n    current = path[i];\n    if (sX !== 1 || sY !== 1) {\n      current = scale$1(current, sX, sY);\n    }\n    switch (current[0]) {\n      // first letter\n\n      case 'l':\n        // lineto, relative\n        x += current[1];\n        y += current[2];\n        context.lineTo(x + l, y + t);\n        break;\n      case 'L':\n        // lineto, absolute\n        x = current[1];\n        y = current[2];\n        context.lineTo(x + l, y + t);\n        break;\n      case 'h':\n        // horizontal lineto, relative\n        x += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n      case 'H':\n        // horizontal lineto, absolute\n        x = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n      case 'v':\n        // vertical lineto, relative\n        y += current[1];\n        context.lineTo(x + l, y + t);\n        break;\n      case 'V':\n        // verical lineto, absolute\n        y = current[1];\n        context.lineTo(x + l, y + t);\n        break;\n      case 'm':\n        // moveTo, relative\n        x += current[1];\n        y += current[2];\n        anchorX = x;\n        anchorY = y;\n        context.moveTo(x + l, y + t);\n        break;\n      case 'M':\n        // moveTo, absolute\n        x = current[1];\n        y = current[2];\n        anchorX = x;\n        anchorY = y;\n        context.moveTo(x + l, y + t);\n        break;\n      case 'c':\n        // bezierCurveTo, relative\n        tempX = x + current[5];\n        tempY = y + current[6];\n        controlX = x + current[3];\n        controlY = y + current[4];\n        context.bezierCurveTo(x + current[1] + l,\n        // x1\n        y + current[2] + t,\n        // y1\n        controlX + l,\n        // x2\n        controlY + t,\n        // y2\n        tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n      case 'C':\n        // bezierCurveTo, absolute\n        x = current[5];\n        y = current[6];\n        controlX = current[3];\n        controlY = current[4];\n        context.bezierCurveTo(current[1] + l, current[2] + t, controlX + l, controlY + t, x + l, y + t);\n        break;\n      case 's':\n        // shorthand cubic bezierCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4];\n        // calculate reflection of previous control points\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, x + current[1] + l, y + current[2] + t, tempX + l, tempY + t);\n\n        // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n        controlX = x + current[1];\n        controlY = y + current[2];\n        x = tempX;\n        y = tempY;\n        break;\n      case 'S':\n        // shorthand cubic bezierCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4];\n        // calculate reflection of previous control points\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.bezierCurveTo(controlX + l, controlY + t, current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        // set control point to 2nd one of this command\n        // the first control point is assumed to be the reflection of\n        // the second control point on the previous command relative\n        // to the current point.\n        controlX = current[1];\n        controlY = current[2];\n        break;\n      case 'q':\n        // quadraticCurveTo, relative\n        // transform to absolute x,y\n        tempX = x + current[3];\n        tempY = y + current[4];\n        controlX = x + current[1];\n        controlY = y + current[2];\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n      case 'Q':\n        // quadraticCurveTo, absolute\n        tempX = current[3];\n        tempY = current[4];\n        context.quadraticCurveTo(current[1] + l, current[2] + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = current[1];\n        controlY = current[2];\n        break;\n      case 't':\n        // shorthand quadraticCurveTo, relative\n\n        // transform to absolute x,y\n        tempX = x + current[1];\n        tempY = y + current[2];\n        if (previous[0].match(/[QqTt]/) === null) {\n          // If there is no previous command or if the previous command was not a Q, q, T or t,\n          // assume the control point is coincident with the current point\n          controlX = x;\n          controlY = y;\n        } else if (previous[0] === 't') {\n          // calculate reflection of previous control points for t\n          controlX = 2 * x - tempControlX;\n          controlY = 2 * y - tempControlY;\n        } else if (previous[0] === 'q') {\n          // calculate reflection of previous control points for q\n          controlX = 2 * x - controlX;\n          controlY = 2 * y - controlY;\n        }\n        tempControlX = controlX;\n        tempControlY = controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        controlX = x + current[1];\n        controlY = y + current[2];\n        break;\n      case 'T':\n        tempX = current[1];\n        tempY = current[2];\n\n        // calculate reflection of previous control points\n        controlX = 2 * x - controlX;\n        controlY = 2 * y - controlY;\n        context.quadraticCurveTo(controlX + l, controlY + t, tempX + l, tempY + t);\n        x = tempX;\n        y = tempY;\n        break;\n      case 'a':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + x + l, current[7] + y + t]);\n        x += current[6];\n        y += current[7];\n        break;\n      case 'A':\n        drawArc(context, x + l, y + t, [current[1], current[2], current[3], current[4], current[5], current[6] + l, current[7] + t]);\n        x = current[6];\n        y = current[7];\n        break;\n      case 'z':\n      case 'Z':\n        x = anchorX;\n        y = anchorY;\n        context.closePath();\n        break;\n    }\n    previous = current;\n  }\n}\nfunction drawArc(context, x, y, coords) {\n  const seg = segments(coords[5],\n  // end x\n  coords[6],\n  // end y\n  coords[0],\n  // radius x\n  coords[1],\n  // radius y\n  coords[3],\n  // large flag\n  coords[4],\n  // sweep flag\n  coords[2],\n  // rotation\n  x, y);\n  for (let i = 0; i < seg.length; ++i) {\n    const bez = bezier(seg[i]);\n    context.bezierCurveTo(bez[0], bez[1], bez[2], bez[3], bez[4], bez[5]);\n  }\n}\n\nconst Tan30 = 0.5773502691896257;\nconst builtins = {\n  'circle': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(r, 0);\n      context.arc(0, 0, r, 0, Tau);\n    }\n  },\n  'cross': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n        s = r / 2.5;\n      context.moveTo(-r, -s);\n      context.lineTo(-r, s);\n      context.lineTo(-s, s);\n      context.lineTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, s);\n      context.lineTo(r, s);\n      context.lineTo(r, -s);\n      context.lineTo(s, -s);\n      context.lineTo(s, -r);\n      context.lineTo(-s, -r);\n      context.lineTo(-s, -s);\n      context.closePath();\n    }\n  },\n  'diamond': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(0, -r);\n      context.lineTo(r, 0);\n      context.lineTo(0, r);\n      context.closePath();\n    }\n  },\n  'square': {\n    draw: function (context, size) {\n      var w = Math.sqrt(size),\n        x = -w / 2;\n      context.rect(x, x, w, w);\n    }\n  },\n  'arrow': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n        s = r / 7,\n        t = r / 2.5,\n        v = r / 8;\n      context.moveTo(-s, r);\n      context.lineTo(s, r);\n      context.lineTo(s, -v);\n      context.lineTo(t, -v);\n      context.lineTo(0, -r);\n      context.lineTo(-t, -v);\n      context.lineTo(-s, -v);\n      context.closePath();\n    }\n  },\n  'wedge': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n        h = HalfSqrt3 * r,\n        o = h - r * Tan30,\n        b = r / 4;\n      context.moveTo(0, -h - o);\n      context.lineTo(-b, h - o);\n      context.lineTo(b, h - o);\n      context.closePath();\n    }\n  },\n  'triangle': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n        h = HalfSqrt3 * r,\n        o = h - r * Tan30;\n      context.moveTo(0, -h - o);\n      context.lineTo(-r, h - o);\n      context.lineTo(r, h - o);\n      context.closePath();\n    }\n  },\n  'triangle-up': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n        h = HalfSqrt3 * r;\n      context.moveTo(0, -h);\n      context.lineTo(-r, h);\n      context.lineTo(r, h);\n      context.closePath();\n    }\n  },\n  'triangle-down': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n        h = HalfSqrt3 * r;\n      context.moveTo(0, h);\n      context.lineTo(-r, -h);\n      context.lineTo(r, -h);\n      context.closePath();\n    }\n  },\n  'triangle-right': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n        h = HalfSqrt3 * r;\n      context.moveTo(h, 0);\n      context.lineTo(-h, -r);\n      context.lineTo(-h, r);\n      context.closePath();\n    }\n  },\n  'triangle-left': {\n    draw: function (context, size) {\n      var r = Math.sqrt(size) / 2,\n        h = HalfSqrt3 * r;\n      context.moveTo(-h, 0);\n      context.lineTo(h, -r);\n      context.lineTo(h, r);\n      context.closePath();\n    }\n  },\n  'stroke': {\n    draw: function (context, size) {\n      const r = Math.sqrt(size) / 2;\n      context.moveTo(-r, 0);\n      context.lineTo(r, 0);\n    }\n  }\n};\nfunction symbols(_) {\n  return hasOwnProperty(builtins, _) ? builtins[_] : customSymbol(_);\n}\nvar custom = {};\nfunction customSymbol(path) {\n  if (!hasOwnProperty(custom, path)) {\n    const parsed = parse(path);\n    custom[path] = {\n      draw: function (context, size) {\n        pathRender(context, parsed, 0, 0, Math.sqrt(size) / 2);\n      }\n    };\n  }\n  return custom[path];\n}\n\n// See http://spencermortensen.com/articles/bezier-circle/\nconst C = 0.448084975506; // C = 1 - c\n\nfunction rectangleX(d) {\n  return d.x;\n}\nfunction rectangleY(d) {\n  return d.y;\n}\nfunction rectangleWidth(d) {\n  return d.width;\n}\nfunction rectangleHeight(d) {\n  return d.height;\n}\nfunction number(_) {\n  return typeof _ === 'function' ? _ : () => +_;\n}\nfunction clamp(value, min, max) {\n  return Math.max(min, Math.min(value, max));\n}\nfunction vg_rect () {\n  var x = rectangleX,\n    y = rectangleY,\n    width = rectangleWidth,\n    height = rectangleHeight,\n    crTL = number(0),\n    crTR = crTL,\n    crBL = crTL,\n    crBR = crTL,\n    context = null;\n  function rectangle(_, x0, y0) {\n    var buffer,\n      x1 = x0 != null ? x0 : +x.call(this, _),\n      y1 = y0 != null ? y0 : +y.call(this, _),\n      w = +width.call(this, _),\n      h = +height.call(this, _),\n      s = Math.min(w, h) / 2,\n      tl = clamp(+crTL.call(this, _), 0, s),\n      tr = clamp(+crTR.call(this, _), 0, s),\n      bl = clamp(+crBL.call(this, _), 0, s),\n      br = clamp(+crBR.call(this, _), 0, s);\n    if (!context) context = buffer = path$3();\n    if (tl <= 0 && tr <= 0 && bl <= 0 && br <= 0) {\n      context.rect(x1, y1, w, h);\n    } else {\n      var x2 = x1 + w,\n        y2 = y1 + h;\n      context.moveTo(x1 + tl, y1);\n      context.lineTo(x2 - tr, y1);\n      context.bezierCurveTo(x2 - C * tr, y1, x2, y1 + C * tr, x2, y1 + tr);\n      context.lineTo(x2, y2 - br);\n      context.bezierCurveTo(x2, y2 - C * br, x2 - C * br, y2, x2 - br, y2);\n      context.lineTo(x1 + bl, y2);\n      context.bezierCurveTo(x1 + C * bl, y2, x1, y2 - C * bl, x1, y2 - bl);\n      context.lineTo(x1, y1 + tl);\n      context.bezierCurveTo(x1, y1 + C * tl, x1 + C * tl, y1, x1 + tl, y1);\n      context.closePath();\n    }\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n  rectangle.x = function (_) {\n    if (arguments.length) {\n      x = number(_);\n      return rectangle;\n    } else {\n      return x;\n    }\n  };\n  rectangle.y = function (_) {\n    if (arguments.length) {\n      y = number(_);\n      return rectangle;\n    } else {\n      return y;\n    }\n  };\n  rectangle.width = function (_) {\n    if (arguments.length) {\n      width = number(_);\n      return rectangle;\n    } else {\n      return width;\n    }\n  };\n  rectangle.height = function (_) {\n    if (arguments.length) {\n      height = number(_);\n      return rectangle;\n    } else {\n      return height;\n    }\n  };\n  rectangle.cornerRadius = function (tl, tr, br, bl) {\n    if (arguments.length) {\n      crTL = number(tl);\n      crTR = tr != null ? number(tr) : crTL;\n      crBR = br != null ? number(br) : crTL;\n      crBL = bl != null ? number(bl) : crTR;\n      return rectangle;\n    } else {\n      return crTL;\n    }\n  };\n  rectangle.context = function (_) {\n    if (arguments.length) {\n      context = _ == null ? null : _;\n      return rectangle;\n    } else {\n      return context;\n    }\n  };\n  return rectangle;\n}\n\nfunction vg_trail () {\n  var x,\n    y,\n    size,\n    defined,\n    context = null,\n    ready,\n    x1,\n    y1,\n    r1;\n  function point(x2, y2, w2) {\n    const r2 = w2 / 2;\n    if (ready) {\n      var ux = y1 - y2,\n        uy = x2 - x1;\n      if (ux || uy) {\n        // get normal vector\n        var ud = Math.hypot(ux, uy),\n          rx = (ux /= ud) * r1,\n          ry = (uy /= ud) * r1,\n          t = Math.atan2(uy, ux);\n\n        // draw segment\n        context.moveTo(x1 - rx, y1 - ry);\n        context.lineTo(x2 - ux * r2, y2 - uy * r2);\n        context.arc(x2, y2, r2, t - Math.PI, t);\n        context.lineTo(x1 + rx, y1 + ry);\n        context.arc(x1, y1, r1, t, t + Math.PI);\n      } else {\n        context.arc(x2, y2, r2, 0, Tau);\n      }\n      context.closePath();\n    } else {\n      ready = 1;\n    }\n    x1 = x2;\n    y1 = y2;\n    r1 = r2;\n  }\n  function trail(data) {\n    var i,\n      n = data.length,\n      d,\n      defined0 = false,\n      buffer;\n    if (context == null) context = buffer = path$3();\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) ready = 0;\n      }\n      if (defined0) point(+x(d, i, data), +y(d, i, data), +size(d, i, data));\n    }\n    if (buffer) {\n      context = null;\n      return buffer + '' || null;\n    }\n  }\n  trail.x = function (_) {\n    if (arguments.length) {\n      x = _;\n      return trail;\n    } else {\n      return x;\n    }\n  };\n  trail.y = function (_) {\n    if (arguments.length) {\n      y = _;\n      return trail;\n    } else {\n      return y;\n    }\n  };\n  trail.size = function (_) {\n    if (arguments.length) {\n      size = _;\n      return trail;\n    } else {\n      return size;\n    }\n  };\n  trail.defined = function (_) {\n    if (arguments.length) {\n      defined = _;\n      return trail;\n    } else {\n      return defined;\n    }\n  };\n  trail.context = function (_) {\n    if (arguments.length) {\n      if (_ == null) {\n        context = null;\n      } else {\n        context = _;\n      }\n      return trail;\n    } else {\n      return context;\n    }\n  };\n  return trail;\n}\n\nfunction value$1(a, b) {\n  return a != null ? a : b;\n}\nconst x = item => item.x || 0,\n  y = item => item.y || 0,\n  w = item => item.width || 0,\n  h = item => item.height || 0,\n  xw = item => (item.x || 0) + (item.width || 0),\n  yh = item => (item.y || 0) + (item.height || 0),\n  sa = item => item.startAngle || 0,\n  ea = item => item.endAngle || 0,\n  pa = item => item.padAngle || 0,\n  ir = item => item.innerRadius || 0,\n  or = item => item.outerRadius || 0,\n  cr = item => item.cornerRadius || 0,\n  tl = item => value$1(item.cornerRadiusTopLeft, item.cornerRadius) || 0,\n  tr = item => value$1(item.cornerRadiusTopRight, item.cornerRadius) || 0,\n  br = item => value$1(item.cornerRadiusBottomRight, item.cornerRadius) || 0,\n  bl = item => value$1(item.cornerRadiusBottomLeft, item.cornerRadius) || 0,\n  sz = item => value$1(item.size, 64),\n  ts = item => item.size || 1,\n  def = item => !(item.defined === false),\n  type = item => symbols(item.shape || 'circle');\nconst arcShape = arc$2().startAngle(sa).endAngle(ea).padAngle(pa).innerRadius(ir).outerRadius(or).cornerRadius(cr),\n  areavShape = area$2().x(x).y1(y).y0(yh).defined(def),\n  areahShape = area$2().y(y).x1(x).x0(xw).defined(def),\n  lineShape = line$2().x(x).y(y).defined(def),\n  rectShape = vg_rect().x(x).y(y).width(w).height(h).cornerRadius(tl, tr, br, bl),\n  symbolShape = symbol$2().type(type).size(sz),\n  trailShape = vg_trail().x(x).y(y).defined(def).size(ts);\nfunction hasCornerRadius(item) {\n  return item.cornerRadius || item.cornerRadiusTopLeft || item.cornerRadiusTopRight || item.cornerRadiusBottomRight || item.cornerRadiusBottomLeft;\n}\nfunction arc$1(context, item) {\n  return arcShape.context(context)(item);\n}\nfunction area$1(context, items) {\n  const item = items[0],\n    interp = item.interpolate || 'linear';\n  return (item.orient === 'horizontal' ? areahShape : areavShape).curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction line$1(context, items) {\n  const item = items[0],\n    interp = item.interpolate || 'linear';\n  return lineShape.curve(curves(interp, item.orient, item.tension)).context(context)(items);\n}\nfunction rectangle(context, item, x, y) {\n  return rectShape.context(context)(item, x, y);\n}\nfunction shape$1(context, item) {\n  return (item.mark.shape || item.shape).context(context)(item);\n}\nfunction symbol$1(context, item) {\n  return symbolShape.context(context)(item);\n}\nfunction trail$1(context, items) {\n  return trailShape.context(context)(items);\n}\n\nvar clip_id = 1;\nfunction resetSVGClipId() {\n  clip_id = 1;\n}\nfunction clip$1 (renderer, item, size) {\n  var clip = item.clip,\n    defs = renderer._defs,\n    id = item.clip_id || (item.clip_id = 'clip' + clip_id++),\n    c = defs.clipping[id] || (defs.clipping[id] = {\n      id: id\n    });\n  if (isFunction(clip)) {\n    c.path = clip(null);\n  } else if (hasCornerRadius(size)) {\n    c.path = rectangle(null, size, 0, 0);\n  } else {\n    c.width = size.width || 0;\n    c.height = size.height || 0;\n  }\n  return 'url(#' + id + ')';\n}\n\nfunction Bounds(b) {\n  this.clear();\n  if (b) this.union(b);\n}\nBounds.prototype = {\n  clone() {\n    return new Bounds(this);\n  },\n  clear() {\n    this.x1 = +Number.MAX_VALUE;\n    this.y1 = +Number.MAX_VALUE;\n    this.x2 = -Number.MAX_VALUE;\n    this.y2 = -Number.MAX_VALUE;\n    return this;\n  },\n  empty() {\n    return this.x1 === +Number.MAX_VALUE && this.y1 === +Number.MAX_VALUE && this.x2 === -Number.MAX_VALUE && this.y2 === -Number.MAX_VALUE;\n  },\n  equals(b) {\n    return this.x1 === b.x1 && this.y1 === b.y1 && this.x2 === b.x2 && this.y2 === b.y2;\n  },\n  set(x1, y1, x2, y2) {\n    if (x2 < x1) {\n      this.x2 = x1;\n      this.x1 = x2;\n    } else {\n      this.x1 = x1;\n      this.x2 = x2;\n    }\n    if (y2 < y1) {\n      this.y2 = y1;\n      this.y1 = y2;\n    } else {\n      this.y1 = y1;\n      this.y2 = y2;\n    }\n    return this;\n  },\n  add(x, y) {\n    if (x < this.x1) this.x1 = x;\n    if (y < this.y1) this.y1 = y;\n    if (x > this.x2) this.x2 = x;\n    if (y > this.y2) this.y2 = y;\n    return this;\n  },\n  expand(d) {\n    this.x1 -= d;\n    this.y1 -= d;\n    this.x2 += d;\n    this.y2 += d;\n    return this;\n  },\n  round() {\n    this.x1 = Math.floor(this.x1);\n    this.y1 = Math.floor(this.y1);\n    this.x2 = Math.ceil(this.x2);\n    this.y2 = Math.ceil(this.y2);\n    return this;\n  },\n  scale(s) {\n    this.x1 *= s;\n    this.y1 *= s;\n    this.x2 *= s;\n    this.y2 *= s;\n    return this;\n  },\n  translate(dx, dy) {\n    this.x1 += dx;\n    this.x2 += dx;\n    this.y1 += dy;\n    this.y2 += dy;\n    return this;\n  },\n  rotate(angle, x, y) {\n    const p = this.rotatedPoints(angle, x, y);\n    return this.clear().add(p[0], p[1]).add(p[2], p[3]).add(p[4], p[5]).add(p[6], p[7]);\n  },\n  rotatedPoints(angle, x, y) {\n    var {\n        x1,\n        y1,\n        x2,\n        y2\n      } = this,\n      cos = Math.cos(angle),\n      sin = Math.sin(angle),\n      cx = x - x * cos + y * sin,\n      cy = y - x * sin - y * cos;\n    return [cos * x1 - sin * y1 + cx, sin * x1 + cos * y1 + cy, cos * x1 - sin * y2 + cx, sin * x1 + cos * y2 + cy, cos * x2 - sin * y1 + cx, sin * x2 + cos * y1 + cy, cos * x2 - sin * y2 + cx, sin * x2 + cos * y2 + cy];\n  },\n  union(b) {\n    if (b.x1 < this.x1) this.x1 = b.x1;\n    if (b.y1 < this.y1) this.y1 = b.y1;\n    if (b.x2 > this.x2) this.x2 = b.x2;\n    if (b.y2 > this.y2) this.y2 = b.y2;\n    return this;\n  },\n  intersect(b) {\n    if (b.x1 > this.x1) this.x1 = b.x1;\n    if (b.y1 > this.y1) this.y1 = b.y1;\n    if (b.x2 < this.x2) this.x2 = b.x2;\n    if (b.y2 < this.y2) this.y2 = b.y2;\n    return this;\n  },\n  encloses(b) {\n    return b && this.x1 <= b.x1 && this.x2 >= b.x2 && this.y1 <= b.y1 && this.y2 >= b.y2;\n  },\n  alignsWith(b) {\n    return b && (this.x1 == b.x1 || this.x2 == b.x2 || this.y1 == b.y1 || this.y2 == b.y2);\n  },\n  intersects(b) {\n    return b && !(this.x2 < b.x1 || this.x1 > b.x2 || this.y2 < b.y1 || this.y1 > b.y2);\n  },\n  contains(x, y) {\n    return !(x < this.x1 || x > this.x2 || y < this.y1 || y > this.y2);\n  },\n  width() {\n    return this.x2 - this.x1;\n  },\n  height() {\n    return this.y2 - this.y1;\n  }\n};\n\nfunction Item(mark) {\n  this.mark = mark;\n  this.bounds = this.bounds || new Bounds();\n}\n\nfunction GroupItem(mark) {\n  Item.call(this, mark);\n  this.items = this.items || [];\n}\ninherits(GroupItem, Item);\n\nfunction ResourceLoader(customLoader) {\n  this._pending = 0;\n  this._loader = customLoader || loader();\n}\nfunction increment(loader) {\n  loader._pending += 1;\n}\nfunction decrement(loader) {\n  loader._pending -= 1;\n}\nResourceLoader.prototype = {\n  pending() {\n    return this._pending;\n  },\n  sanitizeURL(uri) {\n    const loader = this;\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'href'\n    }).then(opt => {\n      decrement(loader);\n      return opt;\n    }).catch(() => {\n      decrement(loader);\n      return null;\n    });\n  },\n  loadImage(uri) {\n    const loader = this,\n      Image = image$1();\n    increment(loader);\n    return loader._loader.sanitize(uri, {\n      context: 'image'\n    }).then(opt => {\n      const url = opt.href;\n      if (!url || !Image) throw {\n        url: url\n      };\n      const img = new Image();\n\n      // set crossOrigin only if cors is defined; empty string sets anonymous mode\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/crossOrigin\n      const cors = hasOwnProperty(opt, 'crossOrigin') ? opt.crossOrigin : 'anonymous';\n      if (cors != null) img.crossOrigin = cors;\n\n      // attempt to load image resource\n      img.onload = () => decrement(loader);\n      img.onerror = () => decrement(loader);\n      img.src = url;\n      return img;\n    }).catch(e => {\n      decrement(loader);\n      return {\n        complete: false,\n        width: 0,\n        height: 0,\n        src: e && e.url || ''\n      };\n    });\n  },\n  ready() {\n    const loader = this;\n    return new Promise(accept => {\n      function poll(value) {\n        if (!loader.pending()) accept(value);else setTimeout(() => {\n          poll(true);\n        }, 10);\n      }\n      poll(false);\n    });\n  }\n};\n\nfunction boundStroke (bounds, item, miter) {\n  if (item.stroke && item.opacity !== 0 && item.strokeOpacity !== 0) {\n    const sw = item.strokeWidth != null ? +item.strokeWidth : 1;\n    bounds.expand(sw + (miter ? miterAdjustment(item, sw) : 0));\n  }\n  return bounds;\n}\nfunction miterAdjustment(item, strokeWidth) {\n  // TODO: more sophisticated adjustment? Or miter support in boundContext?\n  return item.strokeJoin && item.strokeJoin !== 'miter' ? 0 : strokeWidth;\n}\n\nconst circleThreshold = Tau - 1e-8;\nlet bounds, lx, ly, rot, ma, mb, mc, md;\nconst add = (x, y) => bounds.add(x, y);\nconst addL = (x, y) => add(lx = x, ly = y);\nconst addX = x => add(x, bounds.y1);\nconst addY = y => add(bounds.x1, y);\nconst px = (x, y) => ma * x + mc * y;\nconst py = (x, y) => mb * x + md * y;\nconst addp = (x, y) => add(px(x, y), py(x, y));\nconst addpL = (x, y) => addL(px(x, y), py(x, y));\nfunction boundContext (_, deg) {\n  bounds = _;\n  if (deg) {\n    rot = deg * DegToRad;\n    ma = md = Math.cos(rot);\n    mb = Math.sin(rot);\n    mc = -mb;\n  } else {\n    ma = md = 1;\n    rot = mb = mc = 0;\n  }\n  return context$1;\n}\nconst context$1 = {\n  beginPath() {},\n  closePath() {},\n  moveTo: addpL,\n  lineTo: addpL,\n  rect(x, y, w, h) {\n    if (rot) {\n      addp(x + w, y);\n      addp(x + w, y + h);\n      addp(x, y + h);\n      addpL(x, y);\n    } else {\n      add(x + w, y + h);\n      addL(x, y);\n    }\n  },\n  quadraticCurveTo(x1, y1, x2, y2) {\n    const px1 = px(x1, y1),\n      py1 = py(x1, y1),\n      px2 = px(x2, y2),\n      py2 = py(x2, y2);\n    quadExtrema(lx, px1, px2, addX);\n    quadExtrema(ly, py1, py2, addY);\n    addL(px2, py2);\n  },\n  bezierCurveTo(x1, y1, x2, y2, x3, y3) {\n    const px1 = px(x1, y1),\n      py1 = py(x1, y1),\n      px2 = px(x2, y2),\n      py2 = py(x2, y2),\n      px3 = px(x3, y3),\n      py3 = py(x3, y3);\n    cubicExtrema(lx, px1, px2, px3, addX);\n    cubicExtrema(ly, py1, py2, py3, addY);\n    addL(px3, py3);\n  },\n  arc(cx, cy, r, sa, ea, ccw) {\n    sa += rot;\n    ea += rot;\n\n    // store last point on path\n    lx = r * Math.cos(ea) + cx;\n    ly = r * Math.sin(ea) + cy;\n    if (Math.abs(ea - sa) > circleThreshold) {\n      // treat as full circle\n      add(cx - r, cy - r);\n      add(cx + r, cy + r);\n    } else {\n      const update = a => add(r * Math.cos(a) + cx, r * Math.sin(a) + cy);\n      let s, i;\n\n      // sample end points\n      update(sa);\n      update(ea);\n\n      // sample interior points aligned with 90 degrees\n      if (ea !== sa) {\n        sa = sa % Tau;\n        if (sa < 0) sa += Tau;\n        ea = ea % Tau;\n        if (ea < 0) ea += Tau;\n        if (ea < sa) {\n          ccw = !ccw; // flip direction\n          s = sa;\n          sa = ea;\n          ea = s; // swap end-points\n        }\n\n        if (ccw) {\n          ea -= Tau;\n          s = sa - sa % HalfPi;\n          for (i = 0; i < 4 && s > ea; ++i, s -= HalfPi) update(s);\n        } else {\n          s = sa - sa % HalfPi + HalfPi;\n          for (i = 0; i < 4 && s < ea; ++i, s = s + HalfPi) update(s);\n        }\n      }\n    }\n  }\n};\nfunction quadExtrema(x0, x1, x2, cb) {\n  const t = (x0 - x1) / (x0 + x2 - 2 * x1);\n  if (0 < t && t < 1) cb(x0 + (x1 - x0) * t);\n}\nfunction cubicExtrema(x0, x1, x2, x3, cb) {\n  const a = x3 - x0 + 3 * x1 - 3 * x2,\n    b = x0 + x2 - 2 * x1,\n    c = x0 - x1;\n  let t0 = 0,\n    t1 = 0,\n    r;\n\n  // solve for parameter t\n  if (Math.abs(a) > Epsilon) {\n    // quadratic equation\n    r = b * b + c * a;\n    if (r >= 0) {\n      r = Math.sqrt(r);\n      t0 = (-b + r) / a;\n      t1 = (-b - r) / a;\n    }\n  } else {\n    // linear equation\n    t0 = 0.5 * c / b;\n  }\n\n  // calculate position\n  if (0 < t0 && t0 < 1) cb(cubic(t0, x0, x1, x2, x3));\n  if (0 < t1 && t1 < 1) cb(cubic(t1, x0, x1, x2, x3));\n}\nfunction cubic(t, x0, x1, x2, x3) {\n  const s = 1 - t,\n    s2 = s * s,\n    t2 = t * t;\n  return s2 * s * x0 + 3 * s2 * t * x1 + 3 * s * t2 * x2 + t2 * t * x3;\n}\n\nvar context = (context = canvas(1, 1)) ? context.getContext('2d') : null;\n\nconst b = new Bounds();\nfunction intersectPath(draw) {\n  return function (item, brush) {\n    // rely on (inaccurate) bounds intersection if no context\n    if (!context) return true;\n\n    // add path to offscreen graphics context\n    draw(context, item);\n\n    // get bounds intersection region\n    b.clear().union(item.bounds).intersect(brush).round();\n    const {\n      x1,\n      y1,\n      x2,\n      y2\n    } = b;\n\n    // iterate over intersection region\n    // perform fine grained inclusion test\n    for (let y = y1; y <= y2; ++y) {\n      for (let x = x1; x <= x2; ++x) {\n        if (context.isPointInPath(x, y)) {\n          return true;\n        }\n      }\n    }\n\n    // false if no hits in intersection region\n    return false;\n  };\n}\nfunction intersectPoint(item, box) {\n  return box.contains(item.x || 0, item.y || 0);\n}\nfunction intersectRect(item, box) {\n  const x = item.x || 0,\n    y = item.y || 0,\n    w = item.width || 0,\n    h = item.height || 0;\n  return box.intersects(b.set(x, y, x + w, y + h));\n}\nfunction intersectRule(item, box) {\n  const x = item.x || 0,\n    y = item.y || 0,\n    x2 = item.x2 != null ? item.x2 : x,\n    y2 = item.y2 != null ? item.y2 : y;\n  return intersectBoxLine(box, x, y, x2, y2);\n}\nfunction intersectBoxLine(box, x, y, u, v) {\n  const {\n      x1,\n      y1,\n      x2,\n      y2\n    } = box,\n    dx = u - x,\n    dy = v - y;\n  let t0 = 0,\n    t1 = 1,\n    p,\n    q,\n    r,\n    e;\n  for (e = 0; e < 4; ++e) {\n    if (e === 0) {\n      p = -dx;\n      q = -(x1 - x);\n    }\n    if (e === 1) {\n      p = dx;\n      q = x2 - x;\n    }\n    if (e === 2) {\n      p = -dy;\n      q = -(y1 - y);\n    }\n    if (e === 3) {\n      p = dy;\n      q = y2 - y;\n    }\n    if (Math.abs(p) < 1e-10 && q < 0) return false;\n    r = q / p;\n    if (p < 0) {\n      if (r > t1) return false;else if (r > t0) t0 = r;\n    } else if (p > 0) {\n      if (r < t0) return false;else if (r < t1) t1 = r;\n    }\n  }\n  return true;\n}\n\nfunction blend (context, item) {\n  context.globalCompositeOperation = item.blend || 'source-over';\n}\n\nfunction value (value, dflt) {\n  return value == null ? dflt : value;\n}\n\nfunction addStops(gradient, stops) {\n  const n = stops.length;\n  for (let i = 0; i < n; ++i) {\n    gradient.addColorStop(stops[i].offset, stops[i].color);\n  }\n  return gradient;\n}\nfunction gradient (context, spec, bounds) {\n  const w = bounds.width(),\n    h = bounds.height();\n  let gradient;\n  if (spec.gradient === 'radial') {\n    gradient = context.createRadialGradient(bounds.x1 + value(spec.x1, 0.5) * w, bounds.y1 + value(spec.y1, 0.5) * h, Math.max(w, h) * value(spec.r1, 0), bounds.x1 + value(spec.x2, 0.5) * w, bounds.y1 + value(spec.y2, 0.5) * h, Math.max(w, h) * value(spec.r2, 0.5));\n  } else {\n    // linear gradient\n    const x1 = value(spec.x1, 0),\n      y1 = value(spec.y1, 0),\n      x2 = value(spec.x2, 1),\n      y2 = value(spec.y2, 0);\n    if (x1 === x2 || y1 === y2 || w === h) {\n      // axis aligned: use normal gradient\n      gradient = context.createLinearGradient(bounds.x1 + x1 * w, bounds.y1 + y1 * h, bounds.x1 + x2 * w, bounds.y1 + y2 * h);\n    } else {\n      // not axis aligned: render gradient into a pattern (#2365)\n      // this allows us to use normalized bounding box coordinates\n      const image = canvas(Math.ceil(w), Math.ceil(h)),\n        ictx = image.getContext('2d');\n      ictx.scale(w, h);\n      ictx.fillStyle = addStops(ictx.createLinearGradient(x1, y1, x2, y2), spec.stops);\n      ictx.fillRect(0, 0, w, h);\n      return context.createPattern(image, 'no-repeat');\n    }\n  }\n  return addStops(gradient, spec.stops);\n}\n\nfunction color (context, item, value) {\n  return isGradient(value) ? gradient(context, value, item.bounds) : value;\n}\n\nfunction fill (context, item, opacity) {\n  opacity *= item.fillOpacity == null ? 1 : item.fillOpacity;\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.fillStyle = color(context, item, item.fill);\n    return true;\n  } else {\n    return false;\n  }\n}\n\nvar Empty = [];\nfunction stroke (context, item, opacity) {\n  var lw = (lw = item.strokeWidth) != null ? lw : 1;\n  if (lw <= 0) return false;\n  opacity *= item.strokeOpacity == null ? 1 : item.strokeOpacity;\n  if (opacity > 0) {\n    context.globalAlpha = opacity;\n    context.strokeStyle = color(context, item, item.stroke);\n    context.lineWidth = lw;\n    context.lineCap = item.strokeCap || 'butt';\n    context.lineJoin = item.strokeJoin || 'miter';\n    context.miterLimit = item.strokeMiterLimit || 10;\n    if (context.setLineDash) {\n      context.setLineDash(item.strokeDash || Empty);\n      context.lineDashOffset = item.strokeDashOffset || 0;\n    }\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction compare(a, b) {\n  return a.zindex - b.zindex || a.index - b.index;\n}\nfunction zorder(scene) {\n  if (!scene.zdirty) return scene.zitems;\n  var items = scene.items,\n    output = [],\n    item,\n    i,\n    n;\n  for (i = 0, n = items.length; i < n; ++i) {\n    item = items[i];\n    item.index = i;\n    if (item.zindex) output.push(item);\n  }\n  scene.zdirty = false;\n  return scene.zitems = output.sort(compare);\n}\nfunction visit(scene, visitor) {\n  var items = scene.items,\n    i,\n    n;\n  if (!items || !items.length) return;\n  const zitems = zorder(scene);\n  if (zitems && zitems.length) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      if (!items[i].zindex) visitor(items[i]);\n    }\n    items = zitems;\n  }\n  for (i = 0, n = items.length; i < n; ++i) {\n    visitor(items[i]);\n  }\n}\nfunction pickVisit(scene, visitor) {\n  var items = scene.items,\n    hit,\n    i;\n  if (!items || !items.length) return null;\n  const zitems = zorder(scene);\n  if (zitems && zitems.length) items = zitems;\n  for (i = items.length; --i >= 0;) {\n    if (hit = visitor(items[i])) return hit;\n  }\n  if (items === zitems) {\n    for (items = scene.items, i = items.length; --i >= 0;) {\n      if (!items[i].zindex) {\n        if (hit = visitor(items[i])) return hit;\n      }\n    }\n  }\n  return null;\n}\n\nfunction drawAll(path) {\n  return function (context, scene, bounds) {\n    visit(scene, item => {\n      if (!bounds || bounds.intersects(item.bounds)) {\n        drawPath(path, context, item, item);\n      }\n    });\n  };\n}\nfunction drawOne(path) {\n  return function (context, scene, bounds) {\n    if (scene.items.length && (!bounds || bounds.intersects(scene.bounds))) {\n      drawPath(path, context, scene.items[0], scene.items);\n    }\n  };\n}\nfunction drawPath(path, context, item, items) {\n  var opacity = item.opacity == null ? 1 : item.opacity;\n  if (opacity === 0) return;\n  if (path(context, items)) return;\n  blend(context, item);\n  if (item.fill && fill(context, item, opacity)) {\n    context.fill();\n  }\n  if (item.stroke && stroke(context, item, opacity)) {\n    context.stroke();\n  }\n}\n\nfunction pick$1(test) {\n  test = test || truthy;\n  return function (context, scene, x, y, gx, gy) {\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return pickVisit(scene, item => {\n      const b = item.bounds;\n      // first hit test against bounding box\n      if (b && !b.contains(gx, gy) || !b) return;\n      // if in bounding box, perform more careful test\n      if (test(context, item, x, y, gx, gy)) return item;\n    });\n  };\n}\nfunction hitPath(path, filled) {\n  return function (context, o, x, y) {\n    var item = Array.isArray(o) ? o[0] : o,\n      fill = filled == null ? item.fill : filled,\n      stroke = item.stroke && context.isPointInStroke,\n      lw,\n      lc;\n    if (stroke) {\n      lw = item.strokeWidth;\n      lc = item.strokeCap;\n      context.lineWidth = lw != null ? lw : 1;\n      context.lineCap = lc != null ? lc : 'butt';\n    }\n    return path(context, o) ? false : fill && context.isPointInPath(x, y) || stroke && context.isPointInStroke(x, y);\n  };\n}\nfunction pickPath(path) {\n  return pick$1(hitPath(path));\n}\n\nfunction translate(x, y) {\n  return 'translate(' + x + ',' + y + ')';\n}\nfunction rotate(a) {\n  return 'rotate(' + a + ')';\n}\nfunction scale(scaleX, scaleY) {\n  return 'scale(' + scaleX + ',' + scaleY + ')';\n}\nfunction translateItem(item) {\n  return translate(item.x || 0, item.y || 0);\n}\nfunction rotateItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '');\n}\nfunction transformItem(item) {\n  return translate(item.x || 0, item.y || 0) + (item.angle ? ' ' + rotate(item.angle) : '') + (item.scaleX || item.scaleY ? ' ' + scale(item.scaleX || 1, item.scaleY || 1) : '');\n}\n\nfunction markItemPath (type, shape, isect) {\n  function attr(emit, item) {\n    emit('transform', rotateItem(item));\n    emit('d', shape(null, item));\n  }\n  function bound(bounds, item) {\n    shape(boundContext(bounds, item.angle), item);\n    return boundStroke(bounds, item).translate(item.x || 0, item.y || 0);\n  }\n  function draw(context, item) {\n    var x = item.x || 0,\n      y = item.y || 0,\n      a = item.angle || 0;\n    context.translate(x, y);\n    if (a) context.rotate(a *= DegToRad);\n    context.beginPath();\n    shape(context, item);\n    if (a) context.rotate(-a);\n    context.translate(-x, -y);\n  }\n  return {\n    type: type,\n    tag: 'path',\n    nested: false,\n    attr: attr,\n    bound: bound,\n    draw: drawAll(draw),\n    pick: pickPath(draw),\n    isect: isect || intersectPath(draw)\n  };\n}\n\nvar arc = markItemPath('arc', arc$1);\n\nfunction pickArea(a, p) {\n  var v = a[0].orient === 'horizontal' ? p[1] : p[0],\n    z = a[0].orient === 'horizontal' ? 'y' : 'x',\n    i = a.length,\n    min = +Infinity,\n    hit,\n    d;\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    d = Math.abs(a[i][z] - v);\n    if (d < min) {\n      min = d;\n      hit = a[i];\n    }\n  }\n  return hit;\n}\nfunction pickLine(a, p) {\n  var t = Math.pow(a[0].strokeWidth || 1, 2),\n    i = a.length,\n    dx,\n    dy,\n    dd;\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    if (dd < t) return a[i];\n  }\n  return null;\n}\nfunction pickTrail(a, p) {\n  var i = a.length,\n    dx,\n    dy,\n    dd;\n  while (--i >= 0) {\n    if (a[i].defined === false) continue;\n    dx = a[i].x - p[0];\n    dy = a[i].y - p[1];\n    dd = dx * dx + dy * dy;\n    dx = a[i].size || 1;\n    if (dd < dx * dx) return a[i];\n  }\n  return null;\n}\n\nfunction markMultiItemPath (type, shape, tip) {\n  function attr(emit, item) {\n    var items = item.mark.items;\n    if (items.length) emit('d', shape(null, items));\n  }\n  function bound(bounds, mark) {\n    var items = mark.items;\n    if (items.length === 0) {\n      return bounds;\n    } else {\n      shape(boundContext(bounds), items);\n      return boundStroke(bounds, items[0]);\n    }\n  }\n  function draw(context, items) {\n    context.beginPath();\n    shape(context, items);\n  }\n  const hit = hitPath(draw);\n  function pick(context, scene, x, y, gx, gy) {\n    var items = scene.items,\n      b = scene.bounds;\n    if (!items || !items.length || b && !b.contains(gx, gy)) {\n      return null;\n    }\n    x *= context.pixelRatio;\n    y *= context.pixelRatio;\n    return hit(context, items, x, y) ? items[0] : null;\n  }\n  return {\n    type: type,\n    tag: 'path',\n    nested: true,\n    attr: attr,\n    bound: bound,\n    draw: drawOne(draw),\n    pick: pick,\n    isect: intersectPoint,\n    tip: tip\n  };\n}\n\nvar area = markMultiItemPath('area', area$1, pickArea);\n\nfunction clip (context, scene) {\n  var clip = scene.clip;\n  context.save();\n  if (isFunction(clip)) {\n    context.beginPath();\n    clip(context);\n    context.clip();\n  } else {\n    clipGroup(context, scene.group);\n  }\n}\nfunction clipGroup(context, group) {\n  context.beginPath();\n  hasCornerRadius(group) ? rectangle(context, group, 0, 0) : context.rect(0, 0, group.width || 0, group.height || 0);\n  context.clip();\n}\n\nfunction offset$1(item) {\n  const sw = value(item.strokeWidth, 1);\n  return item.strokeOffset != null ? item.strokeOffset : item.stroke && sw > 0.5 && sw < 1.5 ? 0.5 - Math.abs(sw - 1) : 0;\n}\nfunction attr$5(emit, item) {\n  emit('transform', translateItem(item));\n}\nfunction emitRectangle(emit, item) {\n  const off = offset$1(item);\n  emit('d', rectangle(null, item, off, off));\n}\nfunction background(emit, item) {\n  emit('class', 'background');\n  emit('aria-hidden', true);\n  emitRectangle(emit, item);\n}\nfunction foreground(emit, item) {\n  emit('class', 'foreground');\n  emit('aria-hidden', true);\n  if (item.strokeForeground) {\n    emitRectangle(emit, item);\n  } else {\n    emit('d', '');\n  }\n}\nfunction content(emit, item, renderer) {\n  const url = item.clip ? clip$1(renderer, item, item) : null;\n  emit('clip-path', url);\n}\nfunction bound$5(bounds, group) {\n  if (!group.clip && group.items) {\n    const items = group.items,\n      m = items.length;\n    for (let j = 0; j < m; ++j) {\n      bounds.union(items[j].bounds);\n    }\n  }\n  if ((group.clip || group.width || group.height) && !group.noBound) {\n    bounds.add(0, 0).add(group.width || 0, group.height || 0);\n  }\n  boundStroke(bounds, group);\n  return bounds.translate(group.x || 0, group.y || 0);\n}\nfunction rectanglePath(context, group, x, y) {\n  const off = offset$1(group);\n  context.beginPath();\n  rectangle(context, group, (x || 0) + off, (y || 0) + off);\n}\nconst hitBackground = hitPath(rectanglePath);\nconst hitForeground = hitPath(rectanglePath, false);\nconst hitCorner = hitPath(rectanglePath, true);\nfunction draw$4(context, scene, bounds, markTypes) {\n  visit(scene, group => {\n    const gx = group.x || 0,\n      gy = group.y || 0,\n      fore = group.strokeForeground,\n      opacity = group.opacity == null ? 1 : group.opacity;\n\n    // draw group background\n    if ((group.stroke || group.fill) && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n      if (group.fill && fill(context, group, opacity)) {\n        context.fill();\n      }\n      if (group.stroke && !fore && stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    }\n\n    // setup graphics context, set clip and bounds\n    context.save();\n    context.translate(gx, gy);\n    if (group.clip) clipGroup(context, group);\n    if (bounds) bounds.translate(-gx, -gy);\n\n    // draw group contents\n    visit(group, item => {\n      if (item.marktype === 'group' || markTypes == null || markTypes.includes(item.marktype)) {\n        this.draw(context, item, bounds, markTypes);\n      }\n    });\n\n    // restore graphics context\n    if (bounds) bounds.translate(gx, gy);\n    context.restore();\n\n    // draw group foreground\n    if (fore && group.stroke && opacity) {\n      rectanglePath(context, group, gx, gy);\n      blend(context, group);\n      if (stroke(context, group, opacity)) {\n        context.stroke();\n      }\n    }\n  });\n}\nfunction pick(context, scene, x, y, gx, gy) {\n  if (scene.bounds && !scene.bounds.contains(gx, gy) || !scene.items) {\n    return null;\n  }\n  const cx = x * context.pixelRatio,\n    cy = y * context.pixelRatio;\n  return pickVisit(scene, group => {\n    let hit, dx, dy;\n\n    // first hit test bounding box\n    const b = group.bounds;\n    if (b && !b.contains(gx, gy)) return;\n\n    // passed bounds check, test rectangular clip\n    dx = group.x || 0;\n    dy = group.y || 0;\n    const dw = dx + (group.width || 0),\n      dh = dy + (group.height || 0),\n      c = group.clip;\n    if (c && (gx < dx || gx > dw || gy < dy || gy > dh)) return;\n\n    // adjust coordinate system\n    context.save();\n    context.translate(dx, dy);\n    dx = gx - dx;\n    dy = gy - dy;\n\n    // test background for rounded corner clip\n    if (c && hasCornerRadius(group) && !hitCorner(context, group, cx, cy)) {\n      context.restore();\n      return null;\n    }\n    const fore = group.strokeForeground,\n      ix = scene.interactive !== false;\n\n    // hit test against group foreground\n    if (ix && fore && group.stroke && hitForeground(context, group, cx, cy)) {\n      context.restore();\n      return group;\n    }\n\n    // hit test against contained marks\n    hit = pickVisit(group, mark => pickMark(mark, dx, dy) ? this.pick(mark, x, y, dx, dy) : null);\n\n    // hit test against group background\n    if (!hit && ix && (group.fill || !fore && group.stroke) && hitBackground(context, group, cx, cy)) {\n      hit = group;\n    }\n\n    // restore state and return\n    context.restore();\n    return hit || null;\n  });\n}\nfunction pickMark(mark, x, y) {\n  return (mark.interactive !== false || mark.marktype === 'group') && mark.bounds && mark.bounds.contains(x, y);\n}\nvar group = {\n  type: 'group',\n  tag: 'g',\n  nested: false,\n  attr: attr$5,\n  bound: bound$5,\n  draw: draw$4,\n  pick: pick,\n  isect: intersectRect,\n  content: content,\n  background: background,\n  foreground: foreground\n};\n\nvar metadata = {\n  'xmlns': 'http://www.w3.org/2000/svg',\n  'xmlns:xlink': 'http://www.w3.org/1999/xlink',\n  'version': '1.1'\n};\n\nfunction getImage(item, renderer) {\n  var image = item.image;\n  if (!image || item.url && item.url !== image.url) {\n    image = {\n      complete: false,\n      width: 0,\n      height: 0\n    };\n    renderer.loadImage(item.url).then(image => {\n      item.image = image;\n      item.image.url = item.url;\n    });\n  }\n  return image;\n}\nfunction imageWidth(item, image) {\n  return item.width != null ? item.width : !image || !image.width ? 0 : item.aspect !== false && item.height ? item.height * image.width / image.height : image.width;\n}\nfunction imageHeight(item, image) {\n  return item.height != null ? item.height : !image || !image.height ? 0 : item.aspect !== false && item.width ? item.width * image.height / image.width : image.height;\n}\nfunction imageXOffset(align, w) {\n  return align === 'center' ? w / 2 : align === 'right' ? w : 0;\n}\nfunction imageYOffset(baseline, h) {\n  return baseline === 'middle' ? h / 2 : baseline === 'bottom' ? h : 0;\n}\nfunction attr$4(emit, item, renderer) {\n  const img = getImage(item, renderer),\n    w = imageWidth(item, img),\n    h = imageHeight(item, img),\n    x = (item.x || 0) - imageXOffset(item.align, w),\n    y = (item.y || 0) - imageYOffset(item.baseline, h),\n    i = !img.src && img.toDataURL ? img.toDataURL() : img.src || '';\n  emit('href', i, metadata['xmlns:xlink'], 'xlink:href');\n  emit('transform', translate(x, y));\n  emit('width', w);\n  emit('height', h);\n  emit('preserveAspectRatio', item.aspect === false ? 'none' : 'xMidYMid');\n}\nfunction bound$4(bounds, item) {\n  const img = item.image,\n    w = imageWidth(item, img),\n    h = imageHeight(item, img),\n    x = (item.x || 0) - imageXOffset(item.align, w),\n    y = (item.y || 0) - imageYOffset(item.baseline, h);\n  return bounds.set(x, y, x + w, y + h);\n}\nfunction draw$3(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n\n    const img = getImage(item, this);\n    let w = imageWidth(item, img);\n    let h = imageHeight(item, img);\n    if (w === 0 || h === 0) return; // early exit\n\n    let x = (item.x || 0) - imageXOffset(item.align, w),\n      y = (item.y || 0) - imageYOffset(item.baseline, h),\n      opacity,\n      ar0,\n      ar1,\n      t;\n    if (item.aspect !== false) {\n      ar0 = img.width / img.height;\n      ar1 = item.width / item.height;\n      if (ar0 === ar0 && ar1 === ar1 && ar0 !== ar1) {\n        if (ar1 < ar0) {\n          t = w / ar0;\n          y += (h - t) / 2;\n          h = t;\n        } else {\n          t = h * ar0;\n          x += (w - t) / 2;\n          w = t;\n        }\n      }\n    }\n    if (img.complete || img.toDataURL) {\n      blend(context, item);\n      context.globalAlpha = (opacity = item.opacity) != null ? opacity : 1;\n      context.imageSmoothingEnabled = item.smooth !== false;\n      context.drawImage(img, x, y, w, h);\n    }\n  });\n}\nvar image = {\n  type: 'image',\n  tag: 'image',\n  nested: false,\n  attr: attr$4,\n  bound: bound$4,\n  draw: draw$3,\n  pick: pick$1(),\n  isect: truthy,\n  // bounds check is sufficient\n  get: getImage,\n  xOffset: imageXOffset,\n  yOffset: imageYOffset\n};\n\nvar line = markMultiItemPath('line', line$1, pickLine);\n\nfunction attr$3(emit, item) {\n  var sx = item.scaleX || 1,\n    sy = item.scaleY || 1;\n  if (sx !== 1 || sy !== 1) {\n    emit('vector-effect', 'non-scaling-stroke');\n  }\n  emit('transform', transformItem(item));\n  emit('d', item.path);\n}\nfunction path$1(context, item) {\n  var path = item.path;\n  if (path == null) return true;\n  var x = item.x || 0,\n    y = item.y || 0,\n    sx = item.scaleX || 1,\n    sy = item.scaleY || 1,\n    a = (item.angle || 0) * DegToRad,\n    cache = item.pathCache;\n  if (!cache || cache.path !== path) {\n    (item.pathCache = cache = parse(path)).path = path;\n  }\n  if (a && context.rotate && context.translate) {\n    context.translate(x, y);\n    context.rotate(a);\n    pathRender(context, cache, 0, 0, sx, sy);\n    context.rotate(-a);\n    context.translate(-x, -y);\n  } else {\n    pathRender(context, cache, x, y, sx, sy);\n  }\n}\nfunction bound$3(bounds, item) {\n  return path$1(boundContext(bounds, item.angle), item) ? bounds.set(0, 0, 0, 0) : boundStroke(bounds, item, true);\n}\nvar path$2 = {\n  type: 'path',\n  tag: 'path',\n  nested: false,\n  attr: attr$3,\n  bound: bound$3,\n  draw: drawAll(path$1),\n  pick: pickPath(path$1),\n  isect: intersectPath(path$1)\n};\n\nfunction attr$2(emit, item) {\n  emit('d', rectangle(null, item));\n}\nfunction bound$2(bounds, item) {\n  var x, y;\n  return boundStroke(bounds.set(x = item.x || 0, y = item.y || 0, x + item.width || 0, y + item.height || 0), item);\n}\nfunction draw$2(context, item) {\n  context.beginPath();\n  rectangle(context, item);\n}\nvar rect = {\n  type: 'rect',\n  tag: 'path',\n  nested: false,\n  attr: attr$2,\n  bound: bound$2,\n  draw: drawAll(draw$2),\n  pick: pickPath(draw$2),\n  isect: intersectRect\n};\n\nfunction attr$1(emit, item) {\n  emit('transform', translateItem(item));\n  emit('x2', item.x2 != null ? item.x2 - (item.x || 0) : 0);\n  emit('y2', item.y2 != null ? item.y2 - (item.y || 0) : 0);\n}\nfunction bound$1(bounds, item) {\n  var x1, y1;\n  return boundStroke(bounds.set(x1 = item.x || 0, y1 = item.y || 0, item.x2 != null ? item.x2 : x1, item.y2 != null ? item.y2 : y1), item);\n}\nfunction path(context, item, opacity) {\n  var x1, y1, x2, y2;\n  if (item.stroke && stroke(context, item, opacity)) {\n    x1 = item.x || 0;\n    y1 = item.y || 0;\n    x2 = item.x2 != null ? item.x2 : x1;\n    y2 = item.y2 != null ? item.y2 : y1;\n    context.beginPath();\n    context.moveTo(x1, y1);\n    context.lineTo(x2, y2);\n    return true;\n  }\n  return false;\n}\nfunction draw$1(context, scene, bounds) {\n  visit(scene, item => {\n    if (bounds && !bounds.intersects(item.bounds)) return; // bounds check\n    var opacity = item.opacity == null ? 1 : item.opacity;\n    if (opacity && path(context, item, opacity)) {\n      blend(context, item);\n      context.stroke();\n    }\n  });\n}\nfunction hit$1(context, item, x, y) {\n  if (!context.isPointInStroke) return false;\n  return path(context, item, 1) && context.isPointInStroke(x, y);\n}\nvar rule = {\n  type: 'rule',\n  tag: 'line',\n  nested: false,\n  attr: attr$1,\n  bound: bound$1,\n  draw: draw$1,\n  pick: pick$1(hit$1),\n  isect: intersectRule\n};\n\nvar shape = markItemPath('shape', shape$1);\n\nvar symbol = markItemPath('symbol', symbol$1, intersectPoint);\n\n// memoize text width measurement\nconst widthCache = lruCache();\nvar textMetrics = {\n  height: fontSize,\n  measureWidth: measureWidth,\n  estimateWidth: estimateWidth,\n  width: estimateWidth,\n  canvas: useCanvas\n};\nuseCanvas(true);\nfunction useCanvas(use) {\n  textMetrics.width = use && context ? measureWidth : estimateWidth;\n}\n\n// make simple estimate if no canvas is available\nfunction estimateWidth(item, text) {\n  return _estimateWidth(textValue(item, text), fontSize(item));\n}\nfunction _estimateWidth(text, currentFontHeight) {\n  return ~~(0.8 * text.length * currentFontHeight);\n}\n\n// measure text width if canvas is available\nfunction measureWidth(item, text) {\n  return fontSize(item) <= 0 || !(text = textValue(item, text)) ? 0 : _measureWidth(text, font(item));\n}\nfunction _measureWidth(text, currentFont) {\n  const key = `(${currentFont}) ${text}`;\n  let width = widthCache.get(key);\n  if (width === undefined) {\n    context.font = currentFont;\n    width = context.measureText(text).width;\n    widthCache.set(key, width);\n  }\n  return width;\n}\nfunction fontSize(item) {\n  return item.fontSize != null ? +item.fontSize || 0 : 11;\n}\nfunction lineHeight(item) {\n  return item.lineHeight != null ? item.lineHeight : fontSize(item) + 2;\n}\nfunction lineArray(_) {\n  return isArray(_) ? _.length > 1 ? _ : _[0] : _;\n}\nfunction textLines(item) {\n  return lineArray(item.lineBreak && item.text && !isArray(item.text) ? item.text.split(item.lineBreak) : item.text);\n}\nfunction multiLineOffset(item) {\n  const tl = textLines(item);\n  return (isArray(tl) ? tl.length - 1 : 0) * lineHeight(item);\n}\nfunction textValue(item, line) {\n  const text = line == null ? '' : (line + '').trim();\n  return item.limit > 0 && text.length ? truncate(item, text) : text;\n}\nfunction widthGetter(item) {\n  if (textMetrics.width === measureWidth) {\n    // we are using canvas\n    const currentFont = font(item);\n    return text => _measureWidth(text, currentFont);\n  } else if (textMetrics.width === estimateWidth) {\n    // we are relying on estimates\n    const currentFontHeight = fontSize(item);\n    return text => _estimateWidth(text, currentFontHeight);\n  } else {\n    // User defined textMetrics.width function in use (e.g. vl-convert)\n    return text => textMetrics.width(item, text);\n  }\n}\nfunction truncate(item, text) {\n  var limit = +item.limit,\n    width = widthGetter(item);\n  if (width(text) < limit) return text;\n  var ellipsis = item.ellipsis || '\\u2026',\n    rtl = item.dir === 'rtl',\n    lo = 0,\n    hi = text.length,\n    mid;\n  limit -= width(ellipsis);\n  if (rtl) {\n    while (lo < hi) {\n      mid = lo + hi >>> 1;\n      if (width(text.slice(mid)) > limit) lo = mid + 1;else hi = mid;\n    }\n    return ellipsis + text.slice(lo);\n  } else {\n    while (lo < hi) {\n      mid = 1 + (lo + hi >>> 1);\n      if (width(text.slice(0, mid)) < limit) lo = mid;else hi = mid - 1;\n    }\n    return text.slice(0, lo) + ellipsis;\n  }\n}\nfunction fontFamily(item, quote) {\n  var font = item.font;\n  return (quote && font ? String(font).replace(/\"/g, '\\'') : font) || 'sans-serif';\n}\nfunction font(item, quote) {\n  return '' + (item.fontStyle ? item.fontStyle + ' ' : '') + (item.fontVariant ? item.fontVariant + ' ' : '') + (item.fontWeight ? item.fontWeight + ' ' : '') + fontSize(item) + 'px ' + fontFamily(item, quote);\n}\nfunction offset(item) {\n  // perform our own font baseline calculation\n  // why? not all browsers support SVG 1.1 'alignment-baseline' :(\n  // this also ensures consistent layout across renderers\n  var baseline = item.baseline,\n    h = fontSize(item);\n  return Math.round(baseline === 'top' ? 0.79 * h : baseline === 'middle' ? 0.30 * h : baseline === 'bottom' ? -0.21 * h : baseline === 'line-top' ? 0.29 * h + 0.5 * lineHeight(item) : baseline === 'line-bottom' ? 0.29 * h - 0.5 * lineHeight(item) : 0);\n}\n\nconst textAlign = {\n  'left': 'start',\n  'center': 'middle',\n  'right': 'end'\n};\nconst tempBounds = new Bounds();\nfunction anchorPoint(item) {\n  var x = item.x || 0,\n    y = item.y || 0,\n    r = item.radius || 0,\n    t;\n  if (r) {\n    t = (item.theta || 0) - HalfPi;\n    x += r * Math.cos(t);\n    y += r * Math.sin(t);\n  }\n  tempBounds.x1 = x;\n  tempBounds.y1 = y;\n  return tempBounds;\n}\nfunction attr(emit, item) {\n  var dx = item.dx || 0,\n    dy = (item.dy || 0) + offset(item),\n    p = anchorPoint(item),\n    x = p.x1,\n    y = p.y1,\n    a = item.angle || 0,\n    t;\n  emit('text-anchor', textAlign[item.align] || 'start');\n  if (a) {\n    t = translate(x, y) + ' ' + rotate(a);\n    if (dx || dy) t += ' ' + translate(dx, dy);\n  } else {\n    t = translate(x + dx, y + dy);\n  }\n  emit('transform', t);\n}\nfunction bound(bounds, item, mode) {\n  var h = textMetrics.height(item),\n    a = item.align,\n    p = anchorPoint(item),\n    x = p.x1,\n    y = p.y1,\n    dx = item.dx || 0,\n    dy = (item.dy || 0) + offset(item) - Math.round(0.8 * h),\n    // use 4/5 offset\n    tl = textLines(item),\n    w;\n\n  // get dimensions\n  if (isArray(tl)) {\n    // multi-line text\n    h += lineHeight(item) * (tl.length - 1);\n    w = tl.reduce((w, t) => Math.max(w, textMetrics.width(item, t)), 0);\n  } else {\n    // single-line text\n    w = textMetrics.width(item, tl);\n  }\n\n  // horizontal alignment\n  if (a === 'center') {\n    dx -= w / 2;\n  } else if (a === 'right') {\n    dx -= w;\n  } else ;\n  bounds.set(dx += x, dy += y, dx + w, dy + h);\n  if (item.angle && !mode) {\n    bounds.rotate(item.angle * DegToRad, x, y);\n  } else if (mode === 2) {\n    return bounds.rotatedPoints(item.angle * DegToRad, x, y);\n  }\n  return bounds;\n}\nfunction draw(context, scene, bounds) {\n  visit(scene, item => {\n    var opacity = item.opacity == null ? 1 : item.opacity,\n      p,\n      x,\n      y,\n      i,\n      lh,\n      tl,\n      str;\n    if (bounds && !bounds.intersects(item.bounds) ||\n    // bounds check\n    opacity === 0 || item.fontSize <= 0 || item.text == null || item.text.length === 0) return;\n    context.font = font(item);\n    context.textAlign = item.align || 'left';\n    p = anchorPoint(item);\n    x = p.x1, y = p.y1;\n    if (item.angle) {\n      context.save();\n      context.translate(x, y);\n      context.rotate(item.angle * DegToRad);\n      x = y = 0; // reset x, y\n    }\n\n    x += item.dx || 0;\n    y += (item.dy || 0) + offset(item);\n    tl = textLines(item);\n    blend(context, item);\n    if (isArray(tl)) {\n      lh = lineHeight(item);\n      for (i = 0; i < tl.length; ++i) {\n        str = textValue(item, tl[i]);\n        if (item.fill && fill(context, item, opacity)) {\n          context.fillText(str, x, y);\n        }\n        if (item.stroke && stroke(context, item, opacity)) {\n          context.strokeText(str, x, y);\n        }\n        y += lh;\n      }\n    } else {\n      str = textValue(item, tl);\n      if (item.fill && fill(context, item, opacity)) {\n        context.fillText(str, x, y);\n      }\n      if (item.stroke && stroke(context, item, opacity)) {\n        context.strokeText(str, x, y);\n      }\n    }\n    if (item.angle) context.restore();\n  });\n}\nfunction hit(context, item, x, y, gx, gy) {\n  if (item.fontSize <= 0) return false;\n  if (!item.angle) return true; // bounds sufficient if no rotation\n\n  // project point into space of unrotated bounds\n  var p = anchorPoint(item),\n    ax = p.x1,\n    ay = p.y1,\n    b = bound(tempBounds, item, 1),\n    a = -item.angle * DegToRad,\n    cos = Math.cos(a),\n    sin = Math.sin(a),\n    px = cos * gx - sin * gy + (ax - cos * ax + sin * ay),\n    py = sin * gx + cos * gy + (ay - sin * ax - cos * ay);\n  return b.contains(px, py);\n}\nfunction intersectText(item, box) {\n  const p = bound(tempBounds, item, 2);\n  return intersectBoxLine(box, p[0], p[1], p[2], p[3]) || intersectBoxLine(box, p[0], p[1], p[4], p[5]) || intersectBoxLine(box, p[4], p[5], p[6], p[7]) || intersectBoxLine(box, p[2], p[3], p[6], p[7]);\n}\nvar text = {\n  type: 'text',\n  tag: 'text',\n  nested: false,\n  attr: attr,\n  bound: bound,\n  draw: draw,\n  pick: pick$1(hit),\n  isect: intersectText\n};\n\nvar trail = markMultiItemPath('trail', trail$1, pickTrail);\n\nvar Marks = {\n  arc: arc,\n  area: area,\n  group: group,\n  image: image,\n  line: line,\n  path: path$2,\n  rect: rect,\n  rule: rule,\n  shape: shape,\n  symbol: symbol,\n  text: text,\n  trail: trail\n};\n\nfunction boundItem (item, func, opt) {\n  var type = Marks[item.mark.marktype],\n    bound = func || type.bound;\n  if (type.nested) item = item.mark;\n  return bound(item.bounds || (item.bounds = new Bounds()), item, opt);\n}\n\nvar DUMMY = {\n  mark: null\n};\nfunction boundMark (mark, bounds, opt) {\n  var type = Marks[mark.marktype],\n    bound = type.bound,\n    items = mark.items,\n    hasItems = items && items.length,\n    i,\n    n,\n    item,\n    b;\n  if (type.nested) {\n    if (hasItems) {\n      item = items[0];\n    } else {\n      // no items, fake it\n      DUMMY.mark = mark;\n      item = DUMMY;\n    }\n    b = boundItem(item, bound, opt);\n    bounds = bounds && bounds.union(b) || b;\n    return bounds;\n  }\n  bounds = bounds || mark.bounds && mark.bounds.clear() || new Bounds();\n  if (hasItems) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      bounds.union(boundItem(items[i], bound, opt));\n    }\n  }\n  return mark.bounds = bounds;\n}\n\nconst keys = ['marktype', 'name', 'role', 'interactive', 'clip', 'items', 'zindex', 'x', 'y', 'width', 'height', 'align', 'baseline',\n// layout\n'fill', 'fillOpacity', 'opacity', 'blend',\n// fill\n'stroke', 'strokeOpacity', 'strokeWidth', 'strokeCap',\n// stroke\n'strokeDash', 'strokeDashOffset',\n// stroke dash\n'strokeForeground', 'strokeOffset',\n// group\n'startAngle', 'endAngle', 'innerRadius', 'outerRadius',\n// arc\n'cornerRadius', 'padAngle',\n// arc, rect\n'cornerRadiusTopLeft', 'cornerRadiusTopRight',\n// rect, group\n'cornerRadiusBottomLeft', 'cornerRadiusBottomRight', 'interpolate', 'tension', 'orient', 'defined',\n// area, line\n'url', 'aspect', 'smooth',\n// image\n'path', 'scaleX', 'scaleY',\n// path\n'x2', 'y2',\n// rule\n'size', 'shape',\n// symbol\n'text', 'angle', 'theta', 'radius', 'dir', 'dx', 'dy',\n// text\n'ellipsis', 'limit', 'lineBreak', 'lineHeight', 'font', 'fontSize', 'fontWeight', 'fontStyle', 'fontVariant',\n// font\n'description', 'aria', 'ariaRole', 'ariaRoleDescription' // aria\n];\n\nfunction sceneToJSON(scene, indent) {\n  return JSON.stringify(scene, keys, indent);\n}\nfunction sceneFromJSON(json) {\n  const scene = typeof json === 'string' ? JSON.parse(json) : json;\n  return initialize(scene);\n}\nfunction initialize(scene) {\n  var type = scene.marktype,\n    items = scene.items,\n    parent,\n    i,\n    n;\n  if (items) {\n    for (i = 0, n = items.length; i < n; ++i) {\n      parent = type ? 'mark' : 'group';\n      items[i][parent] = scene;\n      if (items[i].zindex) items[i][parent].zdirty = true;\n      if ('group' === (type || parent)) initialize(items[i]);\n    }\n  }\n  if (type) boundMark(scene);\n  return scene;\n}\n\nfunction Scenegraph(scene) {\n  if (arguments.length) {\n    this.root = sceneFromJSON(scene);\n  } else {\n    this.root = createMark({\n      marktype: 'group',\n      name: 'root',\n      role: 'frame'\n    });\n    this.root.items = [new GroupItem(this.root)];\n  }\n}\nScenegraph.prototype = {\n  toJSON(indent) {\n    return sceneToJSON(this.root, indent || 0);\n  },\n  mark(markdef, group, index) {\n    group = group || this.root.items[0];\n    const mark = createMark(markdef, group);\n    group.items[index] = mark;\n    if (mark.zindex) mark.group.zdirty = true;\n    return mark;\n  }\n};\nfunction createMark(def, group) {\n  const mark = {\n    bounds: new Bounds(),\n    clip: !!def.clip,\n    group: group,\n    interactive: def.interactive === false ? false : true,\n    items: [],\n    marktype: def.marktype,\n    name: def.name || undefined,\n    role: def.role || undefined,\n    zindex: def.zindex || 0\n  };\n\n  // add accessibility properties if defined\n  if (def.aria != null) {\n    mark.aria = def.aria;\n  }\n  if (def.description) {\n    mark.description = def.description;\n  }\n  return mark;\n}\n\n// create a new DOM element\nfunction domCreate(doc, tag, ns) {\n  if (!doc && typeof document !== 'undefined' && document.createElement) {\n    doc = document;\n  }\n  return doc ? ns ? doc.createElementNS(ns, tag) : doc.createElement(tag) : null;\n}\n\n// find first child element with matching tag\nfunction domFind(el, tag) {\n  tag = tag.toLowerCase();\n  var nodes = el.childNodes,\n    i = 0,\n    n = nodes.length;\n  for (; i < n; ++i) if (nodes[i].tagName.toLowerCase() === tag) {\n    return nodes[i];\n  }\n}\n\n// retrieve child element at given index\n// create & insert if doesn't exist or if tags do not match\nfunction domChild(el, index, tag, ns) {\n  var a = el.childNodes[index],\n    b;\n  if (!a || a.tagName.toLowerCase() !== tag.toLowerCase()) {\n    b = a || null;\n    a = domCreate(el.ownerDocument, tag, ns);\n    el.insertBefore(a, b);\n  }\n  return a;\n}\n\n// remove all child elements at or above the given index\nfunction domClear(el, index) {\n  var nodes = el.childNodes,\n    curr = nodes.length;\n  while (curr > index) el.removeChild(nodes[--curr]);\n  return el;\n}\n\n// generate css class name for mark\nfunction cssClass(mark) {\n  return 'mark-' + mark.marktype + (mark.role ? ' role-' + mark.role : '') + (mark.name ? ' ' + mark.name : '');\n}\n\nfunction point (event, el) {\n  const rect = el.getBoundingClientRect();\n  return [event.clientX - rect.left - (el.clientLeft || 0), event.clientY - rect.top - (el.clientTop || 0)];\n}\n\nfunction resolveItem (item, event, el, origin) {\n  var mark = item && item.mark,\n    mdef,\n    p;\n  if (mark && (mdef = Marks[mark.marktype]).tip) {\n    p = point(event, el);\n    p[0] -= origin[0];\n    p[1] -= origin[1];\n    while (item = item.mark.group) {\n      p[0] -= item.x || 0;\n      p[1] -= item.y || 0;\n    }\n    item = mdef.tip(mark.items, p);\n  }\n  return item;\n}\n\n/**\n * Create a new Handler instance.\n * @param {object} [customLoader] - Optional loader instance for\n *   href URL sanitization. If not specified, a standard loader\n *   instance will be generated.\n * @param {function} [customTooltip] - Optional tooltip handler\n *   function for custom tooltip display.\n * @constructor\n */\nfunction Handler(customLoader, customTooltip) {\n  this._active = null;\n  this._handlers = {};\n  this._loader = customLoader || loader();\n  this._tooltip = customTooltip || defaultTooltip;\n}\n\n// The default tooltip display handler.\n// Sets the HTML title attribute on the visualization container.\nfunction defaultTooltip(handler, event, item, value) {\n  handler.element().setAttribute('title', value || '');\n}\nHandler.prototype = {\n  /**\n   * Initialize a new Handler instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {object} [obj] - Optional context object that should serve as\n   *   the \"this\" context for event callbacks.\n   * @return {Handler} - This handler instance.\n   */\n  initialize(el, origin, obj) {\n    this._el = el;\n    this._obj = obj || null;\n    return this.origin(origin);\n  },\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n  /**\n   * Get / set the origin coordinates of the visualization.\n   */\n  origin(origin) {\n    if (arguments.length) {\n      this._origin = origin || [0, 0];\n      return this;\n    } else {\n      return this._origin.slice();\n    }\n  },\n  /**\n   * Get / set the scenegraph root.\n   */\n  scene(scene) {\n    if (!arguments.length) return this._scene;\n    this._scene = scene;\n    return this;\n  },\n  /**\n   * Add an event handler. Subclasses should override this method.\n   */\n  on( /*type, handler*/) {},\n  /**\n   * Remove an event handler. Subclasses should override this method.\n   */\n  off( /*type, handler*/) {},\n  /**\n   * Utility method for finding the array index of an event handler.\n   * @param {Array} h - An array of registered event handlers.\n   * @param {string} type - The event type.\n   * @param {function} handler - The event handler instance to find.\n   * @return {number} - The handler's array index or -1 if not registered.\n   */\n  _handlerIndex(h, type, handler) {\n    for (let i = h ? h.length : 0; --i >= 0;) {\n      if (h[i].type === type && (!handler || h[i].handler === handler)) {\n        return i;\n      }\n    }\n    return -1;\n  },\n  /**\n   * Returns an array with registered event handlers.\n   * @param {string} [type] - The event type to query. Any annotations\n   *   are ignored; for example, for the argument \"click.foo\", \".foo\" will\n   *   be ignored and the method returns all \"click\" handlers. If type is\n   *   null or unspecified, this method returns handlers for all types.\n   * @return {Array} - A new array containing all registered event handlers.\n   */\n  handlers(type) {\n    const h = this._handlers,\n      a = [];\n    if (type) {\n      a.push(...h[this.eventName(type)]);\n    } else {\n      for (const k in h) {\n        a.push(...h[k]);\n      }\n    }\n    return a;\n  },\n  /**\n   * Parses an event name string to return the specific event type.\n   * For example, given \"click.foo\" returns \"click\"\n   * @param {string} name - The input event type string.\n   * @return {string} - A string with the event type only.\n   */\n  eventName(name) {\n    const i = name.indexOf('.');\n    return i < 0 ? name : name.slice(0, i);\n  },\n  /**\n   * Handle hyperlink navigation in response to an item.href value.\n   * @param {Event} event - The event triggering hyperlink navigation.\n   * @param {Item} item - The scenegraph item.\n   * @param {string} href - The URL to navigate to.\n   */\n  handleHref(event, item, href) {\n    this._loader.sanitize(href, {\n      context: 'href'\n    }).then(opt => {\n      const e = new MouseEvent(event.type, event),\n        a = domCreate(null, 'a');\n      for (const name in opt) a.setAttribute(name, opt[name]);\n      a.dispatchEvent(e);\n    }).catch(() => {/* do nothing */});\n  },\n  /**\n   * Handle tooltip display in response to an item.tooltip value.\n   * @param {Event} event - The event triggering tooltip display.\n   * @param {Item} item - The scenegraph item.\n   * @param {boolean} show - A boolean flag indicating whether\n   *   to show or hide a tooltip for the given item.\n   */\n  handleTooltip(event, item, show) {\n    if (item && item.tooltip != null) {\n      item = resolveItem(item, event, this.canvas(), this._origin);\n      const value = show && item && item.tooltip || null;\n      this._tooltip.call(this._obj, this, event, item, value);\n    }\n  },\n  /**\n   * Returns the size of a scenegraph item and its position relative\n   * to the viewport.\n   * @param {Item} item - The scenegraph item.\n   * @return {object} - A bounding box object (compatible with the\n   *   DOMRect type) consisting of x, y, width, heigh, top, left,\n   *   right, and bottom properties.\n   */\n  getItemBoundingClientRect(item) {\n    const el = this.canvas();\n    if (!el) return;\n    const rect = el.getBoundingClientRect(),\n      origin = this._origin,\n      bounds = item.bounds,\n      width = bounds.width(),\n      height = bounds.height();\n    let x = bounds.x1 + origin[0] + rect.left,\n      y = bounds.y1 + origin[1] + rect.top;\n\n    // translate coordinate for each parent group\n    while (item.mark && (item = item.mark.group)) {\n      x += item.x || 0;\n      y += item.y || 0;\n    }\n\n    // return DOMRect-compatible bounding box\n    return {\n      x,\n      y,\n      width,\n      height,\n      left: x,\n      top: y,\n      right: x + width,\n      bottom: y + height\n    };\n  }\n};\n\n/**\n * Create a new Renderer instance.\n * @param {object} [loader] - Optional loader instance for\n *   image and href URL sanitization. If not specified, a\n *   standard loader instance will be generated.\n * @constructor\n */\nfunction Renderer(loader) {\n  this._el = null;\n  this._bgcolor = null;\n  this._loader = new ResourceLoader(loader);\n}\nRenderer.prototype = {\n  /**\n   * Initialize a new Renderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    this._el = el;\n    return this.resize(width, height, origin, scaleFactor);\n  },\n  /**\n   * Returns the parent container element for a visualization.\n   * @return {DOMElement} - The containing DOM element.\n   */\n  element() {\n    return this._el;\n  },\n  /**\n   * Returns the scene element (e.g., canvas or SVG) of the visualization\n   * Subclasses must override if the first child is not the scene element.\n   * @return {DOMElement} - The scene (e.g., canvas or SVG) element.\n   */\n  canvas() {\n    return this._el && this._el.firstChild;\n  },\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length === 0) return this._bgcolor;\n    this._bgcolor = bgcolor;\n    return this;\n  },\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {Renderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    this._width = width;\n    this._height = height;\n    this._origin = origin || [0, 0];\n    this._scale = scaleFactor || 1;\n    return this;\n  },\n  /**\n   * Report a dirty item whose bounds should be redrawn.\n   * This base class method does nothing. Subclasses that perform\n   * incremental should implement this method.\n   * @param {Item} item - The dirty item whose bounds should be redrawn.\n   */\n  dirty( /*item*/) {},\n  /**\n   * Render an input scenegraph, potentially with a set of dirty items.\n   * This method will perform an immediate rendering with available resources.\n   * The renderer may also need to perform image loading to perform a complete\n   * render. This process can lead to asynchronous re-rendering of the scene\n   * after this method returns. To receive notification when rendering is\n   * complete, use the renderAsync method instead.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @param {Array} markTypes - Array of the mark types to render.\n   *                            If undefined, render all mark types\n   * @return {Renderer} - This renderer instance.\n   */\n  render(scene, markTypes) {\n    const r = this;\n\n    // bind arguments into a render call, and cache it\n    // this function may be subsequently called for async redraw\n    r._call = function () {\n      r._render(scene, markTypes);\n    };\n\n    // invoke the renderer\n    r._call();\n\n    // clear the cached call for garbage collection\n    // async redraws will stash their own copy\n    r._call = null;\n    return r;\n  },\n  /**\n   * Internal rendering method. Renderer subclasses should override this\n   * method to actually perform rendering.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @param {Array} markTypes - Array of the mark types to render.\n   *                            If undefined, render all mark types\n   */\n  _render( /*scene, markTypes*/\n  ) {\n    // subclasses to override\n  },\n  /**\n   * Asynchronous rendering method. Similar to render, but returns a Promise\n   * that resolves when all rendering is completed. Sometimes a renderer must\n   * perform image loading to get a complete rendering. The returned\n   * Promise will not resolve until this process completes.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @param {Array} markTypes - Array of the mark types to render.\n   *                            If undefined, render all mark types\n   * @return {Promise} - A Promise that resolves when rendering is complete.\n   */\n  renderAsync(scene, markTypes) {\n    const r = this.render(scene, markTypes);\n    return this._ready ? this._ready.then(() => r) : Promise.resolve(r);\n  },\n  /**\n   * Internal method for asynchronous resource loading.\n   * Proxies method calls to the ImageLoader, and tracks loading\n   * progress to invoke a re-render once complete.\n   * @param {string} method - The method name to invoke on the ImageLoader.\n   * @param {string} uri - The URI for the requested resource.\n   * @return {Promise} - A Promise that resolves to the requested resource.\n   */\n  _load(method, uri) {\n    var r = this,\n      p = r._loader[method](uri);\n    if (!r._ready) {\n      // re-render the scene when loading completes\n      const call = r._call;\n      r._ready = r._loader.ready().then(redraw => {\n        if (redraw) call();\n        r._ready = null;\n      });\n    }\n    return p;\n  },\n  /**\n   * Sanitize a URL to include as a hyperlink in the rendered scene.\n   * This method proxies a call to ImageLoader.sanitizeURL, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string to sanitize.\n   * @return {Promise} - A Promise that resolves to the sanitized URL.\n   */\n  sanitizeURL(uri) {\n    return this._load('sanitizeURL', uri);\n  },\n  /**\n   * Requests an image to include in the rendered scene.\n   * This method proxies a call to ImageLoader.loadImage, but also tracks\n   * image loading progress and invokes a re-render once complete.\n   * @param {string} uri - The URI string of the image.\n   * @return {Promise} - A Promise that resolves to the loaded Image.\n   */\n  loadImage(uri) {\n    return this._load('loadImage', uri);\n  }\n};\n\nconst KeyDownEvent = 'keydown';\nconst KeyPressEvent = 'keypress';\nconst KeyUpEvent = 'keyup';\nconst DragEnterEvent = 'dragenter';\nconst DragLeaveEvent = 'dragleave';\nconst DragOverEvent = 'dragover';\nconst PointerDownEvent = 'pointerdown';\nconst PointerUpEvent = 'pointerup';\nconst PointerMoveEvent = 'pointermove';\nconst PointerOutEvent = 'pointerout';\nconst PointerOverEvent = 'pointerover';\nconst MouseDownEvent = 'mousedown';\nconst MouseUpEvent = 'mouseup';\nconst MouseMoveEvent = 'mousemove';\nconst MouseOutEvent = 'mouseout';\nconst MouseOverEvent = 'mouseover';\nconst ClickEvent = 'click';\nconst DoubleClickEvent = 'dblclick';\nconst WheelEvent = 'wheel';\nconst MouseWheelEvent = 'mousewheel';\nconst TouchStartEvent = 'touchstart';\nconst TouchMoveEvent = 'touchmove';\nconst TouchEndEvent = 'touchend';\nconst Events = [KeyDownEvent, KeyPressEvent, KeyUpEvent, DragEnterEvent, DragLeaveEvent, DragOverEvent, PointerDownEvent, PointerUpEvent, PointerMoveEvent, PointerOutEvent, PointerOverEvent, MouseDownEvent, MouseUpEvent, MouseMoveEvent, MouseOutEvent, MouseOverEvent, ClickEvent, DoubleClickEvent, WheelEvent, MouseWheelEvent, TouchStartEvent, TouchMoveEvent, TouchEndEvent];\nconst TooltipShowEvent = PointerMoveEvent;\nconst TooltipHideEvent = PointerOutEvent;\nconst HrefEvent = ClickEvent;\n\nfunction CanvasHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  this._down = null;\n  this._touch = null;\n  this._first = true;\n  this._events = {};\n}\nconst eventBundle = type => type === TouchStartEvent || type === TouchMoveEvent || type === TouchEndEvent ? [TouchStartEvent, TouchMoveEvent, TouchEndEvent] : [type];\n\n// lazily add listeners to the canvas as needed\nfunction eventListenerCheck(handler, type) {\n  eventBundle(type).forEach(_ => addEventListener(handler, _));\n}\nfunction addEventListener(handler, type) {\n  const canvas = handler.canvas();\n  if (canvas && !handler._events[type]) {\n    handler._events[type] = 1;\n    canvas.addEventListener(type, handler[type] ? evt => handler[type](evt) : evt => handler.fire(type, evt));\n  }\n}\nfunction fireAll(handler, types, event) {\n  types.forEach(type => handler.fire(type, event));\n}\nfunction move(moveEvents, overEvents, outEvents) {\n  return function (evt) {\n    const a = this._active,\n      p = this.pickEvent(evt);\n    if (p === a) {\n      // active item and picked item are the same\n      fireAll(this, moveEvents, evt); // fire move\n    } else {\n      // active item and picked item are different\n      if (!a || !a.exit) {\n        // fire out for prior active item\n        // suppress if active item was removed from scene\n        fireAll(this, outEvents, evt);\n      }\n      this._active = p; // set new active item\n      fireAll(this, overEvents, evt); // fire over for new active item\n      fireAll(this, moveEvents, evt); // fire move for new active item\n    }\n  };\n}\n\nfunction inactive(types) {\n  return function (evt) {\n    fireAll(this, types, evt);\n    this._active = null;\n  };\n}\ninherits(CanvasHandler, Handler, {\n  initialize(el, origin, obj) {\n    this._canvas = el && domFind(el, 'canvas');\n\n    // add minimal events required for proper state management\n    [ClickEvent, MouseDownEvent, PointerDownEvent, PointerMoveEvent, PointerOutEvent, DragLeaveEvent].forEach(type => eventListenerCheck(this, type));\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n  // return the backing canvas instance\n  canvas() {\n    return this._canvas;\n  },\n  // retrieve the current canvas context\n  context() {\n    return this._canvas.getContext('2d');\n  },\n  // supported events\n  events: Events,\n  // to keep old versions of firefox happy\n  DOMMouseScroll(evt) {\n    this.fire(MouseWheelEvent, evt);\n  },\n  pointermove: move([PointerMoveEvent, MouseMoveEvent], [PointerOverEvent, MouseOverEvent], [PointerOutEvent, MouseOutEvent]),\n  dragover: move([DragOverEvent], [DragEnterEvent], [DragLeaveEvent]),\n  pointerout: inactive([PointerOutEvent, MouseOutEvent]),\n  dragleave: inactive([DragLeaveEvent]),\n  pointerdown(evt) {\n    this._down = this._active;\n    this.fire(PointerDownEvent, evt);\n  },\n  mousedown(evt) {\n    this._down = this._active;\n    this.fire(MouseDownEvent, evt);\n  },\n  click(evt) {\n    if (this._down === this._active) {\n      this.fire(ClickEvent, evt);\n      this._down = null;\n    }\n  },\n  touchstart(evt) {\n    this._touch = this.pickEvent(evt.changedTouches[0]);\n    if (this._first) {\n      this._active = this._touch;\n      this._first = false;\n    }\n    this.fire(TouchStartEvent, evt, true);\n  },\n  touchmove(evt) {\n    this.fire(TouchMoveEvent, evt, true);\n  },\n  touchend(evt) {\n    this.fire(TouchEndEvent, evt, true);\n    this._touch = null;\n  },\n  // fire an event\n  fire(type, evt, touch) {\n    const a = touch ? this._touch : this._active,\n      h = this._handlers[type];\n\n    // set event type relative to scenegraph items\n    evt.vegaType = type;\n\n    // handle hyperlinks and tooltips first\n    if (type === HrefEvent && a && a.href) {\n      this.handleHref(evt, a, a.href);\n    } else if (type === TooltipShowEvent || type === TooltipHideEvent) {\n      this.handleTooltip(evt, a, type !== TooltipHideEvent);\n    }\n\n    // invoke all registered handlers\n    if (h) {\n      for (let i = 0, len = h.length; i < len; ++i) {\n        h[i].handler.call(this._obj, evt, a);\n      }\n    }\n  },\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n      h = this._handlers,\n      i = this._handlerIndex(h[name], type, handler);\n    if (i < 0) {\n      eventListenerCheck(this, type);\n      (h[name] || (h[name] = [])).push({\n        type: type,\n        handler: handler\n      });\n    }\n    return this;\n  },\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n      h = this._handlers[name],\n      i = this._handlerIndex(h, type, handler);\n    if (i >= 0) {\n      h.splice(i, 1);\n    }\n    return this;\n  },\n  pickEvent(evt) {\n    const p = point(evt, this._canvas),\n      o = this._origin;\n    return this.pick(this._scene, p[0], p[1], p[0] - o[0], p[1] - o[1]);\n  },\n  // find the scenegraph item at the current pointer position\n  // x, y -- the absolute x, y pointer coordinates on the canvas element\n  // gx, gy -- the relative coordinates within the current group\n  pick(scene, x, y, gx, gy) {\n    const g = this.context(),\n      mark = Marks[scene.marktype];\n    return mark.pick.call(this, g, scene, x, y, gx, gy);\n  }\n});\n\nfunction devicePixelRatio() {\n  return typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n}\nvar pixelRatio = devicePixelRatio();\nfunction resize (canvas, width, height, origin, scaleFactor, opt) {\n  const inDOM = typeof HTMLElement !== 'undefined' && canvas instanceof HTMLElement && canvas.parentNode != null,\n    context = canvas.getContext('2d'),\n    ratio = inDOM ? pixelRatio : scaleFactor;\n  canvas.width = width * ratio;\n  canvas.height = height * ratio;\n  for (const key in opt) {\n    context[key] = opt[key];\n  }\n  if (inDOM && ratio !== 1) {\n    canvas.style.width = width + 'px';\n    canvas.style.height = height + 'px';\n  }\n  context.pixelRatio = ratio;\n  context.setTransform(ratio, 0, 0, ratio, ratio * origin[0], ratio * origin[1]);\n  return canvas;\n}\n\nfunction CanvasRenderer(loader) {\n  Renderer.call(this, loader);\n  this._options = {};\n  this._redraw = false;\n  this._dirty = new Bounds();\n  this._tempb = new Bounds();\n}\nconst base$2 = Renderer.prototype;\nconst viewBounds = (origin, width, height) => new Bounds().set(0, 0, width, height).translate(-origin[0], -origin[1]);\nfunction clipToBounds(g, b, origin) {\n  // expand bounds by 1 pixel, then round to pixel boundaries\n  b.expand(1).round();\n\n  // align to base pixel grid in case of non-integer scaling (#2425)\n  if (g.pixelRatio % 1) {\n    b.scale(g.pixelRatio).round().scale(1 / g.pixelRatio);\n  }\n\n  // to avoid artifacts translate if origin has fractional pixels\n  b.translate(-(origin[0] % 1), -(origin[1] % 1));\n\n  // set clip path\n  g.beginPath();\n  g.rect(b.x1, b.y1, b.width(), b.height());\n  g.clip();\n  return b;\n}\ninherits(CanvasRenderer, Renderer, {\n  initialize(el, width, height, origin, scaleFactor, options) {\n    this._options = options || {};\n    this._canvas = this._options.externalContext ? null : canvas(1, 1, this._options.type); // instantiate a small canvas\n\n    if (el && this._canvas) {\n      domClear(el, 0).appendChild(this._canvas);\n      this._canvas.setAttribute('class', 'marks');\n    }\n\n    // this method will invoke resize to size the canvas appropriately\n    return base$2.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n  resize(width, height, origin, scaleFactor) {\n    base$2.resize.call(this, width, height, origin, scaleFactor);\n    if (this._canvas) {\n      // configure canvas size and transform\n      resize(this._canvas, this._width, this._height, this._origin, this._scale, this._options.context);\n    } else {\n      // external context needs to be scaled and positioned to origin\n      const ctx = this._options.externalContext;\n      if (!ctx) error('CanvasRenderer is missing a valid canvas or context');\n      ctx.scale(this._scale, this._scale);\n      ctx.translate(this._origin[0], this._origin[1]);\n    }\n    this._redraw = true;\n    return this;\n  },\n  canvas() {\n    return this._canvas;\n  },\n  context() {\n    return this._options.externalContext || (this._canvas ? this._canvas.getContext('2d') : null);\n  },\n  dirty(item) {\n    const b = this._tempb.clear().union(item.bounds);\n    let g = item.mark.group;\n    while (g) {\n      b.translate(g.x || 0, g.y || 0);\n      g = g.mark.group;\n    }\n    this._dirty.union(b);\n  },\n  _render(scene, markTypes) {\n    const g = this.context(),\n      o = this._origin,\n      w = this._width,\n      h = this._height,\n      db = this._dirty,\n      vb = viewBounds(o, w, h);\n\n    // setup\n    g.save();\n    const b = this._redraw || db.empty() ? (this._redraw = false, vb.expand(1)) : clipToBounds(g, vb.intersect(db), o);\n    this.clear(-o[0], -o[1], w, h);\n\n    // render\n    this.draw(g, scene, b, markTypes);\n\n    // takedown\n    g.restore();\n    db.clear();\n    return this;\n  },\n  draw(ctx, scene, bounds, markTypes) {\n    if (scene.marktype !== 'group' && markTypes != null && !markTypes.includes(scene.marktype)) {\n      return;\n    }\n    const mark = Marks[scene.marktype];\n    if (scene.clip) clip(ctx, scene);\n    mark.draw.call(this, ctx, scene, bounds, markTypes);\n    if (scene.clip) ctx.restore();\n  },\n  clear(x, y, w, h) {\n    const opt = this._options,\n      g = this.context();\n    if (opt.type !== 'pdf' && !opt.externalContext) {\n      // calling clear rect voids vector output in pdf mode\n      // and could remove external context content (#2615)\n      g.clearRect(x, y, w, h);\n    }\n    if (this._bgcolor != null) {\n      g.fillStyle = this._bgcolor;\n      g.fillRect(x, y, w, h);\n    }\n  }\n});\n\nfunction SVGHandler(loader, tooltip) {\n  Handler.call(this, loader, tooltip);\n  const h = this;\n  h._hrefHandler = listener(h, (evt, item) => {\n    if (item && item.href) h.handleHref(evt, item, item.href);\n  });\n  h._tooltipHandler = listener(h, (evt, item) => {\n    h.handleTooltip(evt, item, evt.type !== TooltipHideEvent);\n  });\n}\n\n// wrap an event listener for the SVG DOM\nconst listener = (context, handler) => evt => {\n  let item = evt.target.__data__;\n  item = Array.isArray(item) ? item[0] : item;\n  evt.vegaType = evt.type;\n  handler.call(context._obj, evt, item);\n};\ninherits(SVGHandler, Handler, {\n  initialize(el, origin, obj) {\n    let svg = this._svg;\n    if (svg) {\n      svg.removeEventListener(HrefEvent, this._hrefHandler);\n      svg.removeEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.removeEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n    this._svg = svg = el && domFind(el, 'svg');\n    if (svg) {\n      svg.addEventListener(HrefEvent, this._hrefHandler);\n      svg.addEventListener(TooltipShowEvent, this._tooltipHandler);\n      svg.addEventListener(TooltipHideEvent, this._tooltipHandler);\n    }\n    return Handler.prototype.initialize.call(this, el, origin, obj);\n  },\n  canvas() {\n    return this._svg;\n  },\n  // add an event handler\n  on(type, handler) {\n    const name = this.eventName(type),\n      h = this._handlers,\n      i = this._handlerIndex(h[name], type, handler);\n    if (i < 0) {\n      const x = {\n        type,\n        handler,\n        listener: listener(this, handler)\n      };\n      (h[name] || (h[name] = [])).push(x);\n      if (this._svg) {\n        this._svg.addEventListener(name, x.listener);\n      }\n    }\n    return this;\n  },\n  // remove an event handler\n  off(type, handler) {\n    const name = this.eventName(type),\n      h = this._handlers[name],\n      i = this._handlerIndex(h, type, handler);\n    if (i >= 0) {\n      if (this._svg) {\n        this._svg.removeEventListener(name, h[i].listener);\n      }\n      h.splice(i, 1);\n    }\n    return this;\n  }\n});\n\nconst ARIA_HIDDEN = 'aria-hidden';\nconst ARIA_LABEL = 'aria-label';\nconst ARIA_ROLE = 'role';\nconst ARIA_ROLEDESCRIPTION = 'aria-roledescription';\nconst GRAPHICS_OBJECT = 'graphics-object';\nconst GRAPHICS_SYMBOL = 'graphics-symbol';\nconst bundle = (role, roledesc, label) => ({\n  [ARIA_ROLE]: role,\n  [ARIA_ROLEDESCRIPTION]: roledesc,\n  [ARIA_LABEL]: label || undefined\n});\n\n// these roles are covered by related roles\n// we can ignore them, no need to generate attributes\nconst AriaIgnore = toSet(['axis-domain', 'axis-grid', 'axis-label', 'axis-tick', 'axis-title', 'legend-band', 'legend-entry', 'legend-gradient', 'legend-label', 'legend-title', 'legend-symbol', 'title']);\n\n// aria attribute generators for guide roles\nconst AriaGuides = {\n  'axis': {\n    desc: 'axis',\n    caption: axisCaption\n  },\n  'legend': {\n    desc: 'legend',\n    caption: legendCaption\n  },\n  'title-text': {\n    desc: 'title',\n    caption: item => `Title text '${titleCaption(item)}'`\n  },\n  'title-subtitle': {\n    desc: 'subtitle',\n    caption: item => `Subtitle text '${titleCaption(item)}'`\n  }\n};\n\n// aria properties generated for mark item encoding channels\nconst AriaEncode = {\n  ariaRole: ARIA_ROLE,\n  ariaRoleDescription: ARIA_ROLEDESCRIPTION,\n  description: ARIA_LABEL\n};\nfunction ariaItemAttributes(emit, item) {\n  const hide = item.aria === false;\n  emit(ARIA_HIDDEN, hide || undefined);\n  if (hide || item.description == null) {\n    for (const prop in AriaEncode) {\n      emit(AriaEncode[prop], undefined);\n    }\n  } else {\n    const type = item.mark.marktype;\n    emit(ARIA_LABEL, item.description);\n    emit(ARIA_ROLE, item.ariaRole || (type === 'group' ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL));\n    emit(ARIA_ROLEDESCRIPTION, item.ariaRoleDescription || `${type} mark`);\n  }\n}\nfunction ariaMarkAttributes(mark) {\n  return mark.aria === false ? {\n    [ARIA_HIDDEN]: true\n  } : AriaIgnore[mark.role] ? null : AriaGuides[mark.role] ? ariaGuide(mark, AriaGuides[mark.role]) : ariaMark(mark);\n}\nfunction ariaMark(mark) {\n  const type = mark.marktype;\n  const recurse = type === 'group' || type === 'text' || mark.items.some(_ => _.description != null && _.aria !== false);\n  return bundle(recurse ? GRAPHICS_OBJECT : GRAPHICS_SYMBOL, `${type} mark container`, mark.description);\n}\nfunction ariaGuide(mark, opt) {\n  try {\n    const item = mark.items[0],\n      caption = opt.caption || (() => '');\n    return bundle(opt.role || GRAPHICS_SYMBOL, opt.desc, item.description || caption(item));\n  } catch (err) {\n    return null;\n  }\n}\nfunction titleCaption(item) {\n  return array(item.text).join(' ');\n}\nfunction axisCaption(item) {\n  const datum = item.datum,\n    orient = item.orient,\n    title = datum.title ? extractTitle(item) : null,\n    ctx = item.context,\n    scale = ctx.scales[datum.scale].value,\n    locale = ctx.dataflow.locale(),\n    type = scale.type,\n    xy = orient === 'left' || orient === 'right' ? 'Y' : 'X';\n  return `${xy}-axis` + (title ? ` titled '${title}'` : '') + ` for a ${isDiscrete(type) ? 'discrete' : type} scale` + ` with ${domainCaption(locale, scale, item)}`;\n}\nfunction legendCaption(item) {\n  const datum = item.datum,\n    title = datum.title ? extractTitle(item) : null,\n    type = `${datum.type || ''} legend`.trim(),\n    scales = datum.scales,\n    props = Object.keys(scales),\n    ctx = item.context,\n    scale = ctx.scales[scales[props[0]]].value,\n    locale = ctx.dataflow.locale();\n  return capitalize(type) + (title ? ` titled '${title}'` : '') + ` for ${channelCaption(props)}` + ` with ${domainCaption(locale, scale, item)}`;\n}\nfunction extractTitle(item) {\n  try {\n    return array(peek(item.items).items[0].text).join(' ');\n  } catch (err) {\n    return null;\n  }\n}\nfunction channelCaption(props) {\n  props = props.map(p => p + (p === 'fill' || p === 'stroke' ? ' color' : ''));\n  return props.length < 2 ? props[0] : props.slice(0, -1).join(', ') + ' and ' + peek(props);\n}\nfunction capitalize(s) {\n  return s.length ? s[0].toUpperCase() + s.slice(1) : s;\n}\n\nconst innerText = val => (val + '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\nconst attrText = val => innerText(val).replace(/\"/g, '&quot;').replace(/\\t/g, '&#x9;').replace(/\\n/g, '&#xA;').replace(/\\r/g, '&#xD;');\nfunction markup() {\n  let buf = '',\n    outer = '',\n    inner = '';\n  const stack = [],\n    clear = () => outer = inner = '',\n    push = tag => {\n      if (outer) {\n        buf += `${outer}>${inner}`;\n        clear();\n      }\n      stack.push(tag);\n    },\n    attr = (name, value) => {\n      if (value != null) outer += ` ${name}=\"${attrText(value)}\"`;\n      return m;\n    },\n    m = {\n      open(tag) {\n        push(tag);\n        outer = '<' + tag;\n        for (var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          attrs[_key - 1] = arguments[_key];\n        }\n        for (const set of attrs) {\n          for (const key in set) attr(key, set[key]);\n        }\n        return m;\n      },\n      close() {\n        const tag = stack.pop();\n        if (outer) {\n          buf += outer + (inner ? `>${inner}</${tag}>` : '/>');\n        } else {\n          buf += `</${tag}>`;\n        }\n        clear();\n        return m;\n      },\n      attr,\n      text: t => (inner += innerText(t), m),\n      toString: () => buf\n    };\n  return m;\n}\nconst serializeXML = node => _serialize(markup(), node) + '';\nfunction _serialize(m, node) {\n  m.open(node.tagName);\n  if (node.hasAttributes()) {\n    const attrs = node.attributes,\n      n = attrs.length;\n    for (let i = 0; i < n; ++i) {\n      m.attr(attrs[i].name, attrs[i].value);\n    }\n  }\n  if (node.hasChildNodes()) {\n    const children = node.childNodes;\n    for (const child of children) {\n      child.nodeType === 3 // text node\n      ? m.text(child.nodeValue) : _serialize(m, child);\n    }\n  }\n  return m.close();\n}\n\nconst stylesAttr = {\n  fill: 'fill',\n  fillOpacity: 'fill-opacity',\n  stroke: 'stroke',\n  strokeOpacity: 'stroke-opacity',\n  strokeWidth: 'stroke-width',\n  strokeCap: 'stroke-linecap',\n  strokeJoin: 'stroke-linejoin',\n  strokeDash: 'stroke-dasharray',\n  strokeDashOffset: 'stroke-dashoffset',\n  strokeMiterLimit: 'stroke-miterlimit',\n  opacity: 'opacity'\n};\nconst stylesCss = {\n  blend: 'mix-blend-mode'\n};\n\n// ensure miter limit default is consistent with canvas (#2498)\nconst rootAttributes = {\n  'fill': 'none',\n  'stroke-miterlimit': 10\n};\n\nconst RootIndex = 0,\n  xmlns = 'http://www.w3.org/2000/xmlns/',\n  svgns = metadata.xmlns;\nfunction SVGRenderer(loader) {\n  Renderer.call(this, loader);\n  this._dirtyID = 0;\n  this._dirty = [];\n  this._svg = null;\n  this._root = null;\n  this._defs = null;\n}\nconst base$1 = Renderer.prototype;\ninherits(SVGRenderer, Renderer, {\n  /**\n   * Initialize a new SVGRenderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    // create the svg definitions cache\n    this._defs = {};\n    this._clearDefs();\n    if (el) {\n      this._svg = domChild(el, 0, 'svg', svgns);\n      this._svg.setAttributeNS(xmlns, 'xmlns', svgns);\n      this._svg.setAttributeNS(xmlns, 'xmlns:xlink', metadata['xmlns:xlink']);\n      this._svg.setAttribute('version', metadata['version']);\n      this._svg.setAttribute('class', 'marks');\n      domClear(el, 1);\n\n      // set the svg root group\n      this._root = domChild(this._svg, RootIndex, 'g', svgns);\n      setAttributes(this._root, rootAttributes);\n\n      // ensure no additional child elements\n      domClear(this._svg, RootIndex + 1);\n    }\n\n    // set background color if defined\n    this.background(this._bgcolor);\n    return base$1.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n  /**\n   * Get / set the background color.\n   */\n  background(bgcolor) {\n    if (arguments.length && this._svg) {\n      this._svg.style.setProperty('background-color', bgcolor);\n    }\n    return base$1.background.apply(this, arguments);\n  },\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    base$1.resize.call(this, width, height, origin, scaleFactor);\n    if (this._svg) {\n      setAttributes(this._svg, {\n        width: this._width * this._scale,\n        height: this._height * this._scale,\n        viewBox: `0 0 ${this._width} ${this._height}`\n      });\n      this._root.setAttribute('transform', `translate(${this._origin})`);\n    }\n    this._dirty = [];\n    return this;\n  },\n  /**\n   * Returns the SVG element of the visualization.\n   * @return {DOMElement} - The SVG element.\n   */\n  canvas() {\n    return this._svg;\n  },\n  /**\n   * Returns an SVG text string for the rendered content,\n   * or null if this renderer is currently headless.\n   */\n  svg() {\n    const svg = this._svg,\n      bg = this._bgcolor;\n    if (!svg) return null;\n    let node;\n    if (bg) {\n      svg.removeAttribute('style');\n      node = domChild(svg, RootIndex, 'rect', svgns);\n      setAttributes(node, {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      });\n    }\n    const text = serializeXML(svg);\n    if (bg) {\n      svg.removeChild(node);\n      this._svg.style.setProperty('background-color', bg);\n    }\n    return text;\n  },\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @param {Array} markTypes - Array of the mark types to render.\n   *                            If undefined, render all mark types\n   */\n  _render(scene, markTypes) {\n    // perform spot updates and re-render markup\n    if (this._dirtyCheck()) {\n      if (this._dirtyAll) this._clearDefs();\n      this.mark(this._root, scene, undefined, markTypes);\n      domClear(this._root, 1);\n    }\n    this.defs();\n    this._dirty = [];\n    ++this._dirtyID;\n    return this;\n  },\n  // -- Manage rendering of items marked as dirty --\n\n  /**\n   * Flag a mark item as dirty.\n   * @param {Item} item - The mark item.\n   */\n  dirty(item) {\n    if (item.dirty !== this._dirtyID) {\n      item.dirty = this._dirtyID;\n      this._dirty.push(item);\n    }\n  },\n  /**\n   * Check if a mark item is considered dirty.\n   * @param {Item} item - The mark item.\n   */\n  isDirty(item) {\n    return this._dirtyAll || !item._svg || !item._svg.ownerSVGElement || item.dirty === this._dirtyID;\n  },\n  /**\n   * Internal method to check dirty status and, if possible,\n   * make targetted updates without a full rendering pass.\n   */\n  _dirtyCheck() {\n    this._dirtyAll = true;\n    const items = this._dirty;\n    if (!items.length || !this._dirtyID) return true;\n    const id = ++this._dirtyID;\n    let item, mark, type, mdef, i, n, o;\n    for (i = 0, n = items.length; i < n; ++i) {\n      item = items[i];\n      mark = item.mark;\n      if (mark.marktype !== type) {\n        // memoize mark instance lookup\n        type = mark.marktype;\n        mdef = Marks[type];\n      }\n      if (mark.zdirty && mark.dirty !== id) {\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n        mark.items.forEach(i => {\n          i.dirty = id;\n        });\n      }\n      if (mark.zdirty) continue; // handle in standard drawing pass\n\n      if (item.exit) {\n        // EXIT\n        if (mdef.nested && mark.items.length) {\n          // if nested mark with remaining points, update instead\n          o = mark.items[0];\n          if (o._svg) this._update(mdef, o._svg, o);\n        } else if (item._svg) {\n          // otherwise remove from DOM\n          o = item._svg.parentNode;\n          if (o) o.removeChild(item._svg);\n        }\n        item._svg = null;\n        continue;\n      }\n      item = mdef.nested ? mark.items[0] : item;\n      if (item._update === id) continue; // already visited\n\n      if (!item._svg || !item._svg.ownerSVGElement) {\n        // ENTER\n        this._dirtyAll = false;\n        dirtyParents(item, id);\n      } else {\n        // IN-PLACE UPDATE\n        this._update(mdef, item._svg, item);\n      }\n      item._update = id;\n    }\n    return !this._dirtyAll;\n  },\n  // -- Construct & maintain scenegraph to SVG mapping ---\n\n  /**\n   * Render a set of mark items.\n   * @param {SVGElement} el - The parent element in the SVG tree.\n   * @param {object} scene - The mark parent to render.\n   * @param {SVGElement} prev - The previous sibling in the SVG tree.\n   * @param {Array} markTypes - Array of the mark types to render.\n   *                            If undefined, render all mark types\n   */\n  mark(el, scene, prev, markTypes) {\n    if (!this.isDirty(scene)) {\n      return scene._svg;\n    }\n    const svg = this._svg,\n      markType = scene.marktype,\n      mdef = Marks[markType],\n      events = scene.interactive === false ? 'none' : null,\n      isGroup = mdef.tag === 'g';\n    const parent = bind(scene, el, prev, 'g', svg);\n    if (markType !== 'group' && markTypes != null && !markTypes.includes(markType)) {\n      domClear(parent, 0);\n      return scene._svg;\n    }\n    parent.setAttribute('class', cssClass(scene));\n\n    // apply aria attributes to parent container element\n    const aria = ariaMarkAttributes(scene);\n    for (const key in aria) setAttribute(parent, key, aria[key]);\n    if (!isGroup) {\n      setAttribute(parent, 'pointer-events', events);\n    }\n    setAttribute(parent, 'clip-path', scene.clip ? clip$1(this, scene, scene.group) : null);\n    let sibling = null,\n      i = 0;\n    const process = item => {\n      const dirty = this.isDirty(item),\n        node = bind(item, parent, sibling, mdef.tag, svg);\n      if (dirty) {\n        this._update(mdef, node, item);\n        if (isGroup) recurse(this, node, item, markTypes);\n      }\n      sibling = node;\n      ++i;\n    };\n    if (mdef.nested) {\n      if (scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    }\n    domClear(parent, i);\n    return parent;\n  },\n  /**\n   * Update the attributes of an SVG element for a mark item.\n   * @param {object} mdef - The mark definition object\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  _update(mdef, el, item) {\n    // set dom element and values cache\n    // provides access to emit method\n    element = el;\n    values = el.__values__;\n\n    // apply aria-specific properties\n    ariaItemAttributes(emit, item);\n\n    // apply svg attributes\n    mdef.attr(emit, item, this);\n\n    // some marks need special treatment\n    const extra = mark_extras[mdef.type];\n    if (extra) extra.call(this, mdef, el, item);\n\n    // apply svg style attributes\n    // note: element state may have been modified by 'extra' method\n    if (element) this.style(element, item);\n  },\n  /**\n   * Update the presentation attributes of an SVG element for a mark item.\n   * @param {SVGElement} el - The SVG element.\n   * @param {Item} item - The mark item.\n   */\n  style(el, item) {\n    if (item == null) return;\n    for (const prop in stylesAttr) {\n      let value = prop === 'font' ? fontFamily(item) : item[prop];\n      if (value === values[prop]) continue;\n      const name = stylesAttr[prop];\n      if (value == null) {\n        el.removeAttribute(name);\n      } else {\n        if (isGradient(value)) {\n          value = gradientRef(value, this._defs.gradient, href());\n        }\n        el.setAttribute(name, value + '');\n      }\n      values[prop] = value;\n    }\n    for (const prop in stylesCss) {\n      setStyle(el, stylesCss[prop], item[prop]);\n    }\n  },\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   */\n  defs() {\n    const svg = this._svg,\n      defs = this._defs;\n    let el = defs.el,\n      index = 0;\n    for (const id in defs.gradient) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateGradient(el, defs.gradient[id], index);\n    }\n    for (const id in defs.clipping) {\n      if (!el) defs.el = el = domChild(svg, RootIndex + 1, 'defs', svgns);\n      index = updateClipping(el, defs.clipping[id], index);\n    }\n\n    // clean-up\n    if (el) {\n      index === 0 ? (svg.removeChild(el), defs.el = null) : domClear(el, index);\n    }\n  },\n  /**\n   * Clear defs caches.\n   */\n  _clearDefs() {\n    const def = this._defs;\n    def.gradient = {};\n    def.clipping = {};\n  }\n});\n\n// mark ancestor chain with a dirty id\nfunction dirtyParents(item, id) {\n  for (; item && item.dirty !== id; item = item.mark.group) {\n    item.dirty = id;\n    if (item.mark && item.mark.dirty !== id) {\n      item.mark.dirty = id;\n    } else return;\n  }\n}\n\n// update gradient definitions\nfunction updateGradient(el, grad, index) {\n  let i, n, stop;\n  if (grad.gradient === 'radial') {\n    // SVG radial gradients automatically transform to normalized bbox\n    // coordinates, in a way that is cumbersome to replicate in canvas.\n    // We wrap the radial gradient in a pattern element, allowing us to\n    // maintain a circular gradient that matches what canvas provides.\n    let pt = domChild(el, index++, 'pattern', svgns);\n    setAttributes(pt, {\n      id: patternPrefix + grad.id,\n      viewBox: '0,0,1,1',\n      width: '100%',\n      height: '100%',\n      preserveAspectRatio: 'xMidYMid slice'\n    });\n    pt = domChild(pt, 0, 'rect', svgns);\n    setAttributes(pt, {\n      width: 1,\n      height: 1,\n      fill: `url(${href()}#${grad.id})`\n    });\n    el = domChild(el, index++, 'radialGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      fx: grad.x1,\n      fy: grad.y1,\n      fr: grad.r1,\n      cx: grad.x2,\n      cy: grad.y2,\n      r: grad.r2\n    });\n  } else {\n    el = domChild(el, index++, 'linearGradient', svgns);\n    setAttributes(el, {\n      id: grad.id,\n      x1: grad.x1,\n      x2: grad.x2,\n      y1: grad.y1,\n      y2: grad.y2\n    });\n  }\n  for (i = 0, n = grad.stops.length; i < n; ++i) {\n    stop = domChild(el, i, 'stop', svgns);\n    stop.setAttribute('offset', grad.stops[i].offset);\n    stop.setAttribute('stop-color', grad.stops[i].color);\n  }\n  domClear(el, i);\n  return index;\n}\n\n// update clipping path definitions\nfunction updateClipping(el, clip, index) {\n  let mask;\n  el = domChild(el, index, 'clipPath', svgns);\n  el.setAttribute('id', clip.id);\n  if (clip.path) {\n    mask = domChild(el, 0, 'path', svgns);\n    mask.setAttribute('d', clip.path);\n  } else {\n    mask = domChild(el, 0, 'rect', svgns);\n    setAttributes(mask, {\n      x: 0,\n      y: 0,\n      width: clip.width,\n      height: clip.height\n    });\n  }\n  domClear(el, 1);\n  return index + 1;\n}\n\n// Recursively process group contents.\nfunction recurse(renderer, el, group, markTypes) {\n  // child 'g' element is second to last among children (path, g, path)\n  // other children here are foreground and background path elements\n  el = el.lastChild.previousSibling;\n  let prev,\n    idx = 0;\n  visit(group, item => {\n    prev = renderer.mark(el, item, prev, markTypes);\n    ++idx;\n  });\n\n  // remove any extraneous DOM elements\n  domClear(el, 1 + idx);\n}\n\n// Bind a scenegraph item to an SVG DOM element.\n// Create new SVG elements as needed.\nfunction bind(item, el, sibling, tag, svg) {\n  let node = item._svg,\n    doc;\n\n  // create a new dom node if needed\n  if (!node) {\n    doc = el.ownerDocument;\n    node = domCreate(doc, tag, svgns);\n    item._svg = node;\n    if (item.mark) {\n      node.__data__ = item;\n      node.__values__ = {\n        fill: 'default'\n      };\n\n      // if group, create background, content, and foreground elements\n      if (tag === 'g') {\n        const bg = domCreate(doc, 'path', svgns);\n        node.appendChild(bg);\n        bg.__data__ = item;\n        const cg = domCreate(doc, 'g', svgns);\n        node.appendChild(cg);\n        cg.__data__ = item;\n        const fg = domCreate(doc, 'path', svgns);\n        node.appendChild(fg);\n        fg.__data__ = item;\n        fg.__values__ = {\n          fill: 'default'\n        };\n      }\n    }\n  }\n\n  // (re-)insert if (a) not contained in SVG or (b) sibling order has changed\n  if (node.ownerSVGElement !== svg || siblingCheck(node, sibling)) {\n    el.insertBefore(node, sibling ? sibling.nextSibling : el.firstChild);\n  }\n  return node;\n}\n\n// check if two nodes are ordered siblings\nfunction siblingCheck(node, sibling) {\n  return node.parentNode && node.parentNode.childNodes.length > 1 && node.previousSibling != sibling; // treat null/undefined the same\n}\n\n// -- Set attributes & styles on SVG elements ---\n\nlet element = null,\n  // temp var for current SVG element\n  values = null; // temp var for current values hash\n\n// Extra configuration for certain mark types\nconst mark_extras = {\n  group(mdef, el, item) {\n    const fg = element = el.childNodes[2];\n    values = fg.__values__;\n    mdef.foreground(emit, item, this);\n    values = el.__values__; // use parent's values hash\n    element = el.childNodes[1];\n    mdef.content(emit, item, this);\n    const bg = element = el.childNodes[0];\n    mdef.background(emit, item, this);\n    const value = item.mark.interactive === false ? 'none' : null;\n    if (value !== values.events) {\n      setAttribute(fg, 'pointer-events', value);\n      setAttribute(bg, 'pointer-events', value);\n      values.events = value;\n    }\n    if (item.strokeForeground && item.stroke) {\n      const fill = item.fill;\n      setAttribute(fg, 'display', null);\n\n      // set style of background\n      this.style(bg, item);\n      setAttribute(bg, 'stroke', null);\n\n      // set style of foreground\n      if (fill) item.fill = null;\n      values = fg.__values__;\n      this.style(fg, item);\n      if (fill) item.fill = fill;\n\n      // leave element null to prevent downstream styling\n      element = null;\n    } else {\n      // ensure foreground is ignored\n      setAttribute(fg, 'display', 'none');\n    }\n  },\n  image(mdef, el, item) {\n    if (item.smooth === false) {\n      setStyle(el, 'image-rendering', 'optimizeSpeed');\n      setStyle(el, 'image-rendering', 'pixelated');\n    } else {\n      setStyle(el, 'image-rendering', null);\n    }\n  },\n  text(mdef, el, item) {\n    const tl = textLines(item);\n    let key, value, doc, lh;\n    if (isArray(tl)) {\n      // multi-line text\n      value = tl.map(_ => textValue(item, _));\n      key = value.join('\\n'); // content cache key\n\n      if (key !== values.text) {\n        domClear(el, 0);\n        doc = el.ownerDocument;\n        lh = lineHeight(item);\n        value.forEach((t, i) => {\n          const ts = domCreate(doc, 'tspan', svgns);\n          ts.__data__ = item; // data binding\n          ts.textContent = t;\n          if (i) {\n            ts.setAttribute('x', 0);\n            ts.setAttribute('dy', lh);\n          }\n          el.appendChild(ts);\n        });\n        values.text = key;\n      }\n    } else {\n      // single-line text\n      value = textValue(item, tl);\n      if (value !== values.text) {\n        el.textContent = value;\n        values.text = value;\n      }\n    }\n    setAttribute(el, 'font-family', fontFamily(item));\n    setAttribute(el, 'font-size', fontSize(item) + 'px');\n    setAttribute(el, 'font-style', item.fontStyle);\n    setAttribute(el, 'font-variant', item.fontVariant);\n    setAttribute(el, 'font-weight', item.fontWeight);\n  }\n};\nfunction emit(name, value, ns) {\n  // early exit if value is unchanged\n  if (value === values[name]) return;\n\n  // use appropriate method given namespace (ns)\n  if (ns) {\n    setAttributeNS(element, name, value, ns);\n  } else {\n    setAttribute(element, name, value);\n  }\n\n  // note current value for future comparison\n  values[name] = value;\n}\nfunction setStyle(el, name, value) {\n  if (value !== values[name]) {\n    if (value == null) {\n      el.style.removeProperty(name);\n    } else {\n      el.style.setProperty(name, value + '');\n    }\n    values[name] = value;\n  }\n}\nfunction setAttributes(el, attrs) {\n  for (const key in attrs) {\n    setAttribute(el, key, attrs[key]);\n  }\n}\nfunction setAttribute(el, name, value) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttribute(name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttribute(name);\n  }\n}\nfunction setAttributeNS(el, name, value, ns) {\n  if (value != null) {\n    // if value is provided, update DOM attribute\n    el.setAttributeNS(ns, name, value);\n  } else {\n    // else remove DOM attribute\n    el.removeAttributeNS(ns, name);\n  }\n}\nfunction href() {\n  let loc;\n  return typeof window === 'undefined' ? '' : (loc = window.location).hash ? loc.href.slice(0, -loc.hash.length) : loc.href;\n}\n\nfunction SVGStringRenderer(loader) {\n  Renderer.call(this, loader);\n  this._text = null;\n  this._defs = {\n    gradient: {},\n    clipping: {}\n  };\n}\ninherits(SVGStringRenderer, Renderer, {\n  /**\n   * Returns the rendered SVG text string,\n   * or null if rendering has not yet occurred.\n   */\n  svg() {\n    return this._text;\n  },\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   */\n  _render(scene) {\n    const m = markup();\n\n    // svg tag\n    m.open('svg', extend({}, metadata, {\n      class: 'marks',\n      width: this._width * this._scale,\n      height: this._height * this._scale,\n      viewBox: `0 0 ${this._width} ${this._height}`\n    }));\n\n    // background, if defined\n    const bg = this._bgcolor;\n    if (bg && bg !== 'transparent' && bg !== 'none') {\n      m.open('rect', {\n        width: this._width,\n        height: this._height,\n        fill: bg\n      }).close();\n    }\n\n    // root content group\n    m.open('g', rootAttributes, {\n      transform: 'translate(' + this._origin + ')'\n    });\n    this.mark(m, scene);\n    m.close(); // </g>\n\n    // defs\n    this.defs(m);\n\n    // get SVG text string\n    this._text = m.close() + '';\n    return this;\n  },\n  /**\n   * Render a set of mark items.\n   * @param {object} m - The markup context.\n   * @param {object} scene - The mark parent to render.\n   */\n  mark(m, scene) {\n    const mdef = Marks[scene.marktype],\n      tag = mdef.tag,\n      attrList = [ariaItemAttributes, mdef.attr];\n\n    // render opening group tag\n    m.open('g', {\n      'class': cssClass(scene),\n      'clip-path': scene.clip ? clip$1(this, scene, scene.group) : null\n    }, ariaMarkAttributes(scene), {\n      'pointer-events': tag !== 'g' && scene.interactive === false ? 'none' : null\n    });\n\n    // render contained elements\n    const process = item => {\n      const href = this.href(item);\n      if (href) m.open('a', href);\n      m.open(tag, this.attr(scene, item, attrList, tag !== 'g' ? tag : null));\n      if (tag === 'text') {\n        const tl = textLines(item);\n        if (isArray(tl)) {\n          // multi-line text\n          const attrs = {\n            x: 0,\n            dy: lineHeight(item)\n          };\n          for (let i = 0; i < tl.length; ++i) {\n            m.open('tspan', i ? attrs : null).text(textValue(item, tl[i])).close();\n          }\n        } else {\n          // single-line text\n          m.text(textValue(item, tl));\n        }\n      } else if (tag === 'g') {\n        const fore = item.strokeForeground,\n          fill = item.fill,\n          stroke = item.stroke;\n        if (fore && stroke) {\n          item.stroke = null;\n        }\n        m.open('path', this.attr(scene, item, mdef.background, 'bgrect')).close();\n\n        // recurse for group content\n        m.open('g', this.attr(scene, item, mdef.content));\n        visit(item, scene => this.mark(m, scene));\n        m.close();\n        if (fore && stroke) {\n          if (fill) item.fill = null;\n          item.stroke = stroke;\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgrect')).close();\n          if (fill) item.fill = fill;\n        } else {\n          m.open('path', this.attr(scene, item, mdef.foreground, 'bgfore')).close();\n        }\n      }\n      m.close(); // </tag>\n      if (href) m.close(); // </a>\n    };\n\n    if (mdef.nested) {\n      if (scene.items && scene.items.length) process(scene.items[0]);\n    } else {\n      visit(scene, process);\n    }\n\n    // render closing group tag\n    return m.close(); // </g>\n  },\n\n  /**\n   * Get href attributes for a hyperlinked mark item.\n   * @param {Item} item - The mark item.\n   */\n  href(item) {\n    const href = item.href;\n    let attr;\n    if (href) {\n      if (attr = this._hrefs && this._hrefs[href]) {\n        return attr;\n      } else {\n        this.sanitizeURL(href).then(attr => {\n          // rewrite to use xlink namespace\n          attr['xlink:href'] = attr.href;\n          attr.href = null;\n          (this._hrefs || (this._hrefs = {}))[href] = attr;\n        });\n      }\n    }\n    return null;\n  },\n  /**\n   * Get an object of SVG attributes for a mark item.\n   * @param {object} scene - The mark parent.\n   * @param {Item} item - The mark item.\n   * @param {array|function} attrs - One or more attribute emitters.\n   * @param {string} tag - The tag being rendered.\n   */\n  attr(scene, item, attrs, tag) {\n    const object = {},\n      emit = (name, value, ns, prefixed) => {\n        object[prefixed || name] = value;\n      };\n\n    // apply mark specific attributes\n    if (Array.isArray(attrs)) {\n      attrs.forEach(fn => fn(emit, item, this));\n    } else {\n      attrs(emit, item, this);\n    }\n\n    // apply style attributes\n    if (tag) {\n      style(object, item, scene, tag, this._defs);\n    }\n    return object;\n  },\n  /**\n   * Render SVG defs, as needed.\n   * Must be called *after* marks have been processed to ensure the\n   * collected state is current and accurate.\n   * @param {object} m - The markup context.\n   */\n  defs(m) {\n    const gradient = this._defs.gradient,\n      clipping = this._defs.clipping,\n      count = Object.keys(gradient).length + Object.keys(clipping).length;\n    if (count === 0) return; // nothing to do\n\n    m.open('defs');\n    for (const id in gradient) {\n      const def = gradient[id],\n        stops = def.stops;\n      if (def.gradient === 'radial') {\n        // SVG radial gradients automatically transform to normalized bbox\n        // coordinates, in a way that is cumbersome to replicate in canvas.\n        // We wrap the radial gradient in a pattern element, allowing us to\n        // maintain a circular gradient that matches what canvas provides.\n\n        m.open('pattern', {\n          id: patternPrefix + id,\n          viewBox: '0,0,1,1',\n          width: '100%',\n          height: '100%',\n          preserveAspectRatio: 'xMidYMid slice'\n        });\n        m.open('rect', {\n          width: '1',\n          height: '1',\n          fill: 'url(#' + id + ')'\n        }).close();\n        m.close(); // </pattern>\n\n        m.open('radialGradient', {\n          id: id,\n          fx: def.x1,\n          fy: def.y1,\n          fr: def.r1,\n          cx: def.x2,\n          cy: def.y2,\n          r: def.r2\n        });\n      } else {\n        m.open('linearGradient', {\n          id: id,\n          x1: def.x1,\n          x2: def.x2,\n          y1: def.y1,\n          y2: def.y2\n        });\n      }\n      for (let i = 0; i < stops.length; ++i) {\n        m.open('stop', {\n          offset: stops[i].offset,\n          'stop-color': stops[i].color\n        }).close();\n      }\n      m.close();\n    }\n    for (const id in clipping) {\n      const def = clipping[id];\n      m.open('clipPath', {\n        id: id\n      });\n      if (def.path) {\n        m.open('path', {\n          d: def.path\n        }).close();\n      } else {\n        m.open('rect', {\n          x: 0,\n          y: 0,\n          width: def.width,\n          height: def.height\n        }).close();\n      }\n      m.close();\n    }\n    m.close();\n  }\n});\n\n// Helper function for attr for style presentation attributes\nfunction style(s, item, scene, tag, defs) {\n  let styleList;\n  if (item == null) return s;\n  if (tag === 'bgrect' && scene.interactive === false) {\n    s['pointer-events'] = 'none';\n  }\n  if (tag === 'bgfore') {\n    if (scene.interactive === false) {\n      s['pointer-events'] = 'none';\n    }\n    s.display = 'none';\n    if (item.fill !== null) return s;\n  }\n  if (tag === 'image' && item.smooth === false) {\n    styleList = ['image-rendering: optimizeSpeed;', 'image-rendering: pixelated;'];\n  }\n  if (tag === 'text') {\n    s['font-family'] = fontFamily(item);\n    s['font-size'] = fontSize(item) + 'px';\n    s['font-style'] = item.fontStyle;\n    s['font-variant'] = item.fontVariant;\n    s['font-weight'] = item.fontWeight;\n  }\n  for (const prop in stylesAttr) {\n    let value = item[prop];\n    const name = stylesAttr[prop];\n    if (value === 'transparent' && (name === 'fill' || name === 'stroke')) ; else if (value != null) {\n      if (isGradient(value)) {\n        value = gradientRef(value, defs.gradient, '');\n      }\n      s[name] = value;\n    }\n  }\n  for (const prop in stylesCss) {\n    const value = item[prop];\n    if (value != null) {\n      styleList = styleList || [];\n      styleList.push(`${stylesCss[prop]}: ${value};`);\n    }\n  }\n  if (styleList) {\n    s.style = styleList.join(' ');\n  }\n  return s;\n}\n\n/**\n * @typedef {Object} HybridRendererOptions\n *\n * @property {string[]} [svgMarkTypes=['text']] - An array of SVG mark types to render\n *                                                in the SVG layer. All other mark types\n *                                                will be rendered in the Canvas layer.\n * @property {boolean} [svgOnTop=true] - Flag to determine if SVG should be rendered on top.\n * @property {boolean} [debug=false] - Flag to enable or disable debugging mode. When true,\n *                                     the top layer will be stacked below the bottom layer\n *                                     rather than overlaid on top.\n */\n\n/** @type {HybridRendererOptions} */\nconst OPTS = {\n  svgMarkTypes: ['text'],\n  svgOnTop: true,\n  debug: false\n};\n\n/**\n * Configure the HybridRenderer\n *\n * @param {HybridRendererOptions} options - HybridRenderer configuration options.\n */\nfunction setHybridRendererOptions(options) {\n  OPTS['svgMarkTypes'] = options.svgMarkTypes ?? ['text'];\n  OPTS['svgOnTop'] = options.svgOnTop ?? true;\n  OPTS['debug'] = options.debug ?? false;\n}\nfunction HybridRenderer(loader) {\n  Renderer.call(this, loader);\n  this._svgRenderer = new SVGRenderer(loader);\n  this._canvasRenderer = new CanvasRenderer(loader);\n}\nconst base = Renderer.prototype;\ninherits(HybridRenderer, Renderer, {\n  /**\n   * Initialize a new HybridRenderer instance.\n   * @param {DOMElement} el - The containing DOM element for the display.\n   * @param {number} width - The coordinate width of the display, in pixels.\n   * @param {number} height - The coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {HybridRenderer} - This renderer instance.\n   */\n  initialize(el, width, height, origin, scaleFactor) {\n    this._root_el = domChild(el, 0, 'div');\n    const bottomEl = domChild(this._root_el, 0, 'div');\n    const topEl = domChild(this._root_el, 1, 'div');\n    this._root_el.style.position = 'relative';\n\n    // Set position absolute to overlay svg on top of canvas\n    if (!OPTS.debug) {\n      bottomEl.style.height = '100%';\n      topEl.style.position = 'absolute';\n      topEl.style.top = '0';\n      topEl.style.left = '0';\n      topEl.style.height = '100%';\n      topEl.style.width = '100%';\n    }\n    this._svgEl = OPTS.svgOnTop ? topEl : bottomEl;\n    this._canvasEl = OPTS.svgOnTop ? bottomEl : topEl;\n\n    // pointer-events to none on SVG layer so that canvas gets all events\n    this._svgEl.style.pointerEvents = 'none';\n    this._canvasRenderer.initialize(this._canvasEl, width, height, origin, scaleFactor);\n    this._svgRenderer.initialize(this._svgEl, width, height, origin, scaleFactor);\n    return base.initialize.call(this, el, width, height, origin, scaleFactor);\n  },\n  /**\n   * Flag a mark item as dirty.\n   * @param {Item} item - The mark item.\n   */\n  dirty(item) {\n    if (OPTS.svgMarkTypes.includes(item.mark.marktype)) {\n      this._svgRenderer.dirty(item);\n    } else {\n      this._canvasRenderer.dirty(item);\n    }\n    return this;\n  },\n  /**\n   * Internal rendering method.\n   * @param {object} scene - The root mark of a scenegraph to render.\n   * @param {Array} markTypes - Array of the mark types to render.\n   *                            If undefined, render all mark types\n   */\n  _render(scene, markTypes) {\n    const allMarkTypes = markTypes ?? ['arc', 'area', 'image', 'line', 'path', 'rect', 'rule', 'shape', 'symbol', 'text', 'trail'];\n    const canvasMarkTypes = allMarkTypes.filter(m => !OPTS.svgMarkTypes.includes(m));\n    this._svgRenderer.render(scene, OPTS.svgMarkTypes);\n    this._canvasRenderer.render(scene, canvasMarkTypes);\n  },\n  /**\n   * Resize the display.\n   * @param {number} width - The new coordinate width of the display, in pixels.\n   * @param {number} height - The new coordinate height of the display, in pixels.\n   * @param {Array<number>} origin - The new origin of the display, in pixels.\n   *   The coordinate system will be translated to this point.\n   * @param {number} [scaleFactor=1] - Optional scaleFactor by which to multiply\n   *   the width and height to determine the final pixel size.\n   * @return {SVGRenderer} - This renderer instance;\n   */\n  resize(width, height, origin, scaleFactor) {\n    base.resize.call(this, width, height, origin, scaleFactor);\n    this._svgRenderer.resize(width, height, origin, scaleFactor);\n    this._canvasRenderer.resize(width, height, origin, scaleFactor);\n    return this;\n  },\n  background(bgcolor) {\n    // Propagate background color to lower canvas renderer\n    if (OPTS.svgOnTop) {\n      this._canvasRenderer.background(bgcolor);\n    } else {\n      this._svgRenderer.background(bgcolor);\n    }\n    return this;\n  }\n});\n\nfunction HybridHandler(loader, tooltip) {\n  CanvasHandler.call(this, loader, tooltip);\n}\ninherits(HybridHandler, CanvasHandler, {\n  initialize(el, origin, obj) {\n    const canvas = domChild(domChild(el, 0, 'div'), OPTS.svgOnTop ? 0 : 1, 'div');\n    return CanvasHandler.prototype.initialize.call(this, canvas, origin, obj);\n  }\n});\n\nconst Canvas = 'canvas';\nconst Hybrid = 'hybrid';\nconst PNG = 'png';\nconst SVG = 'svg';\nconst None = 'none';\nconst RenderType = {\n  Canvas: Canvas,\n  PNG: PNG,\n  SVG: SVG,\n  Hybrid: Hybrid,\n  None: None\n};\nconst modules = {};\nmodules[Canvas] = modules[PNG] = {\n  renderer: CanvasRenderer,\n  headless: CanvasRenderer,\n  handler: CanvasHandler\n};\nmodules[SVG] = {\n  renderer: SVGRenderer,\n  headless: SVGStringRenderer,\n  handler: SVGHandler\n};\nmodules[Hybrid] = {\n  renderer: HybridRenderer,\n  headless: HybridRenderer,\n  handler: HybridHandler\n};\nmodules[None] = {};\nfunction renderModule(name, _) {\n  name = String(name || '').toLowerCase();\n  if (arguments.length > 1) {\n    modules[name] = _;\n    return this;\n  } else {\n    return modules[name];\n  }\n}\n\nfunction intersect(scene, bounds, filter) {\n  const hits = [],\n    // intersection results\n    box = new Bounds().union(bounds),\n    // defensive copy\n    type = scene.marktype;\n  return type ? intersectMark(scene, box, filter, hits) : type === 'group' ? intersectGroup(scene, box, filter, hits) : error('Intersect scene must be mark node or group item.');\n}\nfunction intersectMark(mark, box, filter, hits) {\n  if (visitMark(mark, box, filter)) {\n    const items = mark.items,\n      type = mark.marktype,\n      n = items.length;\n    let i = 0;\n    if (type === 'group') {\n      for (; i < n; ++i) {\n        intersectGroup(items[i], box, filter, hits);\n      }\n    } else {\n      for (const test = Marks[type].isect; i < n; ++i) {\n        const item = items[i];\n        if (intersectItem(item, box, test)) hits.push(item);\n      }\n    }\n  }\n  return hits;\n}\nfunction visitMark(mark, box, filter) {\n  // process if bounds intersect and if\n  // (1) mark is a group mark (so we must recurse), or\n  // (2) mark is interactive and passes filter\n  return mark.bounds && box.intersects(mark.bounds) && (mark.marktype === 'group' || mark.interactive !== false && (!filter || filter(mark)));\n}\nfunction intersectGroup(group, box, filter, hits) {\n  // test intersect against group\n  // skip groups by default unless filter says otherwise\n  if (filter && filter(group.mark) && intersectItem(group, box, Marks.group.isect)) {\n    hits.push(group);\n  }\n\n  // recursively test children marks\n  // translate box to group coordinate space\n  const marks = group.items,\n    n = marks && marks.length;\n  if (n) {\n    const x = group.x || 0,\n      y = group.y || 0;\n    box.translate(-x, -y);\n    for (let i = 0; i < n; ++i) {\n      intersectMark(marks[i], box, filter, hits);\n    }\n    box.translate(x, y);\n  }\n  return hits;\n}\nfunction intersectItem(item, box, test) {\n  // test bounds enclosure, bounds intersection, then detailed test\n  const bounds = item.bounds;\n  return box.encloses(bounds) || box.intersects(bounds) && test(item, box);\n}\n\nconst clipBounds = new Bounds();\nfunction boundClip (mark) {\n  const clip = mark.clip;\n  if (isFunction(clip)) {\n    clip(boundContext(clipBounds.clear()));\n  } else if (clip) {\n    clipBounds.set(0, 0, mark.group.width, mark.group.height);\n  } else return;\n  mark.bounds.intersect(clipBounds);\n}\n\nconst TOLERANCE = 1e-9;\nfunction sceneEqual(a, b, key) {\n  return a === b ? true : key === 'path' ? pathEqual(a, b) : a instanceof Date && b instanceof Date ? +a === +b : isNumber(a) && isNumber(b) ? Math.abs(a - b) <= TOLERANCE : !a || !b || !isObject(a) && !isObject(b) ? a == b : objectEqual(a, b);\n}\nfunction pathEqual(a, b) {\n  return sceneEqual(parse(a), parse(b));\n}\nfunction objectEqual(a, b) {\n  var ka = Object.keys(a),\n    kb = Object.keys(b),\n    key,\n    i;\n  if (ka.length !== kb.length) return false;\n  ka.sort();\n  kb.sort();\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) return false;\n  }\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!sceneEqual(a[key], b[key], key)) return false;\n  }\n  return typeof a === typeof b;\n}\n\nfunction resetSVGDefIds() {\n  resetSVGClipId();\n  resetSVGGradientId();\n}\n\nexport { Bounds, CanvasHandler, CanvasRenderer, Gradient, GroupItem, Handler, HybridHandler, HybridRenderer, Item, Marks, RenderType, Renderer, ResourceLoader, SVGHandler, SVGRenderer, SVGStringRenderer, Scenegraph, boundClip, boundContext, boundItem, boundMark, boundStroke, domChild, domClear, domCreate, domFind, font, fontFamily, fontSize, intersect, intersectBoxLine, intersectPath, intersectPoint, intersectRule, lineHeight, markup, multiLineOffset, curves as pathCurves, pathEqual, parse as pathParse, vg_rect as pathRectangle, pathRender, symbols as pathSymbols, vg_trail as pathTrail, point, renderModule, resetSVGClipId, resetSVGDefIds, sceneEqual, sceneFromJSON, pickVisit as scenePickVisit, sceneToJSON, visit as sceneVisit, zorder as sceneZOrder, serializeXML, setHybridRendererOptions, textMetrics };\n", "import { Transform, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { tickCount, tickFormat, validTicks, tickValues, SymbolLegend, labelFormat, labelValues, GradientLegend, scaleFraction, labelFraction, scale, Sequential, Linear, isContinuous, Time, UTC, Ordinal, scaleImplicit, Log, Sqrt, Pow, Symlog, isLogarithmic, BinOrdinal, isInterpolating, interpolateColors, interpolate, Band, Point, bandSpace, scheme, Threshold, Quantile, Quantize, quantizeInterpolator, interpolateRange, Diverging } from 'vega-scale';\nimport { inherits, isArray, error, fastmap, falsy, isFunction, constant, peek, one, toSet, isString, zoomLog, zoomPow, zoomSymlog, zoomLinear, stringValue } from 'vega-util';\nimport { sum, range } from 'd3-array';\nimport { interpolateRound, interpolate as interpolate$1 } from 'd3-interpolate';\n\n/**\n * Generates axis ticks for visualizing a spatial scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate ticks for.\n * @param {*} [params.count=10] - The approximate number of ticks, or\n *   desired tick interval, to use.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n *   These must be legal domain values for the provided scale.\n *   If provided, the count argument is ignored.\n * @param {function(*):string} [params.formatSpecifier] - A format specifier\n *   to use in conjunction with scale.tickFormat. Legal values are\n *   any valid d3 4.0 format specifier.\n * @param {function(*):string} [params.format] - The format function to use.\n *   If provided, the formatSpecifier argument is ignored.\n */\nfunction AxisTicks(params) {\n  Transform.call(this, null, params);\n}\ninherits(AxisTicks, Transform, {\n  transform(_, pulse) {\n    if (this.value && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n    var locale = pulse.dataflow.locale(),\n      out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n      ticks = this.value,\n      scale = _.scale,\n      tally = _.count == null ? _.values ? _.values.length : 10 : _.count,\n      count = tickCount(scale, tally, _.minstep),\n      format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values),\n      values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);\n    if (ticks) out.rem = ticks;\n    ticks = values.map((value, i) => ingest({\n      index: i / (values.length - 1 || 1),\n      value: value,\n      label: format(value)\n    }));\n    if (_.extra && ticks.length) {\n      // add an extra tick pegged to the initial domain value\n      // this is used to generate axes with 'binned' domains\n      ticks.push(ingest({\n        index: -1,\n        extra: {\n          value: ticks[0].value\n        },\n        label: ''\n      }));\n    }\n    out.source = ticks;\n    out.add = ticks;\n    this.value = ticks;\n    return out;\n  }\n});\n\n/**\n * Joins a set of data elements against a set of visual items.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): object} [params.item] - An item generator function.\n * @param {function(object): *} [params.key] - The key field associating data and visual items.\n */\nfunction DataJoin(params) {\n  Transform.call(this, null, params);\n}\nfunction defaultItemCreate() {\n  return ingest({});\n}\nfunction newMap(key) {\n  const map = fastmap().test(t => t.exit);\n  map.lookup = t => map.get(key(t));\n  return map;\n}\ninherits(DataJoin, Transform, {\n  transform(_, pulse) {\n    var df = pulse.dataflow,\n      out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n      item = _.item || defaultItemCreate,\n      key = _.key || tupleid,\n      map = this.value;\n\n    // prevent transient (e.g., hover) requests from\n    // cascading across marks derived from marks\n    if (isArray(out.encode)) {\n      out.encode = null;\n    }\n    if (map && (_.modified('key') || pulse.modified(key))) {\n      error('DataJoin does not support modified key function or fields.');\n    }\n    if (!map) {\n      pulse = pulse.addAll();\n      this.value = map = newMap(key);\n    }\n    pulse.visit(pulse.ADD, t => {\n      const k = key(t);\n      let x = map.get(k);\n      if (x) {\n        if (x.exit) {\n          map.empty--;\n          out.add.push(x);\n        } else {\n          out.mod.push(x);\n        }\n      } else {\n        x = item(t);\n        map.set(k, x);\n        out.add.push(x);\n      }\n      x.datum = t;\n      x.exit = false;\n    });\n    pulse.visit(pulse.MOD, t => {\n      const k = key(t),\n        x = map.get(k);\n      if (x) {\n        x.datum = t;\n        out.mod.push(x);\n      }\n    });\n    pulse.visit(pulse.REM, t => {\n      const k = key(t),\n        x = map.get(k);\n      if (t === x.datum && !x.exit) {\n        out.rem.push(x);\n        x.exit = true;\n        ++map.empty;\n      }\n    });\n    if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum');\n    if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) {\n      df.runAfter(map.clean);\n    }\n    return out;\n  }\n});\n\n/**\n * Invokes encoding functions for visual items.\n * @constructor\n * @param {object} params - The parameters to the encoding functions. This\n *   parameter object will be passed through to all invoked encoding functions.\n * @param {object} [params.mod=false] - Flag indicating if tuples in the input\n *   mod set that are unmodified by encoders should be included in the output.\n * @param {object} param.encoders - The encoding functions\n * @param {function(object, object): boolean} [param.encoders.update] - Update encoding set\n * @param {function(object, object): boolean} [param.encoders.enter] - Enter encoding set\n * @param {function(object, object): boolean} [param.encoders.exit] - Exit encoding set\n */\nfunction Encode(params) {\n  Transform.call(this, null, params);\n}\ninherits(Encode, Transform, {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ADD_REM),\n      fmod = _.mod || false,\n      encoders = _.encoders,\n      encode = pulse.encode;\n\n    // if an array, the encode directive includes additional sets\n    // that must be defined in order for the primary set to be invoked\n    // e.g., only run the update set if the hover set is defined\n    if (isArray(encode)) {\n      if (out.changed() || encode.every(e => encoders[e])) {\n        encode = encode[0];\n        out.encode = null; // consume targeted encode directive\n      } else {\n        return pulse.StopPropagation;\n      }\n    }\n\n    // marshall encoder functions\n    var reenter = encode === 'enter',\n      update = encoders.update || falsy,\n      enter = encoders.enter || falsy,\n      exit = encoders.exit || falsy,\n      set = (encode && !reenter ? encoders[encode] : update) || falsy;\n    if (pulse.changed(pulse.ADD)) {\n      pulse.visit(pulse.ADD, t => {\n        enter(t, _);\n        update(t, _);\n      });\n      out.modifies(enter.output);\n      out.modifies(update.output);\n      if (set !== falsy && set !== update) {\n        pulse.visit(pulse.ADD, t => {\n          set(t, _);\n        });\n        out.modifies(set.output);\n      }\n    }\n    if (pulse.changed(pulse.REM) && exit !== falsy) {\n      pulse.visit(pulse.REM, t => {\n        exit(t, _);\n      });\n      out.modifies(exit.output);\n    }\n    if (reenter || set !== falsy) {\n      const flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0);\n      if (reenter) {\n        pulse.visit(flag, t => {\n          const mod = enter(t, _) || fmod;\n          if (set(t, _) || mod) out.mod.push(t);\n        });\n        if (out.mod.length) out.modifies(enter.output);\n      } else {\n        pulse.visit(flag, t => {\n          if (set(t, _) || fmod) out.mod.push(t);\n        });\n      }\n      if (out.mod.length) out.modifies(set.output);\n    }\n    return out.changed() ? out : pulse.StopPropagation;\n  }\n});\n\n/**\n * Generates legend entries for visualizing a scale.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Scale} params.scale - The scale to generate items for.\n * @param {*} [params.count=5] - The approximate number of items, or\n *   desired tick interval, to use.\n * @param {*} [params.limit] - The maximum number of entries to\n *   include in a symbol legend.\n * @param {Array<*>} [params.values] - The exact tick values to use.\n *   These must be legal domain values for the provided scale.\n *   If provided, the count argument is ignored.\n * @param {string} [params.formatSpecifier] - A format specifier\n *   to use in conjunction with scale.tickFormat. Legal values are\n *   any valid D3 format specifier string.\n * @param {function(*):string} [params.format] - The format function to use.\n *   If provided, the formatSpecifier argument is ignored.\n */\nfunction LegendEntries(params) {\n  Transform.call(this, [], params);\n}\ninherits(LegendEntries, Transform, {\n  transform(_, pulse) {\n    if (this.value != null && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n    var locale = pulse.dataflow.locale(),\n      out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n      items = this.value,\n      type = _.type || SymbolLegend,\n      scale = _.scale,\n      limit = +_.limit,\n      count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),\n      lskip = !!_.values || type === SymbolLegend,\n      format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip),\n      values = _.values || labelValues(scale, count),\n      domain,\n      fraction,\n      size,\n      offset,\n      ellipsis;\n    if (items) out.rem = items;\n    if (type === SymbolLegend) {\n      if (limit && values.length > limit) {\n        pulse.dataflow.warn('Symbol legend count exceeds limit, filtering items.');\n        items = values.slice(0, limit - 1);\n        ellipsis = true;\n      } else {\n        items = values;\n      }\n      if (isFunction(size = _.size)) {\n        // if first value maps to size zero, remove from list (vega#717)\n        if (!_.values && scale(items[0]) === 0) {\n          items = items.slice(1);\n        }\n        // compute size offset for legend entries\n        offset = items.reduce((max, value) => Math.max(max, size(value, _)), 0);\n      } else {\n        size = constant(offset = size || 8);\n      }\n      items = items.map((value, index) => ingest({\n        index: index,\n        label: format(value, index, items),\n        value: value,\n        offset: offset,\n        size: size(value, _)\n      }));\n      if (ellipsis) {\n        ellipsis = values[items.length];\n        items.push(ingest({\n          index: items.length,\n          label: `\\u2026${values.length - items.length} entries`,\n          value: ellipsis,\n          offset: offset,\n          size: size(ellipsis, _)\n        }));\n      }\n    } else if (type === GradientLegend) {\n      domain = scale.domain(), fraction = scaleFraction(scale, domain[0], peek(domain));\n\n      // if automatic label generation produces 2 or fewer values,\n      // use the domain end points instead (fixes vega/vega#1364)\n      if (values.length < 3 && !_.values && domain[0] !== peek(domain)) {\n        values = [domain[0], peek(domain)];\n      }\n      items = values.map((value, index) => ingest({\n        index: index,\n        label: format(value, index, values),\n        value: value,\n        perc: fraction(value)\n      }));\n    } else {\n      size = values.length - 1;\n      fraction = labelFraction(scale);\n      items = values.map((value, index) => ingest({\n        index: index,\n        label: format(value, index, values),\n        value: value,\n        perc: index ? fraction(value) : 0,\n        perc2: index === size ? 1 : fraction(values[index + 1])\n      }));\n    }\n    out.source = items;\n    out.add = items;\n    this.value = items;\n    return out;\n  }\n});\n\nconst sourceX = t => t.source.x;\nconst sourceY = t => t.source.y;\nconst targetX = t => t.target.x;\nconst targetY = t => t.target.y;\n\n/**\n * Layout paths linking source and target elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction LinkPath(params) {\n  Transform.call(this, {}, params);\n}\nLinkPath.Definition = {\n  'type': 'LinkPath',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'sourceX',\n    'type': 'field',\n    'default': 'source.x'\n  }, {\n    'name': 'sourceY',\n    'type': 'field',\n    'default': 'source.y'\n  }, {\n    'name': 'targetX',\n    'type': 'field',\n    'default': 'target.x'\n  }, {\n    'name': 'targetY',\n    'type': 'field',\n    'default': 'target.y'\n  }, {\n    'name': 'orient',\n    'type': 'enum',\n    'default': 'vertical',\n    'values': ['horizontal', 'vertical', 'radial']\n  }, {\n    'name': 'shape',\n    'type': 'enum',\n    'default': 'line',\n    'values': ['line', 'arc', 'curve', 'diagonal', 'orthogonal']\n  }, {\n    'name': 'require',\n    'type': 'signal'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\ninherits(LinkPath, Transform, {\n  transform(_, pulse) {\n    var sx = _.sourceX || sourceX,\n      sy = _.sourceY || sourceY,\n      tx = _.targetX || targetX,\n      ty = _.targetY || targetY,\n      as = _.as || 'path',\n      orient = _.orient || 'vertical',\n      shape = _.shape || 'line',\n      path = Paths.get(shape + '-' + orient) || Paths.get(shape);\n    if (!path) {\n      error('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : ''));\n    }\n    pulse.visit(pulse.SOURCE, t => {\n      t[as] = path(sx(t), sy(t), tx(t), ty(t));\n    });\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n});\nconst line = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'L' + tx + ',' + ty;\nconst lineR = (sa, sr, ta, tr) => line(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst arc = (sx, sy, tx, ty) => {\n  var dx = tx - sx,\n    dy = ty - sy,\n    rr = Math.hypot(dx, dy) / 2,\n    ra = 180 * Math.atan2(dy, dx) / Math.PI;\n  return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty;\n};\nconst arcR = (sa, sr, ta, tr) => arc(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst curve = (sx, sy, tx, ty) => {\n  const dx = tx - sx,\n    dy = ty - sy,\n    ix = 0.2 * (dx + dy),\n    iy = 0.2 * (dy - dx);\n  return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty;\n};\nconst curveR = (sa, sr, ta, tr) => curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta));\nconst orthoX = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx;\nconst orthoY = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty;\nconst orthoR = (sa, sr, ta, tr) => {\n  const sc = Math.cos(sa),\n    ss = Math.sin(sa),\n    tc = Math.cos(ta),\n    ts = Math.sin(ta),\n    sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa;\n  return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts;\n};\nconst diagonalX = (sx, sy, tx, ty) => {\n  const m = (sx + tx) / 2;\n  return 'M' + sx + ',' + sy + 'C' + m + ',' + sy + ' ' + m + ',' + ty + ' ' + tx + ',' + ty;\n};\nconst diagonalY = (sx, sy, tx, ty) => {\n  const m = (sy + ty) / 2;\n  return 'M' + sx + ',' + sy + 'C' + sx + ',' + m + ' ' + tx + ',' + m + ' ' + tx + ',' + ty;\n};\nconst diagonalR = (sa, sr, ta, tr) => {\n  const sc = Math.cos(sa),\n    ss = Math.sin(sa),\n    tc = Math.cos(ta),\n    ts = Math.sin(ta),\n    mr = (sr + tr) / 2;\n  return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts;\n};\nconst Paths = fastmap({\n  'line': line,\n  'line-radial': lineR,\n  'arc': arc,\n  'arc-radial': arcR,\n  'curve': curve,\n  'curve-radial': curveR,\n  'orthogonal-horizontal': orthoX,\n  'orthogonal-vertical': orthoY,\n  'orthogonal-radial': orthoR,\n  'diagonal-horizontal': diagonalX,\n  'diagonal-vertical': diagonalY,\n  'diagonal-radial': diagonalR\n});\n\n/**\n * Pie and donut chart layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size pie segments.\n * @param {number} [params.startAngle=0] - The start angle (in radians) of the layout.\n * @param {number} [params.endAngle=2\u03C0] - The end angle (in radians) of the layout.\n * @param {boolean} [params.sort] - Boolean flag for sorting sectors by value.\n */\nfunction Pie(params) {\n  Transform.call(this, null, params);\n}\nPie.Definition = {\n  'type': 'Pie',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'startAngle',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'endAngle',\n    'type': 'number',\n    'default': 6.283185307179586\n  }, {\n    'name': 'sort',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['startAngle', 'endAngle']\n  }]\n};\ninherits(Pie, Transform, {\n  transform(_, pulse) {\n    var as = _.as || ['startAngle', 'endAngle'],\n      startAngle = as[0],\n      endAngle = as[1],\n      field = _.field || one,\n      start = _.startAngle || 0,\n      stop = _.endAngle != null ? _.endAngle : 2 * Math.PI,\n      data = pulse.source,\n      values = data.map(field),\n      n = values.length,\n      a = start,\n      k = (stop - start) / sum(values),\n      index = range(n),\n      i,\n      t,\n      v;\n    if (_.sort) {\n      index.sort((a, b) => values[a] - values[b]);\n    }\n    for (i = 0; i < n; ++i) {\n      v = values[index[i]];\n      t = data[index[i]];\n      t[startAngle] = a;\n      t[endAngle] = a += v * k;\n    }\n    this.value = values;\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n});\n\nconst DEFAULT_COUNT = 5;\nfunction includeZero(scale) {\n  const type = scale.type;\n  return !scale.bins && (type === Linear || type === Pow || type === Sqrt);\n}\nfunction includePad(type) {\n  return isContinuous(type) && type !== Sequential;\n}\nconst SKIP = toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']);\n\n/**\n * Maintains a scale function mapping data values to visual channels.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Scale(params) {\n  Transform.call(this, null, params);\n  this.modified(true); // always treat as modified\n}\n\ninherits(Scale, Transform, {\n  transform(_, pulse) {\n    var df = pulse.dataflow,\n      scale$1 = this.value,\n      key = scaleKey(_);\n    if (!scale$1 || key !== scale$1.type) {\n      this.value = scale$1 = scale(key)();\n    }\n    for (key in _) if (!SKIP[key]) {\n      // padding is a scale property for band/point but not others\n      if (key === 'padding' && includePad(scale$1.type)) continue;\n      // invoke scale property setter, raise warning if not found\n      isFunction(scale$1[key]) ? scale$1[key](_[key]) : df.warn('Unsupported scale property: ' + key);\n    }\n    configureRange(scale$1, _, configureBins(scale$1, _, configureDomain(scale$1, _, df)));\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n  }\n});\nfunction scaleKey(_) {\n  var t = _.type,\n    d = '',\n    n;\n\n  // backwards compatibility pre Vega 5.\n  if (t === Sequential) return Sequential + '-' + Linear;\n  if (isContinuousColor(_)) {\n    n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0;\n    d = n === 2 ? Sequential + '-' : n === 3 ? Diverging + '-' : '';\n  }\n  return (d + t || Linear).toLowerCase();\n}\nfunction isContinuousColor(_) {\n  const t = _.type;\n  return isContinuous(t) && t !== Time && t !== UTC && (_.scheme || _.range && _.range.length && _.range.every(isString));\n}\nfunction configureDomain(scale, _, df) {\n  // check raw domain, if provided use that and exit early\n  const raw = rawDomain(scale, _.domainRaw, df);\n  if (raw > -1) return raw;\n  var domain = _.domain,\n    type = scale.type,\n    zero = _.zero || _.zero === undefined && includeZero(scale),\n    n,\n    mid;\n  if (!domain) return 0;\n\n  // adjust continuous domain for minimum pixel padding\n  if (includePad(type) && _.padding && domain[0] !== peek(domain)) {\n    domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);\n  }\n\n  // adjust domain based on zero, min, max settings\n  if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) {\n    n = (domain = domain.slice()).length - 1 || 1;\n    if (zero) {\n      if (domain[0] > 0) domain[0] = 0;\n      if (domain[n] < 0) domain[n] = 0;\n    }\n    if (_.domainMin != null) domain[0] = _.domainMin;\n    if (_.domainMax != null) domain[n] = _.domainMax;\n    if (_.domainMid != null) {\n      mid = _.domainMid;\n      const i = mid > domain[n] ? n + 1 : mid < domain[0] ? 0 : n;\n      if (i !== n) df.warn('Scale domainMid exceeds domain min or max.', mid);\n      domain.splice(i, 0, mid);\n    }\n  }\n\n  // set the scale domain\n  scale.domain(domainCheck(type, domain, df));\n\n  // if ordinal scale domain is defined, prevent implicit\n  // domain construction as side-effect of scale lookup\n  if (type === Ordinal) {\n    scale.unknown(_.domainImplicit ? scaleImplicit : undefined);\n  }\n\n  // perform 'nice' adjustment as requested\n  if (_.nice && scale.nice) {\n    scale.nice(_.nice !== true && tickCount(scale, _.nice) || null);\n  }\n\n  // return the cardinality of the domain\n  return domain.length;\n}\nfunction rawDomain(scale, raw, df) {\n  if (raw) {\n    scale.domain(domainCheck(scale.type, raw, df));\n    return raw.length;\n  } else {\n    return -1;\n  }\n}\nfunction padDomain(type, domain, range, pad, exponent, constant) {\n  var span = Math.abs(peek(range) - range[0]),\n    frac = span / (span - 2 * pad),\n    d = type === Log ? zoomLog(domain, null, frac) : type === Sqrt ? zoomPow(domain, null, frac, 0.5) : type === Pow ? zoomPow(domain, null, frac, exponent || 1) : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1) : zoomLinear(domain, null, frac);\n  domain = domain.slice();\n  domain[0] = d[0];\n  domain[domain.length - 1] = d[1];\n  return domain;\n}\nfunction domainCheck(type, domain, df) {\n  if (isLogarithmic(type)) {\n    // sum signs of domain values\n    // if all pos or all neg, abs(sum) === domain.length\n    var s = Math.abs(domain.reduce((s, v) => s + (v < 0 ? -1 : v > 0 ? 1 : 0), 0));\n    if (s !== domain.length) {\n      df.warn('Log scale domain includes zero: ' + stringValue(domain));\n    }\n  }\n  return domain;\n}\nfunction configureBins(scale, _, count) {\n  let bins = _.bins;\n  if (bins && !isArray(bins)) {\n    // generate bin boundary array\n    const domain = scale.domain(),\n      lo = domain[0],\n      hi = peek(domain),\n      step = bins.step;\n    let start = bins.start == null ? lo : bins.start,\n      stop = bins.stop == null ? hi : bins.stop;\n    if (!step) error('Scale bins parameter missing step property.');\n    if (start < lo) start = step * Math.ceil(lo / step);\n    if (stop > hi) stop = step * Math.floor(hi / step);\n    bins = range(start, stop + step / 2, step);\n  }\n  if (bins) {\n    // assign bin boundaries to scale instance\n    scale.bins = bins;\n  } else if (scale.bins) {\n    // no current bins, remove bins if previously set\n    delete scale.bins;\n  }\n\n  // special handling for bin-ordinal scales\n  if (scale.type === BinOrdinal) {\n    if (!bins) {\n      // the domain specifies the bins\n      scale.bins = scale.domain();\n    } else if (!_.domain && !_.domainRaw) {\n      // the bins specify the domain\n      scale.domain(bins);\n      count = bins.length;\n    }\n  }\n\n  // return domain cardinality\n  return count;\n}\nfunction configureRange(scale, _, count) {\n  var type = scale.type,\n    round = _.round || false,\n    range = _.range;\n\n  // if range step specified, calculate full range extent\n  if (_.rangeStep != null) {\n    range = configureRangeStep(type, _, count);\n  }\n\n  // else if a range scheme is defined, use that\n  else if (_.scheme) {\n    range = configureScheme(type, _, count);\n    if (isFunction(range)) {\n      if (scale.interpolator) {\n        return scale.interpolator(range);\n      } else {\n        error(`Scale type ${type} does not support interpolating color schemes.`);\n      }\n    }\n  }\n\n  // given a range array for an interpolating scale, convert to interpolator\n  if (range && isInterpolating(type)) {\n    return scale.interpolator(interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma));\n  }\n\n  // configure rounding / interpolation\n  if (range && _.interpolate && scale.interpolate) {\n    scale.interpolate(interpolate(_.interpolate, _.interpolateGamma));\n  } else if (isFunction(scale.round)) {\n    scale.round(round);\n  } else if (isFunction(scale.rangeRound)) {\n    scale.interpolate(round ? interpolateRound : interpolate$1);\n  }\n  if (range) scale.range(flip(range, _.reverse));\n}\nfunction configureRangeStep(type, _, count) {\n  if (type !== Band && type !== Point) {\n    error('Only band and point scales support rangeStep.');\n  }\n\n  // calculate full range based on requested step size and padding\n  var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,\n    inner = type === Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0;\n  return [0, _.rangeStep * bandSpace(count, inner, outer)];\n}\nfunction configureScheme(type, _, count) {\n  var extent = _.schemeExtent,\n    name,\n    scheme$1;\n  if (isArray(_.scheme)) {\n    scheme$1 = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma);\n  } else {\n    name = _.scheme.toLowerCase();\n    scheme$1 = scheme(name);\n    if (!scheme$1) error(`Unrecognized scheme name: ${_.scheme}`);\n  }\n\n  // determine size for potential discrete range\n  count = type === Threshold ? count + 1 : type === BinOrdinal ? count - 1 : type === Quantile || type === Quantize ? +_.schemeCount || DEFAULT_COUNT : count;\n\n  // adjust and/or quantize scheme as appropriate\n  return isInterpolating(type) ? adjustScheme(scheme$1, extent, _.reverse) : isFunction(scheme$1) ? quantizeInterpolator(adjustScheme(scheme$1, extent), count) : type === Ordinal ? scheme$1 : scheme$1.slice(0, count);\n}\nfunction adjustScheme(scheme, extent, reverse) {\n  return isFunction(scheme) && (extent || reverse) ? interpolateRange(scheme, flip(extent || [0, 1], reverse)) : scheme;\n}\nfunction flip(array, reverse) {\n  return reverse ? array.slice().reverse() : array;\n}\n\n/**\n * Sorts scenegraph items in the pulse source array.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(*,*): number} [params.sort] - A comparator\n *   function for sorting tuples.\n */\nfunction SortItems(params) {\n  Transform.call(this, null, params);\n}\ninherits(SortItems, Transform, {\n  transform(_, pulse) {\n    const mod = _.modified('sort') || pulse.changed(pulse.ADD) || pulse.modified(_.sort.fields) || pulse.modified('datum');\n    if (mod) pulse.source.sort(stableCompare(_.sort));\n    this.modified(mod);\n    return pulse;\n  }\n});\n\nconst Zero = 'zero',\n  Center = 'center',\n  Normalize = 'normalize',\n  DefOutput = ['y0', 'y1'];\n\n/**\n * Stack layout for visualization elements.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to stack.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {function(object,object): number} [params.sort] - A comparator for stack sorting.\n * @param {string} [offset='zero'] - Stack baseline offset. One of 'zero', 'center', 'normalize'.\n */\nfunction Stack(params) {\n  Transform.call(this, null, params);\n}\nStack.Definition = {\n  'type': 'Stack',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'offset',\n    'type': 'enum',\n    'default': Zero,\n    'values': [Zero, Center, Normalize]\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': DefOutput\n  }]\n};\ninherits(Stack, Transform, {\n  transform(_, pulse) {\n    var as = _.as || DefOutput,\n      y0 = as[0],\n      y1 = as[1],\n      sort = stableCompare(_.sort),\n      field = _.field || one,\n      stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero,\n      groups,\n      i,\n      n,\n      max;\n\n    // partition, sum, and sort the stack groups\n    groups = partition(pulse.source, _.groupby, sort, field);\n\n    // compute stack layouts per group\n    for (i = 0, n = groups.length, max = groups.max; i < n; ++i) {\n      stack(groups[i], max, field, y0, y1);\n    }\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n});\nfunction stackCenter(group, max, field, y0, y1) {\n  var last = (max - group.sum) / 2,\n    m = group.length,\n    j = 0,\n    t;\n  for (; j < m; ++j) {\n    t = group[j];\n    t[y0] = last;\n    t[y1] = last += Math.abs(field(t));\n  }\n}\nfunction stackNormalize(group, max, field, y0, y1) {\n  var scale = 1 / group.sum,\n    last = 0,\n    m = group.length,\n    j = 0,\n    v = 0,\n    t;\n  for (; j < m; ++j) {\n    t = group[j];\n    t[y0] = last;\n    t[y1] = last = scale * (v += Math.abs(field(t)));\n  }\n}\nfunction stackZero(group, max, field, y0, y1) {\n  var lastPos = 0,\n    lastNeg = 0,\n    m = group.length,\n    j = 0,\n    v,\n    t;\n  for (; j < m; ++j) {\n    t = group[j];\n    v = +field(t);\n    if (v < 0) {\n      t[y0] = lastNeg;\n      t[y1] = lastNeg += v;\n    } else {\n      t[y0] = lastPos;\n      t[y1] = lastPos += v;\n    }\n  }\n}\nfunction partition(data, groupby, sort, field) {\n  var groups = [],\n    get = f => f(t),\n    map,\n    i,\n    n,\n    m,\n    t,\n    k,\n    g,\n    s,\n    max;\n\n  // partition data points into stack groups\n  if (groupby == null) {\n    groups.push(data.slice());\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n      if (!g) {\n        map[k] = g = [];\n        groups.push(g);\n      }\n      g.push(t);\n    }\n  }\n\n  // compute sums of groups, sort groups as needed\n  for (k = 0, max = 0, m = groups.length; k < m; ++k) {\n    g = groups[k];\n    for (i = 0, s = 0, n = g.length; i < n; ++i) {\n      s += Math.abs(field(g[i]));\n    }\n    g.sum = s;\n    if (s > max) max = s;\n    if (sort) g.sort(sort);\n  }\n  groups.max = max;\n  return groups;\n}\n\nexport { AxisTicks as axisticks, DataJoin as datajoin, Encode as encode, LegendEntries as legendentries, LinkPath as linkpath, Pie as pie, Scale as scale, SortItems as sortitems, Stack as stack };\n", "import { Transform, rederive, ingest, replace } from 'vega-dataflow';\nimport { error, extent, inherits, identity, isArray, isFunction, isNumber, array, constant, one, accessorName, accessorFields, field, extend, toSet, zero } from 'vega-util';\nimport { tickStep, range, max, sum } from 'd3-array';\nimport { bandwidthNRD } from 'vega-statistics';\nimport { getProjectionPath, projectionProperties, projection } from 'vega-projection';\nimport { geoGraticule } from 'd3-geo';\nimport { rgb } from 'd3-color';\nimport { canvas } from 'vega-canvas';\n\nfunction noop() {}\nconst cases = [[], [[[1.0, 1.5], [0.5, 1.0]]], [[[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [0.5, 1.0]]], [[[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], [[[1.0, 0.5], [1.0, 1.5]]], [[[1.0, 0.5], [0.5, 1.0]]], [[[0.5, 1.0], [1.0, 0.5]]], [[[1.0, 1.5], [1.0, 0.5]]], [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], [[[1.5, 1.0], [1.0, 0.5]]], [[[0.5, 1.0], [1.5, 1.0]]], [[[1.0, 1.5], [1.5, 1.0]]], [[[0.5, 1.0], [1.0, 1.5]]], []];\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction contours () {\n  var dx = 1,\n    dy = 1,\n    smooth = smoothLinear;\n  function contours(values, tz) {\n    return tz.map(value => contour(values, value));\n  }\n\n  // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n  function contour(values, value) {\n    var polygons = [],\n      holes = [];\n    isorings(values, value, ring => {\n      smooth(ring, values, value);\n      if (area(ring) > 0) polygons.push([ring]);else holes.push(ring);\n    });\n    holes.forEach(hole => {\n      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n    return {\n      type: 'MultiPolygon',\n      value: value,\n      coordinates: polygons\n    };\n  }\n\n  // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array(),\n      fragmentByEnd = new Array(),\n      x,\n      y,\n      t0,\n      t1,\n      t2,\n      t3;\n\n    // Special case for the first row (y = -1, t2 = t3 = 0).\n    x = y = -1;\n    t1 = values[0] >= value;\n    cases[t1 << 1].forEach(stitch);\n    while (++x < dx - 1) {\n      t0 = t1, t1 = values[x + 1] >= value;\n      cases[t0 | t1 << 1].forEach(stitch);\n    }\n    cases[t1 << 0].forEach(stitch);\n\n    // General case for the intermediate rows.\n    while (++y < dy - 1) {\n      x = -1;\n      t1 = values[y * dx + dx] >= value;\n      t2 = values[y * dx] >= value;\n      cases[t1 << 1 | t2 << 2].forEach(stitch);\n      while (++x < dx - 1) {\n        t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n        t3 = t2, t2 = values[y * dx + x + 1] >= value;\n        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n      }\n      cases[t1 | t2 << 3].forEach(stitch);\n    }\n\n    // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n    x = -1;\n    t2 = values[y * dx] >= value;\n    cases[t2 << 2].forEach(stitch);\n    while (++x < dx - 1) {\n      t3 = t2, t2 = values[y * dx + x + 1] >= value;\n      cases[t2 << 2 | t3 << 3].forEach(stitch);\n    }\n    cases[t2 << 3].forEach(stitch);\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n        end = [line[1][0] + x, line[1][1] + y],\n        startIndex = index(start),\n        endIndex = index(end),\n        f,\n        g;\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {\n              start: f.start,\n              end: g.end,\n              ring: f.ring.concat(g.ring)\n            };\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {\n              start: g.start,\n              end: f.end,\n              ring: g.ring.concat(f.ring)\n            };\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {\n          start: startIndex,\n          end: endIndex,\n          ring: [start, end]\n        };\n      }\n    }\n  }\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n  function smoothLinear(ring, values, value) {\n    ring.forEach(point => {\n      var x = point[0],\n        y = point[1],\n        xt = x | 0,\n        yt = y | 0,\n        v0,\n        v1 = values[yt * dx + xt];\n      if (x > 0 && x < dx && xt === x) {\n        v0 = values[yt * dx + xt - 1];\n        point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n      }\n      if (y > 0 && y < dy && yt === y) {\n        v0 = values[(yt - 1) * dx + xt];\n        point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n      }\n    });\n  }\n  contours.contour = contour;\n  contours.size = function (_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.floor(_[0]),\n      _1 = Math.floor(_[1]);\n    if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n    return dx = _0, dy = _1, contours;\n  };\n  contours.smooth = function (_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n  return contours;\n}\nfunction area(ring) {\n  var i = 0,\n    n = ring.length,\n    area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n  return area;\n}\nfunction contains(ring, hole) {\n  var i = -1,\n    n = hole.length,\n    c;\n  while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n  return 0;\n}\nfunction ringContains(ring, point) {\n  var x = point[0],\n    y = point[1],\n    contains = -1;\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i],\n      xi = pi[0],\n      yi = pi[1],\n      pj = ring[j],\n      xj = pj[0],\n      yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi) contains = -contains;\n  }\n  return contains;\n}\nfunction segmentContains(a, b, c) {\n  var i;\n  return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\nfunction within(p, q, r) {\n  return p <= q && q <= r || r <= q && q <= p;\n}\n\nfunction quantize (k, nice, zero) {\n  return function (values) {\n    var ex = extent(values),\n      start = zero ? Math.min(ex[0], 0) : ex[0],\n      stop = ex[1],\n      span = stop - start,\n      step = nice ? tickStep(start, stop, k) : span / (k + 1);\n    return range(start + step, stop, step);\n  };\n}\n\n/**\n * Generate isocontours (level sets) based on input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n *   data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n *   specified, the levels, nice, resolve, and zero parameters are ignored.\n * @param {number} [params.levels] - The desired number of contour levels.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n *   threshold values should be automatically aligned to \"nice\"\n *   human-friendly values. Setting this flag may cause the number of\n *   thresholds to deviate from the specified levels.\n * @param {string} [params.resolve] - The method for resolving thresholds\n *   across multiple input grids. If 'independent' (the default), threshold\n *   calculation will be performed separately for each grid. If 'shared', a\n *   single set of threshold values will be used for all input grids.\n * @param {boolean} [params.zero] - Boolean flag indicating if the contour\n *   threshold values should include zero.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n *   polygons should be smoothed using linear interpolation. The default is\n *   true. The parameter is ignored when using density estimation.\n * @param {boolean} [params.scale] - Optional numerical value by which to\n *   scale the output isocontour coordinates. This parameter can be useful\n *   to scale the contours to match a desired output resolution.\n * @param {string} [params.as='contour'] - The output field in which to store\n *   the generated isocontour data (default 'contour').\n */\nfunction Isocontour(params) {\n  Transform.call(this, null, params);\n}\nIsocontour.Definition = {\n  'type': 'Isocontour',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'thresholds',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'levels',\n    'type': 'number'\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'zero',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'scale',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'translate',\n    'type': 'number',\n    'array': true,\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'null': true,\n    'default': 'contour'\n  }]\n};\ninherits(Isocontour, Transform, {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n      source = pulse.materialize(pulse.SOURCE).source,\n      field = _.field || identity,\n      contour = contours().smooth(_.smooth !== false),\n      tz = _.thresholds || levels(source, field, _),\n      as = _.as === null ? null : _.as || 'contour',\n      values = [];\n    source.forEach(t => {\n      const grid = field(t);\n\n      // generate contour paths in GeoJSON format\n      const paths = contour.size([grid.width, grid.height])(grid.values, isArray(tz) ? tz : tz(grid.values));\n\n      // adjust contour path coordinates as needed\n      transformPaths(paths, grid, t, _);\n\n      // ingest; copy source data properties to output\n      paths.forEach(p => {\n        values.push(rederive(t, ingest(as != null ? {\n          [as]: p\n        } : p)));\n      });\n    });\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = values;\n    return out;\n  }\n});\nfunction levels(values, f, _) {\n  const q = quantize(_.levels || 10, _.nice, _.zero !== false);\n  return _.resolve !== 'shared' ? q : q(values.map(t => max(f(t).values)));\n}\nfunction transformPaths(paths, grid, datum, _) {\n  let s = _.scale || grid.scale,\n    t = _.translate || grid.translate;\n  if (isFunction(s)) s = s(datum, _);\n  if (isFunction(t)) t = t(datum, _);\n  if ((s === 1 || s == null) && !t) return;\n  const sx = (isNumber(s) ? s : s[0]) || 1,\n    sy = (isNumber(s) ? s : s[1]) || 1,\n    tx = t && t[0] || 0,\n    ty = t && t[1] || 0;\n  paths.forEach(transform(grid, sx, sy, tx, ty));\n}\nfunction transform(grid, sx, sy, tx, ty) {\n  const x1 = grid.x1 || 0,\n    y1 = grid.y1 || 0,\n    flip = sx * sy < 0;\n  function transformPolygon(coordinates) {\n    coordinates.forEach(transformRing);\n  }\n  function transformRing(coordinates) {\n    if (flip) coordinates.reverse(); // maintain winding order\n    coordinates.forEach(transformPoint);\n  }\n  function transformPoint(coordinates) {\n    coordinates[0] = (coordinates[0] - x1) * sx + tx;\n    coordinates[1] = (coordinates[1] - y1) * sy + ty;\n  }\n  return function (geometry) {\n    geometry.coordinates.forEach(transformPolygon);\n    return geometry;\n  };\n}\n\nfunction radius(bw, data, f) {\n  const v = bw >= 0 ? bw : bandwidthNRD(data, f);\n  return Math.round((Math.sqrt(4 * v * v + 1) - 1) / 2);\n}\nfunction number(_) {\n  return isFunction(_) ? _ : constant(+_);\n}\n\n// Implementation adapted from d3/d3-contour. Thanks!\nfunction density2D () {\n  var x = d => d[0],\n    y = d => d[1],\n    weight = one,\n    bandwidth = [-1, -1],\n    dx = 960,\n    dy = 500,\n    k = 2; // log2(cellSize)\n\n  function density(data, counts) {\n    const rx = radius(bandwidth[0], data, x) >> k,\n      // blur x-radius\n      ry = radius(bandwidth[1], data, y) >> k,\n      // blur y-radius\n      ox = rx ? rx + 2 : 0,\n      // x-offset padding for blur\n      oy = ry ? ry + 2 : 0,\n      // y-offset padding for blur\n      n = 2 * ox + (dx >> k),\n      // grid width\n      m = 2 * oy + (dy >> k),\n      // grid height\n      values0 = new Float32Array(n * m),\n      values1 = new Float32Array(n * m);\n    let values = values0;\n    data.forEach(d => {\n      const xi = ox + (+x(d) >> k),\n        yi = oy + (+y(d) >> k);\n      if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n        values0[xi + yi * n] += +weight(d);\n      }\n    });\n    if (rx > 0 && ry > 0) {\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n      blurX(n, m, values0, values1, rx);\n      blurY(n, m, values1, values0, ry);\n    } else if (rx > 0) {\n      blurX(n, m, values0, values1, rx);\n      blurX(n, m, values1, values0, rx);\n      blurX(n, m, values0, values1, rx);\n      values = values1;\n    } else if (ry > 0) {\n      blurY(n, m, values0, values1, ry);\n      blurY(n, m, values1, values0, ry);\n      blurY(n, m, values0, values1, ry);\n      values = values1;\n    }\n\n    // scale density estimates\n    // density in points per square pixel or probability density\n    const s = counts ? Math.pow(2, -2 * k) : 1 / sum(values);\n    for (let i = 0, sz = n * m; i < sz; ++i) values[i] *= s;\n    return {\n      values: values,\n      scale: 1 << k,\n      width: n,\n      height: m,\n      x1: ox,\n      y1: oy,\n      x2: ox + (dx >> k),\n      y2: oy + (dy >> k)\n    };\n  }\n  density.x = function (_) {\n    return arguments.length ? (x = number(_), density) : x;\n  };\n  density.y = function (_) {\n    return arguments.length ? (y = number(_), density) : y;\n  };\n  density.weight = function (_) {\n    return arguments.length ? (weight = number(_), density) : weight;\n  };\n  density.size = function (_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = +_[0],\n      _1 = +_[1];\n    if (!(_0 >= 0 && _1 >= 0)) error('invalid size');\n    return dx = _0, dy = _1, density;\n  };\n  density.cellSize = function (_) {\n    if (!arguments.length) return 1 << k;\n    if (!((_ = +_) >= 1)) error('invalid cell size');\n    k = Math.floor(Math.log(_) / Math.LN2);\n    return density;\n  };\n  density.bandwidth = function (_) {\n    if (!arguments.length) return bandwidth;\n    _ = array(_);\n    if (_.length === 1) _ = [+_[0], +_[0]];\n    if (_.length !== 2) error('invalid bandwidth');\n    return bandwidth = _, density;\n  };\n  return density;\n}\nfunction blurX(n, m, source, target, r) {\n  const w = (r << 1) + 1;\n  for (let j = 0; j < m; ++j) {\n    for (let i = 0, sr = 0; i < n + r; ++i) {\n      if (i < n) {\n        sr += source[i + j * n];\n      }\n      if (i >= r) {\n        if (i >= w) {\n          sr -= source[i - w + j * n];\n        }\n        target[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n      }\n    }\n  }\n}\nfunction blurY(n, m, source, target, r) {\n  const w = (r << 1) + 1;\n  for (let i = 0; i < n; ++i) {\n    for (let j = 0, sr = 0; j < m + r; ++j) {\n      if (j < m) {\n        sr += source[i + j * n];\n      }\n      if (j >= r) {\n        if (j >= w) {\n          sr -= source[i + (j - w) * n];\n        }\n        target[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n      }\n    }\n  }\n}\n\n/**\n * Perform 2D kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The [width, height] extent (in\n *   units of input pixels) over which to perform density estimation.\n * @param {function(object): number} params.x - The x-coordinate accessor.\n * @param {function(object): number} params.y - The y-coordinate accessor.\n * @param {function(object): number} [params.weight] - The weight accessor.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors\n *   to groupby.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n *   This parameter determines the level of spatial approximation. For example,\n *   the default value of 4 maps to 2x reductions in both x- and y- dimensions.\n *   A value of 1 will result in an output raster grid whose dimensions exactly\n *   matches the size parameter.\n * @param {Array<number>} [params.bandwidth] - The KDE kernel bandwidths,\n *   in pixels. The input can be a two-element array specifying separate\n *   x and y bandwidths, or a single-element array specifying both. If the\n *   bandwidth is unspecified or less than zero, the bandwidth will be\n *   automatically determined.\n * @param {boolean} [params.counts=false] - A boolean flag indicating if the\n *   output values should be probability estimates (false, default) or\n *   smoothed counts (true).\n * @param {string} [params.as='grid'] - The output field in which to store\n *   the generated raster grid (default 'grid').\n */\nfunction KDE2D(params) {\n  Transform.call(this, null, params);\n}\nKDE2D.Definition = {\n  'type': 'KDE2D',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'weight',\n    'type': 'field'\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'cellSize',\n    'type': 'number'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'counts',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'grid'\n  }]\n};\nconst PARAMS = ['x', 'y', 'weight', 'size', 'cellSize', 'bandwidth'];\nfunction params(obj, _) {\n  PARAMS.forEach(param => _[param] != null ? obj[param](_[param]) : 0);\n  return obj;\n}\ninherits(KDE2D, Transform, {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) return pulse.StopPropagation;\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n      source = pulse.materialize(pulse.SOURCE).source,\n      groups = partition(source, _.groupby),\n      names = (_.groupby || []).map(accessorName),\n      kde = params(density2D(), _),\n      as = _.as || 'grid',\n      values = [];\n    function set(t, vals) {\n      for (let i = 0; i < names.length; ++i) t[names[i]] = vals[i];\n      return t;\n    }\n\n    // generate density raster grids\n    values = groups.map(g => ingest(set({\n      [as]: kde(g, _.counts)\n    }, g.dims)));\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = values;\n    return out;\n  }\n});\nfunction partition(data, groupby) {\n  var groups = [],\n    get = f => f(t),\n    map,\n    i,\n    n,\n    t,\n    k,\n    g;\n\n  // partition data points into groups\n  if (groupby == null) {\n    groups.push(data);\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n      g.push(t);\n    }\n  }\n  return groups;\n}\n\n/**\n * Generate contours based on kernel-density estimation of point data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The dimensions [width, height] over which to compute contours.\n *  If the values parameter is provided, this must be the dimensions of the input data.\n *  If density estimation is performed, this is the output view dimensions in pixels.\n * @param {Array<number>} [params.values] - An array of numeric values representing an\n *  width x height grid of values over which to compute contours. If unspecified, this\n *  transform will instead attempt to compute contours for the kernel density estimate\n *  using values drawn from data tuples in the input pulse.\n * @param {function(object): number} [params.x] - The pixel x-coordinate accessor for density estimation.\n * @param {function(object): number} [params.y] - The pixel y-coordinate accessor for density estimation.\n * @param {function(object): number} [params.weight] - The data point weight accessor for density estimation.\n * @param {number} [params.cellSize] - Contour density calculation cell size.\n * @param {number} [params.bandwidth] - Kernel density estimation bandwidth.\n * @param {Array<number>} [params.thresholds] - Contour threshold array. If\n *   this parameter is set, the count and nice parameters will be ignored.\n * @param {number} [params.count] - The desired number of contours.\n * @param {boolean} [params.nice] - Boolean flag indicating if the contour\n *   threshold values should be automatically aligned to \"nice\"\n *   human-friendly values. Setting this flag may cause the number of\n *   thresholds to deviate from the specified count.\n * @param {boolean} [params.smooth] - Boolean flag indicating if the contour\n *   polygons should be smoothed using linear interpolation. The default is\n *   true. The parameter is ignored when using density estimation.\n */\nfunction Contour(params) {\n  Transform.call(this, null, params);\n}\nContour.Definition = {\n  'type': 'Contour',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'required': true\n  }, {\n    'name': 'values',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'x',\n    'type': 'field'\n  }, {\n    'name': 'y',\n    'type': 'field'\n  }, {\n    'name': 'weight',\n    'type': 'field'\n  }, {\n    'name': 'cellSize',\n    'type': 'number'\n  }, {\n    'name': 'bandwidth',\n    'type': 'number'\n  }, {\n    'name': 'count',\n    'type': 'number'\n  }, {\n    'name': 'nice',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'thresholds',\n    'type': 'number',\n    'array': true\n  }, {\n    'name': 'smooth',\n    'type': 'boolean',\n    'default': true\n  }]\n};\ninherits(Contour, Transform, {\n  transform(_, pulse) {\n    if (this.value && !pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n    var out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS),\n      contour = contours().smooth(_.smooth !== false),\n      values = _.values,\n      thresh = _.thresholds || quantize(_.count || 10, _.nice, !!values),\n      size = _.size,\n      grid,\n      post;\n    if (!values) {\n      values = pulse.materialize(pulse.SOURCE).source;\n      grid = params(density2D(), _)(values, true);\n      post = transform(grid, grid.scale || 1, grid.scale || 1, 0, 0);\n      size = [grid.width, grid.height];\n      values = grid.values;\n    }\n    thresh = isArray(thresh) ? thresh : thresh(values);\n    values = contour.size(size)(values, thresh);\n    if (post) values.forEach(post);\n    if (this.value) out.rem = this.value;\n    this.value = out.source = out.add = (values || []).map(ingest);\n    return out;\n  }\n});\n\nconst Feature = 'Feature';\nconst FeatureCollection = 'FeatureCollection';\nconst MultiPoint = 'MultiPoint';\n\n/**\n * Consolidate an array of [longitude, latitude] points or GeoJSON features\n * into a combined GeoJSON object. This transform is particularly useful for\n * combining geo data for a Projection's fit argument. The resulting GeoJSON\n * data is available as this transform's value. Input pulses are unchanged.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} [params.fields] - A two-element array\n *   of field accessors for the longitude and latitude values.\n * @param {function(object): *} params.geojson - A field accessor for\n *   retrieving GeoJSON feature data.\n */\nfunction GeoJSON(params) {\n  Transform.call(this, null, params);\n}\nGeoJSON.Definition = {\n  'type': 'GeoJSON',\n  'metadata': {},\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'geojson',\n    'type': 'field'\n  }]\n};\ninherits(GeoJSON, Transform, {\n  transform(_, pulse) {\n    var features = this._features,\n      points = this._points,\n      fields = _.fields,\n      lon = fields && fields[0],\n      lat = fields && fields[1],\n      geojson = _.geojson || !fields && identity,\n      flag = pulse.ADD,\n      mod;\n    mod = _.modified() || pulse.changed(pulse.REM) || pulse.modified(accessorFields(geojson)) || lon && pulse.modified(accessorFields(lon)) || lat && pulse.modified(accessorFields(lat));\n    if (!this.value || mod) {\n      flag = pulse.SOURCE;\n      this._features = features = [];\n      this._points = points = [];\n    }\n    if (geojson) {\n      pulse.visit(flag, t => features.push(geojson(t)));\n    }\n    if (lon && lat) {\n      pulse.visit(flag, t => {\n        var x = lon(t),\n          y = lat(t);\n        if (x != null && y != null && (x = +x) === x && (y = +y) === y) {\n          points.push([x, y]);\n        }\n      });\n      features = features.concat({\n        type: Feature,\n        geometry: {\n          type: MultiPoint,\n          coordinates: points\n        }\n      });\n    }\n    this.value = {\n      type: FeatureCollection,\n      features: features\n    };\n  }\n});\n\n/**\n * Map GeoJSON data to an SVG path string.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n *   or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='path'] - The output field in which to store\n *   the generated path data (default 'path').\n */\nfunction GeoPath(params) {\n  Transform.call(this, null, params);\n}\nGeoPath.Definition = {\n  'type': 'GeoPath',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection'\n  }, {\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'pointRadius',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\ninherits(GeoPath, Transform, {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n      path = this.value,\n      field = _.field || identity,\n      as = _.as || 'path',\n      flag = out.SOURCE;\n    if (!path || _.modified()) {\n      // parameters updated, reset and reflow\n      this.value = path = getProjectionPath(_.projection);\n      out.materialize().reflow();\n    } else {\n      flag = field === identity || pulse.modified(field.fields) ? out.ADD_MOD : out.ADD;\n    }\n    const prev = initPath(path, _.pointRadius);\n    out.visit(flag, t => t[as] = path(field(t)));\n    path.pointRadius(prev);\n    return out.modifies(as);\n  }\n});\nfunction initPath(path, pointRadius) {\n  const prev = path.pointRadius();\n  path.context(null);\n  if (pointRadius != null) {\n    path.pointRadius(pointRadius);\n  }\n  return prev;\n}\n\n/**\n * Geo-code a longitude/latitude point to an x/y coordinate.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {Array<function(object): *>} params.fields - A two-element array of\n *   field accessors for the longitude and latitude values.\n * @param {Array<string>} [params.as] - A two-element array of field names\n *   under which to store the result. Defaults to ['x','y'].\n */\nfunction GeoPoint(params) {\n  Transform.call(this, null, params);\n}\nGeoPoint.Definition = {\n  'type': 'GeoPoint',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection',\n    'required': true\n  }, {\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 2,\n    'default': ['x', 'y']\n  }]\n};\ninherits(GeoPoint, Transform, {\n  transform(_, pulse) {\n    var proj = _.projection,\n      lon = _.fields[0],\n      lat = _.fields[1],\n      as = _.as || ['x', 'y'],\n      x = as[0],\n      y = as[1],\n      mod;\n    function set(t) {\n      const xy = proj([lon(t), lat(t)]);\n      if (xy) {\n        t[x] = xy[0];\n        t[y] = xy[1];\n      } else {\n        t[x] = undefined;\n        t[y] = undefined;\n      }\n    }\n    if (_.modified()) {\n      // parameters updated, reflow\n      pulse = pulse.materialize().reflow(true).visit(pulse.SOURCE, set);\n    } else {\n      mod = pulse.modified(lon.fields) || pulse.modified(lat.fields);\n      pulse.visit(mod ? pulse.ADD_MOD : pulse.ADD, set);\n    }\n    return pulse.modifies(as);\n  }\n});\n\n/**\n * Annotate items with a geopath shape generator.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(number, number): *} params.projection - The cartographic\n *   projection to apply.\n * @param {function(object): *} [params.field] - The field with GeoJSON data,\n *   or null if the tuple itself is a GeoJSON feature.\n * @param {string} [params.as='shape'] - The output field in which to store\n *   the generated path data (default 'shape').\n */\nfunction GeoShape(params) {\n  Transform.call(this, null, params);\n}\nGeoShape.Definition = {\n  'type': 'GeoShape',\n  'metadata': {\n    'modifies': true,\n    'nomod': true\n  },\n  'params': [{\n    'name': 'projection',\n    'type': 'projection'\n  }, {\n    'name': 'field',\n    'type': 'field',\n    'default': 'datum'\n  }, {\n    'name': 'pointRadius',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'shape'\n  }]\n};\ninherits(GeoShape, Transform, {\n  transform(_, pulse) {\n    var out = pulse.fork(pulse.ALL),\n      shape = this.value,\n      as = _.as || 'shape',\n      flag = out.ADD;\n    if (!shape || _.modified()) {\n      // parameters updated, reset and reflow\n      this.value = shape = shapeGenerator(getProjectionPath(_.projection), _.field || field('datum'), _.pointRadius);\n      out.materialize().reflow();\n      flag = out.SOURCE;\n    }\n    out.visit(flag, t => t[as] = shape);\n    return out.modifies(as);\n  }\n});\nfunction shapeGenerator(path, field, pointRadius) {\n  const shape = pointRadius == null ? _ => path(field(_)) : _ => {\n    var prev = path.pointRadius(),\n      value = path.pointRadius(pointRadius)(field(_));\n    path.pointRadius(prev);\n    return value;\n  };\n  shape.context = _ => {\n    path.context(_);\n    return shape;\n  };\n  return shape;\n}\n\n/**\n * GeoJSON feature generator for creating graticules.\n * @constructor\n */\nfunction Graticule(params) {\n  Transform.call(this, [], params);\n  this.generator = geoGraticule();\n}\nGraticule.Definition = {\n  'type': 'Graticule',\n  'metadata': {\n    'changes': true,\n    'generates': true\n  },\n  'params': [{\n    'name': 'extent',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'extentMajor',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'extentMinor',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'step',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'stepMajor',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'default': [90, 360]\n  }, {\n    'name': 'stepMinor',\n    'type': 'number',\n    'array': true,\n    'length': 2,\n    'default': [10, 10]\n  }, {\n    'name': 'precision',\n    'type': 'number',\n    'default': 2.5\n  }]\n};\ninherits(Graticule, Transform, {\n  transform(_, pulse) {\n    var src = this.value,\n      gen = this.generator,\n      t;\n    if (!src.length || _.modified()) {\n      for (const prop in _) {\n        if (isFunction(gen[prop])) {\n          gen[prop](_[prop]);\n        }\n      }\n    }\n    t = gen();\n    if (src.length) {\n      pulse.mod.push(replace(src[0], t));\n    } else {\n      pulse.add.push(ingest(t));\n    }\n    src[0] = t;\n    return pulse;\n  }\n});\n\n/**\n * Render a heatmap image for input raster grid data.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} [params.field] - The field with raster grid\n *   data. If unspecified, the tuple itself is interpreted as a raster grid.\n * @param {string} [params.color] - A constant color value or function for\n *   individual pixel color. If a function, it will be invoked with an input\n *   object that includes $x, $y, $value, and $max fields for the grid.\n * @param {number} [params.opacity] - A constant opacity value or function for\n *   individual pixel opacity. If a function, it will be invoked with an input\n *   object that includes $x, $y, $value, and $max fields for the grid.\n * @param {string} [params.resolve] - The method for resolving maximum values\n *   across multiple input grids. If 'independent' (the default), maximum\n *   calculation will be performed separately for each grid. If 'shared',\n *   a single global maximum will be used for all input grids.\n * @param {string} [params.as='image'] - The output field in which to store\n *   the generated bitmap canvas images (default 'image').\n */\nfunction Heatmap(params) {\n  Transform.call(this, null, params);\n}\nHeatmap.Definition = {\n  'type': 'heatmap',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'color',\n    'type': 'string',\n    'expr': true\n  }, {\n    'name': 'opacity',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'resolve',\n    'type': 'enum',\n    'values': ['shared', 'independent'],\n    'default': 'independent'\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'image'\n  }]\n};\ninherits(Heatmap, Transform, {\n  transform(_, pulse) {\n    if (!pulse.changed() && !_.modified()) {\n      return pulse.StopPropagation;\n    }\n    var source = pulse.materialize(pulse.SOURCE).source,\n      shared = _.resolve === 'shared',\n      field = _.field || identity,\n      opacity = opacity_(_.opacity, _),\n      color = color_(_.color, _),\n      as = _.as || 'image',\n      obj = {\n        $x: 0,\n        $y: 0,\n        $value: 0,\n        $max: shared ? max(source.map(t => max(field(t).values))) : 0\n      };\n    source.forEach(t => {\n      const v = field(t);\n\n      // build proxy data object\n      const o = extend({}, t, obj);\n      // set maximum value if not globally shared\n      if (!shared) o.$max = max(v.values || []);\n\n      // generate canvas image\n      // optimize color/opacity if not pixel-dependent\n      t[as] = toCanvas(v, o, color.dep ? color : constant(color(o)), opacity.dep ? opacity : constant(opacity(o)));\n    });\n    return pulse.reflow(true).modifies(as);\n  }\n});\n\n// get image color function\nfunction color_(color, _) {\n  let f;\n  if (isFunction(color)) {\n    f = obj => rgb(color(obj, _));\n    f.dep = dependency(color);\n  } else {\n    // default to mid-grey\n    f = constant(rgb(color || '#888'));\n  }\n  return f;\n}\n\n// get image opacity function\nfunction opacity_(opacity, _) {\n  let f;\n  if (isFunction(opacity)) {\n    f = obj => opacity(obj, _);\n    f.dep = dependency(opacity);\n  } else if (opacity) {\n    f = constant(opacity);\n  } else {\n    // default to [0, max] opacity gradient\n    f = obj => obj.$value / obj.$max || 0;\n    f.dep = true;\n  }\n  return f;\n}\n\n// check if function depends on individual pixel data\nfunction dependency(f) {\n  if (!isFunction(f)) return false;\n  const set = toSet(accessorFields(f));\n  return set.$x || set.$y || set.$value || set.$max;\n}\n\n// render raster grid to canvas\nfunction toCanvas(grid, obj, color, opacity) {\n  const n = grid.width,\n    m = grid.height,\n    x1 = grid.x1 || 0,\n    y1 = grid.y1 || 0,\n    x2 = grid.x2 || n,\n    y2 = grid.y2 || m,\n    val = grid.values,\n    value = val ? i => val[i] : zero,\n    can = canvas(x2 - x1, y2 - y1),\n    ctx = can.getContext('2d'),\n    img = ctx.getImageData(0, 0, x2 - x1, y2 - y1),\n    pix = img.data;\n  for (let j = y1, k = 0; j < y2; ++j) {\n    obj.$y = j - y1;\n    for (let i = x1, r = j * n; i < x2; ++i, k += 4) {\n      obj.$x = i - x1;\n      obj.$value = value(i + r);\n      const v = color(obj);\n      pix[k + 0] = v.r;\n      pix[k + 1] = v.g;\n      pix[k + 2] = v.b;\n      pix[k + 3] = ~~(255 * opacity(obj));\n    }\n  }\n  ctx.putImageData(img, 0, 0);\n  return can;\n}\n\n/**\n * Maintains a cartographic projection.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Projection(params) {\n  Transform.call(this, null, params);\n  this.modified(true); // always treat as modified\n}\n\ninherits(Projection, Transform, {\n  transform(_, pulse) {\n    let proj = this.value;\n    if (!proj || _.modified('type')) {\n      this.value = proj = create(_.type);\n      projectionProperties.forEach(prop => {\n        if (_[prop] != null) set(proj, prop, _[prop]);\n      });\n    } else {\n      projectionProperties.forEach(prop => {\n        if (_.modified(prop)) set(proj, prop, _[prop]);\n      });\n    }\n    if (_.pointRadius != null) proj.path.pointRadius(_.pointRadius);\n    if (_.fit) fit(proj, _);\n    return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n  }\n});\nfunction fit(proj, _) {\n  const data = collectGeoJSON(_.fit);\n  _.extent ? proj.fitExtent(_.extent, data) : _.size ? proj.fitSize(_.size, data) : 0;\n}\nfunction create(type) {\n  const constructor = projection((type || 'mercator').toLowerCase());\n  if (!constructor) error('Unrecognized projection type: ' + type);\n  return constructor();\n}\nfunction set(proj, key, value) {\n  if (isFunction(proj[key])) proj[key](value);\n}\nfunction collectGeoJSON(data) {\n  data = array(data);\n  return data.length === 1 ? data[0] : {\n    type: FeatureCollection,\n    features: data.reduce((a, f) => a.concat(featurize(f)), [])\n  };\n}\nfunction featurize(f) {\n  return f.type === FeatureCollection ? f.features : array(f).filter(d => d != null).map(d => d.type === Feature ? d : {\n    type: Feature,\n    geometry: d\n  });\n}\n\nexport { Contour as contour, GeoJSON as geojson, GeoPath as geopath, GeoPoint as geopoint, GeoShape as geoshape, Graticule as graticule, Heatmap as heatmap, Isocontour as isocontour, KDE2D as kde2d, Projection as projection };\n", "export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n", "export default function noop() {}\n", "function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n", "import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum = new Adder();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli\u2019s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum = new Adder();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n", "import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n", "import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum,\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum = new Adder();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360\u00B0) % 360\u00B0, except that we want\n// the distance between \u00B1180\u00B0 to be 360\u00B0.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n", "import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = hypot(cx, cy, cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2.add(v * cx);\n  Y2.add(v * cy);\n  Z2.add(v * cz);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 = 0;\n  X2 = new Adder();\n  Y2 = new Adder();\n  Z2 = new Adder();\n  stream(object, centroidStream);\n\n  var x = +X2,\n      y = +Y2,\n      z = +Z2,\n      m = hypot(x, y, z);\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = hypot(x, y, z);\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n", "export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n", "import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n  if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n  return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    lambda += deltaLambda;\n    if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n    return [lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n", "import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0\u00B0, 0\u00B0], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n", "import noop from \"../noop.js\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n", "import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n", "import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (pointEqual(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * epsilon;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n", "import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n  return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  var sum = new Adder();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point\u2019s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n", "import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n", "import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n", "import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 6 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 \u2A2F n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n", "export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n", "import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon\u2019s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n", "import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n", "export default x => x;\n", "import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n    areaRingSum = new Adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum = new Adder();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new Adder();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n", "import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n", "import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n", "import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n", "import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum = new Adder();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n", "// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n  constructor(digits) {\n    this._append = digits == null ? append : appendRound(digits);\n    this._radius = 4.5;\n    this._ = \"\";\n  }\n  pointRadius(_) {\n    this._radius = +_;\n    return this;\n  }\n  polygonStart() {\n    this._line = 0;\n  }\n  polygonEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line === 0) this._ += \"Z\";\n    this._point = NaN;\n  }\n  point(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._append`M${x},${y}`;\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._append`L${x},${y}`;\n        break;\n      }\n      default: {\n        this._append`M${x},${y}`;\n        if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n          const r = this._radius;\n          const s = this._;\n          this._ = \"\"; // stash the old string so we can cache the circle path fragment\n          this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n          cacheRadius = r;\n          cacheAppend = this._append;\n          cacheCircle = this._;\n          this._ = s;\n        }\n        this._ += cacheCircle;\n        break;\n      }\n    }\n  }\n  result() {\n    const result = this._;\n    this._ = \"\";\n    return result.length ? result : null;\n  }\n}\n\nfunction append(strings) {\n  let i = 1;\n  this._ += strings[0];\n  for (const j = strings.length; i < j; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  const d = Math.floor(digits);\n  if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  if (d !== cacheDigits) {\n    const k = 10 ** d;\n    cacheDigits = d;\n    cacheAppend = function append(strings) {\n      let i = 1;\n      this._ += strings[0];\n      for (const j = strings.length; i < j; ++i) {\n        this._ += Math.round(arguments[i] * k) / k + strings[i];\n      }\n    };\n  }\n  return cacheAppend;\n}\n", "import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n  let digits = 3,\n      pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    if (!arguments.length) return projection;\n    projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n    return path;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  path.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) digits = null;\n    else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    if (context === null) contextStream = new PathString(digits);\n    return path;\n  };\n\n  return path.projection(projection).digits(digits).context(context);\n}\n", "export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n", "import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n", "import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n", "import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n", "import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n", "import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n", "import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = atan2(x, abs(r0y)) * sign(r0y);\n    if (r0y * n < 0)\n      l -= pi * sign(x) * sign(r0y);\n    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n", "import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n", "import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960\u00D7500. The projection also works quite well at 960\u00D7600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n", "import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n        if (k === Infinity) return [2, 0];\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n", "import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n", "import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n", "import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n", "import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n      l = atan2(x, abs(fy)) * sign(fy);\n    if (fy * n < 0)\n      l -= pi * sign(x) * sign(fy);\n    return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n", "import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n", "import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = atan2(x, abs(gy)) * sign(gy);\n    if (gy * n < 0)\n      l -= pi * sign(x) * sign(gy);\n    return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n", "import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) < epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n", "import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n", "import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = transformer({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = identity,\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  return projection;\n}\n", "import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n", "import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n", "import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n", "import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n", "export var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var ceil = Math.ceil;\nexport var cos = Math.cos;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var pow = Math.pow;\nexport var round = Math.round;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sin = Math.sin;\nexport var tan = Math.tan;\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var sqrt1_2 = Math.SQRT1_2;\nexport var sqrt2 = sqrt(2);\nexport var sqrtPi = sqrt(pi);\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport function sinci(x) {\n  return x ? x / Math.sin(x) : 1;\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function sqrt(x) {\n  return x > 0 ? Math.sqrt(x) : 0;\n}\n\nexport function tanh(x) {\n  x = exp(2 * x);\n  return (x - 1) / (x + 1);\n}\n\nexport function sinh(x) {\n  return (exp(x) - exp(-x)) / 2;\n}\n\nexport function cosh(x) {\n  return (exp(x) + exp(-x)) / 2;\n}\n\nexport function arsinh(x) {\n  return log(x + sqrt(x * x + 1));\n}\n\nexport function arcosh(x) {\n  return log(x + sqrt(x * x - 1));\n}\n", "import {geoProjection as projection} from \"d3-geo\";\nimport {abs, asin, cos, epsilon, halfPi, pi, sin, sqrt2} from \"./math.js\";\n\nexport function mollweideBromleyTheta(cp, phi) {\n  var cpsinPhi = cp * sin(phi), i = 30, delta;\n  do phi -= delta = (phi + sin(phi) - cpsinPhi) / (1 + cos(phi));\n  while (abs(delta) > epsilon && --i > 0);\n  return phi / 2;\n}\n\nexport function mollweideBromleyRaw(cx, cy, cp) {\n\n  function forward(lambda, phi) {\n    return [cx * lambda * cos(phi = mollweideBromleyTheta(cp, phi)), cy * sin(phi)];\n  }\n\n  forward.invert = function(x, y) {\n    return y = asin(y / cy), [x / (cx * cos(y)), asin((2 * y + sin(2 * y)) / cp)];\n  };\n\n  return forward;\n}\n\nexport var mollweideRaw = mollweideBromleyRaw(sqrt2 / halfPi, sqrt2, pi);\n\nexport default function() {\n  return projection(mollweideRaw)\n      .scale(169.529);\n}\n", "import { geoPath, geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEquidistant, geoConicConformal, geoConicEqualArea, geoConicEquidistant, geoEqualEarth, geoEquirectangular, geoGnomonic, geoIdentity, geoMercator, geoNaturalEarth1, geoOrthographic, geoStereographic, geoTransverseMercator } from 'd3-geo';\nimport { geoMollweide } from 'd3-geo-projection';\nimport { registerScale } from 'vega-scale';\n\nconst defaultPath = geoPath();\nconst projectionProperties = [\n// standard properties in d3-geo\n'clipAngle', 'clipExtent', 'scale', 'translate', 'center', 'rotate', 'parallels', 'precision', 'reflectX', 'reflectY',\n// extended properties in d3-geo-projections\n'coefficient', 'distance', 'fraction', 'lobes', 'parallel', 'radius', 'ratio', 'spacing', 'tilt'];\n\n/**\n * Augment projections with their type and a copy method.\n */\nfunction create(type, constructor) {\n  return function projection() {\n    const p = constructor();\n    p.type = type;\n    p.path = geoPath().projection(p);\n    p.copy = p.copy || function () {\n      const c = projection();\n      projectionProperties.forEach(prop => {\n        if (p[prop]) c[prop](p[prop]());\n      });\n      c.path.pointRadius(p.path.pointRadius());\n      return c;\n    };\n    return registerScale(p);\n  };\n}\nfunction projection(type, proj) {\n  if (!type || typeof type !== 'string') {\n    throw new Error('Projection type must be a name string.');\n  }\n  type = type.toLowerCase();\n  if (arguments.length > 1) {\n    projections[type] = create(type, proj);\n    return this;\n  } else {\n    return projections[type] || null;\n  }\n}\nfunction getProjectionPath(proj) {\n  return proj && proj.path || defaultPath;\n}\nconst projections = {\n  // base d3-geo projection types\n  albers: geoAlbers,\n  albersusa: geoAlbersUsa,\n  azimuthalequalarea: geoAzimuthalEqualArea,\n  azimuthalequidistant: geoAzimuthalEquidistant,\n  conicconformal: geoConicConformal,\n  conicequalarea: geoConicEqualArea,\n  conicequidistant: geoConicEquidistant,\n  equalEarth: geoEqualEarth,\n  equirectangular: geoEquirectangular,\n  gnomonic: geoGnomonic,\n  identity: geoIdentity,\n  mercator: geoMercator,\n  mollweide: geoMollweide,\n  naturalEarth1: geoNaturalEarth1,\n  orthographic: geoOrthographic,\n  stereographic: geoStereographic,\n  transversemercator: geoTransverseMercator\n};\nfor (const key in projections) {\n  projection(key, projections[key]);\n}\n\nexport { getProjectionPath, projection, projectionProperties };\n", "import { Transform } from 'vega-dataflow';\nimport { inherits, array, isFunction, accessorFields, hasOwnProperty, error } from 'vega-util';\nimport { forceSimulation, forceCenter, forceCollide, forceManyBody, forceLink, forceX, forceY } from 'd3-force';\n\nconst ForceMap = {\n  center: forceCenter,\n  collide: forceCollide,\n  nbody: forceManyBody,\n  link: forceLink,\n  x: forceX,\n  y: forceY\n};\nconst Forces = 'forces',\n  ForceParams = ['alpha', 'alphaMin', 'alphaTarget', 'velocityDecay', 'forces'],\n  ForceConfig = ['static', 'iterations'],\n  ForceOutput = ['x', 'y', 'vx', 'vy'];\n\n/**\n * Force simulation layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<object>} params.forces - The forces to apply.\n */\nfunction Force(params) {\n  Transform.call(this, null, params);\n}\nForce.Definition = {\n  'type': 'Force',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'static',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'restart',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'iterations',\n    'type': 'number',\n    'default': 300\n  }, {\n    'name': 'alpha',\n    'type': 'number',\n    'default': 1\n  }, {\n    'name': 'alphaMin',\n    'type': 'number',\n    'default': 0.001\n  }, {\n    'name': 'alphaTarget',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'velocityDecay',\n    'type': 'number',\n    'default': 0.4\n  }, {\n    'name': 'forces',\n    'type': 'param',\n    'array': true,\n    'params': [{\n      'key': {\n        'force': 'center'\n      },\n      'params': [{\n        'name': 'x',\n        'type': 'number',\n        'default': 0\n      }, {\n        'name': 'y',\n        'type': 'number',\n        'default': 0\n      }]\n    }, {\n      'key': {\n        'force': 'collide'\n      },\n      'params': [{\n        'name': 'radius',\n        'type': 'number',\n        'expr': true\n      }, {\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.7\n      }, {\n        'name': 'iterations',\n        'type': 'number',\n        'default': 1\n      }]\n    }, {\n      'key': {\n        'force': 'nbody'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': -30,\n        'expr': true\n      }, {\n        'name': 'theta',\n        'type': 'number',\n        'default': 0.9\n      }, {\n        'name': 'distanceMin',\n        'type': 'number',\n        'default': 1\n      }, {\n        'name': 'distanceMax',\n        'type': 'number'\n      }]\n    }, {\n      'key': {\n        'force': 'link'\n      },\n      'params': [{\n        'name': 'links',\n        'type': 'data'\n      }, {\n        'name': 'id',\n        'type': 'field'\n      }, {\n        'name': 'distance',\n        'type': 'number',\n        'default': 30,\n        'expr': true\n      }, {\n        'name': 'strength',\n        'type': 'number',\n        'expr': true\n      }, {\n        'name': 'iterations',\n        'type': 'number',\n        'default': 1\n      }]\n    }, {\n      'key': {\n        'force': 'x'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.1\n      }, {\n        'name': 'x',\n        'type': 'field'\n      }]\n    }, {\n      'key': {\n        'force': 'y'\n      },\n      'params': [{\n        'name': 'strength',\n        'type': 'number',\n        'default': 0.1\n      }, {\n        'name': 'y',\n        'type': 'field'\n      }]\n    }]\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'modify': false,\n    'default': ForceOutput\n  }]\n};\ninherits(Force, Transform, {\n  transform(_, pulse) {\n    var sim = this.value,\n      change = pulse.changed(pulse.ADD_REM),\n      params = _.modified(ForceParams),\n      iters = _.iterations || 300;\n\n    // configure simulation\n    if (!sim) {\n      this.value = sim = simulation(pulse.source, _);\n      sim.on('tick', rerun(pulse.dataflow, this));\n      if (!_.static) {\n        change = true;\n        sim.tick(); // ensure we run on init\n      }\n\n      pulse.modifies('index');\n    } else {\n      if (change) {\n        pulse.modifies('index');\n        sim.nodes(pulse.source);\n      }\n      if (params || pulse.changed(pulse.MOD)) {\n        setup(sim, _, 0, pulse);\n      }\n    }\n\n    // run simulation\n    if (params || change || _.modified(ForceConfig) || pulse.changed() && _.restart) {\n      sim.alpha(Math.max(sim.alpha(), _.alpha || 1)).alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters));\n      if (_.static) {\n        for (sim.stop(); --iters >= 0;) sim.tick();\n      } else {\n        if (sim.stopped()) sim.restart();\n        if (!change) return pulse.StopPropagation; // defer to sim ticks\n      }\n    }\n\n    return this.finish(_, pulse);\n  },\n  finish(_, pulse) {\n    const dataflow = pulse.dataflow;\n\n    // inspect dependencies, touch link source data\n    for (let args = this._argops, j = 0, m = args.length, arg; j < m; ++j) {\n      arg = args[j];\n      if (arg.name !== Forces || arg.op._argval.force !== 'link') {\n        continue;\n      }\n      for (var ops = arg.op._argops, i = 0, n = ops.length, op; i < n; ++i) {\n        if (ops[i].name === 'links' && (op = ops[i].op.source)) {\n          dataflow.pulse(op, dataflow.changeset().reflow());\n          break;\n        }\n      }\n    }\n\n    // reflow all nodes\n    return pulse.reflow(_.modified()).modifies(ForceOutput);\n  }\n});\nfunction rerun(df, op) {\n  return () => df.touch(op).run();\n}\nfunction simulation(nodes, _) {\n  const sim = forceSimulation(nodes),\n    stop = sim.stop,\n    restart = sim.restart;\n  let stopped = false;\n  sim.stopped = () => stopped;\n  sim.restart = () => (stopped = false, restart());\n  sim.stop = () => (stopped = true, stop());\n  return setup(sim, _, true).on('end', () => stopped = true);\n}\nfunction setup(sim, _, init, pulse) {\n  var f = array(_.forces),\n    i,\n    n,\n    p,\n    name;\n  for (i = 0, n = ForceParams.length; i < n; ++i) {\n    p = ForceParams[i];\n    if (p !== Forces && _.modified(p)) sim[p](_[p]);\n  }\n  for (i = 0, n = f.length; i < n; ++i) {\n    name = Forces + i;\n    p = init || _.modified(Forces, i) ? getForce(f[i]) : pulse && modified(f[i], pulse) ? sim.force(name) : null;\n    if (p) sim.force(name, p);\n  }\n  for (n = sim.numForces || 0; i < n; ++i) {\n    sim.force(Forces + i, null); // remove\n  }\n\n  sim.numForces = f.length;\n  return sim;\n}\nfunction modified(f, pulse) {\n  var k, v;\n  for (k in f) {\n    if (isFunction(v = f[k]) && pulse.modified(accessorFields(v))) return 1;\n  }\n  return 0;\n}\nfunction getForce(_) {\n  var f, p;\n  if (!hasOwnProperty(ForceMap, _.force)) {\n    error('Unrecognized force: ' + _.force);\n  }\n  f = ForceMap[_.force]();\n  for (p in _) {\n    if (isFunction(f[p])) setForceParam(f[p], _[p], _);\n  }\n  return f;\n}\nfunction setForceParam(f, v, _) {\n  f(isFunction(v) ? d => v(d, _) : v);\n}\n\nexport { Force as force };\n", "export default function(x, y) {\n  var nodes, strength = 1;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  return force;\n}\n", "export default function(d) {\n  const x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n", "export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don\u2019t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0 || 1,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n", "export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n", "export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n", "export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can\u2019t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn\u2019t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n", "export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n", "export default function() {\n  return this._root;\n}\n", "export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n", "export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n", "export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n", "import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n", "export default function(x) {\n  return function() {\n    return x;\n  };\n}\n", "export default function(random) {\n  return (random() - 0.5) * 1e-6;\n}\n", "import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nexport default function(radius) {\n  var nodes,\n      radii,\n      random,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = quadtree(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = jiggle(random), l += x * x;\n            if (y === 0) y = jiggle(random), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n", "import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"node not found: \" + nodeId);\n  return node;\n}\n\nexport default function(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      random,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle(random);\n        y = target.y + target.vy - source.y - source.vy || jiggle(random);\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n", "var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n", "import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  t._restart = t.restart;\n  t.restart = function(callback, delay, time) {\n    delay = +delay, time = time == null ? now() : +time;\n    t._restart(function tick(elapsed) {\n      elapsed += total;\n      t._restart(tick, total += delay, time);\n      callback(elapsed);\n    }, delay, time);\n  }\n  t.restart(callback, delay, time);\n  return t;\n}\n", "// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = new Map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\"),\n      random = lcg();\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.forEach(function(force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes, random);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    randomSource: function(_) {\n      return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n", "import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n  var nodes,\n      node,\n      random,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = jiggle(random), l += x * x;\n        if (y === 0) y = jiggle(random), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(random), l += x * x;\n      if (y === 0) y = jiggle(random), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n", "import constant from \"./constant.js\";\n\nexport default function(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n", "import constant from \"./constant.js\";\n\nexport default function(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n", "import { Transform, isTuple, ingest, tupleid, stableCompare } from 'vega-dataflow';\nimport { inherits, error, array, one, truthy, hasOwnProperty } from 'vega-util';\nimport { hierarchy, pack, partition, stratify, tree, cluster, treemap, treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify } from 'd3-hierarchy';\n\n// Build lookup table mapping tuple keys to tree node instances\nfunction lookup (tree, key, filter) {\n  const map = {};\n  tree.each(node => {\n    const t = node.data;\n    if (filter(t)) map[key(t)] = node;\n  });\n  tree.lookup = map;\n  return tree;\n}\n\n/**\n * Nest tuples into a tree structure, grouped by key values.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.keys - The key fields to nest by, in order.\n * @param {boolean} [params.generate=false] - A boolean flag indicating if\n *   non-leaf nodes generated by this transform should be included in the\n *   output. The default (false) includes only the input data (leaf nodes)\n *   in the data stream.\n */\nfunction Nest(params) {\n  Transform.call(this, null, params);\n}\nNest.Definition = {\n  'type': 'Nest',\n  'metadata': {\n    'treesource': true,\n    'changes': true\n  },\n  'params': [{\n    'name': 'keys',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'generate',\n    'type': 'boolean'\n  }]\n};\nconst children = n => n.values;\ninherits(Nest, Transform, {\n  transform(_, pulse) {\n    if (!pulse.source) {\n      error('Nest transform requires an upstream data source.');\n    }\n    var gen = _.generate,\n      mod = _.modified(),\n      out = pulse.clone(),\n      tree = this.value;\n    if (!tree || mod || pulse.changed()) {\n      // collect nodes to remove\n      if (tree) {\n        tree.each(node => {\n          if (node.children && isTuple(node.data)) {\n            out.rem.push(node.data);\n          }\n        });\n      }\n\n      // generate new tree structure\n      this.value = tree = hierarchy({\n        values: array(_.keys).reduce((n, k) => {\n          n.key(k);\n          return n;\n        }, nest()).entries(out.source)\n      }, children);\n\n      // collect nodes to add\n      if (gen) {\n        tree.each(node => {\n          if (node.children) {\n            node = ingest(node.data);\n            out.add.push(node);\n            out.source.push(node);\n          }\n        });\n      }\n\n      // build lookup table\n      lookup(tree, tupleid, tupleid);\n    }\n    out.source.root = tree;\n    return out;\n  }\n});\nfunction nest() {\n  const keys = [],\n    nest = {\n      entries: array => entries(apply(array, 0), 0),\n      key: d => (keys.push(d), nest)\n    };\n  function apply(array, depth) {\n    if (depth >= keys.length) {\n      return array;\n    }\n    const n = array.length,\n      key = keys[depth++],\n      valuesByKey = {},\n      result = {};\n    let i = -1,\n      keyValue,\n      value,\n      values;\n    while (++i < n) {\n      keyValue = key(value = array[i]) + '';\n      if (values = valuesByKey[keyValue]) {\n        values.push(value);\n      } else {\n        valuesByKey[keyValue] = [value];\n      }\n    }\n    for (keyValue in valuesByKey) {\n      result[keyValue] = apply(valuesByKey[keyValue], depth);\n    }\n    return result;\n  }\n  function entries(map, depth) {\n    if (++depth > keys.length) return map;\n    const array = [];\n    for (const key in map) {\n      array.push({\n        key,\n        values: entries(map[key], depth)\n      });\n    }\n    return array;\n  }\n  return nest;\n}\n\n/**\n * Abstract class for tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction HierarchyLayout(params) {\n  Transform.call(this, null, params);\n}\nconst defaultSeparation = (a, b) => a.parent === b.parent ? 1 : 2;\ninherits(HierarchyLayout, Transform, {\n  transform(_, pulse) {\n    if (!pulse.source || !pulse.source.root) {\n      error(this.constructor.name + ' transform requires a backing tree data source.');\n    }\n    const layout = this.layout(_.method),\n      fields = this.fields,\n      root = pulse.source.root,\n      as = _.as || fields;\n    if (_.field) root.sum(_.field);else root.count();\n    if (_.sort) root.sort(stableCompare(_.sort, d => d.data));\n    setParams(layout, this.params, _);\n    if (layout.separation) {\n      layout.separation(_.separation !== false ? defaultSeparation : one);\n    }\n    try {\n      this.value = layout(root);\n    } catch (err) {\n      error(err);\n    }\n    root.each(node => setFields(node, fields, as));\n    return pulse.reflow(_.modified()).modifies(as).modifies('leaf');\n  }\n});\nfunction setParams(layout, params, _) {\n  for (let p, i = 0, n = params.length; i < n; ++i) {\n    p = params[i];\n    if (p in _) layout[p](_[p]);\n  }\n}\nfunction setFields(node, fields, as) {\n  const t = node.data,\n    n = fields.length - 1;\n  for (let i = 0; i < n; ++i) {\n    t[as[i]] = node[fields[i]];\n  }\n  t[as[n]] = node.children ? node.children.length : 0;\n}\n\nconst Output$3 = ['x', 'y', 'r', 'depth', 'children'];\n\n/**\n * Packed circle tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Pack(params) {\n  HierarchyLayout.call(this, params);\n}\nPack.Definition = {\n  'type': 'Pack',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'radius',\n    'type': 'field',\n    'default': null\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$3.length,\n    'default': Output$3\n  }]\n};\ninherits(Pack, HierarchyLayout, {\n  layout: pack,\n  params: ['radius', 'size', 'padding'],\n  fields: Output$3\n});\n\nconst Output$2 = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Partition tree layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Partition(params) {\n  HierarchyLayout.call(this, params);\n}\nPartition.Definition = {\n  'type': 'Partition',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'round',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$2.length,\n    'default': Output$2\n  }]\n};\ninherits(Partition, HierarchyLayout, {\n  layout: partition,\n  params: ['size', 'round', 'padding'],\n  fields: Output$2\n});\n\n/**\n * Stratify a collection of tuples into a tree structure based on\n * id and parent id fields.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.key - Unique key field for each tuple.\n * @param {function(object): *} params.parentKey - Field with key for parent tuple.\n */\nfunction Stratify(params) {\n  Transform.call(this, null, params);\n}\nStratify.Definition = {\n  'type': 'Stratify',\n  'metadata': {\n    'treesource': true\n  },\n  'params': [{\n    'name': 'key',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'parentKey',\n    'type': 'field',\n    'required': true\n  }]\n};\ninherits(Stratify, Transform, {\n  transform(_, pulse) {\n    if (!pulse.source) {\n      error('Stratify transform requires an upstream data source.');\n    }\n    let tree = this.value;\n    const mod = _.modified(),\n      out = pulse.fork(pulse.ALL).materialize(pulse.SOURCE),\n      run = !tree || mod || pulse.changed(pulse.ADD_REM) || pulse.modified(_.key.fields) || pulse.modified(_.parentKey.fields);\n\n    // prevent upstream source pollution\n    out.source = out.source.slice();\n    if (run) {\n      tree = out.source.length ? lookup(stratify().id(_.key).parentId(_.parentKey)(out.source), _.key, truthy) : lookup(stratify()([{}]), _.key, _.key);\n    }\n    out.source.root = this.value = tree;\n    return out;\n  }\n});\n\nconst Layouts = {\n  tidy: tree,\n  cluster: cluster\n};\nconst Output$1 = ['x', 'y', 'depth', 'children'];\n\n/**\n * Tree layout. Depending on the method parameter, performs either\n * Reingold-Tilford 'tidy' layout or dendrogram 'cluster' layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction Tree(params) {\n  HierarchyLayout.call(this, params);\n}\nTree.Definition = {\n  'type': 'Tree',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'tidy',\n    'values': ['tidy', 'cluster']\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'nodeSize',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'separation',\n    'type': 'boolean',\n    'default': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output$1.length,\n    'default': Output$1\n  }]\n};\ninherits(Tree, HierarchyLayout, {\n  /**\n   * Tree layout generator. Supports both 'tidy' and 'cluster' layouts.\n   */\n  layout(method) {\n    const m = method || 'tidy';\n    if (hasOwnProperty(Layouts, m)) return Layouts[m]();else error('Unrecognized Tree layout method: ' + m);\n  },\n  params: ['size', 'nodeSize'],\n  fields: Output$1\n});\n\n/**\n * Generate tuples representing links between tree nodes.\n * The resulting tuples will contain 'source' and 'target' fields,\n * which point to parent and child node tuples, respectively.\n * @constructor\n * @param {object} params - The parameters for this operator.\n */\nfunction TreeLinks(params) {\n  Transform.call(this, [], params);\n}\nTreeLinks.Definition = {\n  'type': 'TreeLinks',\n  'metadata': {\n    'tree': true,\n    'generates': true,\n    'changes': true\n  },\n  'params': []\n};\ninherits(TreeLinks, Transform, {\n  transform(_, pulse) {\n    const links = this.value,\n      tree = pulse.source && pulse.source.root,\n      out = pulse.fork(pulse.NO_SOURCE),\n      lut = {};\n    if (!tree) error('TreeLinks transform requires a tree data source.');\n    if (pulse.changed(pulse.ADD_REM)) {\n      // remove previous links\n      out.rem = links;\n\n      // build lookup table of valid tuples\n      pulse.visit(pulse.SOURCE, t => lut[tupleid(t)] = 1);\n\n      // generate links for all edges incident on valid tuples\n      tree.each(node => {\n        const t = node.data,\n          p = node.parent && node.parent.data;\n        if (p && lut[tupleid(t)] && lut[tupleid(p)]) {\n          out.add.push(ingest({\n            source: p,\n            target: t\n          }));\n        }\n      });\n      this.value = out.add;\n    } else if (pulse.changed(pulse.MOD)) {\n      // build lookup table of modified tuples\n      pulse.visit(pulse.MOD, t => lut[tupleid(t)] = 1);\n\n      // gather links incident on modified tuples\n      links.forEach(link => {\n        if (lut[tupleid(link.source)] || lut[tupleid(link.target)]) {\n          out.mod.push(link);\n        }\n      });\n    }\n    return out;\n  }\n});\n\nconst Tiles = {\n  binary: treemapBinary,\n  dice: treemapDice,\n  slice: treemapSlice,\n  slicedice: treemapSliceDice,\n  squarify: treemapSquarify,\n  resquarify: treemapResquarify\n};\nconst Output = ['x0', 'y0', 'x1', 'y1', 'depth', 'children'];\n\n/**\n * Treemap layout.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.field - The value field to size nodes.\n */\nfunction Treemap(params) {\n  HierarchyLayout.call(this, params);\n}\nTreemap.Definition = {\n  'type': 'Treemap',\n  'metadata': {\n    'tree': true,\n    'modifies': true\n  },\n  'params': [{\n    'name': 'field',\n    'type': 'field'\n  }, {\n    'name': 'sort',\n    'type': 'compare'\n  }, {\n    'name': 'method',\n    'type': 'enum',\n    'default': 'squarify',\n    'values': ['squarify', 'resquarify', 'binary', 'dice', 'slice', 'slicedice']\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingInner',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingOuter',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingTop',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingRight',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingBottom',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'paddingLeft',\n    'type': 'number',\n    'default': 0\n  }, {\n    'name': 'ratio',\n    'type': 'number',\n    'default': 1.618033988749895\n  }, {\n    'name': 'round',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': Output.length,\n    'default': Output\n  }]\n};\ninherits(Treemap, HierarchyLayout, {\n  /**\n   * Treemap layout generator. Adds 'method' and 'ratio' parameters\n   * to configure the underlying tile method.\n   */\n  layout() {\n    const x = treemap();\n    x.ratio = _ => {\n      const t = x.tile();\n      if (t.ratio) x.tile(t.ratio(_));\n    };\n    x.method = _ => {\n      if (hasOwnProperty(Tiles, _)) x.tile(Tiles[_]);else error('Unrecognized Treemap layout method: ' + _);\n    };\n    return x;\n  },\n  params: ['method', 'ratio', 'size', 'round', 'padding', 'paddingInner', 'paddingOuter', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n  fields: Output\n});\n\nexport { Nest as nest, Pack as pack, Partition as partition, Stratify as stratify, Tree as tree, TreeLinks as treelinks, Treemap as treemap };\n", "function defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n", "function count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nexport default function() {\n  return this.eachAfter(count);\n}\n", "export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n", "export default function(callback, that) {\n  var node = this, nodes = [node], children, i, index = -1;\n  while (node = nodes.pop()) {\n    callback.call(that, node, ++index, this);\n    if (children = node.children) {\n      for (i = children.length - 1; i >= 0; --i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  return this;\n}\n", "export default function(callback, that) {\n  var node = this, nodes = [node], next = [], children, i, n, index = -1;\n  while (node = nodes.pop()) {\n    next.push(node);\n    if (children = node.children) {\n      for (i = 0, n = children.length; i < n; ++i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  while (node = next.pop()) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n", "export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    if (callback.call(that, node, ++index, this)) {\n      return node;\n    }\n  }\n}\n", "export default function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n", "export default function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n", "export default function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n", "export default function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n", "export default function() {\n  return Array.from(this);\n}\n", "export default function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n", "export default function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don\u2019t include the root\u2019s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n", "export default function*() {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      yield node;\n      if (children = node.children) {\n        for (i = 0, n = children.length; i < n; ++i) {\n          next.push(children[i]);\n        }\n      }\n    }\n  } while (next.length);\n}\n", "import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n  if (data instanceof Map) {\n    data = [undefined, data];\n    if (children === undefined) children = mapChildren;\n  } else if (children === undefined) {\n    children = objectChildren;\n  }\n\n  var root = new Node(data),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n      node.children = childs;\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = childs[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n  return d.children;\n}\n\nfunction mapChildren(d) {\n  return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n  if (node.data.value !== undefined) node.value = node.data.value;\n  node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  find: node_find,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy,\n  [Symbol.iterator]: node_iterator\n};\n", "export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n", "export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n", "// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n", "export default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n  let m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n", "import {shuffle} from \"../array.js\";\nimport lcg from \"../lcg.js\";\n\nexport default function(circles) {\n  return packEncloseRandom(circles, lcg());\n}\n\nexport function packEncloseRandom(circles, random) {\n  var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n", "import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport {packEncloseRandom} from \"./enclose.js\";\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nexport function packSiblingsRandom(circles, random) {\n  if (!(n = (circles = array(circles)).length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle\u2026\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // \u201CCloseness\u201D is determined by linear distance along the front-chain.\n    // \u201CAhead\u201D or \u201Cbehind\u201D is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nexport default function(circles) {\n  packSiblingsRandom(circles, lcg());\n  return circles;\n}\n", "import {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport {packSiblingsRandom} from \"./siblings.js\";\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\nexport default function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    const random = lcg();\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildrenRandom(padding, 0.5, random))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildrenRandom(constantZero, 1, random))\n          .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packSiblingsRandom(children, random);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n", "export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n", "export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n", "import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n", "import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n    ambiguous = {},\n    imputed = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nexport default function() {\n  var id = defaultId,\n      parentId = defaultParentId,\n      path;\n\n  function stratify(data) {\n    var nodes = Array.from(data),\n        currentId = id,\n        currentParentId = parentId,\n        n,\n        d,\n        i,\n        root,\n        parent,\n        node,\n        nodeId,\n        nodeKey,\n        nodeByKey = new Map;\n\n    if (path != null) {\n      const I = nodes.map((d, i) => normalize(path(d, i, data)));\n      const P = I.map(parentof);\n      const S = new Set(I).add(\"\");\n      for (const i of P) {\n        if (!S.has(i)) {\n          S.add(i);\n          I.push(i);\n          P.push(parentof(i));\n          nodes.push(imputed);\n        }\n      }\n      currentId = (_, i) => I[i];\n      currentParentId = (_, i) => P[i];\n    }\n\n    for (i = 0, n = nodes.length; i < n; ++i) {\n      d = nodes[i], node = nodes[i] = new Node(d);\n      if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = node.id = nodeId;\n        nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n      }\n      if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n        node.parent = nodeId;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i];\n      if (nodeId = node.parent) {\n        parent = nodeByKey.get(nodeId);\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      } else {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n\n    // When imputing internal nodes, only introduce roots if needed.\n    // Then replace the imputed marker data with null.\n    if (path != null) {\n      while (root.data === imputed && root.children.length === 1) {\n        root = root.children[0], --n;\n      }\n      for (let i = nodes.length - 1; i >= 0; --i) {\n        node = nodes[i];\n        if (node.data !== imputed) break;\n        node.data = null;\n      }\n    }\n\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = optional(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = optional(x), stratify) : parentId;\n  };\n\n  stratify.path = function(x) {\n    return arguments.length ? (path = optional(x), stratify) : path;\n  };\n\n  return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n  path = `${path}`;\n  let i = path.length;\n  if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n  return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" \u21E5 \"/foo\", \"/foo\" \u21E5 \"/\", \"/\" \u21A6 \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n  let i = path.length;\n  if (i < 2) return \"\";\n  while (--i > 1) if (slash(path, i)) break;\n  return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n  if (path[i] === \"/\") {\n    let k = 0;\n    while (i > 0 && path[--i] === \"\\\\\") ++k;\n    if ((k & 1) === 0) return true;\n  }\n  return false;\n}\n", "import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-\u2019s ancestor is a sibling of v, returns vi-\u2019s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.\u2019s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n", "export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n", "import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nexport default (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n", "import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n", "export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n", "import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n", "import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n        else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi);\n", "import { Marks, textMetrics } from 'vega-scenegraph';\nimport { canvas } from 'vega-canvas';\nimport { rederive, Transform } from 'vega-dataflow';\nimport { inherits, error, array, isFunction } from 'vega-util';\n\n// bit mask for getting first 2 bytes of alpha value\nconst ALPHA_MASK = 0xff000000;\nfunction baseBitmaps($, data) {\n  const bitmap = $.bitmap();\n  // when there is no base mark but data points are to be avoided\n  (data || []).forEach(d => bitmap.set($(d.boundary[0]), $(d.boundary[3])));\n  return [bitmap, undefined];\n}\nfunction markBitmaps($, baseMark, avoidMarks, labelInside, isGroupArea) {\n  // create canvas\n  const width = $.width,\n    height = $.height,\n    border = labelInside || isGroupArea,\n    context = canvas(width, height).getContext('2d'),\n    baseMarkContext = canvas(width, height).getContext('2d'),\n    strokeContext = border && canvas(width, height).getContext('2d');\n\n  // render all marks to be avoided into canvas\n  avoidMarks.forEach(items => draw(context, items, false));\n  draw(baseMarkContext, baseMark, false);\n  if (border) {\n    draw(strokeContext, baseMark, true);\n  }\n\n  // get canvas buffer, create bitmaps\n  const buffer = getBuffer(context, width, height),\n    baseMarkBuffer = getBuffer(baseMarkContext, width, height),\n    strokeBuffer = border && getBuffer(strokeContext, width, height),\n    layer1 = $.bitmap(),\n    layer2 = border && $.bitmap();\n\n  // populate bitmap layers\n  let x, y, u, v, index, alpha, strokeAlpha, baseMarkAlpha;\n  for (y = 0; y < height; ++y) {\n    for (x = 0; x < width; ++x) {\n      index = y * width + x;\n      alpha = buffer[index] & ALPHA_MASK;\n      baseMarkAlpha = baseMarkBuffer[index] & ALPHA_MASK;\n      strokeAlpha = border && strokeBuffer[index] & ALPHA_MASK;\n      if (alpha || strokeAlpha || baseMarkAlpha) {\n        u = $(x);\n        v = $(y);\n        if (!isGroupArea && (alpha || baseMarkAlpha)) layer1.set(u, v); // update interior bitmap\n        if (border && (alpha || strokeAlpha)) layer2.set(u, v); // update border bitmap\n      }\n    }\n  }\n\n  return [layer1, layer2];\n}\nfunction getBuffer(context, width, height) {\n  return new Uint32Array(context.getImageData(0, 0, width, height).data.buffer);\n}\nfunction draw(context, items, interior) {\n  if (!items.length) return;\n  const type = items[0].mark.marktype;\n  if (type === 'group') {\n    items.forEach(group => {\n      group.items.forEach(mark => draw(context, mark.items, interior));\n    });\n  } else {\n    Marks[type].draw(context, {\n      items: interior ? items.map(prepare) : items\n    });\n  }\n}\n\n/**\n * Prepare item before drawing into canvas (setting stroke and opacity)\n * @param {object} source item to be prepared\n * @returns prepared item\n */\nfunction prepare(source) {\n  const item = rederive(source, {});\n  if (item.stroke && item.strokeOpacity !== 0 || item.fill && item.fillOpacity !== 0) {\n    return {\n      ...item,\n      strokeOpacity: 1,\n      stroke: '#000',\n      fillOpacity: 0\n    };\n  }\n  return item;\n}\n\nconst DIV = 5,\n  // bit shift from x, y index to bit vector array index\n  MOD = 31,\n  // bit mask for index lookup within a bit vector\n  SIZE = 32,\n  // individual bit vector size\n  RIGHT0 = new Uint32Array(SIZE + 1),\n  // left-anchored bit vectors, full -> 0\n  RIGHT1 = new Uint32Array(SIZE + 1); // right-anchored bit vectors, 0 -> full\n\nRIGHT1[0] = 0;\nRIGHT0[0] = ~RIGHT1[0];\nfor (let i = 1; i <= SIZE; ++i) {\n  RIGHT1[i] = RIGHT1[i - 1] << 1 | 1;\n  RIGHT0[i] = ~RIGHT1[i];\n}\nfunction Bitmap (w, h) {\n  const array = new Uint32Array(~~((w * h + SIZE) / SIZE));\n  function _set(index, mask) {\n    array[index] |= mask;\n  }\n  function _clear(index, mask) {\n    array[index] &= mask;\n  }\n  return {\n    array: array,\n    get: (x, y) => {\n      const index = y * w + x;\n      return array[index >>> DIV] & 1 << (index & MOD);\n    },\n    set: (x, y) => {\n      const index = y * w + x;\n      _set(index >>> DIV, 1 << (index & MOD));\n    },\n    clear: (x, y) => {\n      const index = y * w + x;\n      _clear(index >>> DIV, ~(1 << (index & MOD)));\n    },\n    getRange: (x, y, x2, y2) => {\n      let r = y2,\n        start,\n        end,\n        indexStart,\n        indexEnd;\n      for (; r >= y; --r) {\n        start = r * w + x;\n        end = r * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n        if (indexStart === indexEnd) {\n          if (array[indexStart] & RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]) {\n            return true;\n          }\n        } else {\n          if (array[indexStart] & RIGHT0[start & MOD]) return true;\n          if (array[indexEnd] & RIGHT1[(end & MOD) + 1]) return true;\n          for (let i = indexStart + 1; i < indexEnd; ++i) {\n            if (array[i]) return true;\n          }\n        }\n      }\n      return false;\n    },\n    setRange: (x, y, x2, y2) => {\n      let start, end, indexStart, indexEnd, i;\n      for (; y <= y2; ++y) {\n        start = y * w + x;\n        end = y * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n        if (indexStart === indexEnd) {\n          _set(indexStart, RIGHT0[start & MOD] & RIGHT1[(end & MOD) + 1]);\n        } else {\n          _set(indexStart, RIGHT0[start & MOD]);\n          _set(indexEnd, RIGHT1[(end & MOD) + 1]);\n          for (i = indexStart + 1; i < indexEnd; ++i) _set(i, 0xffffffff);\n        }\n      }\n    },\n    clearRange: (x, y, x2, y2) => {\n      let start, end, indexStart, indexEnd, i;\n      for (; y <= y2; ++y) {\n        start = y * w + x;\n        end = y * w + x2;\n        indexStart = start >>> DIV;\n        indexEnd = end >>> DIV;\n        if (indexStart === indexEnd) {\n          _clear(indexStart, RIGHT1[start & MOD] | RIGHT0[(end & MOD) + 1]);\n        } else {\n          _clear(indexStart, RIGHT1[start & MOD]);\n          _clear(indexEnd, RIGHT0[(end & MOD) + 1]);\n          for (i = indexStart + 1; i < indexEnd; ++i) _clear(i, 0);\n        }\n      }\n    },\n    outOfBounds: (x, y, x2, y2) => x < 0 || y < 0 || y2 >= h || x2 >= w\n  };\n}\n\nfunction scaler (width, height, padding) {\n  const ratio = Math.max(1, Math.sqrt(width * height / 1e6)),\n    w = ~~((width + 2 * padding + ratio) / ratio),\n    h = ~~((height + 2 * padding + ratio) / ratio),\n    scale = _ => ~~((_ + padding) / ratio);\n  scale.invert = _ => _ * ratio - padding;\n  scale.bitmap = () => Bitmap(w, h);\n  scale.ratio = ratio;\n  scale.padding = padding;\n  scale.width = width;\n  scale.height = height;\n  return scale;\n}\n\nfunction placeAreaLabelNaive ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n    height = $.height;\n\n  // try to place a label within an input area mark\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n      // area points\n      n = items.length,\n      // number of points\n      textHeight = d.datum.fontSize,\n      // label width\n      textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n    let maxAreaWidth = 0,\n      x1,\n      x2,\n      y1,\n      y2,\n      x,\n      y,\n      areaWidth;\n\n    // for each area sample point\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n      x = (x1 + x2) / 2;\n      y = (y1 + y2) / 2;\n      areaWidth = Math.abs(x2 - x1 + y2 - y1);\n      if (areaWidth >= maxAreaWidth) {\n        maxAreaWidth = areaWidth;\n        d.x = x;\n        d.y = y;\n      }\n    }\n    x = textWidth / 2;\n    y = textHeight / 2;\n    x1 = d.x - x;\n    x2 = d.x + x;\n    y1 = d.y - y;\n    y2 = d.y + y;\n    d.align = 'center';\n    if (x1 < 0 && x2 <= width) {\n      d.align = 'left';\n    } else if (0 <= x1 && width < x2) {\n      d.align = 'right';\n    }\n    d.baseline = 'middle';\n    if (y1 < 0 && y2 <= height) {\n      d.baseline = 'top';\n    } else if (0 <= y1 && height < y2) {\n      d.baseline = 'bottom';\n    }\n    return true;\n  };\n}\n\nfunction outOfBounds(x, y, textWidth, textHeight, width, height) {\n  let r = textWidth / 2;\n  return x - r < 0 || x + r > width || y - (r = textHeight / 2) < 0 || y + r > height;\n}\nfunction collision($, x, y, textHeight, textWidth, h, bm0, bm1) {\n  const w = textWidth * h / (textHeight * 2),\n    x1 = $(x - w),\n    x2 = $(x + w),\n    y1 = $(y - (h = h / 2)),\n    y2 = $(y + h);\n  return bm0.outOfBounds(x1, y1, x2, y2) || bm0.getRange(x1, y1, x2, y2) || bm1 && bm1.getRange(x1, y1, x2, y2);\n}\n\nfunction placeAreaLabelReducedSearch ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n    height = $.height,\n    bm0 = bitmaps[0],\n    // where labels have been placed\n    bm1 = bitmaps[1]; // area outlines\n\n  function tryLabel(_x, _y, maxSize, textWidth, textHeight) {\n    const x = $.invert(_x),\n      y = $.invert(_y);\n    let lo = maxSize,\n      hi = height,\n      mid;\n    if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n      // if the label fits at the current sample point,\n      // perform binary search to find the largest font size that fits\n      while (hi - lo >= 1) {\n        mid = (lo + hi) / 2;\n        if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n          hi = mid;\n        } else {\n          lo = mid;\n        }\n      }\n      // place label if current lower bound exceeds prior max font size\n      if (lo > maxSize) {\n        return [x, y, lo, true];\n      }\n    }\n  }\n\n  // try to place a label within an input area mark\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n      // area points\n      n = items.length,\n      // number of points\n      textHeight = d.datum.fontSize,\n      // label width\n      textWidth = textMetrics.width(d.datum, d.datum.text); // label height\n\n    let maxSize = avoidBaseMark ? textHeight : 0,\n      labelPlaced = false,\n      labelPlaced2 = false,\n      maxAreaWidth = 0,\n      x1,\n      x2,\n      y1,\n      y2,\n      x,\n      y,\n      _x,\n      _y,\n      _x1,\n      _xMid,\n      _x2,\n      _y1,\n      _yMid,\n      _y2,\n      areaWidth,\n      result,\n      swapTmp;\n\n    // for each area sample point\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n      if (x1 > x2) {\n        swapTmp = x1;\n        x1 = x2;\n        x2 = swapTmp;\n      }\n      if (y1 > y2) {\n        swapTmp = y1;\n        y1 = y2;\n        y2 = swapTmp;\n      }\n      _x1 = $(x1);\n      _x2 = $(x2);\n      _xMid = ~~((_x1 + _x2) / 2);\n      _y1 = $(y1);\n      _y2 = $(y2);\n      _yMid = ~~((_y1 + _y2) / 2);\n\n      // search along the line from mid point between the 2 border to lower border\n      for (_x = _xMid; _x >= _x1; --_x) {\n        for (_y = _yMid; _y >= _y1; --_y) {\n          result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n          if (result) {\n            [d.x, d.y, maxSize, labelPlaced] = result;\n          }\n        }\n      }\n\n      // search along the line from mid point between the 2 border to upper border\n      for (_x = _xMid; _x <= _x2; ++_x) {\n        for (_y = _yMid; _y <= _y2; ++_y) {\n          result = tryLabel(_x, _y, maxSize, textWidth, textHeight);\n          if (result) {\n            [d.x, d.y, maxSize, labelPlaced] = result;\n          }\n        }\n      }\n\n      // place label at slice center if not placed through other means\n      // and if we're not avoiding overlap with other areas\n      if (!labelPlaced && !avoidBaseMark) {\n        // one span is zero, hence we can add\n        areaWidth = Math.abs(x2 - x1 + y2 - y1);\n        x = (x1 + x2) / 2;\n        y = (y1 + y2) / 2;\n\n        // place label if it fits and improves the max area width\n        if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          maxAreaWidth = areaWidth;\n          d.x = x;\n          d.y = y;\n          labelPlaced2 = true;\n        }\n      }\n    }\n\n    // record current label placement information, update label bitmap\n    if (labelPlaced || labelPlaced2) {\n      x = textWidth / 2;\n      y = textHeight / 2;\n      bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n      d.align = 'center';\n      d.baseline = 'middle';\n      return true;\n    } else {\n      return false;\n    }\n  };\n}\n\n// pixel direction offsets for flood fill search\nconst X_DIR = [-1, -1, 1, 1];\nconst Y_DIR = [-1, 1, -1, 1];\nfunction placeAreaLabelFloodFill ($, bitmaps, avoidBaseMark, markIndex) {\n  const width = $.width,\n    height = $.height,\n    bm0 = bitmaps[0],\n    // where labels have been placed\n    bm1 = bitmaps[1],\n    // area outlines\n    bm2 = $.bitmap(); // flood-fill visitations\n\n  // try to place a label within an input area mark\n  return function (d) {\n    const items = d.datum.datum.items[markIndex].items,\n      // area points\n      n = items.length,\n      // number of points\n      textHeight = d.datum.fontSize,\n      // label width\n      textWidth = textMetrics.width(d.datum, d.datum.text),\n      // label height\n      stack = []; // flood fill stack\n\n    let maxSize = avoidBaseMark ? textHeight : 0,\n      labelPlaced = false,\n      labelPlaced2 = false,\n      maxAreaWidth = 0,\n      x1,\n      x2,\n      y1,\n      y2,\n      x,\n      y,\n      _x,\n      _y,\n      lo,\n      hi,\n      mid,\n      areaWidth;\n\n    // for each area sample point\n    for (let i = 0; i < n; ++i) {\n      x1 = items[i].x;\n      y1 = items[i].y;\n      x2 = items[i].x2 === undefined ? x1 : items[i].x2;\n      y2 = items[i].y2 === undefined ? y1 : items[i].y2;\n\n      // add scaled center point to stack\n      stack.push([$((x1 + x2) / 2), $((y1 + y2) / 2)]);\n\n      // perform flood fill, visit points\n      while (stack.length) {\n        [_x, _y] = stack.pop();\n\n        // exit if point already marked\n        if (bm0.get(_x, _y) || bm1.get(_x, _y) || bm2.get(_x, _y)) continue;\n\n        // mark point in flood fill bitmap\n        // add search points for all (in bound) directions\n        bm2.set(_x, _y);\n        for (let j = 0; j < 4; ++j) {\n          x = _x + X_DIR[j];\n          y = _y + Y_DIR[j];\n          if (!bm2.outOfBounds(x, y, x, y)) stack.push([x, y]);\n        }\n\n        // unscale point back to x, y space\n        x = $.invert(_x);\n        y = $.invert(_y);\n        lo = maxSize;\n        hi = height; // TODO: make this bound smaller\n\n        if (!outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, lo, bm0, bm1) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          // if the label fits at the current sample point,\n          // perform binary search to find the largest font size that fits\n          while (hi - lo >= 1) {\n            mid = (lo + hi) / 2;\n            if (collision($, x, y, textHeight, textWidth, mid, bm0, bm1)) {\n              hi = mid;\n            } else {\n              lo = mid;\n            }\n          }\n          // place label if current lower bound exceeds prior max font size\n          if (lo > maxSize) {\n            d.x = x;\n            d.y = y;\n            maxSize = lo;\n            labelPlaced = true;\n          }\n        }\n      }\n\n      // place label at slice center if not placed through other means\n      // and if we're not avoiding overlap with other areas\n      if (!labelPlaced && !avoidBaseMark) {\n        // one span is zero, hence we can add\n        areaWidth = Math.abs(x2 - x1 + y2 - y1);\n        x = (x1 + x2) / 2;\n        y = (y1 + y2) / 2;\n\n        // place label if it fits and improves the max area width\n        if (areaWidth >= maxAreaWidth && !outOfBounds(x, y, textWidth, textHeight, width, height) && !collision($, x, y, textHeight, textWidth, textHeight, bm0, null)) {\n          maxAreaWidth = areaWidth;\n          d.x = x;\n          d.y = y;\n          labelPlaced2 = true;\n        }\n      }\n    }\n\n    // record current label placement information, update label bitmap\n    if (labelPlaced || labelPlaced2) {\n      x = textWidth / 2;\n      y = textHeight / 2;\n      bm0.setRange($(d.x - x), $(d.y - y), $(d.x + x), $(d.y + y));\n      d.align = 'center';\n      d.baseline = 'middle';\n      return true;\n    } else {\n      return false;\n    }\n  };\n}\n\nconst Aligns = ['right', 'center', 'left'],\n  Baselines = ['bottom', 'middle', 'top'];\nfunction placeMarkLabel ($, bitmaps, anchors, offsets) {\n  const width = $.width,\n    height = $.height,\n    bm0 = bitmaps[0],\n    bm1 = bitmaps[1],\n    n = offsets.length;\n  return function (d) {\n    const boundary = d.boundary,\n      textHeight = d.datum.fontSize;\n\n    // can not be placed if the mark is not visible in the graph bound\n    if (boundary[2] < 0 || boundary[5] < 0 || boundary[0] > width || boundary[3] > height) {\n      return false;\n    }\n    let textWidth = d.textWidth ?? 0,\n      dx,\n      dy,\n      isInside,\n      sizeFactor,\n      insideFactor,\n      x1,\n      x2,\n      y1,\n      y2,\n      xc,\n      yc,\n      _x1,\n      _x2,\n      _y1,\n      _y2;\n\n    // for each anchor and offset\n    for (let i = 0; i < n; ++i) {\n      dx = (anchors[i] & 0x3) - 1;\n      dy = (anchors[i] >>> 0x2 & 0x3) - 1;\n      isInside = dx === 0 && dy === 0 || offsets[i] < 0;\n      sizeFactor = dx && dy ? Math.SQRT1_2 : 1;\n      insideFactor = offsets[i] < 0 ? -1 : 1;\n      x1 = boundary[1 + dx] + offsets[i] * dx * sizeFactor;\n      yc = boundary[4 + dy] + insideFactor * textHeight * dy / 2 + offsets[i] * dy * sizeFactor;\n      y1 = yc - textHeight / 2;\n      y2 = yc + textHeight / 2;\n      _x1 = $(x1);\n      _y1 = $(y1);\n      _y2 = $(y2);\n      if (!textWidth) {\n        // to avoid finding width of text label,\n        if (!test(_x1, _x1, _y1, _y2, bm0, bm1, x1, x1, y1, y2, boundary, isInside)) {\n          // skip this anchor/offset option if we fail to place a label with 1px width\n          continue;\n        } else {\n          // Otherwise, find the label width\n          textWidth = textMetrics.width(d.datum, d.datum.text);\n        }\n      }\n      xc = x1 + insideFactor * textWidth * dx / 2;\n      x1 = xc - textWidth / 2;\n      x2 = xc + textWidth / 2;\n      _x1 = $(x1);\n      _x2 = $(x2);\n      if (test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside)) {\n        // place label if the position is placeable\n        d.x = !dx ? xc : dx * insideFactor < 0 ? x2 : x1;\n        d.y = !dy ? yc : dy * insideFactor < 0 ? y2 : y1;\n        d.align = Aligns[dx * insideFactor + 1];\n        d.baseline = Baselines[dy * insideFactor + 1];\n        bm0.setRange(_x1, _y1, _x2, _y2);\n        return true;\n      }\n    }\n    return false;\n  };\n}\n\n// Test if a label with the given dimensions can be added without overlap\nfunction test(_x1, _x2, _y1, _y2, bm0, bm1, x1, x2, y1, y2, boundary, isInside) {\n  return !(bm0.outOfBounds(_x1, _y1, _x2, _y2) || (isInside && bm1 || bm0).getRange(_x1, _y1, _x2, _y2));\n}\n\n// 8-bit representation of anchors\nconst TOP = 0x0,\n  MIDDLE = 0x4,\n  BOTTOM = 0x8,\n  LEFT = 0x0,\n  CENTER = 0x1,\n  RIGHT = 0x2;\n\n// Mapping from text anchor to number representation\nconst anchorCode = {\n  'top-left': TOP + LEFT,\n  'top': TOP + CENTER,\n  'top-right': TOP + RIGHT,\n  'left': MIDDLE + LEFT,\n  'middle': MIDDLE + CENTER,\n  'right': MIDDLE + RIGHT,\n  'bottom-left': BOTTOM + LEFT,\n  'bottom': BOTTOM + CENTER,\n  'bottom-right': BOTTOM + RIGHT\n};\nconst placeAreaLabel = {\n  'naive': placeAreaLabelNaive,\n  'reduced-search': placeAreaLabelReducedSearch,\n  'floodfill': placeAreaLabelFloodFill\n};\nfunction labelLayout (texts, size, compare, offset, anchor, avoidMarks, avoidBaseMark, lineAnchor, markIndex, padding, method) {\n  // early exit for empty data\n  if (!texts.length) return texts;\n  const positions = Math.max(offset.length, anchor.length),\n    offsets = getOffsets(offset, positions),\n    anchors = getAnchors(anchor, positions),\n    marktype = markType(texts[0].datum),\n    grouptype = marktype === 'group' && texts[0].datum.items[markIndex].marktype,\n    isGroupArea = grouptype === 'area',\n    boundary = markBoundary(marktype, grouptype, lineAnchor, markIndex),\n    infPadding = padding === null || padding === Infinity,\n    isNaiveGroupArea = isGroupArea && method === 'naive';\n  let maxTextWidth = -1,\n    maxTextHeight = -1;\n\n  // prepare text mark data for placing\n  const data = texts.map(d => {\n    const textWidth = infPadding ? textMetrics.width(d, d.text) : undefined;\n    maxTextWidth = Math.max(maxTextWidth, textWidth);\n    maxTextHeight = Math.max(maxTextHeight, d.fontSize);\n    return {\n      datum: d,\n      opacity: 0,\n      x: undefined,\n      y: undefined,\n      align: undefined,\n      baseline: undefined,\n      boundary: boundary(d),\n      textWidth\n    };\n  });\n  padding = padding === null || padding === Infinity ? Math.max(maxTextWidth, maxTextHeight) + Math.max(...offset) : padding;\n  const $ = scaler(size[0], size[1], padding);\n  let bitmaps;\n  if (!isNaiveGroupArea) {\n    // sort labels in priority order, if comparator is provided\n    if (compare) {\n      data.sort((a, b) => compare(a.datum, b.datum));\n    }\n\n    // flag indicating if label can be placed inside its base mark\n    let labelInside = false;\n    for (let i = 0; i < anchors.length && !labelInside; ++i) {\n      // label inside if anchor is at center\n      // label inside if offset to be inside the mark bound\n      labelInside = anchors[i] === 0x5 || offsets[i] < 0;\n    }\n\n    // extract data information from base mark when base mark is to be avoided\n    // base mark is implicitly avoided if it is a group area\n    const baseMark = (marktype && avoidBaseMark || isGroupArea) && texts.map(d => d.datum);\n\n    // generate bitmaps for layout calculation\n    bitmaps = avoidMarks.length || baseMark ? markBitmaps($, baseMark || [], avoidMarks, labelInside, isGroupArea) : baseBitmaps($, avoidBaseMark && data);\n  }\n\n  // generate label placement function\n  const place = isGroupArea ? placeAreaLabel[method]($, bitmaps, avoidBaseMark, markIndex) : placeMarkLabel($, bitmaps, anchors, offsets);\n\n  // place all labels\n  data.forEach(d => d.opacity = +place(d));\n  return data;\n}\nfunction getOffsets(_, count) {\n  const offsets = new Float64Array(count),\n    n = _.length;\n  for (let i = 0; i < n; ++i) offsets[i] = _[i] || 0;\n  for (let i = n; i < count; ++i) offsets[i] = offsets[n - 1];\n  return offsets;\n}\nfunction getAnchors(_, count) {\n  const anchors = new Int8Array(count),\n    n = _.length;\n  for (let i = 0; i < n; ++i) anchors[i] |= anchorCode[_[i]];\n  for (let i = n; i < count; ++i) anchors[i] = anchors[n - 1];\n  return anchors;\n}\nfunction markType(item) {\n  return item && item.mark && item.mark.marktype;\n}\n\n/**\n * Factory function for function for getting base mark boundary, depending\n * on mark and group type. When mark type is undefined, line or area: boundary\n * is the coordinate of each data point. When base mark is grouped line,\n * boundary is either at the start or end of the line depending on the\n * value of lineAnchor. Otherwise, use bounds of base mark.\n */\nfunction markBoundary(marktype, grouptype, lineAnchor, markIndex) {\n  const xy = d => [d.x, d.x, d.x, d.y, d.y, d.y];\n  if (!marktype) {\n    return xy; // no reactive geometry\n  } else if (marktype === 'line' || marktype === 'area') {\n    return d => xy(d.datum);\n  } else if (grouptype === 'line') {\n    return d => {\n      const items = d.datum.items[markIndex].items;\n      return xy(items.length ? items[lineAnchor === 'start' ? 0 : items.length - 1] : {\n        x: NaN,\n        y: NaN\n      });\n    };\n  } else {\n    return d => {\n      const b = d.datum.bounds;\n      return [b.x1, (b.x1 + b.x2) / 2, b.x2, b.y1, (b.y1 + b.y2) / 2, b.y2];\n    };\n  }\n}\n\nconst Output = ['x', 'y', 'opacity', 'align', 'baseline'];\nconst Anchors = ['top-left', 'left', 'bottom-left', 'top', 'bottom', 'top-right', 'right', 'bottom-right'];\n\n/**\n * Compute text label layout to annotate marks.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<number>} params.size - The size of the layout, provided as a [width, height] array.\n * @param {function(*,*): number} [params.sort] - An optional\n *   comparator function for sorting label data in priority order.\n * @param {Array<string>} [params.anchor] - Label anchor points relative to the base mark bounding box.\n *   The available options are 'top-left', 'left', 'bottom-left', 'top',\n *   'bottom', 'top-right', 'right', 'bottom-right', 'middle'.\n * @param {Array<number>} [params.offset] - Label offsets (in pixels) from the base mark bounding box.\n *   This parameter is parallel to the list of anchor points.\n * @param {number | null} [params.padding=0] - The amount (in pixels) that a label may exceed the layout size.\n *   If this parameter is null, a label may exceed the layout size without any boundary.\n * @param {string} [params.lineAnchor='end'] - For group line mark labels only, indicates the anchor\n *   position for labels. One of 'start' or 'end'.\n * @param {string} [params.markIndex=0] - For group mark labels only, an index indicating\n *   which mark within the group should be labeled.\n * @param {Array<number>} [params.avoidMarks] - A list of additional mark names for which the label\n *   layout should avoid overlap.\n * @param {boolean} [params.avoidBaseMark=true] - Boolean flag indicating if labels should avoid\n *   overlap with the underlying base mark being labeled.\n * @param {string} [params.method='naive'] - For area make labels only, a method for\n *   place labels. One of 'naive', 'reduced-search', or 'floodfill'.\n * @param {Array<string>} [params.as] - The output fields written by the transform.\n *   The default is ['x', 'y', 'opacity', 'align', 'baseline'].\n */\nfunction Label(params) {\n  Transform.call(this, null, params);\n}\nLabel.Definition = {\n  type: 'Label',\n  metadata: {\n    modifies: true\n  },\n  params: [{\n    name: 'size',\n    type: 'number',\n    array: true,\n    length: 2,\n    required: true\n  }, {\n    name: 'sort',\n    type: 'compare'\n  }, {\n    name: 'anchor',\n    type: 'string',\n    array: true,\n    default: Anchors\n  }, {\n    name: 'offset',\n    type: 'number',\n    array: true,\n    default: [1]\n  }, {\n    name: 'padding',\n    type: 'number',\n    default: 0,\n    null: true\n  }, {\n    name: 'lineAnchor',\n    type: 'string',\n    values: ['start', 'end'],\n    default: 'end'\n  }, {\n    name: 'markIndex',\n    type: 'number',\n    default: 0\n  }, {\n    name: 'avoidBaseMark',\n    type: 'boolean',\n    default: true\n  }, {\n    name: 'avoidMarks',\n    type: 'data',\n    array: true\n  }, {\n    name: 'method',\n    type: 'string',\n    default: 'naive'\n  }, {\n    name: 'as',\n    type: 'string',\n    array: true,\n    length: Output.length,\n    default: Output\n  }]\n};\ninherits(Label, Transform, {\n  transform(_, pulse) {\n    function modp(param) {\n      const p = _[param];\n      return isFunction(p) && pulse.modified(p.fields);\n    }\n    const mod = _.modified();\n    if (!(mod || pulse.changed(pulse.ADD_REM) || modp('sort'))) return;\n    if (!_.size || _.size.length !== 2) {\n      error('Size parameter should be specified as a [width, height] array.');\n    }\n    const as = _.as || Output;\n\n    // run label layout\n    labelLayout(pulse.materialize(pulse.SOURCE).source || [], _.size, _.sort, array(_.offset == null ? 1 : _.offset), array(_.anchor || Anchors), _.avoidMarks || [], _.avoidBaseMark !== false, _.lineAnchor || 'end', _.markIndex || 0, _.padding === undefined ? 0 : _.padding, _.method || 'naive').forEach(l => {\n      // write layout results to data stream\n      const t = l.datum;\n      t[as[0]] = l.x;\n      t[as[1]] = l.y;\n      t[as[2]] = l.opacity;\n      t[as[3]] = l.align;\n      t[as[4]] = l.baseline;\n    });\n    return pulse.reflow(mod).modifies(as);\n  }\n});\n\nexport { Label as label };\n", "import { regressionLoess, sampleCurve, regressionConstant, regressionLinear, regressionLog, regressionExp, regressionPow, regressionQuad, regressionPoly } from 'vega-statistics';\nimport { Transform, ingest } from 'vega-dataflow';\nimport { inherits, accessorName, hasOwnProperty, error, extent } from 'vega-util';\n\nfunction partition (data, groupby) {\n  var groups = [],\n    get = function (f) {\n      return f(t);\n    },\n    map,\n    i,\n    n,\n    t,\n    k,\n    g;\n\n  // partition data points into stack groups\n  if (groupby == null) {\n    groups.push(data);\n  } else {\n    for (map = {}, i = 0, n = data.length; i < n; ++i) {\n      t = data[i];\n      k = groupby.map(get);\n      g = map[k];\n      if (!g) {\n        map[k] = g = [];\n        g.dims = k;\n        groups.push(g);\n      }\n      g.push(t);\n    }\n  }\n  return groups;\n}\n\n/**\n * Compute locally-weighted regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {number} [params.bandwidth=0.3] - The loess bandwidth.\n */\nfunction Loess(params) {\n  Transform.call(this, null, params);\n}\nLoess.Definition = {\n  'type': 'Loess',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'bandwidth',\n    'type': 'number',\n    'default': 0.3\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\ninherits(Loess, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n        groups = partition(source, _.groupby),\n        names = (_.groupby || []).map(accessorName),\n        m = names.length,\n        as = _.as || [accessorName(_.x), accessorName(_.y)],\n        values = [];\n      groups.forEach(g => {\n        regressionLoess(g, _.x, _.y, _.bandwidth || 0.3).forEach(p => {\n          const t = {};\n          for (let i = 0; i < m; ++i) {\n            t[names[i]] = g.dims[i];\n          }\n          t[as[0]] = p[0];\n          t[as[1]] = p[1];\n          values.push(ingest(t));\n        });\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n    return out;\n  }\n});\n\nconst Methods = {\n  constant: regressionConstant,\n  linear: regressionLinear,\n  log: regressionLog,\n  exp: regressionExp,\n  pow: regressionPow,\n  quad: regressionQuad,\n  poly: regressionPoly\n};\nconst degreesOfFreedom = (method, order) => method === 'poly' ? order : method === 'quad' ? 2 : 1;\n\n/**\n * Compute regression fits for one or more data groups.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {function(object): *} params.x - An accessor for the predictor data field.\n * @param {function(object): *} params.y - An accessor for the predicted data field.\n * @param {string} [params.method='linear'] - The regression method to apply.\n * @param {Array<function(object): *>} [params.groupby] - An array of accessors to groupby.\n * @param {Array<number>} [params.extent] - The domain extent over which to plot the regression line.\n * @param {number} [params.order=3] - The polynomial order. Only applies to the 'poly' method.\n */\nfunction Regression(params) {\n  Transform.call(this, null, params);\n}\nRegression.Definition = {\n  'type': 'Regression',\n  'metadata': {\n    'generates': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'groupby',\n    'type': 'field',\n    'array': true\n  }, {\n    'name': 'method',\n    'type': 'string',\n    'default': 'linear',\n    'values': Object.keys(Methods)\n  }, {\n    'name': 'order',\n    'type': 'number',\n    'default': 3\n  }, {\n    'name': 'extent',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'params',\n    'type': 'boolean',\n    'default': false\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true\n  }]\n};\ninherits(Regression, Transform, {\n  transform(_, pulse) {\n    const out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);\n    if (!this.value || pulse.changed() || _.modified()) {\n      const source = pulse.materialize(pulse.SOURCE).source,\n        groups = partition(source, _.groupby),\n        names = (_.groupby || []).map(accessorName),\n        method = _.method || 'linear',\n        order = _.order == null ? 3 : _.order,\n        dof = degreesOfFreedom(method, order),\n        as = _.as || [accessorName(_.x), accessorName(_.y)],\n        fit = Methods[method],\n        values = [];\n      let domain = _.extent;\n      if (!hasOwnProperty(Methods, method)) {\n        error('Invalid regression method: ' + method);\n      }\n      if (domain != null) {\n        if (method === 'log' && domain[0] <= 0) {\n          pulse.dataflow.warn('Ignoring extent with values <= 0 for log regression.');\n          domain = null;\n        }\n      }\n      groups.forEach(g => {\n        const n = g.length;\n        if (n <= dof) {\n          pulse.dataflow.warn('Skipping regression with more parameters than data points.');\n          return;\n        }\n        const model = fit(g, _.x, _.y, order);\n        if (_.params) {\n          // if parameter vectors requested return those\n          values.push(ingest({\n            keys: g.dims,\n            coef: model.coef,\n            rSquared: model.rSquared\n          }));\n          return;\n        }\n        const dom = domain || extent(g, _.x),\n          add = p => {\n            const t = {};\n            for (let i = 0; i < names.length; ++i) {\n              t[names[i]] = g.dims[i];\n            }\n            t[as[0]] = p[0];\n            t[as[1]] = p[1];\n            values.push(ingest(t));\n          };\n        if (method === 'linear' || method === 'constant') {\n          // for linear or constant regression we only need the end points\n          dom.forEach(x => add([x, model.predict(x)]));\n        } else {\n          // otherwise return trend line sample points\n          sampleCurve(model.predict, dom, 25, 200).forEach(add);\n        }\n      });\n      if (this.value) out.rem = this.value;\n      this.value = out.add = out.source = values;\n    }\n    return out;\n  }\n});\n\nexport { Loess as loess, Regression as regression };\n", "import { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\nimport { Delaunay } from 'd3-delaunay';\n\nfunction Voronoi(params) {\n  Transform.call(this, null, params);\n}\nVoronoi.Definition = {\n  'type': 'Voronoi',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'x',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'y',\n    'type': 'field',\n    'required': true\n  }, {\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'extent',\n    'type': 'array',\n    'array': true,\n    'length': 2,\n    'default': [[-1e5, -1e5], [1e5, 1e5]],\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'default': 'path'\n  }]\n};\nconst defaultExtent = [-1e5, -1e5, 1e5, 1e5];\ninherits(Voronoi, Transform, {\n  transform(_, pulse) {\n    const as = _.as || 'path',\n      data = pulse.source;\n\n    // nothing to do if no data\n    if (!data || !data.length) return pulse;\n\n    // configure and construct voronoi diagram\n    let s = _.size;\n    s = s ? [0, 0, s[0], s[1]] : (s = _.extent) ? [s[0][0], s[0][1], s[1][0], s[1][1]] : defaultExtent;\n    const voronoi = this.value = Delaunay.from(data, _.x, _.y).voronoi(s);\n\n    // map polygons to paths\n    for (let i = 0, n = data.length; i < n; ++i) {\n      const polygon = voronoi.cellPolygon(i);\n      data[i][as] = polygon && !isPoint(polygon) ? toPathString(polygon) : null;\n    }\n    return pulse.reflow(_.modified()).modifies(as);\n  }\n});\n\n// suppress duplicated end point vertices\nfunction toPathString(p) {\n  const x = p[0][0],\n    y = p[0][1];\n  let n = p.length - 1;\n  for (; p[n][0] === x && p[n][1] === y; --n);\n  return 'M' + p.slice(0, n + 1).join('L') + 'Z';\n}\nfunction isPoint(p) {\n  return p.length === 2 && p[0][0] === p[1][0] && p[0][1] === p[1][1];\n}\n\nexport { Voronoi as voronoi };\n", "export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n    let Q, Qnew, hh, bvirt;\n    let enow = e[0];\n    let fnow = f[0];\n    let eindex = 0;\n    let findex = 0;\n    if ((fnow > enow) === (fnow > -enow)) {\n        Q = enow;\n        enow = e[++eindex];\n    } else {\n        Q = fnow;\n        fnow = f[++findex];\n    }\n    let hindex = 0;\n    if (eindex < elen && findex < flen) {\n        if ((fnow > enow) === (fnow > -enow)) {\n            Qnew = enow + Q;\n            hh = Q - (Qnew - enow);\n            enow = e[++eindex];\n        } else {\n            Qnew = fnow + Q;\n            hh = Q - (Qnew - fnow);\n            fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        while (eindex < elen && findex < flen) {\n            if ((fnow > enow) === (fnow > -enow)) {\n                Qnew = Q + enow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (enow - bvirt);\n                enow = e[++eindex];\n            } else {\n                Qnew = Q + fnow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n                fnow = f[++findex];\n            }\n            Q = Qnew;\n            if (hh !== 0) {\n                h[hindex++] = hh;\n            }\n        }\n    }\n    while (eindex < elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    while (findex < flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n    return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n    let Q, sum, hh, product1, product0;\n    let bvirt, c, ahi, alo, bhi, blo;\n\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    let enow = e[0];\n    Q = enow * b;\n    c = splitter * enow;\n    ahi = c - (c - enow);\n    alo = enow - ahi;\n    hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n    let hindex = 0;\n    if (hh !== 0) {\n        h[hindex++] = hh;\n    }\n    for (let i = 1; i < elen; i++) {\n        enow = e[i];\n        product1 = enow * b;\n        c = splitter * enow;\n        ahi = c - (c - enow);\n        alo = enow - ahi;\n        product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n        sum = Q + product0;\n        bvirt = sum - Q;\n        hh = Q - (sum - bvirt) + (product0 - bvirt);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        Q = product1 + sum;\n        hh = sum - (Q - product1);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function negate(elen, e) {\n    for (let i = 0; i < elen; i++) e[i] = -e[i];\n    return elen;\n}\n\nexport function estimate(elen, e) {\n    let Q = e[0];\n    for (let i = 1; i < elen; i++) Q += e[i];\n    return Q;\n}\n\nexport function vec(n) {\n    return new Float64Array(n);\n}\n", "import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n    let acxtail, acytail, bcxtail, bcytail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const acx = ax - cx;\n    const bcx = bx - cx;\n    const acy = ay - cy;\n    const bcy = by - cy;\n\n    s1 = acx * bcy;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcx;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    B[3] = u3;\n\n    let det = estimate(4, B);\n    let errbound = ccwerrboundB * detsum;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - acx;\n    acxtail = ax - (acx + bvirt) + (bvirt - cx);\n    bvirt = bx - bcx;\n    bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n    bvirt = ay - acy;\n    acytail = ay - (acy + bvirt) + (bvirt - cy);\n    bvirt = by - bcy;\n    bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n    if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n        return det;\n    }\n\n    errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n    det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n    if (det >= errbound || -det >= errbound) return det;\n\n    s1 = acxtail * bcy;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcx;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C1len = sum(4, B, 4, u, C1);\n\n    s1 = acx * bcytail;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcxtail;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C2len = sum(C1len, C1, 4, u, C2);\n\n    s1 = acxtail * bcytail;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcxtail;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const Dlen = sum(C2len, C2, 4, u, D);\n\n    return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n    const detleft = (ay - cy) * (bx - cx);\n    const detright = (ax - cx) * (by - cy);\n    const det = detleft - detright;\n\n    const detsum = Math.abs(detleft + detright);\n    if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n    return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n    return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n", "import {epsilon, splitter, resulterrbound, estimate, vec, sum, scale} from './util.js';\n\nconst o3derrboundA = (7 + 56 * epsilon) * epsilon;\nconst o3derrboundB = (3 + 28 * epsilon) * epsilon;\nconst o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst at_b = vec(4);\nconst at_c = vec(4);\nconst bt_c = vec(4);\nconst bt_a = vec(4);\nconst ct_a = vec(4);\nconst ct_b = vec(4);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abt = vec(8);\nconst u = vec(4);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _16 = vec(8);\nconst _12 = vec(12);\n\nlet fin = vec(192);\nlet fin2 = vec(192);\n\nfunction finadd(finlen, alen, a) {\n    finlen = sum(finlen, fin, alen, a, fin2);\n    const tmp = fin; fin = fin2; fin2 = tmp;\n    return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n    if (xtail === 0) {\n        if (ytail === 0) {\n            a[0] = 0;\n            b[0] = 0;\n            return 1;\n        } else {\n            negate = -ytail;\n            s1 = negate * ax;\n            c = splitter * negate;\n            ahi = c - (c - negate);\n            alo = negate - ahi;\n            c = splitter * ax;\n            bhi = c - (c - ax);\n            blo = ax - bhi;\n            a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            a[1] = s1;\n            s1 = ytail * bx;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * bx;\n            bhi = c - (c - bx);\n            blo = bx - bhi;\n            b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            b[1] = s1;\n            return 2;\n        }\n    } else {\n        if (ytail === 0) {\n            s1 = xtail * ay;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * ay;\n            bhi = c - (c - ay);\n            blo = ay - bhi;\n            a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            a[1] = s1;\n            negate = -xtail;\n            s1 = negate * by;\n            c = splitter * negate;\n            ahi = c - (c - negate);\n            alo = negate - ahi;\n            c = splitter * by;\n            bhi = c - (c - by);\n            blo = by - bhi;\n            b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            b[1] = s1;\n            return 2;\n        } else {\n            s1 = xtail * ay;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * ay;\n            bhi = c - (c - ay);\n            blo = ay - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = ytail * ax;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * ax;\n            bhi = c - (c - ax);\n            blo = ax - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            a[3] = u3;\n            s1 = ytail * bx;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * bx;\n            bhi = c - (c - bx);\n            blo = bx - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = xtail * by;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * by;\n            bhi = c - (c - by);\n            blo = by - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            b[3] = u3;\n            return 4;\n        }\n    }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n    s1 = a * b;\n    c = splitter * a;\n    ahi = c - (c - a);\n    alo = a - ahi;\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    c = splitter * k;\n    bhi = c - (c - k);\n    blo = k - bhi;\n    _i = s0 * k;\n    c = splitter * s0;\n    ahi = c - (c - s0);\n    alo = s0 - ahi;\n    u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n    _j = s1 * k;\n    c = splitter * s1;\n    ahi = c - (c - s1);\n    alo = s1 - ahi;\n    _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n    _k = _i + _0;\n    bvirt = _k - _i;\n    u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n    u3 = _j + _k;\n    u[2] = _k - (u3 - _j);\n    u[3] = u3;\n    finlen = finadd(finlen, 4, u);\n    if (z !== 0) {\n        c = splitter * z;\n        bhi = c - (c - z);\n        blo = z - bhi;\n        _i = s0 * z;\n        c = splitter * s0;\n        ahi = c - (c - s0);\n        alo = s0 - ahi;\n        u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n        _j = s1 * z;\n        c = splitter * s1;\n        ahi = c - (c - s1);\n        alo = s1 - ahi;\n        _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n        _k = _i + _0;\n        bvirt = _k - _i;\n        u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n        u3 = _j + _k;\n        u[2] = _k - (u3 - _j);\n        u[3] = u3;\n        finlen = finadd(finlen, 4, u);\n    }\n    return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n    let finlen;\n    let adxtail, bdxtail, cdxtail;\n    let adytail, bdytail, cdytail;\n    let adztail, bdztail, cdztail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    s1 = bdx * cdy;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cdx * bdy;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cdx * ady;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = adx * cdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ca[3] = u3;\n    s1 = adx * bdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bdx * ady;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n\n    finlen = sum(\n        sum(\n            scale(4, bc, adz, _8), _8,\n            scale(4, ca, bdz, _8b), _8b, _16), _16,\n        scale(4, ab, cdz, _8), _8, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = o3derrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - adx;\n    adxtail = ax - (adx + bvirt) + (bvirt - dx);\n    bvirt = bx - bdx;\n    bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n    bvirt = cx - cdx;\n    cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n    bvirt = ay - ady;\n    adytail = ay - (ady + bvirt) + (bvirt - dy);\n    bvirt = by - bdy;\n    bdytail = by - (bdy + bvirt) + (bvirt - dy);\n    bvirt = cy - cdy;\n    cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n    bvirt = az - adz;\n    adztail = az - (adz + bvirt) + (bvirt - dz);\n    bvirt = bz - bdz;\n    bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n    bvirt = cz - cdz;\n    cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n    if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&\n        adytail === 0 && bdytail === 0 && cdytail === 0 &&\n        adztail === 0 && bdztail === 0 && cdztail === 0) {\n        return det;\n    }\n\n    errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n    det +=\n        adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n        bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n        cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n    const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n    const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n    const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n    finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n\n    const catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n    finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n\n    const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n    finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n\n    if (adztail !== 0) {\n        finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n        finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n    }\n    if (bdztail !== 0) {\n        finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n        finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n    }\n    if (cdztail !== 0) {\n        finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n        finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n    }\n\n    if (adxtail !== 0) {\n        if (bdytail !== 0) {\n            finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n        }\n        if (cdytail !== 0) {\n            finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n        }\n    }\n    if (bdxtail !== 0) {\n        if (cdytail !== 0) {\n            finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n        }\n        if (adytail !== 0) {\n            finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n        }\n    }\n    if (cdxtail !== 0) {\n        if (adytail !== 0) {\n            finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n        }\n        if (bdytail !== 0) {\n            finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n        }\n    }\n\n    return fin[finlen - 1];\n}\n\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    const bdxcdy = bdx * cdy;\n    const cdxbdy = cdx * bdy;\n\n    const cdxady = cdx * ady;\n    const adxcdy = adx * cdy;\n\n    const adxbdy = adx * bdy;\n    const bdxady = bdx * ady;\n\n    const det =\n        adz * (bdxcdy - cdxbdy) +\n        bdz * (cdxady - adxcdy) +\n        cdz * (adxbdy - bdxady);\n\n    const permanent =\n        (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n        (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n        (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n    const errbound = o3derrboundA * permanent;\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n\n    return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    return adx * (bdy * cdz - bdz * cdy) +\n        bdx * (cdy * adz - cdz * ady) +\n        cdx * (ady * bdz - adz * bdy);\n}\n", "import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';\n\nconst iccerrboundA = (10 + 96 * epsilon) * epsilon;\nconst iccerrboundB = (4 + 48 * epsilon) * epsilon;\nconst iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst aa = vec(4);\nconst bb = vec(4);\nconst cc = vec(4);\nconst u = vec(4);\nconst v = vec(4);\nconst axtbc = vec(8);\nconst aytbc = vec(8);\nconst bxtca = vec(8);\nconst bytca = vec(8);\nconst cxtab = vec(8);\nconst cytab = vec(8);\nconst abt = vec(8);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abtt = vec(4);\nconst bctt = vec(4);\nconst catt = vec(4);\n\nconst _8 = vec(8);\nconst _16 = vec(16);\nconst _16b = vec(16);\nconst _16c = vec(16);\nconst _32 = vec(32);\nconst _32b = vec(32);\nconst _48 = vec(48);\nconst _64 = vec(64);\n\nlet fin = vec(1152);\nlet fin2 = vec(1152);\n\nfunction finadd(finlen, a, alen) {\n    finlen = sum(finlen, fin, a, alen, fin2);\n    const tmp = fin; fin = fin2; fin2 = tmp;\n    return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n    let finlen;\n    let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n    let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n    let abtlen, bctlen, catlen;\n    let abttlen, bcttlen, cattlen;\n    let n1, n0;\n\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n\n    s1 = bdx * cdy;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cdx * bdy;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cdx * ady;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = adx * cdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ca[3] = u3;\n    s1 = adx * bdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bdx * ady;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n\n    finlen = sum(\n        sum(\n            sum(\n                scale(scale(4, bc, adx, _8), _8, adx, _16), _16,\n                scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n            sum(\n                scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,\n                scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n        sum(\n            scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,\n            scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = iccerrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - adx;\n    adxtail = ax - (adx + bvirt) + (bvirt - dx);\n    bvirt = ay - ady;\n    adytail = ay - (ady + bvirt) + (bvirt - dy);\n    bvirt = bx - bdx;\n    bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n    bvirt = by - bdy;\n    bdytail = by - (bdy + bvirt) + (bvirt - dy);\n    bvirt = cx - cdx;\n    cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n    bvirt = cy - cdy;\n    cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n    if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n        return det;\n    }\n\n    errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n    det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n        2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n        ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n        2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n        ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n        2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n        s1 = adx * adx;\n        c = splitter * adx;\n        ahi = c - (c - adx);\n        alo = adx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = ady * ady;\n        c = splitter * ady;\n        ahi = c - (c - ady);\n        alo = ady - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        aa[3] = u3;\n    }\n    if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n        s1 = bdx * bdx;\n        c = splitter * bdx;\n        ahi = c - (c - bdx);\n        alo = bdx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = bdy * bdy;\n        c = splitter * bdy;\n        ahi = c - (c - bdy);\n        alo = bdy - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        bb[3] = u3;\n    }\n    if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n        s1 = cdx * cdx;\n        c = splitter * cdx;\n        ahi = c - (c - cdx);\n        alo = cdx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = cdy * cdy;\n        c = splitter * cdy;\n        ahi = c - (c - cdy);\n        alo = cdy - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        cc[3] = u3;\n    }\n\n    if (adxtail !== 0) {\n        axtbclen = scale(4, bc, adxtail, axtbc);\n        finlen = finadd(finlen, sum_three(\n            scale(axtbclen, axtbc, 2 * adx, _16), _16,\n            scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n            scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n    }\n    if (adytail !== 0) {\n        aytbclen = scale(4, bc, adytail, aytbc);\n        finlen = finadd(finlen, sum_three(\n            scale(aytbclen, aytbc, 2 * ady, _16), _16,\n            scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n            scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n    }\n    if (bdxtail !== 0) {\n        bxtcalen = scale(4, ca, bdxtail, bxtca);\n        finlen = finadd(finlen, sum_three(\n            scale(bxtcalen, bxtca, 2 * bdx, _16), _16,\n            scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n            scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n    }\n    if (bdytail !== 0) {\n        bytcalen = scale(4, ca, bdytail, bytca);\n        finlen = finadd(finlen, sum_three(\n            scale(bytcalen, bytca, 2 * bdy, _16), _16,\n            scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n            scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n    }\n    if (cdxtail !== 0) {\n        cxtablen = scale(4, ab, cdxtail, cxtab);\n        finlen = finadd(finlen, sum_three(\n            scale(cxtablen, cxtab, 2 * cdx, _16), _16,\n            scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n            scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n    }\n    if (cdytail !== 0) {\n        cytablen = scale(4, ab, cdytail, cytab);\n        finlen = finadd(finlen, sum_three(\n            scale(cytablen, cytab, 2 * cdy, _16), _16,\n            scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n            scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n    }\n\n    if (adxtail !== 0 || adytail !== 0) {\n        if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n            s1 = bdxtail * cdy;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * cdy;\n            bhi = c - (c - cdy);\n            blo = cdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdx * cdytail;\n            c = splitter * bdx;\n            ahi = c - (c - bdx);\n            alo = bdx - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            s1 = cdxtail * -bdy;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * -bdy;\n            bhi = c - (c - -bdy);\n            blo = -bdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdx * -bdytail;\n            c = splitter * cdx;\n            ahi = c - (c - cdx);\n            alo = cdx - ahi;\n            c = splitter * -bdytail;\n            bhi = c - (c - -bdytail);\n            blo = -bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            bctlen = sum(4, u, 4, v, bct);\n            s1 = bdxtail * cdytail;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdxtail * bdytail;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            bctt[3] = u3;\n            bcttlen = 4;\n        } else {\n            bct[0] = 0;\n            bctlen = 1;\n            bctt[0] = 0;\n            bcttlen = 1;\n        }\n        if (adxtail !== 0) {\n            const len = scale(bctlen, bct, adxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(axtbclen, axtbc, adxtail, _16), _16,\n                scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n            const len2 = scale(bcttlen, bctt, adxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * adx, _16), _16,\n                scale(len2, _8, adxtail, _16b), _16b,\n                scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n            if (bdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n            }\n            if (cdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n            }\n        }\n        if (adytail !== 0) {\n            const len = scale(bctlen, bct, adytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(aytbclen, aytbc, adytail, _16), _16,\n                scale(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n            const len2 = scale(bcttlen, bctt, adytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * ady, _16), _16,\n                scale(len2, _8, adytail, _16b), _16b,\n                scale(len, _16c, adytail, _32), _32, _32b, _64), _64);\n        }\n    }\n    if (bdxtail !== 0 || bdytail !== 0) {\n        if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n            s1 = cdxtail * ady;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * ady;\n            bhi = c - (c - ady);\n            blo = ady - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdx * adytail;\n            c = splitter * cdx;\n            ahi = c - (c - cdx);\n            alo = cdx - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            n1 = -cdy;\n            n0 = -cdytail;\n            s1 = adxtail * n1;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * n1;\n            bhi = c - (c - n1);\n            blo = n1 - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adx * n0;\n            c = splitter * adx;\n            ahi = c - (c - adx);\n            alo = adx - ahi;\n            c = splitter * n0;\n            bhi = c - (c - n0);\n            blo = n0 - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            catlen = sum(4, u, 4, v, cat);\n            s1 = cdxtail * adytail;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adxtail * cdytail;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            catt[3] = u3;\n            cattlen = 4;\n        } else {\n            cat[0] = 0;\n            catlen = 1;\n            catt[0] = 0;\n            cattlen = 1;\n        }\n        if (bdxtail !== 0) {\n            const len = scale(catlen, cat, bdxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(bxtcalen, bxtca, bdxtail, _16), _16,\n                scale(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n            const len2 = scale(cattlen, catt, bdxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * bdx, _16), _16,\n                scale(len2, _8, bdxtail, _16b), _16b,\n                scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n            if (cdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n            }\n            if (adytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n            }\n        }\n        if (bdytail !== 0) {\n            const len = scale(catlen, cat, bdytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(bytcalen, bytca, bdytail, _16), _16,\n                scale(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n            const len2 = scale(cattlen, catt, bdytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * bdy, _16), _16,\n                scale(len2, _8, bdytail, _16b), _16b,\n                scale(len, _16c, bdytail, _32), _32,  _32b, _64), _64);\n        }\n    }\n    if (cdxtail !== 0 || cdytail !== 0) {\n        if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n            s1 = adxtail * bdy;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * bdy;\n            bhi = c - (c - bdy);\n            blo = bdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adx * bdytail;\n            c = splitter * adx;\n            ahi = c - (c - adx);\n            alo = adx - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            n1 = -ady;\n            n0 = -adytail;\n            s1 = bdxtail * n1;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * n1;\n            bhi = c - (c - n1);\n            blo = n1 - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdx * n0;\n            c = splitter * bdx;\n            ahi = c - (c - bdx);\n            alo = bdx - ahi;\n            c = splitter * n0;\n            bhi = c - (c - n0);\n            blo = n0 - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            abtlen = sum(4, u, 4, v, abt);\n            s1 = adxtail * bdytail;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdxtail * adytail;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            abtt[3] = u3;\n            abttlen = 4;\n        } else {\n            abt[0] = 0;\n            abtlen = 1;\n            abtt[0] = 0;\n            abttlen = 1;\n        }\n        if (cdxtail !== 0) {\n            const len = scale(abtlen, abt, cdxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(cxtablen, cxtab, cdxtail, _16), _16,\n                scale(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n            const len2 = scale(abttlen, abtt, cdxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * cdx, _16), _16,\n                scale(len2, _8, cdxtail, _16b), _16b,\n                scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n            if (adytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n            }\n            if (bdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n            }\n        }\n        if (cdytail !== 0) {\n            const len = scale(abtlen, abt, cdytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(cytablen, cytab, cdytail, _16), _16,\n                scale(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n            const len2 = scale(abttlen, abtt, cdytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * cdy, _16), _16,\n                scale(len2, _8, cdytail, _16b), _16b,\n                scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n        }\n    }\n\n    return fin[finlen - 1];\n}\n\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n\n    const bdxcdy = bdx * cdy;\n    const cdxbdy = cdx * bdy;\n    const alift = adx * adx + ady * ady;\n\n    const cdxady = cdx * ady;\n    const adxcdy = adx * cdy;\n    const blift = bdx * bdx + bdy * bdy;\n\n    const adxbdy = adx * bdy;\n    const bdxady = bdx * ady;\n    const clift = cdx * cdx + cdy * cdy;\n\n    const det =\n        alift * (bdxcdy - cdxbdy) +\n        blift * (cdxady - adxcdy) +\n        clift * (adxbdy - bdxady);\n\n    const permanent =\n        (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n        (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n        (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n    const errbound = iccerrboundA * permanent;\n\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n    return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n    const adx = ax - dx;\n    const ady = ay - dy;\n    const bdx = bx - dx;\n    const bdy = by - dy;\n    const cdx = cx - dx;\n    const cdy = cy - dy;\n\n    const abdet = adx * bdy - bdx * ady;\n    const bcdet = bdx * cdy - cdx * bdy;\n    const cadet = cdx * ady - adx * cdy;\n    const alift = adx * adx + ady * ady;\n    const blift = bdx * bdx + bdy * bdy;\n    const clift = cdx * cdx + cdy * cdy;\n\n    return alift * bcdet + blift * cadet + clift * abdet;\n}\n", "import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate} from './util.js';\n\nconst isperrboundA = (16 + 224 * epsilon) * epsilon;\nconst isperrboundB = (5 + 72 * epsilon) * epsilon;\nconst isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\n\nconst ab = vec(4);\nconst bc = vec(4);\nconst cd = vec(4);\nconst de = vec(4);\nconst ea = vec(4);\nconst ac = vec(4);\nconst bd = vec(4);\nconst ce = vec(4);\nconst da = vec(4);\nconst eb = vec(4);\n\nconst abc = vec(24);\nconst bcd = vec(24);\nconst cde = vec(24);\nconst dea = vec(24);\nconst eab = vec(24);\nconst abd = vec(24);\nconst bce = vec(24);\nconst cda = vec(24);\nconst deb = vec(24);\nconst eac = vec(24);\n\nconst adet = vec(1152);\nconst bdet = vec(1152);\nconst cdet = vec(1152);\nconst ddet = vec(1152);\nconst edet = vec(1152);\nconst abdet = vec(2304);\nconst cddet = vec(2304);\nconst cdedet = vec(3456);\nconst deter = vec(5760);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _8c = vec(8);\nconst _16 = vec(16);\nconst _24 = vec(24);\nconst _48 = vec(48);\nconst _48b = vec(48);\nconst _96 = vec(96);\nconst _192 = vec(192);\nconst _384x = vec(384);\nconst _384y = vec(384);\nconst _384z = vec(384);\nconst _768 = vec(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n    return sum_three(\n        scale(4, a, az, _8), _8,\n        scale(4, b, bz, _8b), _8b,\n        scale(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n    const len = sum(\n        sum(alen, a, blen, b, _48), _48,\n        negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n    return sum_three(\n        scale(scale(len, _96, x, _192), _192, x, _384x), _384x,\n        scale(scale(len, _96, y, _192), _192, y, _384y), _384y,\n        scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    s1 = ax * by;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bx * ay;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n    s1 = bx * cy;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cx * by;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cx * dy;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dx * cy;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    cd[3] = u3;\n    s1 = dx * ey;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ex * dy;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    de[3] = u3;\n    s1 = ex * ay;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ax * ey;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ea[3] = u3;\n    s1 = ax * cy;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cx * ay;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ac[3] = u3;\n    s1 = bx * dy;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dx * by;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bd[3] = u3;\n    s1 = cx * ey;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ex * cy;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ce[3] = u3;\n    s1 = dx * ay;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ax * dy;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    da[3] = u3;\n    s1 = ex * by;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bx * ey;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    eb[3] = u3;\n\n    const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n    const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n    const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n    const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n    const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n    const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n    const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n    const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n    const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n    const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n    const deterlen = sum_three(\n        liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n        liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n        sum_three(\n            liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n            liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n            liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n    return deter[deterlen - 1];\n}\n\nconst xdet = vec(96);\nconst ydet = vec(96);\nconst zdet = vec(96);\nconst fin = vec(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n    const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n    return sum_three(\n        scale(scale(len, _24, x, _48), _48, x, xdet), xdet,\n        scale(scale(len, _24, y, _48), _48, y, ydet), ydet,\n        scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n    let ab3, bc3, cd3, da3, ac3, bd3;\n\n    let aextail, bextail, cextail, dextail;\n    let aeytail, beytail, ceytail, deytail;\n    let aeztail, beztail, ceztail, deztail;\n\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n    const aex = ax - ex;\n    const bex = bx - ex;\n    const cex = cx - ex;\n    const dex = dx - ex;\n    const aey = ay - ey;\n    const bey = by - ey;\n    const cey = cy - ey;\n    const dey = dy - ey;\n    const aez = az - ez;\n    const bez = bz - ez;\n    const cez = cz - ez;\n    const dez = dz - ez;\n\n    s1 = aex * bey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bex * aey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    ab3 = _j + _i;\n    bvirt = ab3 - _j;\n    ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n    ab[3] = ab3;\n    s1 = bex * cey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cex * bey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    bc3 = _j + _i;\n    bvirt = bc3 - _j;\n    bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n    bc[3] = bc3;\n    s1 = cex * dey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dex * cey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    cd3 = _j + _i;\n    bvirt = cd3 - _j;\n    cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n    cd[3] = cd3;\n    s1 = dex * aey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = aex * dey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    da3 = _j + _i;\n    bvirt = da3 - _j;\n    da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n    da[3] = da3;\n    s1 = aex * cey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cex * aey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    ac3 = _j + _i;\n    bvirt = ac3 - _j;\n    ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n    ac[3] = ac3;\n    s1 = bex * dey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dex * bey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    bd3 = _j + _i;\n    bvirt = bd3 - _j;\n    bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n    bd[3] = bd3;\n\n    const finlen = sum(\n        sum(\n            negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n            liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n        sum(\n            negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n            liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = isperrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - aex;\n    aextail = ax - (aex + bvirt) + (bvirt - ex);\n    bvirt = ay - aey;\n    aeytail = ay - (aey + bvirt) + (bvirt - ey);\n    bvirt = az - aez;\n    aeztail = az - (aez + bvirt) + (bvirt - ez);\n    bvirt = bx - bex;\n    bextail = bx - (bex + bvirt) + (bvirt - ex);\n    bvirt = by - bey;\n    beytail = by - (bey + bvirt) + (bvirt - ey);\n    bvirt = bz - bez;\n    beztail = bz - (bez + bvirt) + (bvirt - ez);\n    bvirt = cx - cex;\n    cextail = cx - (cex + bvirt) + (bvirt - ex);\n    bvirt = cy - cey;\n    ceytail = cy - (cey + bvirt) + (bvirt - ey);\n    bvirt = cz - cez;\n    ceztail = cz - (cez + bvirt) + (bvirt - ez);\n    bvirt = dx - dex;\n    dextail = dx - (dex + bvirt) + (bvirt - ex);\n    bvirt = dy - dey;\n    deytail = dy - (dey + bvirt) + (bvirt - ey);\n    bvirt = dz - dez;\n    deztail = dz - (dez + bvirt) + (bvirt - ez);\n    if (aextail === 0 && aeytail === 0 && aeztail === 0 &&\n        bextail === 0 && beytail === 0 && beztail === 0 &&\n        cextail === 0 && ceytail === 0 && ceztail === 0 &&\n        dextail === 0 && deytail === 0 && deztail === 0) {\n        return det;\n    }\n\n    errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n\n    const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n    const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n    const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n    const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n    const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n    const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n    det +=\n        (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n        (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n        ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n        ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n        (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n        ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n        2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n        (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n        ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n        (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n    const aex = ax - ex;\n    const bex = bx - ex;\n    const cex = cx - ex;\n    const dex = dx - ex;\n    const aey = ay - ey;\n    const bey = by - ey;\n    const cey = cy - ey;\n    const dey = dy - ey;\n    const aez = az - ez;\n    const bez = bz - ez;\n    const cez = cz - ez;\n    const dez = dz - ez;\n\n    const aexbey = aex * bey;\n    const bexaey = bex * aey;\n    const ab = aexbey - bexaey;\n    const bexcey = bex * cey;\n    const cexbey = cex * bey;\n    const bc = bexcey - cexbey;\n    const cexdey = cex * dey;\n    const dexcey = dex * cey;\n    const cd = cexdey - dexcey;\n    const dexaey = dex * aey;\n    const aexdey = aex * dey;\n    const da = dexaey - aexdey;\n    const aexcey = aex * cey;\n    const cexaey = cex * aey;\n    const ac = aexcey - cexaey;\n    const bexdey = bex * dey;\n    const dexbey = dex * bey;\n    const bd = bexdey - dexbey;\n\n    const alift = aex * aex + aey * aey + aez * aez;\n    const blift = bex * bex + bey * bey + bez * bez;\n    const clift = cex * cex + cey * cey + cez * cez;\n    const dlift = dex * dex + dey * dey + dez * dez;\n\n    const det =\n        (clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab)) +\n        (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n\n    const aezplus = Math.abs(aez);\n    const bezplus = Math.abs(bez);\n    const cezplus = Math.abs(cez);\n    const dezplus = Math.abs(dez);\n    const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n    const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n    const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n    const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n    const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n    const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n    const permanent =\n        (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift +\n        (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift +\n        (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift +\n        (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n\n    const errbound = isperrboundA * permanent;\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n    return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n    const aex = pax - pex;\n    const bex = pbx - pex;\n    const cex = pcx - pex;\n    const dex = pdx - pex;\n    const aey = pay - pey;\n    const bey = pby - pey;\n    const cey = pcy - pey;\n    const dey = pdy - pey;\n    const aez = paz - pez;\n    const bez = pbz - pez;\n    const cez = pcz - pez;\n    const dez = pdz - pez;\n\n    const ab = aex * bey - bex * aey;\n    const bc = bex * cey - cex * bey;\n    const cd = cex * dey - dex * cey;\n    const da = dex * aey - aex * dey;\n    const ac = aex * cey - cex * aey;\n    const bd = bex * dey - dex * bey;\n\n    const abc = aez * bc - bez * ac + cez * ab;\n    const bcd = bez * cd - cez * bd + dez * bc;\n    const cda = cez * da + dez * ac + aez * cd;\n    const dab = dez * ab + aez * bd + bez * da;\n\n    const alift = aex * aex + aey * aey + aez * aez;\n    const blift = bex * bex + bey * bey + bez * bez;\n    const clift = cex * cex + cey * cey + cez * cez;\n    const dlift = dex * dex + dey * dey + dez * dez;\n\n    return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n", "\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n    static from(points, getX = defaultGetX, getY = defaultGetY) {\n        const n = points.length;\n        const coords = new Float64Array(n * 2);\n\n        for (let i = 0; i < n; i++) {\n            const p = points[i];\n            coords[2 * i] = getX(p);\n            coords[2 * i + 1] = getY(p);\n        }\n\n        return new Delaunator(coords);\n    }\n\n    constructor(coords) {\n        const n = coords.length >> 1;\n        if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n        this.coords = coords;\n\n        // arrays that will store the triangulation graph\n        const maxTriangles = Math.max(2 * n - 5, 0);\n        this._triangles = new Uint32Array(maxTriangles * 3);\n        this._halfedges = new Int32Array(maxTriangles * 3);\n\n        // temporary arrays for tracking the edges of the advancing convex hull\n        this._hashSize = Math.ceil(Math.sqrt(n));\n        this._hullPrev = new Uint32Array(n); // edge to prev edge\n        this._hullNext = new Uint32Array(n); // edge to next edge\n        this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n        this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n        // temporary arrays for sorting points\n        this._ids = new Uint32Array(n);\n        this._dists = new Float64Array(n);\n\n        this.update();\n    }\n\n    update() {\n        const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} =  this;\n        const n = coords.length >> 1;\n\n        // populate an array of point indices; calculate input data bbox\n        let minX = Infinity;\n        let minY = Infinity;\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n\n        for (let i = 0; i < n; i++) {\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n            this._ids[i] = i;\n        }\n        const cx = (minX + maxX) / 2;\n        const cy = (minY + maxY) / 2;\n\n        let minDist = Infinity;\n        let i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (let i = 0; i < n; i++) {\n            const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist) {\n                i0 = i;\n                minDist = d;\n            }\n        }\n        const i0x = coords[2 * i0];\n        const i0y = coords[2 * i0 + 1];\n\n        minDist = Infinity;\n\n        // find the point closest to the seed\n        for (let i = 0; i < n; i++) {\n            if (i === i0) continue;\n            const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist && d > 0) {\n                i1 = i;\n                minDist = d;\n            }\n        }\n        let i1x = coords[2 * i1];\n        let i1y = coords[2 * i1 + 1];\n\n        let minRadius = Infinity;\n\n        // find the third point which forms the smallest circumcircle with the first two\n        for (let i = 0; i < n; i++) {\n            if (i === i0 || i === i1) continue;\n            const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n            if (r < minRadius) {\n                i2 = i;\n                minRadius = r;\n            }\n        }\n        let i2x = coords[2 * i2];\n        let i2y = coords[2 * i2 + 1];\n\n        if (minRadius === Infinity) {\n            // order collinear points by dx (or dy if all x are identical)\n            // and return the list as a hull\n            for (let i = 0; i < n; i++) {\n                this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n            }\n            quicksort(this._ids, this._dists, 0, n - 1);\n            const hull = new Uint32Array(n);\n            let j = 0;\n            for (let i = 0, d0 = -Infinity; i < n; i++) {\n                const id = this._ids[i];\n                if (this._dists[id] > d0) {\n                    hull[j++] = id;\n                    d0 = this._dists[id];\n                }\n            }\n            this.hull = hull.subarray(0, j);\n            this.triangles = new Uint32Array(0);\n            this.halfedges = new Uint32Array(0);\n            return;\n        }\n\n        // swap the order of the seed points for counter-clockwise orientation\n        if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n            const i = i1;\n            const x = i1x;\n            const y = i1y;\n            i1 = i2;\n            i1x = i2x;\n            i1y = i2y;\n            i2 = i;\n            i2x = x;\n            i2y = y;\n        }\n\n        const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n        this._cx = center.x;\n        this._cy = center.y;\n\n        for (let i = 0; i < n; i++) {\n            this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n        }\n\n        // sort the points by distance from the seed triangle circumcenter\n        quicksort(this._ids, this._dists, 0, n - 1);\n\n        // set up the seed triangle as the starting hull\n        this._hullStart = i0;\n        let hullSize = 3;\n\n        hullNext[i0] = hullPrev[i2] = i1;\n        hullNext[i1] = hullPrev[i0] = i2;\n        hullNext[i2] = hullPrev[i1] = i0;\n\n        hullTri[i0] = 0;\n        hullTri[i1] = 1;\n        hullTri[i2] = 2;\n\n        hullHash.fill(-1);\n        hullHash[this._hashKey(i0x, i0y)] = i0;\n        hullHash[this._hashKey(i1x, i1y)] = i1;\n        hullHash[this._hashKey(i2x, i2y)] = i2;\n\n        this.trianglesLen = 0;\n        this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n        for (let k = 0, xp, yp; k < this._ids.length; k++) {\n            const i = this._ids[k];\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n\n            // skip near-duplicate points\n            if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n            xp = x;\n            yp = y;\n\n            // skip seed triangle points\n            if (i === i0 || i === i1 || i === i2) continue;\n\n            // find a visible edge on the convex hull using edge hash\n            let start = 0;\n            for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n                start = hullHash[(key + j) % this._hashSize];\n                if (start !== -1 && start !== hullNext[start]) break;\n            }\n\n            start = hullPrev[start];\n            let e = start, q;\n            while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n                e = q;\n                if (e === start) {\n                    e = -1;\n                    break;\n                }\n            }\n            if (e === -1) continue; // likely a near-duplicate point; skip it\n\n            // add the first triangle from the point\n            let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n            // recursively flip triangles from the point until they satisfy the Delaunay condition\n            hullTri[i] = this._legalize(t + 2);\n            hullTri[e] = t; // keep track of boundary triangles on the hull\n            hullSize++;\n\n            // walk forward through the hull, adding more triangles and flipping recursively\n            let n = hullNext[e];\n            while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n                t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n                hullTri[i] = this._legalize(t + 2);\n                hullNext[n] = n; // mark as removed\n                hullSize--;\n                n = q;\n            }\n\n            // walk backward from the other side, adding more triangles and flipping\n            if (e === start) {\n                while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n                    t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n                    this._legalize(t + 2);\n                    hullTri[q] = t;\n                    hullNext[e] = e; // mark as removed\n                    hullSize--;\n                    e = q;\n                }\n            }\n\n            // update the hull indices\n            this._hullStart = hullPrev[i] = e;\n            hullNext[e] = hullPrev[n] = i;\n            hullNext[i] = n;\n\n            // save the two new edges in the hash table\n            hullHash[this._hashKey(x, y)] = i;\n            hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n        }\n\n        this.hull = new Uint32Array(hullSize);\n        for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n            this.hull[i] = e;\n            e = hullNext[e];\n        }\n\n        // trim typed triangle mesh arrays\n        this.triangles = this._triangles.subarray(0, this.trianglesLen);\n        this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n    }\n\n    _hashKey(x, y) {\n        return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n    }\n\n    _legalize(a) {\n        const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n        let i = 0;\n        let ar = 0;\n\n        // recursion eliminated with a fixed-size stack\n        while (true) {\n            const b = halfedges[a];\n\n            /* if the pair of triangles doesn't satisfy the Delaunay condition\n             * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n             * then do the same check/flip recursively for the new pair of triangles\n             *\n             *           pl                    pl\n             *          /||\\                  /  \\\n             *       al/ || \\bl            al/    \\a\n             *        /  ||  \\              /      \\\n             *       /  a||b  \\    flip    /___ar___\\\n             *     p0\\   ||   /p1   =>   p0\\---bl---/p1\n             *        \\  ||  /              \\      /\n             *       ar\\ || /br             b\\    /br\n             *          \\||/                  \\  /\n             *           pr                    pr\n             */\n            const a0 = a - a % 3;\n            ar = a0 + (a + 2) % 3;\n\n            if (b === -1) { // convex hull edge\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n                continue;\n            }\n\n            const b0 = b - b % 3;\n            const al = a0 + (a + 1) % 3;\n            const bl = b0 + (b + 2) % 3;\n\n            const p0 = triangles[ar];\n            const pr = triangles[a];\n            const pl = triangles[al];\n            const p1 = triangles[bl];\n\n            const illegal = inCircle(\n                coords[2 * p0], coords[2 * p0 + 1],\n                coords[2 * pr], coords[2 * pr + 1],\n                coords[2 * pl], coords[2 * pl + 1],\n                coords[2 * p1], coords[2 * p1 + 1]);\n\n            if (illegal) {\n                triangles[a] = p1;\n                triangles[b] = p0;\n\n                const hbl = halfedges[bl];\n\n                // edge swapped on the other side of the hull (rare); fix the halfedge reference\n                if (hbl === -1) {\n                    let e = this._hullStart;\n                    do {\n                        if (this._hullTri[e] === bl) {\n                            this._hullTri[e] = a;\n                            break;\n                        }\n                        e = this._hullPrev[e];\n                    } while (e !== this._hullStart);\n                }\n                this._link(a, hbl);\n                this._link(b, halfedges[ar]);\n                this._link(ar, bl);\n\n                const br = b0 + (b + 1) % 3;\n\n                // don't worry about hitting the cap: it can only happen on extremely degenerate input\n                if (i < EDGE_STACK.length) {\n                    EDGE_STACK[i++] = br;\n                }\n            } else {\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n            }\n        }\n\n        return ar;\n    }\n\n    _link(a, b) {\n        this._halfedges[a] = b;\n        if (b !== -1) this._halfedges[b] = a;\n    }\n\n    // add a new triangle given vertex indices and adjacent half-edge ids\n    _addTriangle(i0, i1, i2, a, b, c) {\n        const t = this.trianglesLen;\n\n        this._triangles[t] = i0;\n        this._triangles[t + 1] = i1;\n        this._triangles[t + 2] = i2;\n\n        this._link(t, a);\n        this._link(t + 1, b);\n        this._link(t + 2, c);\n\n        this.trianglesLen += 3;\n\n        return t;\n    }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n    const p = dx / (Math.abs(dx) + Math.abs(dy));\n    return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n    const dx = ax - px;\n    const dy = ay - py;\n    const ex = bx - px;\n    const ey = by - py;\n    const fx = cx - px;\n    const fy = cy - py;\n\n    const ap = dx * dx + dy * dy;\n    const bp = ex * ex + ey * ey;\n    const cp = fx * fx + fy * fy;\n\n    return dx * (ey * cp - bp * fy) -\n           dy * (ex * cp - bp * fx) +\n           ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = (ey * bl - dy * cl) * d;\n    const y = (dx * cl - ex * bl) * d;\n\n    return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = ax + (ey * bl - dy * cl) * d;\n    const y = ay + (dx * cl - ex * bl) * d;\n\n    return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n    if (right - left <= 20) {\n        for (let i = left + 1; i <= right; i++) {\n            const temp = ids[i];\n            const tempDist = dists[temp];\n            let j = i - 1;\n            while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n            ids[j + 1] = temp;\n        }\n    } else {\n        const median = (left + right) >> 1;\n        let i = left + 1;\n        let j = right;\n        swap(ids, median, i);\n        if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n        if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n        if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n        const temp = ids[i];\n        const tempDist = dists[temp];\n        while (true) {\n            do i++; while (dists[ids[i]] < tempDist);\n            do j--; while (dists[ids[j]] > tempDist);\n            if (j < i) break;\n            swap(ids, i, j);\n        }\n        ids[left + 1] = ids[j];\n        ids[j] = temp;\n\n        if (right - i + 1 >= j - left) {\n            quicksort(ids, dists, i, right);\n            quicksort(ids, dists, left, j - 1);\n        } else {\n            quicksort(ids, dists, left, j - 1);\n            quicksort(ids, dists, i, right);\n        }\n    }\n}\n\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n    return p[0];\n}\nfunction defaultGetY(p) {\n    return p[1];\n}\n", "const epsilon = 1e-6;\n\nexport default class Path {\n  constructor() {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n  }\n  moveTo(x, y) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  }\n  lineTo(x, y) {\n    this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arc(x, y, r) {\n    x = +x, y = +y, r = +r;\n    const x0 = x + r;\n    const y0 = y;\n    if (r < 0) throw new Error(\"negative radius\");\n    if (this._x1 === null) this._ += `M${x0},${y0}`;\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n    if (!r) return;\n    this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n  }\n  rect(x, y, w, h) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n  }\n  value() {\n    return this._ || null;\n  }\n}\n", "export default class Polygon {\n  constructor() {\n    this._ = [];\n  }\n  moveTo(x, y) {\n    this._.push([x, y]);\n  }\n  closePath() {\n    this._.push(this._[0].slice());\n  }\n  lineTo(x, y) {\n    this._.push([x, y]);\n  }\n  value() {\n    return this._.length ? this._ : null;\n  }\n}\n", "import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n  constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n    if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n    this.delaunay = delaunay;\n    this._circumcenters = new Float64Array(delaunay.points.length * 2);\n    this.vectors = new Float64Array(delaunay.points.length * 2);\n    this.xmax = xmax, this.xmin = xmin;\n    this.ymax = ymax, this.ymin = ymin;\n    this._init();\n  }\n  update() {\n    this.delaunay.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const {delaunay: {points, hull, triangles}, vectors} = this;\n    let bx, by; // lazily computed barycenter of the hull\n\n    // Compute circumcenters.\n    const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n    for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n      const t1 = triangles[i] * 2;\n      const t2 = triangles[i + 1] * 2;\n      const t3 = triangles[i + 2] * 2;\n      const x1 = points[t1];\n      const y1 = points[t1 + 1];\n      const x2 = points[t2];\n      const y2 = points[t2 + 1];\n      const x3 = points[t3];\n      const y3 = points[t3 + 1];\n\n      const dx = x2 - x1;\n      const dy = y2 - y1;\n      const ex = x3 - x1;\n      const ey = y3 - y1;\n      const ab = (dx * ey - dy * ex) * 2;\n\n      if (Math.abs(ab) < 1e-9) {\n        // For a degenerate triangle, the circumcenter is at the infinity, in a\n        // direction orthogonal to the halfedge and away from the \u201Ccenter\u201D of\n        // the diagram <bx, by>, defined as the hull\u2019s barycenter.\n        if (bx === undefined) {\n          bx = by = 0;\n          for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n          bx /= hull.length, by /= hull.length;\n        }\n        const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n        x = (x1 + x3) / 2 - a * ey;\n        y = (y1 + y3) / 2 + a * ex;\n      } else {\n        const d = 1 / ab;\n        const bl = dx * dx + dy * dy;\n        const cl = ex * ex + ey * ey;\n        x = x1 + (ey * bl - dy * cl) * d;\n        y = y1 + (dx * cl - ex * bl) * d;\n      }\n      circumcenters[j] = x;\n      circumcenters[j + 1] = y;\n    }\n\n    // Compute exterior cell rays.\n    let h = hull[hull.length - 1];\n    let p0, p1 = h * 4;\n    let x0, x1 = points[2 * h];\n    let y0, y1 = points[2 * h + 1];\n    vectors.fill(0);\n    for (let i = 0; i < hull.length; ++i) {\n      h = hull[i];\n      p0 = p1, x0 = x1, y0 = y1;\n      p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n      vectors[p0 + 2] = vectors[p1] = y0 - y1;\n      vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n    }\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n    if (hull.length <= 1) return null;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = Math.floor(i / 3) * 2;\n      const tj = Math.floor(j / 3) * 2;\n      const xi = circumcenters[ti];\n      const yi = circumcenters[ti + 1];\n      const xj = circumcenters[tj];\n      const yj = circumcenters[tj + 1];\n      this._renderSegment(xi, yi, xj, yj, context);\n    }\n    let h0, h1 = hull[hull.length - 1];\n    for (let i = 0; i < hull.length; ++i) {\n      h0 = h1, h1 = hull[i];\n      const t = Math.floor(inedges[h1] / 3) * 2;\n      const x = circumcenters[t];\n      const y = circumcenters[t + 1];\n      const v = h0 * 4;\n      const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n      if (p) this._renderSegment(x, y, p[0], p[1], context);\n    }\n    return buffer && buffer.value();\n  }\n  renderBounds(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n    return buffer && buffer.value();\n  }\n  renderCell(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const points = this._clip(i);\n    if (points === null || !points.length) return;\n    context.moveTo(points[0], points[1]);\n    let n = points.length;\n    while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n    for (let i = 2; i < n; i += 2) {\n      if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n        context.lineTo(points[i], points[i + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *cellPolygons() {\n    const {delaunay: {points}} = this;\n    for (let i = 0, n = points.length / 2; i < n; ++i) {\n      const cell = this.cellPolygon(i);\n      if (cell) cell.index = i, yield cell;\n    }\n  }\n  cellPolygon(i) {\n    const polygon = new Polygon;\n    this.renderCell(i, polygon);\n    return polygon.value();\n  }\n  _renderSegment(x0, y0, x1, y1, context) {\n    let S;\n    const c0 = this._regioncode(x0, y0);\n    const c1 = this._regioncode(x1, y1);\n    if (c0 === 0 && c1 === 0) {\n      context.moveTo(x0, y0);\n      context.lineTo(x1, y1);\n    } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n      context.moveTo(S[0], S[1]);\n      context.lineTo(S[2], S[3]);\n    }\n  }\n  contains(i, x, y) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n    return this.delaunay._step(i, x, y) === i;\n  }\n  *neighbors(i) {\n    const ci = this._clip(i);\n    if (ci) for (const j of this.delaunay.neighbors(i)) {\n      const cj = this._clip(j);\n      // find the common edge\n      if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n        for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n          if (ci[ai] === cj[aj]\n              && ci[ai + 1] === cj[aj + 1]\n              && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n              && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n            yield j;\n            break loop;\n          }\n        }\n      }\n    }\n  }\n  _cell(i) {\n    const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n    const e0 = inedges[i];\n    if (e0 === -1) return null; // coincident point\n    const points = [];\n    let e = e0;\n    do {\n      const t = Math.floor(e / 3);\n      points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n    } while (e !== e0 && e !== -1);\n    return points;\n  }\n  _clip(i) {\n    // degenerate case (1 valid point: return the box)\n    if (i === 0 && this.delaunay.hull.length === 1) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    const points = this._cell(i);\n    if (points === null) return null;\n    const {vectors: V} = this;\n    const v = i * 4;\n    return this._simplify(V[v] || V[v + 1]\n        ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n        : this._clipFinite(i, points));\n  }\n  _clipFinite(i, points) {\n    const n = points.length;\n    let P = null;\n    let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n    let c0, c1 = this._regioncode(x1, y1);\n    let e0, e1 = 0;\n    for (let j = 0; j < n; j += 2) {\n      x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n      c0 = c1, c1 = this._regioncode(x1, y1);\n      if (c0 === 0 && c1 === 0) {\n        e0 = e1, e1 = 0;\n        if (P) P.push(x1, y1);\n        else P = [x1, y1];\n      } else {\n        let S, sx0, sy0, sx1, sy1;\n        if (c0 === 0) {\n          if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n          [sx0, sy0, sx1, sy1] = S;\n        } else {\n          if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n          [sx1, sy1, sx0, sy0] = S;\n          e0 = e1, e1 = this._edgecode(sx0, sy0);\n          if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n          if (P) P.push(sx0, sy0);\n          else P = [sx0, sy0];\n        }\n        e0 = e1, e1 = this._edgecode(sx1, sy1);\n        if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n        if (P) P.push(sx1, sy1);\n        else P = [sx1, sy1];\n      }\n    }\n    if (P) {\n      e0 = e1, e1 = this._edgecode(P[0], P[1]);\n      if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    return P;\n  }\n  _clipSegment(x0, y0, x1, y1, c0, c1) {\n    // for more robustness, always consider the segment in the same order\n    const flip = c0 < c1;\n    if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n    while (true) {\n      if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n      if (c0 & c1) return null;\n      let x, y, c = c0 || c1;\n      if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n      else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n      else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n      else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n      if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n      else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n    }\n  }\n  _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n    let P = Array.from(points), p;\n    if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n    if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n    if (P = this._clipFinite(i, P)) {\n      for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n        c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n        if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n      }\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n    }\n    return P;\n  }\n  _edge(i, e0, e1, P, j) {\n    while (e0 !== e1) {\n      let x, y;\n      switch (e0) {\n        case 0b0101: e0 = 0b0100; continue; // top-left\n        case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n        case 0b0110: e0 = 0b0010; continue; // top-right\n        case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n        case 0b1010: e0 = 0b1000; continue; // bottom-right\n        case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n        case 0b1001: e0 = 0b0001; continue; // bottom-left\n        case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n      }\n      // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n      // undefined, the conditional statement will be executed.\n      if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n        P.splice(j, 0, x, y), j += 2;\n      }\n    }\n    return j;\n  }\n  _project(x0, y0, vx, vy) {\n    let t = Infinity, c, x, y;\n    if (vy < 0) { // top\n      if (y0 <= this.ymin) return null;\n      if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n    } else if (vy > 0) { // bottom\n      if (y0 >= this.ymax) return null;\n      if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n    }\n    if (vx > 0) { // right\n      if (x0 >= this.xmax) return null;\n      if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n    } else if (vx < 0) { // left\n      if (x0 <= this.xmin) return null;\n      if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n    }\n    return [x, y];\n  }\n  _edgecode(x, y) {\n    return (x === this.xmin ? 0b0001\n        : x === this.xmax ? 0b0010 : 0b0000)\n        | (y === this.ymin ? 0b0100\n        : y === this.ymax ? 0b1000 : 0b0000);\n  }\n  _regioncode(x, y) {\n    return (x < this.xmin ? 0b0001\n        : x > this.xmax ? 0b0010 : 0b0000)\n        | (y < this.ymin ? 0b0100\n        : y > this.ymax ? 0b1000 : 0b0000);\n  }\n  _simplify(P) {\n    if (P && P.length > 4) {\n      for (let i = 0; i < P.length; i+= 2) {\n        const j = (i + 2) % P.length, k = (i + 4) % P.length;\n        if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n          P.splice(j, 2), i -= 2;\n        }\n      }\n      if (!P.length) P = null;\n    }\n    return P;\n  }\n}\n", "import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n  return p[0];\n}\n\nfunction pointY(p) {\n  return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n  const {triangles, coords} = d;\n  for (let i = 0; i < triangles.length; i += 3) {\n    const a = 2 * triangles[i],\n          b = 2 * triangles[i + 1],\n          c = 2 * triangles[i + 2],\n          cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n                - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n    if (cross > 1e-10) return false;\n  }\n  return true;\n}\n\nfunction jitter(x, y, r) {\n  return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n  static from(points, fx = pointX, fy = pointY, that) {\n    return new Delaunay(\"length\" in points\n        ? flatArray(points, fx, fy, that)\n        : Float64Array.from(flatIterable(points, fx, fy, that)));\n  }\n  constructor(points) {\n    this._delaunator = new Delaunator(points);\n    this.inedges = new Int32Array(points.length / 2);\n    this._hullIndex = new Int32Array(points.length / 2);\n    this.points = this._delaunator.coords;\n    this._init();\n  }\n  update() {\n    this._delaunator.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const d = this._delaunator, points = this.points;\n\n    // check for collinear\n    if (d.hull && d.hull.length > 2 && collinear(d)) {\n      this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n        .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n      const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n        bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n        r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n      for (let i = 0, n = points.length / 2; i < n; ++i) {\n        const p = jitter(points[2 * i], points[2 * i + 1], r);\n        points[2 * i] = p[0];\n        points[2 * i + 1] = p[1];\n      }\n      this._delaunator = new Delaunator(points);\n    } else {\n      delete this.collinear;\n    }\n\n    const halfedges = this.halfedges = this._delaunator.halfedges;\n    const hull = this.hull = this._delaunator.hull;\n    const triangles = this.triangles = this._delaunator.triangles;\n    const inedges = this.inedges.fill(-1);\n    const hullIndex = this._hullIndex.fill(-1);\n\n    // Compute an index from each point to an (arbitrary) incoming halfedge\n    // Used to give the first neighbor of each point; for this reason,\n    // on the hull we give priority to exterior halfedges\n    for (let e = 0, n = halfedges.length; e < n; ++e) {\n      const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n      if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n    }\n    for (let i = 0, n = hull.length; i < n; ++i) {\n      hullIndex[hull[i]] = i;\n    }\n\n    // degenerate case: 1 or 2 (distinct) points\n    if (hull.length <= 2 && hull.length > 0) {\n      this.triangles = new Int32Array(3).fill(-1);\n      this.halfedges = new Int32Array(3).fill(-1);\n      this.triangles[0] = hull[0];\n      inedges[hull[0]] = 1;\n      if (hull.length === 2) {\n        inedges[hull[1]] = 0;\n        this.triangles[1] = hull[1];\n        this.triangles[2] = hull[1];\n      }\n    }\n  }\n  voronoi(bounds) {\n    return new Voronoi(this, bounds);\n  }\n  *neighbors(i) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n    // degenerate case with several collinear points\n    if (collinear) {\n      const l = collinear.indexOf(i);\n      if (l > 0) yield collinear[l - 1];\n      if (l < collinear.length - 1) yield collinear[l + 1];\n      return;\n    }\n\n    const e0 = inedges[i];\n    if (e0 === -1) return; // coincident point\n    let e = e0, p0 = -1;\n    do {\n      yield p0 = triangles[e];\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) return; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        const p = hull[(_hullIndex[i] + 1) % hull.length];\n        if (p !== p0) yield p;\n        return;\n      }\n    } while (e !== e0);\n  }\n  find(x, y, i = 0) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n    const i0 = i;\n    let c;\n    while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n    return c;\n  }\n  _step(i, x, y) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n    if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n    let c = i;\n    let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n    const e0 = inedges[i];\n    let e = e0;\n    do {\n      let t = triangles[e];\n      const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n      if (dt < dc) dc = dt, c = t;\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        e = hull[(_hullIndex[i] + 1) % hull.length];\n        if (e !== t) {\n          if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n        }\n        break;\n      }\n    } while (e !== e0);\n    return c;\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, halfedges, triangles} = this;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = triangles[i] * 2;\n      const tj = triangles[j] * 2;\n      context.moveTo(points[ti], points[ti + 1]);\n      context.lineTo(points[tj], points[tj + 1]);\n    }\n    this.renderHull(context);\n    return buffer && buffer.value();\n  }\n  renderPoints(context, r) {\n    if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n    r = r == undefined ? 2 : +r;\n    const buffer = context == null ? context = new Path : undefined;\n    const {points} = this;\n    for (let i = 0, n = points.length; i < n; i += 2) {\n      const x = points[i], y = points[i + 1];\n      context.moveTo(x + r, y);\n      context.arc(x, y, r, 0, tau);\n    }\n    return buffer && buffer.value();\n  }\n  renderHull(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {hull, points} = this;\n    const h = hull[0] * 2, n = hull.length;\n    context.moveTo(points[h], points[h + 1]);\n    for (let i = 1; i < n; ++i) {\n      const h = 2 * hull[i];\n      context.lineTo(points[h], points[h + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  hullPolygon() {\n    const polygon = new Polygon;\n    this.renderHull(polygon);\n    return polygon.value();\n  }\n  renderTriangle(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, triangles} = this;\n    const t0 = triangles[i *= 3] * 2;\n    const t1 = triangles[i + 1] * 2;\n    const t2 = triangles[i + 2] * 2;\n    context.moveTo(points[t0], points[t0 + 1]);\n    context.lineTo(points[t1], points[t1 + 1]);\n    context.lineTo(points[t2], points[t2 + 1]);\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *trianglePolygons() {\n    const {triangles} = this;\n    for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n      yield this.trianglePolygon(i);\n    }\n  }\n  trianglePolygon(i) {\n    const polygon = new Polygon;\n    this.renderTriangle(i, polygon);\n    return polygon.value();\n  }\n}\n\nfunction flatArray(points, fx, fy, that) {\n  const n = points.length;\n  const array = new Float64Array(n * 2);\n  for (let i = 0; i < n; ++i) {\n    const p = points[i];\n    array[i * 2] = fx.call(that, p, i, points);\n    array[i * 2 + 1] = fy.call(that, p, i, points);\n  }\n  return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n  let i = 0;\n  for (const p of points) {\n    yield fx.call(that, p, i, points);\n    yield fy.call(that, p, i, points);\n    ++i;\n  }\n}\n", "import { canvas } from 'vega-canvas';\nimport { Transform } from 'vega-dataflow';\nimport { inherits, error, isFunction, constant, extent } from 'vega-util';\nimport { scale } from 'vega-scale';\nimport { random } from 'vega-statistics';\n\n/*\nCopyright (c) 2013, Jason Davies.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n  * Redistributions of source code must retain the above copyright notice, this\n    list of conditions and the following disclaimer.\n\n  * Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n    and/or other materials provided with the distribution.\n\n  * The name Jason Davies may not be used to endorse or promote products\n    derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL JASON DAVIES BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\nADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n// Word cloud layout by Jason Davies, https://www.jasondavies.com/wordcloud/\n// Algorithm due to Jonathan Feinberg, http://static.mrfeinberg.com/bv_ch03.pdf\n\nvar cloudRadians = Math.PI / 180,\n  cw = 1 << 11 >> 5,\n  ch = 1 << 11;\nfunction cloud () {\n  var size = [256, 256],\n    text,\n    font,\n    fontSize,\n    fontStyle,\n    fontWeight,\n    rotate,\n    padding,\n    spiral = archimedeanSpiral,\n    words = [],\n    random = Math.random,\n    cloud = {};\n  cloud.layout = function () {\n    var contextAndRatio = getContext(canvas()),\n      board = zeroArray((size[0] >> 5) * size[1]),\n      bounds = null,\n      n = words.length,\n      i = -1,\n      tags = [],\n      data = words.map(d => ({\n        text: text(d),\n        font: font(d),\n        style: fontStyle(d),\n        weight: fontWeight(d),\n        rotate: rotate(d),\n        size: ~~(fontSize(d) + 1e-14),\n        padding: padding(d),\n        xoff: 0,\n        yoff: 0,\n        x1: 0,\n        y1: 0,\n        x0: 0,\n        y0: 0,\n        hasText: false,\n        sprite: null,\n        datum: d\n      })).sort((a, b) => b.size - a.size);\n    while (++i < n) {\n      var d = data[i];\n      d.x = size[0] * (random() + .5) >> 1;\n      d.y = size[1] * (random() + .5) >> 1;\n      cloudSprite(contextAndRatio, d, data, i);\n      if (d.hasText && place(board, d, bounds)) {\n        tags.push(d);\n        if (bounds) cloudBounds(bounds, d);else bounds = [{\n          x: d.x + d.x0,\n          y: d.y + d.y0\n        }, {\n          x: d.x + d.x1,\n          y: d.y + d.y1\n        }];\n        // Temporary hack\n        d.x -= size[0] >> 1;\n        d.y -= size[1] >> 1;\n      }\n    }\n    return tags;\n  };\n  function getContext(canvas) {\n    canvas.width = canvas.height = 1;\n    var ratio = Math.sqrt(canvas.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2);\n    canvas.width = (cw << 5) / ratio;\n    canvas.height = ch / ratio;\n    var context = canvas.getContext('2d');\n    context.fillStyle = context.strokeStyle = 'red';\n    context.textAlign = 'center';\n    return {\n      context: context,\n      ratio: ratio\n    };\n  }\n  function place(board, tag, bounds) {\n    var startX = tag.x,\n      startY = tag.y,\n      maxDelta = Math.sqrt(size[0] * size[0] + size[1] * size[1]),\n      s = spiral(size),\n      dt = random() < .5 ? 1 : -1,\n      t = -dt,\n      dxdy,\n      dx,\n      dy;\n    while (dxdy = s(t += dt)) {\n      dx = ~~dxdy[0];\n      dy = ~~dxdy[1];\n      if (Math.min(Math.abs(dx), Math.abs(dy)) >= maxDelta) break;\n      tag.x = startX + dx;\n      tag.y = startY + dy;\n      if (tag.x + tag.x0 < 0 || tag.y + tag.y0 < 0 || tag.x + tag.x1 > size[0] || tag.y + tag.y1 > size[1]) continue;\n      // TODO only check for collisions within current bounds.\n      if (!bounds || !cloudCollide(tag, board, size[0])) {\n        if (!bounds || collideRects(tag, bounds)) {\n          var sprite = tag.sprite,\n            w = tag.width >> 5,\n            sw = size[0] >> 5,\n            lx = tag.x - (w << 4),\n            sx = lx & 0x7f,\n            msx = 32 - sx,\n            h = tag.y1 - tag.y0,\n            x = (tag.y + tag.y0) * sw + (lx >> 5),\n            last;\n          for (var j = 0; j < h; j++) {\n            last = 0;\n            for (var i = 0; i <= w; i++) {\n              board[x + i] |= last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0);\n            }\n            x += sw;\n          }\n          tag.sprite = null;\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n  cloud.words = function (_) {\n    if (arguments.length) {\n      words = _;\n      return cloud;\n    } else {\n      return words;\n    }\n  };\n  cloud.size = function (_) {\n    if (arguments.length) {\n      size = [+_[0], +_[1]];\n      return cloud;\n    } else {\n      return size;\n    }\n  };\n  cloud.font = function (_) {\n    if (arguments.length) {\n      font = functor(_);\n      return cloud;\n    } else {\n      return font;\n    }\n  };\n  cloud.fontStyle = function (_) {\n    if (arguments.length) {\n      fontStyle = functor(_);\n      return cloud;\n    } else {\n      return fontStyle;\n    }\n  };\n  cloud.fontWeight = function (_) {\n    if (arguments.length) {\n      fontWeight = functor(_);\n      return cloud;\n    } else {\n      return fontWeight;\n    }\n  };\n  cloud.rotate = function (_) {\n    if (arguments.length) {\n      rotate = functor(_);\n      return cloud;\n    } else {\n      return rotate;\n    }\n  };\n  cloud.text = function (_) {\n    if (arguments.length) {\n      text = functor(_);\n      return cloud;\n    } else {\n      return text;\n    }\n  };\n  cloud.spiral = function (_) {\n    if (arguments.length) {\n      spiral = spirals[_] || _;\n      return cloud;\n    } else {\n      return spiral;\n    }\n  };\n  cloud.fontSize = function (_) {\n    if (arguments.length) {\n      fontSize = functor(_);\n      return cloud;\n    } else {\n      return fontSize;\n    }\n  };\n  cloud.padding = function (_) {\n    if (arguments.length) {\n      padding = functor(_);\n      return cloud;\n    } else {\n      return padding;\n    }\n  };\n  cloud.random = function (_) {\n    if (arguments.length) {\n      random = _;\n      return cloud;\n    } else {\n      return random;\n    }\n  };\n  return cloud;\n}\n\n// Fetches a monochrome sprite bitmap for the specified text.\n// Load in batches for speed.\nfunction cloudSprite(contextAndRatio, d, data, di) {\n  if (d.sprite) return;\n  var c = contextAndRatio.context,\n    ratio = contextAndRatio.ratio;\n  c.clearRect(0, 0, (cw << 5) / ratio, ch / ratio);\n  var x = 0,\n    y = 0,\n    maxh = 0,\n    n = data.length,\n    w,\n    w32,\n    h,\n    i,\n    j;\n  --di;\n  while (++di < n) {\n    d = data[di];\n    c.save();\n    c.font = d.style + ' ' + d.weight + ' ' + ~~((d.size + 1) / ratio) + 'px ' + d.font;\n    w = c.measureText(d.text + 'm').width * ratio;\n    h = d.size << 1;\n    if (d.rotate) {\n      var sr = Math.sin(d.rotate * cloudRadians),\n        cr = Math.cos(d.rotate * cloudRadians),\n        wcr = w * cr,\n        wsr = w * sr,\n        hcr = h * cr,\n        hsr = h * sr;\n      w = Math.max(Math.abs(wcr + hsr), Math.abs(wcr - hsr)) + 0x1f >> 5 << 5;\n      h = ~~Math.max(Math.abs(wsr + hcr), Math.abs(wsr - hcr));\n    } else {\n      w = w + 0x1f >> 5 << 5;\n    }\n    if (h > maxh) maxh = h;\n    if (x + w >= cw << 5) {\n      x = 0;\n      y += maxh;\n      maxh = 0;\n    }\n    if (y + h >= ch) break;\n    c.translate((x + (w >> 1)) / ratio, (y + (h >> 1)) / ratio);\n    if (d.rotate) c.rotate(d.rotate * cloudRadians);\n    c.fillText(d.text, 0, 0);\n    if (d.padding) {\n      c.lineWidth = 2 * d.padding;\n      c.strokeText(d.text, 0, 0);\n    }\n    c.restore();\n    d.width = w;\n    d.height = h;\n    d.xoff = x;\n    d.yoff = y;\n    d.x1 = w >> 1;\n    d.y1 = h >> 1;\n    d.x0 = -d.x1;\n    d.y0 = -d.y1;\n    d.hasText = true;\n    x += w;\n  }\n  var pixels = c.getImageData(0, 0, (cw << 5) / ratio, ch / ratio).data,\n    sprite = [];\n  while (--di >= 0) {\n    d = data[di];\n    if (!d.hasText) continue;\n    w = d.width;\n    w32 = w >> 5;\n    h = d.y1 - d.y0;\n    // Zero the buffer\n    for (i = 0; i < h * w32; i++) sprite[i] = 0;\n    x = d.xoff;\n    if (x == null) return;\n    y = d.yoff;\n    var seen = 0,\n      seenRow = -1;\n    for (j = 0; j < h; j++) {\n      for (i = 0; i < w; i++) {\n        var k = w32 * j + (i >> 5),\n          m = pixels[(y + j) * (cw << 5) + (x + i) << 2] ? 1 << 31 - i % 32 : 0;\n        sprite[k] |= m;\n        seen |= m;\n      }\n      if (seen) seenRow = j;else {\n        d.y0++;\n        h--;\n        j--;\n        y++;\n      }\n    }\n    d.y1 = d.y0 + seenRow;\n    d.sprite = sprite.slice(0, (d.y1 - d.y0) * w32);\n  }\n}\n\n// Use mask-based collision detection.\nfunction cloudCollide(tag, board, sw) {\n  sw >>= 5;\n  var sprite = tag.sprite,\n    w = tag.width >> 5,\n    lx = tag.x - (w << 4),\n    sx = lx & 0x7f,\n    msx = 32 - sx,\n    h = tag.y1 - tag.y0,\n    x = (tag.y + tag.y0) * sw + (lx >> 5),\n    last;\n  for (var j = 0; j < h; j++) {\n    last = 0;\n    for (var i = 0; i <= w; i++) {\n      if ((last << msx | (i < w ? (last = sprite[j * w + i]) >>> sx : 0)) & board[x + i]) return true;\n    }\n    x += sw;\n  }\n  return false;\n}\nfunction cloudBounds(bounds, d) {\n  var b0 = bounds[0],\n    b1 = bounds[1];\n  if (d.x + d.x0 < b0.x) b0.x = d.x + d.x0;\n  if (d.y + d.y0 < b0.y) b0.y = d.y + d.y0;\n  if (d.x + d.x1 > b1.x) b1.x = d.x + d.x1;\n  if (d.y + d.y1 > b1.y) b1.y = d.y + d.y1;\n}\nfunction collideRects(a, b) {\n  return a.x + a.x1 > b[0].x && a.x + a.x0 < b[1].x && a.y + a.y1 > b[0].y && a.y + a.y0 < b[1].y;\n}\nfunction archimedeanSpiral(size) {\n  var e = size[0] / size[1];\n  return function (t) {\n    return [e * (t *= .1) * Math.cos(t), t * Math.sin(t)];\n  };\n}\nfunction rectangularSpiral(size) {\n  var dy = 4,\n    dx = dy * size[0] / size[1],\n    x = 0,\n    y = 0;\n  return function (t) {\n    var sign = t < 0 ? -1 : 1;\n    // See triangular numbers: T_n = n * (n + 1) / 2.\n    switch (Math.sqrt(1 + 4 * sign * t) - sign & 3) {\n      case 0:\n        x += dx;\n        break;\n      case 1:\n        y += dy;\n        break;\n      case 2:\n        x -= dx;\n        break;\n      default:\n        y -= dy;\n        break;\n    }\n    return [x, y];\n  };\n}\n\n// TODO reuse arrays?\nfunction zeroArray(n) {\n  var a = [],\n    i = -1;\n  while (++i < n) a[i] = 0;\n  return a;\n}\nfunction functor(d) {\n  return typeof d === 'function' ? d : function () {\n    return d;\n  };\n}\nvar spirals = {\n  archimedean: archimedeanSpiral,\n  rectangular: rectangularSpiral\n};\n\nconst Output = ['x', 'y', 'font', 'fontSize', 'fontStyle', 'fontWeight', 'angle'];\nconst Params = ['text', 'font', 'rotate', 'fontSize', 'fontStyle', 'fontWeight'];\nfunction Wordcloud(params) {\n  Transform.call(this, cloud(), params);\n}\nWordcloud.Definition = {\n  'type': 'Wordcloud',\n  'metadata': {\n    'modifies': true\n  },\n  'params': [{\n    'name': 'size',\n    'type': 'number',\n    'array': true,\n    'length': 2\n  }, {\n    'name': 'font',\n    'type': 'string',\n    'expr': true,\n    'default': 'sans-serif'\n  }, {\n    'name': 'fontStyle',\n    'type': 'string',\n    'expr': true,\n    'default': 'normal'\n  }, {\n    'name': 'fontWeight',\n    'type': 'string',\n    'expr': true,\n    'default': 'normal'\n  }, {\n    'name': 'fontSize',\n    'type': 'number',\n    'expr': true,\n    'default': 14\n  }, {\n    'name': 'fontSizeRange',\n    'type': 'number',\n    'array': 'nullable',\n    'default': [10, 50]\n  }, {\n    'name': 'rotate',\n    'type': 'number',\n    'expr': true,\n    'default': 0\n  }, {\n    'name': 'text',\n    'type': 'field'\n  }, {\n    'name': 'spiral',\n    'type': 'string',\n    'values': ['archimedean', 'rectangular']\n  }, {\n    'name': 'padding',\n    'type': 'number',\n    'expr': true\n  }, {\n    'name': 'as',\n    'type': 'string',\n    'array': true,\n    'length': 7,\n    'default': Output\n  }]\n};\ninherits(Wordcloud, Transform, {\n  transform(_, pulse) {\n    if (_.size && !(_.size[0] && _.size[1])) {\n      error('Wordcloud size dimensions must be non-zero.');\n    }\n    function modp(param) {\n      const p = _[param];\n      return isFunction(p) && pulse.modified(p.fields);\n    }\n    const mod = _.modified();\n    if (!(mod || pulse.changed(pulse.ADD_REM) || Params.some(modp))) return;\n    const data = pulse.materialize(pulse.SOURCE).source,\n      layout = this.value,\n      as = _.as || Output;\n    let fontSize = _.fontSize || 14,\n      range;\n    isFunction(fontSize) ? range = _.fontSizeRange : fontSize = constant(fontSize);\n\n    // create font size scaling function as needed\n    if (range) {\n      const fsize = fontSize,\n        sizeScale = scale('sqrt')().domain(extent(data, fsize)).range(range);\n      fontSize = x => sizeScale(fsize(x));\n    }\n    data.forEach(t => {\n      t[as[0]] = NaN;\n      t[as[1]] = NaN;\n      t[as[3]] = 0;\n    });\n\n    // configure layout\n    const words = layout.words(data).text(_.text).size(_.size || [500, 500]).padding(_.padding || 1).spiral(_.spiral || 'archimedean').rotate(_.rotate || 0).font(_.font || 'sans-serif').fontStyle(_.fontStyle || 'normal').fontWeight(_.fontWeight || 'normal').fontSize(fontSize).random(random).layout();\n    const size = layout.size(),\n      dx = size[0] >> 1,\n      dy = size[1] >> 1,\n      n = words.length;\n    for (let i = 0, w, t; i < n; ++i) {\n      w = words[i];\n      t = w.datum;\n      t[as[0]] = w.x + dx;\n      t[as[1]] = w.y + dy;\n      t[as[2]] = w.font;\n      t[as[3]] = w.size;\n      t[as[4]] = w.style;\n      t[as[5]] = w.weight;\n      t[as[6]] = w.rotate;\n    }\n    return pulse.reflow(mod).modifies(as);\n  }\n});\n\nexport { Wordcloud as wordcloud };\n", "import { bisectLeft, bisectRight, permute } from 'd3-array';\nimport { Transform } from 'vega-dataflow';\nimport { inherits } from 'vega-util';\n\nconst array8 = n => new Uint8Array(n);\nconst array16 = n => new Uint16Array(n);\nconst array32 = n => new Uint32Array(n);\n\n/**\n * Maintains CrossFilter state.\n */\nfunction Bitmaps() {\n  let width = 8,\n    data = [],\n    seen = array32(0),\n    curr = array(0, width),\n    prev = array(0, width);\n  return {\n    data: () => data,\n    seen: () => seen = lengthen(seen, data.length),\n    add(array) {\n      for (let i = 0, j = data.length, n = array.length, t; i < n; ++i) {\n        t = array[i];\n        t._index = j++;\n        data.push(t);\n      }\n    },\n    remove(num, map) {\n      // map: index -> boolean (true => remove)\n      const n = data.length,\n        copy = Array(n - num),\n        reindex = data; // reuse old data array for index map\n      let t, i, j;\n\n      // seek forward to first removal\n      for (i = 0; !map[i] && i < n; ++i) {\n        copy[i] = data[i];\n        reindex[i] = i;\n      }\n\n      // condense arrays\n      for (j = i; i < n; ++i) {\n        t = data[i];\n        if (!map[i]) {\n          reindex[i] = j;\n          curr[j] = curr[i];\n          prev[j] = prev[i];\n          copy[j] = t;\n          t._index = j++;\n        } else {\n          reindex[i] = -1;\n        }\n        curr[i] = 0; // clear unused bits\n      }\n\n      data = copy;\n      return reindex;\n    },\n    size: () => data.length,\n    curr: () => curr,\n    prev: () => prev,\n    reset: k => prev[k] = curr[k],\n    all: () => width < 0x101 ? 0xff : width < 0x10001 ? 0xffff : 0xffffffff,\n    set(k, one) {\n      curr[k] |= one;\n    },\n    clear(k, one) {\n      curr[k] &= ~one;\n    },\n    resize(n, m) {\n      const k = curr.length;\n      if (n > k || m > width) {\n        width = Math.max(m, width);\n        curr = array(n, width, curr);\n        prev = array(n, width);\n      }\n    }\n  };\n}\nfunction lengthen(array, length, copy) {\n  if (array.length >= length) return array;\n  copy = copy || new array.constructor(length);\n  copy.set(array);\n  return copy;\n}\nfunction array(n, m, array) {\n  const copy = (m < 0x101 ? array8 : m < 0x10001 ? array16 : array32)(n);\n  if (array) copy.set(array);\n  return copy;\n}\n\nfunction Dimension (index, i, query) {\n  const bit = 1 << i;\n  return {\n    one: bit,\n    zero: ~bit,\n    range: query.slice(),\n    bisect: index.bisect,\n    index: index.index,\n    size: index.size,\n    onAdd(added, curr) {\n      const dim = this,\n        range = dim.bisect(dim.range, added.value),\n        idx = added.index,\n        lo = range[0],\n        hi = range[1],\n        n1 = idx.length;\n      let i;\n      for (i = 0; i < lo; ++i) curr[idx[i]] |= bit;\n      for (i = hi; i < n1; ++i) curr[idx[i]] |= bit;\n      return dim;\n    }\n  };\n}\n\n/**\n * Maintains a list of values, sorted by key.\n */\nfunction SortedIndex() {\n  let index = array32(0),\n    value = [],\n    size = 0;\n  function insert(key, data, base) {\n    if (!data.length) return [];\n    const n0 = size,\n      n1 = data.length,\n      addi = array32(n1);\n    let addv = Array(n1),\n      oldv,\n      oldi,\n      i;\n    for (i = 0; i < n1; ++i) {\n      addv[i] = key(data[i]);\n      addi[i] = i;\n    }\n    addv = sort(addv, addi);\n    if (n0) {\n      oldv = value;\n      oldi = index;\n      value = Array(n0 + n1);\n      index = array32(n0 + n1);\n      merge(base, oldv, oldi, n0, addv, addi, n1, value, index);\n    } else {\n      if (base > 0) for (i = 0; i < n1; ++i) {\n        addi[i] += base;\n      }\n      value = addv;\n      index = addi;\n    }\n    size = n0 + n1;\n    return {\n      index: addi,\n      value: addv\n    };\n  }\n  function remove(num, map) {\n    // map: index -> remove\n    const n = size;\n    let idx, i, j;\n\n    // seek forward to first removal\n    for (i = 0; !map[index[i]] && i < n; ++i);\n\n    // condense index and value arrays\n    for (j = i; i < n; ++i) {\n      if (!map[idx = index[i]]) {\n        index[j] = idx;\n        value[j] = value[i];\n        ++j;\n      }\n    }\n    size = n - num;\n  }\n  function reindex(map) {\n    for (let i = 0, n = size; i < n; ++i) {\n      index[i] = map[index[i]];\n    }\n  }\n  function bisect(range, array) {\n    let n;\n    if (array) {\n      n = array.length;\n    } else {\n      array = value;\n      n = size;\n    }\n    return [bisectLeft(array, range[0], 0, n), bisectRight(array, range[1], 0, n)];\n  }\n  return {\n    insert: insert,\n    remove: remove,\n    bisect: bisect,\n    reindex: reindex,\n    index: () => index,\n    size: () => size\n  };\n}\nfunction sort(values, index) {\n  values.sort.call(index, (a, b) => {\n    const x = values[a],\n      y = values[b];\n    return x < y ? -1 : x > y ? 1 : 0;\n  });\n  return permute(values, index);\n}\nfunction merge(base, value0, index0, n0, value1, index1, n1, value, index) {\n  let i0 = 0,\n    i1 = 0,\n    i;\n  for (i = 0; i0 < n0 && i1 < n1; ++i) {\n    if (value0[i0] < value1[i1]) {\n      value[i] = value0[i0];\n      index[i] = index0[i0++];\n    } else {\n      value[i] = value1[i1];\n      index[i] = index1[i1++] + base;\n    }\n  }\n  for (; i0 < n0; ++i0, ++i) {\n    value[i] = value0[i0];\n    index[i] = index0[i0];\n  }\n  for (; i1 < n1; ++i1, ++i) {\n    value[i] = value1[i1];\n    index[i] = index1[i1] + base;\n  }\n}\n\n/**\n * An indexed multi-dimensional filter.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {Array<function(object): *>} params.fields - An array of dimension accessors to filter.\n * @param {Array} params.query - An array of per-dimension range queries.\n */\nfunction CrossFilter(params) {\n  Transform.call(this, Bitmaps(), params);\n  this._indices = null;\n  this._dims = null;\n}\nCrossFilter.Definition = {\n  'type': 'CrossFilter',\n  'metadata': {},\n  'params': [{\n    'name': 'fields',\n    'type': 'field',\n    'array': true,\n    'required': true\n  }, {\n    'name': 'query',\n    'type': 'array',\n    'array': true,\n    'required': true,\n    'content': {\n      'type': 'number',\n      'array': true,\n      'length': 2\n    }\n  }]\n};\ninherits(CrossFilter, Transform, {\n  transform(_, pulse) {\n    if (!this._dims) {\n      return this.init(_, pulse);\n    } else {\n      var init = _.modified('fields') || _.fields.some(f => pulse.modified(f.fields));\n      return init ? this.reinit(_, pulse) : this.eval(_, pulse);\n    }\n  },\n  init(_, pulse) {\n    const fields = _.fields,\n      query = _.query,\n      indices = this._indices = {},\n      dims = this._dims = [],\n      m = query.length;\n    let i = 0,\n      key,\n      index;\n\n    // instantiate indices and dimensions\n    for (; i < m; ++i) {\n      key = fields[i].fname;\n      index = indices[key] || (indices[key] = SortedIndex());\n      dims.push(Dimension(index, i, query[i]));\n    }\n    return this.eval(_, pulse);\n  },\n  reinit(_, pulse) {\n    const output = pulse.materialize().fork(),\n      fields = _.fields,\n      query = _.query,\n      indices = this._indices,\n      dims = this._dims,\n      bits = this.value,\n      curr = bits.curr(),\n      prev = bits.prev(),\n      all = bits.all(),\n      out = output.rem = output.add,\n      mod = output.mod,\n      m = query.length,\n      adds = {};\n    let add, index, key, mods, remMap, modMap, i, n, f;\n\n    // set prev to current state\n    prev.set(curr);\n\n    // if pulse has remove tuples, process them first\n    if (pulse.rem.length) {\n      remMap = this.remove(_, pulse, output);\n    }\n\n    // if pulse has added tuples, add them to state\n    if (pulse.add.length) {\n      bits.add(pulse.add);\n    }\n\n    // if pulse has modified tuples, create an index map\n    if (pulse.mod.length) {\n      modMap = {};\n      for (mods = pulse.mod, i = 0, n = mods.length; i < n; ++i) {\n        modMap[mods[i]._index] = 1;\n      }\n    }\n\n    // re-initialize indices as needed, update curr bitmap\n    for (i = 0; i < m; ++i) {\n      f = fields[i];\n      if (!dims[i] || _.modified('fields', i) || pulse.modified(f.fields)) {\n        key = f.fname;\n        if (!(add = adds[key])) {\n          indices[key] = index = SortedIndex();\n          adds[key] = add = index.insert(f, pulse.source, 0);\n        }\n        dims[i] = Dimension(index, i, query[i]).onAdd(add, curr);\n      }\n    }\n\n    // visit each tuple\n    // if filter state changed, push index to add/rem\n    // else if in mod and passes a filter, push index to mod\n    for (i = 0, n = bits.data().length; i < n; ++i) {\n      if (remMap[i]) {\n        // skip if removed tuple\n        continue;\n      } else if (prev[i] !== curr[i]) {\n        // add if state changed\n        out.push(i);\n      } else if (modMap[i] && curr[i] !== all) {\n        // otherwise, pass mods through\n        mod.push(i);\n      }\n    }\n    bits.mask = (1 << m) - 1;\n    return output;\n  },\n  eval(_, pulse) {\n    const output = pulse.materialize().fork(),\n      m = this._dims.length;\n    let mask = 0;\n    if (pulse.rem.length) {\n      this.remove(_, pulse, output);\n      mask |= (1 << m) - 1;\n    }\n    if (_.modified('query') && !_.modified('fields')) {\n      mask |= this.update(_, pulse, output);\n    }\n    if (pulse.add.length) {\n      this.insert(_, pulse, output);\n      mask |= (1 << m) - 1;\n    }\n    if (pulse.mod.length) {\n      this.modify(pulse, output);\n      mask |= (1 << m) - 1;\n    }\n    this.value.mask = mask;\n    return output;\n  },\n  insert(_, pulse, output) {\n    const tuples = pulse.add,\n      bits = this.value,\n      dims = this._dims,\n      indices = this._indices,\n      fields = _.fields,\n      adds = {},\n      out = output.add,\n      n = bits.size() + tuples.length,\n      m = dims.length;\n    let k = bits.size(),\n      j,\n      key,\n      add;\n\n    // resize bitmaps and add tuples as needed\n    bits.resize(n, m);\n    bits.add(tuples);\n    const curr = bits.curr(),\n      prev = bits.prev(),\n      all = bits.all();\n\n    // add to dimensional indices\n    for (j = 0; j < m; ++j) {\n      key = fields[j].fname;\n      add = adds[key] || (adds[key] = indices[key].insert(fields[j], tuples, k));\n      dims[j].onAdd(add, curr);\n    }\n\n    // set previous filters, output if passes at least one filter\n    for (; k < n; ++k) {\n      prev[k] = all;\n      if (curr[k] !== all) out.push(k);\n    }\n  },\n  modify(pulse, output) {\n    const out = output.mod,\n      bits = this.value,\n      curr = bits.curr(),\n      all = bits.all(),\n      tuples = pulse.mod;\n    let i, n, k;\n    for (i = 0, n = tuples.length; i < n; ++i) {\n      k = tuples[i]._index;\n      if (curr[k] !== all) out.push(k);\n    }\n  },\n  remove(_, pulse, output) {\n    const indices = this._indices,\n      bits = this.value,\n      curr = bits.curr(),\n      prev = bits.prev(),\n      all = bits.all(),\n      map = {},\n      out = output.rem,\n      tuples = pulse.rem;\n    let i, n, k, f;\n\n    // process tuples, output if passes at least one filter\n    for (i = 0, n = tuples.length; i < n; ++i) {\n      k = tuples[i]._index;\n      map[k] = 1; // build index map\n      prev[k] = f = curr[k];\n      curr[k] = all;\n      if (f !== all) out.push(k);\n    }\n\n    // remove from dimensional indices\n    for (k in indices) {\n      indices[k].remove(n, map);\n    }\n    this.reindex(pulse, n, map);\n    return map;\n  },\n  // reindex filters and indices after propagation completes\n  reindex(pulse, num, map) {\n    const indices = this._indices,\n      bits = this.value;\n    pulse.runAfter(() => {\n      const indexMap = bits.remove(num, map);\n      for (const key in indices) indices[key].reindex(indexMap);\n    });\n  },\n  update(_, pulse, output) {\n    const dims = this._dims,\n      query = _.query,\n      stamp = pulse.stamp,\n      m = dims.length;\n    let mask = 0,\n      i,\n      q;\n\n    // survey how many queries have changed\n    output.filters = 0;\n    for (q = 0; q < m; ++q) {\n      if (_.modified('query', q)) {\n        i = q;\n        ++mask;\n      }\n    }\n    if (mask === 1) {\n      // only one query changed, use more efficient update\n      mask = dims[i].one;\n      this.incrementOne(dims[i], query[i], output.add, output.rem);\n    } else {\n      // multiple queries changed, perform full record keeping\n      for (q = 0, mask = 0; q < m; ++q) {\n        if (!_.modified('query', q)) continue;\n        mask |= dims[q].one;\n        this.incrementAll(dims[q], query[q], stamp, output.add);\n        output.rem = output.add; // duplicate add/rem for downstream resolve\n      }\n    }\n\n    return mask;\n  },\n  incrementAll(dim, query, stamp, out) {\n    const bits = this.value,\n      seen = bits.seen(),\n      curr = bits.curr(),\n      prev = bits.prev(),\n      index = dim.index(),\n      old = dim.bisect(dim.range),\n      range = dim.bisect(query),\n      lo1 = range[0],\n      hi1 = range[1],\n      lo0 = old[0],\n      hi0 = old[1],\n      one = dim.one;\n    let i, j, k;\n\n    // Fast incremental update based on previous lo index.\n    if (lo1 < lo0) {\n      for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n        k = index[i];\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n        curr[k] ^= one;\n      }\n    } else if (lo1 > lo0) {\n      for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n        k = index[i];\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n        curr[k] ^= one;\n      }\n    }\n\n    // Fast incremental update based on previous hi index.\n    if (hi1 > hi0) {\n      for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n        k = index[i];\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n        curr[k] ^= one;\n      }\n    } else if (hi1 < hi0) {\n      for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n        k = index[i];\n        if (seen[k] !== stamp) {\n          prev[k] = curr[k];\n          seen[k] = stamp;\n          out.push(k);\n        }\n        curr[k] ^= one;\n      }\n    }\n    dim.range = query.slice();\n  },\n  incrementOne(dim, query, add, rem) {\n    const bits = this.value,\n      curr = bits.curr(),\n      index = dim.index(),\n      old = dim.bisect(dim.range),\n      range = dim.bisect(query),\n      lo1 = range[0],\n      hi1 = range[1],\n      lo0 = old[0],\n      hi0 = old[1],\n      one = dim.one;\n    let i, j, k;\n\n    // Fast incremental update based on previous lo index.\n    if (lo1 < lo0) {\n      for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        add.push(k);\n      }\n    } else if (lo1 > lo0) {\n      for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        rem.push(k);\n      }\n    }\n\n    // Fast incremental update based on previous hi index.\n    if (hi1 > hi0) {\n      for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        add.push(k);\n      }\n    } else if (hi1 < hi0) {\n      for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) {\n        k = index[i];\n        curr[k] ^= one;\n        rem.push(k);\n      }\n    }\n    dim.range = query.slice();\n  }\n});\n\n/**\n * Selectively filters tuples by resolving against a filter bitmap.\n * Useful for processing the output of a cross-filter transform.\n * @constructor\n * @param {object} params - The parameters for this operator.\n * @param {object} params.ignore - A bit mask indicating which filters to ignore.\n * @param {object} params.filter - The per-tuple filter bitmaps. Typically this\n *   parameter value is a reference to a {@link CrossFilter} transform.\n */\nfunction ResolveFilter(params) {\n  Transform.call(this, null, params);\n}\nResolveFilter.Definition = {\n  'type': 'ResolveFilter',\n  'metadata': {},\n  'params': [{\n    'name': 'ignore',\n    'type': 'number',\n    'required': true,\n    'description': 'A bit mask indicating which filters to ignore.'\n  }, {\n    'name': 'filter',\n    'type': 'object',\n    'required': true,\n    'description': 'Per-tuple filter bitmaps from a CrossFilter transform.'\n  }]\n};\ninherits(ResolveFilter, Transform, {\n  transform(_, pulse) {\n    const ignore = ~(_.ignore || 0),\n      // bit mask where zeros -> dims to ignore\n      bitmap = _.filter,\n      mask = bitmap.mask;\n\n    // exit early if no relevant filter changes\n    if ((mask & ignore) === 0) return pulse.StopPropagation;\n    const output = pulse.fork(pulse.ALL),\n      data = bitmap.data(),\n      curr = bitmap.curr(),\n      prev = bitmap.prev(),\n      pass = k => !(curr[k] & ignore) ? data[k] : null;\n\n    // propagate all mod tuples that pass the filter\n    output.filter(output.MOD, pass);\n\n    // determine add & rem tuples via filter functions\n    // for efficiency, we do *not* populate new arrays,\n    // instead we add filter functions applied downstream\n\n    if (!(mask & mask - 1)) {\n      // only one filter changed\n      output.filter(output.ADD, pass);\n      output.filter(output.REM, k => (curr[k] & ignore) === mask ? data[k] : null);\n    } else {\n      // multiple filters changed\n      output.filter(output.ADD, k => {\n        const c = curr[k] & ignore,\n          f = !c && c ^ prev[k] & ignore;\n        return f ? data[k] : null;\n      });\n      output.filter(output.REM, k => {\n        const c = curr[k] & ignore,\n          f = c && !(c ^ (c ^ prev[k] & ignore));\n        return f ? data[k] : null;\n      });\n    }\n\n    // add filter to source data in case of reflow...\n    return output.filter(output.SOURCE, t => pass(t._index));\n  }\n});\n\nexport { CrossFilter as crossfilter, ResolveFilter as resolvefilter };\n", "import { error, toSet, isFunction, isString, hasOwnProperty } from 'vega-util';\n\nconst RawCode = 'RawCode';\nconst Literal = 'Literal';\nconst Property = 'Property';\nconst Identifier = 'Identifier';\nconst ArrayExpression = 'ArrayExpression';\nconst BinaryExpression = 'BinaryExpression';\nconst CallExpression = 'CallExpression';\nconst ConditionalExpression = 'ConditionalExpression';\nconst LogicalExpression = 'LogicalExpression';\nconst MemberExpression = 'MemberExpression';\nconst ObjectExpression = 'ObjectExpression';\nconst UnaryExpression = 'UnaryExpression';\nfunction ASTNode(type) {\n  this.type = type;\n}\nASTNode.prototype.visit = function (visitor) {\n  let c, i, n;\n  if (visitor(this)) return 1;\n  for (c = children(this), i = 0, n = c.length; i < n; ++i) {\n    if (c[i].visit(visitor)) return 1;\n  }\n};\nfunction children(node) {\n  switch (node.type) {\n    case ArrayExpression:\n      return node.elements;\n    case BinaryExpression:\n    case LogicalExpression:\n      return [node.left, node.right];\n    case CallExpression:\n      return [node.callee].concat(node.arguments);\n    case ConditionalExpression:\n      return [node.test, node.consequent, node.alternate];\n    case MemberExpression:\n      return [node.object, node.property];\n    case ObjectExpression:\n      return node.properties;\n    case Property:\n      return [node.key, node.value];\n    case UnaryExpression:\n      return [node.argument];\n    case Identifier:\n    case Literal:\n    case RawCode:\n    default:\n      return [];\n  }\n}\n\n/*\n  The following expression parser is based on Esprima (http://esprima.org/).\n  Original header comment and license for Esprima is included here:\n\n  Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n  Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>\n  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>\n\n  Redistribution and use in source and binary forms, with or without\n  modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n\n  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar TokenName, source, index, length, lookahead;\nvar TokenBooleanLiteral = 1,\n  TokenEOF = 2,\n  TokenIdentifier = 3,\n  TokenKeyword = 4,\n  TokenNullLiteral = 5,\n  TokenNumericLiteral = 6,\n  TokenPunctuator = 7,\n  TokenStringLiteral = 8,\n  TokenRegularExpression = 9;\nTokenName = {};\nTokenName[TokenBooleanLiteral] = 'Boolean';\nTokenName[TokenEOF] = '<end>';\nTokenName[TokenIdentifier] = 'Identifier';\nTokenName[TokenKeyword] = 'Keyword';\nTokenName[TokenNullLiteral] = 'Null';\nTokenName[TokenNumericLiteral] = 'Numeric';\nTokenName[TokenPunctuator] = 'Punctuator';\nTokenName[TokenStringLiteral] = 'String';\nTokenName[TokenRegularExpression] = 'RegularExpression';\nvar SyntaxArrayExpression = 'ArrayExpression',\n  SyntaxBinaryExpression = 'BinaryExpression',\n  SyntaxCallExpression = 'CallExpression',\n  SyntaxConditionalExpression = 'ConditionalExpression',\n  SyntaxIdentifier = 'Identifier',\n  SyntaxLiteral = 'Literal',\n  SyntaxLogicalExpression = 'LogicalExpression',\n  SyntaxMemberExpression = 'MemberExpression',\n  SyntaxObjectExpression = 'ObjectExpression',\n  SyntaxProperty = 'Property',\n  SyntaxUnaryExpression = 'UnaryExpression';\n\n// Error messages should be identical to V8.\nvar MessageUnexpectedToken = 'Unexpected token %0',\n  MessageUnexpectedNumber = 'Unexpected number',\n  MessageUnexpectedString = 'Unexpected string',\n  MessageUnexpectedIdentifier = 'Unexpected identifier',\n  MessageUnexpectedReserved = 'Unexpected reserved word',\n  MessageUnexpectedEOS = 'Unexpected end of input',\n  MessageInvalidRegExp = 'Invalid regular expression',\n  MessageUnterminatedRegExp = 'Invalid regular expression: missing /',\n  MessageStrictOctalLiteral = 'Octal literals are not allowed in strict mode.',\n  MessageStrictDuplicateProperty = 'Duplicate data property in object literal not allowed in strict mode';\nvar ILLEGAL = 'ILLEGAL',\n  DISABLED = 'Disabled.';\n\n// See also tools/generate-unicode-regex.py.\nvar RegexNonAsciiIdentifierStart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]'),\n  // eslint-disable-next-line no-misleading-character-class\n  RegexNonAsciiIdentifierPart = new RegExp('[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]');\n\n// Ensure the condition is true, otherwise throw an error.\n// This is only to have a better contract semantic, i.e. another safety net\n// to catch a logic error. The condition shall be fulfilled in normal case.\n// Do NOT use this to enforce a certain condition on any user input.\n\nfunction assert(condition, message) {\n  /* istanbul ignore next */\n  if (!condition) {\n    throw new Error('ASSERT: ' + message);\n  }\n}\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 && ch <= 0x39; // 0..9\n}\n\nfunction isHexDigit(ch) {\n  return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;\n}\nfunction isOctalDigit(ch) {\n  return '01234567'.indexOf(ch) >= 0;\n}\n\n// 7.2 White Space\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && [0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(ch) >= 0;\n}\n\n// 7.3 Line Terminators\n\nfunction isLineTerminator(ch) {\n  return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;\n}\n\n// 7.6 Identifier Names and Identifiers\n\nfunction isIdentifierStart(ch) {\n  return ch === 0x24 || ch === 0x5F ||\n  // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A ||\n  // A..Z\n  ch >= 0x61 && ch <= 0x7A ||\n  // a..z\n  ch === 0x5C ||\n  // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierStart.test(String.fromCharCode(ch));\n}\nfunction isIdentifierPart(ch) {\n  return ch === 0x24 || ch === 0x5F ||\n  // $ (dollar) and _ (underscore)\n  ch >= 0x41 && ch <= 0x5A ||\n  // A..Z\n  ch >= 0x61 && ch <= 0x7A ||\n  // a..z\n  ch >= 0x30 && ch <= 0x39 ||\n  // 0..9\n  ch === 0x5C ||\n  // \\ (backslash)\n  ch >= 0x80 && RegexNonAsciiIdentifierPart.test(String.fromCharCode(ch));\n}\n\n// 7.6.1.1 Keywords\n\nconst keywords = {\n  'if': 1,\n  'in': 1,\n  'do': 1,\n  'var': 1,\n  'for': 1,\n  'new': 1,\n  'try': 1,\n  'let': 1,\n  'this': 1,\n  'else': 1,\n  'case': 1,\n  'void': 1,\n  'with': 1,\n  'enum': 1,\n  'while': 1,\n  'break': 1,\n  'catch': 1,\n  'throw': 1,\n  'const': 1,\n  'yield': 1,\n  'class': 1,\n  'super': 1,\n  'return': 1,\n  'typeof': 1,\n  'delete': 1,\n  'switch': 1,\n  'export': 1,\n  'import': 1,\n  'public': 1,\n  'static': 1,\n  'default': 1,\n  'finally': 1,\n  'extends': 1,\n  'package': 1,\n  'private': 1,\n  'function': 1,\n  'continue': 1,\n  'debugger': 1,\n  'interface': 1,\n  'protected': 1,\n  'instanceof': 1,\n  'implements': 1\n};\nfunction skipComment() {\n  while (index < length) {\n    const ch = source.charCodeAt(index);\n    if (isWhiteSpace(ch) || isLineTerminator(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n}\nfunction scanHexEscape(prefix) {\n  var i,\n    len,\n    ch,\n    code = 0;\n  len = prefix === 'u' ? 4 : 2;\n  for (i = 0; i < len; ++i) {\n    if (index < length && isHexDigit(source[index])) {\n      ch = source[index++];\n      code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n  return String.fromCharCode(code);\n}\nfunction scanUnicodeCodePointEscape() {\n  var ch, code, cu1, cu2;\n  ch = source[index];\n  code = 0;\n\n  // At least, one hex digit is required.\n  if (ch === '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n  while (index < length) {\n    ch = source[index++];\n    if (!isHexDigit(ch)) {\n      break;\n    }\n    code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());\n  }\n  if (code > 0x10FFFF || ch !== '}') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  // UTF-16 Encoding\n  if (code <= 0xFFFF) {\n    return String.fromCharCode(code);\n  }\n  cu1 = (code - 0x10000 >> 10) + 0xD800;\n  cu2 = (code - 0x10000 & 1023) + 0xDC00;\n  return String.fromCharCode(cu1, cu2);\n}\nfunction getEscapedIdentifier() {\n  var ch, id;\n  ch = source.charCodeAt(index++);\n  id = String.fromCharCode(ch);\n\n  // '\\u' (U+005C, U+0075) denotes an escaped character.\n  if (ch === 0x5C) {\n    if (source.charCodeAt(index) !== 0x75) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n    ++index;\n    ch = scanHexEscape('u');\n    if (!ch || ch === '\\\\' || !isIdentifierStart(ch.charCodeAt(0))) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n    id = ch;\n  }\n  while (index < length) {\n    ch = source.charCodeAt(index);\n    if (!isIdentifierPart(ch)) {\n      break;\n    }\n    ++index;\n    id += String.fromCharCode(ch);\n\n    // '\\u' (U+005C, U+0075) denotes an escaped character.\n    if (ch === 0x5C) {\n      id = id.substr(0, id.length - 1);\n      if (source.charCodeAt(index) !== 0x75) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n      ++index;\n      ch = scanHexEscape('u');\n      if (!ch || ch === '\\\\' || !isIdentifierPart(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n      id += ch;\n    }\n  }\n  return id;\n}\nfunction getIdentifier() {\n  var start, ch;\n  start = index++;\n  while (index < length) {\n    ch = source.charCodeAt(index);\n    if (ch === 0x5C) {\n      // Blackslash (U+005C) marks Unicode escape sequence.\n      index = start;\n      return getEscapedIdentifier();\n    }\n    if (isIdentifierPart(ch)) {\n      ++index;\n    } else {\n      break;\n    }\n  }\n  return source.slice(start, index);\n}\nfunction scanIdentifier() {\n  var start, id, type;\n  start = index;\n\n  // Backslash (U+005C) starts an escaped character.\n  id = source.charCodeAt(index) === 0x5C ? getEscapedIdentifier() : getIdentifier();\n\n  // There is no keyword or literal with only one character.\n  // Thus, it must be an identifier.\n  if (id.length === 1) {\n    type = TokenIdentifier;\n  } else if (keywords.hasOwnProperty(id)) {\n    // eslint-disable-line no-prototype-builtins\n    type = TokenKeyword;\n  } else if (id === 'null') {\n    type = TokenNullLiteral;\n  } else if (id === 'true' || id === 'false') {\n    type = TokenBooleanLiteral;\n  } else {\n    type = TokenIdentifier;\n  }\n  return {\n    type: type,\n    value: id,\n    start: start,\n    end: index\n  };\n}\n\n// 7.7 Punctuators\n\nfunction scanPunctuator() {\n  var start = index,\n    code = source.charCodeAt(index),\n    code2,\n    ch1 = source[index],\n    ch2,\n    ch3,\n    ch4;\n  switch (code) {\n    // Check for most common single-character punctuators.\n    case 0x2E: // . dot\n    case 0x28: // ( open bracket\n    case 0x29: // ) close bracket\n    case 0x3B: // ; semicolon\n    case 0x2C: // , comma\n    case 0x7B: // { open curly brace\n    case 0x7D: // } close curly brace\n    case 0x5B: // [\n    case 0x5D: // ]\n    case 0x3A: // :\n    case 0x3F: // ?\n    case 0x7E:\n      // ~\n      ++index;\n      return {\n        type: TokenPunctuator,\n        value: String.fromCharCode(code),\n        start: start,\n        end: index\n      };\n    default:\n      code2 = source.charCodeAt(index + 1);\n\n      // '=' (U+003D) marks an assignment or comparison operator.\n      if (code2 === 0x3D) {\n        switch (code) {\n          case 0x2B: // +\n          case 0x2D: // -\n          case 0x2F: // /\n          case 0x3C: // <\n          case 0x3E: // >\n          case 0x5E: // ^\n          case 0x7C: // |\n          case 0x25: // %\n          case 0x26: // &\n          case 0x2A:\n            // *\n            index += 2;\n            return {\n              type: TokenPunctuator,\n              value: String.fromCharCode(code) + String.fromCharCode(code2),\n              start: start,\n              end: index\n            };\n          case 0x21: // !\n          case 0x3D:\n            // =\n            index += 2;\n\n            // !== and ===\n            if (source.charCodeAt(index) === 0x3D) {\n              ++index;\n            }\n            return {\n              type: TokenPunctuator,\n              value: source.slice(start, index),\n              start: start,\n              end: index\n            };\n        }\n      }\n  }\n\n  // 4-character punctuator: >>>=\n\n  ch4 = source.substr(index, 4);\n  if (ch4 === '>>>=') {\n    index += 4;\n    return {\n      type: TokenPunctuator,\n      value: ch4,\n      start: start,\n      end: index\n    };\n  }\n\n  // 3-character punctuators: === !== >>> <<= >>=\n\n  ch3 = ch4.substr(0, 3);\n  if (ch3 === '>>>' || ch3 === '<<=' || ch3 === '>>=') {\n    index += 3;\n    return {\n      type: TokenPunctuator,\n      value: ch3,\n      start: start,\n      end: index\n    };\n  }\n\n  // Other 2-character punctuators: ++ -- << >> && ||\n  ch2 = ch3.substr(0, 2);\n  if (ch1 === ch2[1] && '+-<>&|'.indexOf(ch1) >= 0 || ch2 === '=>') {\n    index += 2;\n    return {\n      type: TokenPunctuator,\n      value: ch2,\n      start: start,\n      end: index\n    };\n  }\n  if (ch2 === '//') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n\n  // 1-character punctuators: < > = ! + - * % & | ^ /\n\n  if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n    ++index;\n    return {\n      type: TokenPunctuator,\n      value: ch1,\n      start: start,\n      end: index\n    };\n  }\n  throwError({}, MessageUnexpectedToken, ILLEGAL);\n}\n\n// 7.8.3 Numeric Literals\n\nfunction scanHexLiteral(start) {\n  let number = '';\n  while (index < length) {\n    if (!isHexDigit(source[index])) {\n      break;\n    }\n    number += source[index++];\n  }\n  if (number.length === 0) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt('0x' + number, 16),\n    start: start,\n    end: index\n  };\n}\nfunction scanOctalLiteral(start) {\n  let number = '0' + source[index++];\n  while (index < length) {\n    if (!isOctalDigit(source[index])) {\n      break;\n    }\n    number += source[index++];\n  }\n  if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n  return {\n    type: TokenNumericLiteral,\n    value: parseInt(number, 8),\n    octal: true,\n    start: start,\n    end: index\n  };\n}\nfunction scanNumericLiteral() {\n  var number, start, ch;\n  ch = source[index];\n  assert(isDecimalDigit(ch.charCodeAt(0)) || ch === '.', 'Numeric literal must start with a decimal digit or a decimal point');\n  start = index;\n  number = '';\n  if (ch !== '.') {\n    number = source[index++];\n    ch = source[index];\n\n    // Hex number starts with '0x'.\n    // Octal number starts with '0'.\n    if (number === '0') {\n      if (ch === 'x' || ch === 'X') {\n        ++index;\n        return scanHexLiteral(start);\n      }\n      if (isOctalDigit(ch)) {\n        return scanOctalLiteral(start);\n      }\n\n      // decimal number starts with '0' such as '09' is illegal.\n      if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n        throwError({}, MessageUnexpectedToken, ILLEGAL);\n      }\n    }\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n    ch = source[index];\n  }\n  if (ch === '.') {\n    number += source[index++];\n    while (isDecimalDigit(source.charCodeAt(index))) {\n      number += source[index++];\n    }\n    ch = source[index];\n  }\n  if (ch === 'e' || ch === 'E') {\n    number += source[index++];\n    ch = source[index];\n    if (ch === '+' || ch === '-') {\n      number += source[index++];\n    }\n    if (isDecimalDigit(source.charCodeAt(index))) {\n      while (isDecimalDigit(source.charCodeAt(index))) {\n        number += source[index++];\n      }\n    } else {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    }\n  }\n  if (isIdentifierStart(source.charCodeAt(index))) {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n  return {\n    type: TokenNumericLiteral,\n    value: parseFloat(number),\n    start: start,\n    end: index\n  };\n}\n\n// 7.8.4 String Literals\n\nfunction scanStringLiteral() {\n  var str = '',\n    quote,\n    start,\n    ch,\n    code,\n    octal = false;\n  quote = source[index];\n  assert(quote === '\\'' || quote === '\"', 'String literal must starts with a quote');\n  start = index;\n  ++index;\n  while (index < length) {\n    ch = source[index++];\n    if (ch === quote) {\n      quote = '';\n      break;\n    } else if (ch === '\\\\') {\n      ch = source[index++];\n      if (!ch || !isLineTerminator(ch.charCodeAt(0))) {\n        switch (ch) {\n          case 'u':\n          case 'x':\n            if (source[index] === '{') {\n              ++index;\n              str += scanUnicodeCodePointEscape();\n            } else {\n              str += scanHexEscape(ch);\n            }\n            break;\n          case 'n':\n            str += '\\n';\n            break;\n          case 'r':\n            str += '\\r';\n            break;\n          case 't':\n            str += '\\t';\n            break;\n          case 'b':\n            str += '\\b';\n            break;\n          case 'f':\n            str += '\\f';\n            break;\n          case 'v':\n            str += '\\x0B';\n            break;\n          default:\n            if (isOctalDigit(ch)) {\n              code = '01234567'.indexOf(ch);\n\n              // \\0 is not octal escape sequence\n              if (code !== 0) {\n                octal = true;\n              }\n              if (index < length && isOctalDigit(source[index])) {\n                octal = true;\n                code = code * 8 + '01234567'.indexOf(source[index++]);\n\n                // 3 digits are only allowed when string starts\n                // with 0, 1, 2, 3\n                if ('0123'.indexOf(ch) >= 0 && index < length && isOctalDigit(source[index])) {\n                  code = code * 8 + '01234567'.indexOf(source[index++]);\n                }\n              }\n              str += String.fromCharCode(code);\n            } else {\n              str += ch;\n            }\n            break;\n        }\n      } else {\n        if (ch === '\\r' && source[index] === '\\n') {\n          ++index;\n        }\n      }\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      break;\n    } else {\n      str += ch;\n    }\n  }\n  if (quote !== '') {\n    throwError({}, MessageUnexpectedToken, ILLEGAL);\n  }\n  return {\n    type: TokenStringLiteral,\n    value: str,\n    octal: octal,\n    start: start,\n    end: index\n  };\n}\nfunction testRegExp(pattern, flags) {\n  let tmp = pattern;\n  if (flags.indexOf('u') >= 0) {\n    // Replace each astral symbol and every Unicode code point\n    // escape sequence with a single ASCII symbol to avoid throwing on\n    // regular expressions that are only valid in combination with the\n    // `/u` flag.\n    // Note: replacing with the ASCII symbol `x` might cause false\n    // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n    // perfectly valid pattern that is equivalent to `[a-b]`, but it\n    // would be replaced by `[x-b]` which throws an error.\n    tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, ($0, $1) => {\n      if (parseInt($1, 16) <= 0x10FFFF) {\n        return 'x';\n      }\n      throwError({}, MessageInvalidRegExp);\n    }).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, 'x');\n  }\n\n  // First, detect invalid regular expressions.\n  try {\n    new RegExp(tmp);\n  } catch (e) {\n    throwError({}, MessageInvalidRegExp);\n  }\n\n  // Return a regular expression object for this pattern-flag pair, or\n  // `null` in case the current environment doesn't support the flags it\n  // uses.\n  try {\n    return new RegExp(pattern, flags);\n  } catch (exception) {\n    return null;\n  }\n}\nfunction scanRegExpBody() {\n  var ch, str, classMarker, terminated, body;\n  ch = source[index];\n  assert(ch === '/', 'Regular expression literal must start with a slash');\n  str = source[index++];\n  classMarker = false;\n  terminated = false;\n  while (index < length) {\n    ch = source[index++];\n    str += ch;\n    if (ch === '\\\\') {\n      ch = source[index++];\n      // ECMA-262 7.8.5\n      if (isLineTerminator(ch.charCodeAt(0))) {\n        throwError({}, MessageUnterminatedRegExp);\n      }\n      str += ch;\n    } else if (isLineTerminator(ch.charCodeAt(0))) {\n      throwError({}, MessageUnterminatedRegExp);\n    } else if (classMarker) {\n      if (ch === ']') {\n        classMarker = false;\n      }\n    } else {\n      if (ch === '/') {\n        terminated = true;\n        break;\n      } else if (ch === '[') {\n        classMarker = true;\n      }\n    }\n  }\n  if (!terminated) {\n    throwError({}, MessageUnterminatedRegExp);\n  }\n\n  // Exclude leading and trailing slash.\n  body = str.substr(1, str.length - 2);\n  return {\n    value: body,\n    literal: str\n  };\n}\nfunction scanRegExpFlags() {\n  var ch, str, flags;\n  str = '';\n  flags = '';\n  while (index < length) {\n    ch = source[index];\n    if (!isIdentifierPart(ch.charCodeAt(0))) {\n      break;\n    }\n    ++index;\n    if (ch === '\\\\' && index < length) {\n      throwError({}, MessageUnexpectedToken, ILLEGAL);\n    } else {\n      flags += ch;\n      str += ch;\n    }\n  }\n  if (flags.search(/[^gimuy]/g) >= 0) {\n    throwError({}, MessageInvalidRegExp, flags);\n  }\n  return {\n    value: flags,\n    literal: str\n  };\n}\nfunction scanRegExp() {\n  var start, body, flags, value;\n  lookahead = null;\n  skipComment();\n  start = index;\n  body = scanRegExpBody();\n  flags = scanRegExpFlags();\n  value = testRegExp(body.value, flags.value);\n  return {\n    literal: body.literal + flags.literal,\n    value: value,\n    regex: {\n      pattern: body.value,\n      flags: flags.value\n    },\n    start: start,\n    end: index\n  };\n}\nfunction isIdentifierName(token) {\n  return token.type === TokenIdentifier || token.type === TokenKeyword || token.type === TokenBooleanLiteral || token.type === TokenNullLiteral;\n}\nfunction advance() {\n  skipComment();\n  if (index >= length) {\n    return {\n      type: TokenEOF,\n      start: index,\n      end: index\n    };\n  }\n  const ch = source.charCodeAt(index);\n  if (isIdentifierStart(ch)) {\n    return scanIdentifier();\n  }\n\n  // Very common: ( and ) and ;\n  if (ch === 0x28 || ch === 0x29 || ch === 0x3B) {\n    return scanPunctuator();\n  }\n\n  // String literal starts with single quote (U+0027) or double quote (U+0022).\n  if (ch === 0x27 || ch === 0x22) {\n    return scanStringLiteral();\n  }\n\n  // Dot (.) U+002E can also start a floating-point number, hence the need\n  // to check the next character.\n  if (ch === 0x2E) {\n    if (isDecimalDigit(source.charCodeAt(index + 1))) {\n      return scanNumericLiteral();\n    }\n    return scanPunctuator();\n  }\n  if (isDecimalDigit(ch)) {\n    return scanNumericLiteral();\n  }\n  return scanPunctuator();\n}\nfunction lex() {\n  const token = lookahead;\n  index = token.end;\n  lookahead = advance();\n  index = token.end;\n  return token;\n}\nfunction peek() {\n  const pos = index;\n  lookahead = advance();\n  index = pos;\n}\nfunction finishArrayExpression(elements) {\n  const node = new ASTNode(SyntaxArrayExpression);\n  node.elements = elements;\n  return node;\n}\nfunction finishBinaryExpression(operator, left, right) {\n  const node = new ASTNode(operator === '||' || operator === '&&' ? SyntaxLogicalExpression : SyntaxBinaryExpression);\n  node.operator = operator;\n  node.left = left;\n  node.right = right;\n  return node;\n}\nfunction finishCallExpression(callee, args) {\n  const node = new ASTNode(SyntaxCallExpression);\n  node.callee = callee;\n  node.arguments = args;\n  return node;\n}\nfunction finishConditionalExpression(test, consequent, alternate) {\n  const node = new ASTNode(SyntaxConditionalExpression);\n  node.test = test;\n  node.consequent = consequent;\n  node.alternate = alternate;\n  return node;\n}\nfunction finishIdentifier(name) {\n  const node = new ASTNode(SyntaxIdentifier);\n  node.name = name;\n  return node;\n}\nfunction finishLiteral(token) {\n  const node = new ASTNode(SyntaxLiteral);\n  node.value = token.value;\n  node.raw = source.slice(token.start, token.end);\n  if (token.regex) {\n    if (node.raw === '//') {\n      node.raw = '/(?:)/';\n    }\n    node.regex = token.regex;\n  }\n  return node;\n}\nfunction finishMemberExpression(accessor, object, property) {\n  const node = new ASTNode(SyntaxMemberExpression);\n  node.computed = accessor === '[';\n  node.object = object;\n  node.property = property;\n  if (!node.computed) property.member = true;\n  return node;\n}\nfunction finishObjectExpression(properties) {\n  const node = new ASTNode(SyntaxObjectExpression);\n  node.properties = properties;\n  return node;\n}\nfunction finishProperty(kind, key, value) {\n  const node = new ASTNode(SyntaxProperty);\n  node.key = key;\n  node.value = value;\n  node.kind = kind;\n  return node;\n}\nfunction finishUnaryExpression(operator, argument) {\n  const node = new ASTNode(SyntaxUnaryExpression);\n  node.operator = operator;\n  node.argument = argument;\n  node.prefix = true;\n  return node;\n}\n\n// Throw an exception\n\nfunction throwError(token, messageFormat) {\n  var error,\n    args = Array.prototype.slice.call(arguments, 2),\n    msg = messageFormat.replace(/%(\\d)/g, (whole, index) => {\n      assert(index < args.length, 'Message reference must be in range');\n      return args[index];\n    });\n  error = new Error(msg);\n  error.index = index;\n  error.description = msg;\n  throw error;\n}\n\n// Throw an exception because of the token.\n\nfunction throwUnexpected(token) {\n  if (token.type === TokenEOF) {\n    throwError(token, MessageUnexpectedEOS);\n  }\n  if (token.type === TokenNumericLiteral) {\n    throwError(token, MessageUnexpectedNumber);\n  }\n  if (token.type === TokenStringLiteral) {\n    throwError(token, MessageUnexpectedString);\n  }\n  if (token.type === TokenIdentifier) {\n    throwError(token, MessageUnexpectedIdentifier);\n  }\n  if (token.type === TokenKeyword) {\n    throwError(token, MessageUnexpectedReserved);\n  }\n\n  // BooleanLiteral, NullLiteral, or Punctuator.\n  throwError(token, MessageUnexpectedToken, token.value);\n}\n\n// Expect the next token to match the specified punctuator.\n// If not, an exception will be thrown.\n\nfunction expect(value) {\n  const token = lex();\n  if (token.type !== TokenPunctuator || token.value !== value) {\n    throwUnexpected(token);\n  }\n}\n\n// Return true if the next token matches the specified punctuator.\n\nfunction match(value) {\n  return lookahead.type === TokenPunctuator && lookahead.value === value;\n}\n\n// Return true if the next token matches the specified keyword\n\nfunction matchKeyword(keyword) {\n  return lookahead.type === TokenKeyword && lookahead.value === keyword;\n}\n\n// 11.1.4 Array Initialiser\n\nfunction parseArrayInitialiser() {\n  const elements = [];\n  index = lookahead.start;\n  expect('[');\n  while (!match(']')) {\n    if (match(',')) {\n      lex();\n      elements.push(null);\n    } else {\n      elements.push(parseConditionalExpression());\n      if (!match(']')) {\n        expect(',');\n      }\n    }\n  }\n  lex();\n  return finishArrayExpression(elements);\n}\n\n// 11.1.5 Object Initialiser\n\nfunction parseObjectPropertyKey() {\n  index = lookahead.start;\n  const token = lex();\n\n  // Note: This function is called only from parseObjectProperty(), where\n  // EOF and Punctuator tokens are already filtered out.\n\n  if (token.type === TokenStringLiteral || token.type === TokenNumericLiteral) {\n    if (token.octal) {\n      throwError(token, MessageStrictOctalLiteral);\n    }\n    return finishLiteral(token);\n  }\n  return finishIdentifier(token.value);\n}\nfunction parseObjectProperty() {\n  var token, key, id, value;\n  index = lookahead.start;\n  token = lookahead;\n  if (token.type === TokenIdentifier) {\n    id = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', id, value);\n  }\n  if (token.type === TokenEOF || token.type === TokenPunctuator) {\n    throwUnexpected(token);\n  } else {\n    key = parseObjectPropertyKey();\n    expect(':');\n    value = parseConditionalExpression();\n    return finishProperty('init', key, value);\n  }\n}\nfunction parseObjectInitialiser() {\n  var properties = [],\n    property,\n    name,\n    key,\n    map = {},\n    toString = String;\n  index = lookahead.start;\n  expect('{');\n  while (!match('}')) {\n    property = parseObjectProperty();\n    if (property.key.type === SyntaxIdentifier) {\n      name = property.key.name;\n    } else {\n      name = toString(property.key.value);\n    }\n    key = '$' + name;\n    if (Object.prototype.hasOwnProperty.call(map, key)) {\n      throwError({}, MessageStrictDuplicateProperty);\n    } else {\n      map[key] = true;\n    }\n    properties.push(property);\n    if (!match('}')) {\n      expect(',');\n    }\n  }\n  expect('}');\n  return finishObjectExpression(properties);\n}\n\n// 11.1.6 The Grouping Operator\n\nfunction parseGroupExpression() {\n  expect('(');\n  const expr = parseExpression();\n  expect(')');\n  return expr;\n}\n\n// 11.1 Primary Expressions\n\nconst legalKeywords = {\n  'if': 1\n};\nfunction parsePrimaryExpression() {\n  var type, token, expr;\n  if (match('(')) {\n    return parseGroupExpression();\n  }\n  if (match('[')) {\n    return parseArrayInitialiser();\n  }\n  if (match('{')) {\n    return parseObjectInitialiser();\n  }\n  type = lookahead.type;\n  index = lookahead.start;\n  if (type === TokenIdentifier || legalKeywords[lookahead.value]) {\n    expr = finishIdentifier(lex().value);\n  } else if (type === TokenStringLiteral || type === TokenNumericLiteral) {\n    if (lookahead.octal) {\n      throwError(lookahead, MessageStrictOctalLiteral);\n    }\n    expr = finishLiteral(lex());\n  } else if (type === TokenKeyword) {\n    throw new Error(DISABLED);\n  } else if (type === TokenBooleanLiteral) {\n    token = lex();\n    token.value = token.value === 'true';\n    expr = finishLiteral(token);\n  } else if (type === TokenNullLiteral) {\n    token = lex();\n    token.value = null;\n    expr = finishLiteral(token);\n  } else if (match('/') || match('/=')) {\n    expr = finishLiteral(scanRegExp());\n    peek();\n  } else {\n    throwUnexpected(lex());\n  }\n  return expr;\n}\n\n// 11.2 Left-Hand-Side Expressions\n\nfunction parseArguments() {\n  const args = [];\n  expect('(');\n  if (!match(')')) {\n    while (index < length) {\n      args.push(parseConditionalExpression());\n      if (match(')')) {\n        break;\n      }\n      expect(',');\n    }\n  }\n  expect(')');\n  return args;\n}\nfunction parseNonComputedProperty() {\n  index = lookahead.start;\n  const token = lex();\n  if (!isIdentifierName(token)) {\n    throwUnexpected(token);\n  }\n  return finishIdentifier(token.value);\n}\nfunction parseNonComputedMember() {\n  expect('.');\n  return parseNonComputedProperty();\n}\nfunction parseComputedMember() {\n  expect('[');\n  const expr = parseExpression();\n  expect(']');\n  return expr;\n}\nfunction parseLeftHandSideExpressionAllowCall() {\n  var expr, args, property;\n  expr = parsePrimaryExpression();\n  for (;;) {\n    if (match('.')) {\n      property = parseNonComputedMember();\n      expr = finishMemberExpression('.', expr, property);\n    } else if (match('(')) {\n      args = parseArguments();\n      expr = finishCallExpression(expr, args);\n    } else if (match('[')) {\n      property = parseComputedMember();\n      expr = finishMemberExpression('[', expr, property);\n    } else {\n      break;\n    }\n  }\n  return expr;\n}\n\n// 11.3 Postfix Expressions\n\nfunction parsePostfixExpression() {\n  const expr = parseLeftHandSideExpressionAllowCall();\n  if (lookahead.type === TokenPunctuator) {\n    if (match('++') || match('--')) {\n      throw new Error(DISABLED);\n    }\n  }\n  return expr;\n}\n\n// 11.4 Unary Operators\n\nfunction parseUnaryExpression() {\n  var token, expr;\n  if (lookahead.type !== TokenPunctuator && lookahead.type !== TokenKeyword) {\n    expr = parsePostfixExpression();\n  } else if (match('++') || match('--')) {\n    throw new Error(DISABLED);\n  } else if (match('+') || match('-') || match('~') || match('!')) {\n    token = lex();\n    expr = parseUnaryExpression();\n    expr = finishUnaryExpression(token.value, expr);\n  } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {\n    throw new Error(DISABLED);\n  } else {\n    expr = parsePostfixExpression();\n  }\n  return expr;\n}\nfunction binaryPrecedence(token) {\n  let prec = 0;\n  if (token.type !== TokenPunctuator && token.type !== TokenKeyword) {\n    return 0;\n  }\n  switch (token.value) {\n    case '||':\n      prec = 1;\n      break;\n    case '&&':\n      prec = 2;\n      break;\n    case '|':\n      prec = 3;\n      break;\n    case '^':\n      prec = 4;\n      break;\n    case '&':\n      prec = 5;\n      break;\n    case '==':\n    case '!=':\n    case '===':\n    case '!==':\n      prec = 6;\n      break;\n    case '<':\n    case '>':\n    case '<=':\n    case '>=':\n    case 'instanceof':\n    case 'in':\n      prec = 7;\n      break;\n    case '<<':\n    case '>>':\n    case '>>>':\n      prec = 8;\n      break;\n    case '+':\n    case '-':\n      prec = 9;\n      break;\n    case '*':\n    case '/':\n    case '%':\n      prec = 11;\n      break;\n  }\n  return prec;\n}\n\n// 11.5 Multiplicative Operators\n// 11.6 Additive Operators\n// 11.7 Bitwise Shift Operators\n// 11.8 Relational Operators\n// 11.9 Equality Operators\n// 11.10 Binary Bitwise Operators\n// 11.11 Binary Logical Operators\n\nfunction parseBinaryExpression() {\n  var marker, markers, expr, token, prec, stack, right, operator, left, i;\n  marker = lookahead;\n  left = parseUnaryExpression();\n  token = lookahead;\n  prec = binaryPrecedence(token);\n  if (prec === 0) {\n    return left;\n  }\n  token.prec = prec;\n  lex();\n  markers = [marker, lookahead];\n  right = parseUnaryExpression();\n  stack = [left, token, right];\n  while ((prec = binaryPrecedence(lookahead)) > 0) {\n    // Reduce: make a binary expression from the three topmost entries.\n    while (stack.length > 2 && prec <= stack[stack.length - 2].prec) {\n      right = stack.pop();\n      operator = stack.pop().value;\n      left = stack.pop();\n      markers.pop();\n      expr = finishBinaryExpression(operator, left, right);\n      stack.push(expr);\n    }\n\n    // Shift.\n    token = lex();\n    token.prec = prec;\n    stack.push(token);\n    markers.push(lookahead);\n    expr = parseUnaryExpression();\n    stack.push(expr);\n  }\n\n  // Final reduce to clean-up the stack.\n  i = stack.length - 1;\n  expr = stack[i];\n  markers.pop();\n  while (i > 1) {\n    markers.pop();\n    expr = finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);\n    i -= 2;\n  }\n  return expr;\n}\n\n// 11.12 Conditional Operator\n\nfunction parseConditionalExpression() {\n  var expr, consequent, alternate;\n  expr = parseBinaryExpression();\n  if (match('?')) {\n    lex();\n    consequent = parseConditionalExpression();\n    expect(':');\n    alternate = parseConditionalExpression();\n    expr = finishConditionalExpression(expr, consequent, alternate);\n  }\n  return expr;\n}\n\n// 11.14 Comma Operator\n\nfunction parseExpression() {\n  const expr = parseConditionalExpression();\n  if (match(',')) {\n    throw new Error(DISABLED); // no sequence expressions\n  }\n\n  return expr;\n}\nfunction parser (code) {\n  source = code;\n  index = 0;\n  length = source.length;\n  lookahead = null;\n  peek();\n  const expr = parseExpression();\n  if (lookahead.type !== TokenEOF) {\n    throw new Error('Unexpect token after expression.');\n  }\n  return expr;\n}\n\nvar Constants = {\n  NaN: 'NaN',\n  E: 'Math.E',\n  LN2: 'Math.LN2',\n  LN10: 'Math.LN10',\n  LOG2E: 'Math.LOG2E',\n  LOG10E: 'Math.LOG10E',\n  PI: 'Math.PI',\n  SQRT1_2: 'Math.SQRT1_2',\n  SQRT2: 'Math.SQRT2',\n  MIN_VALUE: 'Number.MIN_VALUE',\n  MAX_VALUE: 'Number.MAX_VALUE'\n};\n\nfunction Functions (codegen) {\n  function fncall(name, args, cast, type) {\n    let obj = codegen(args[0]);\n    if (cast) {\n      obj = cast + '(' + obj + ')';\n      if (cast.lastIndexOf('new ', 0) === 0) obj = '(' + obj + ')';\n    }\n    return obj + '.' + name + (type < 0 ? '' : type === 0 ? '()' : '(' + args.slice(1).map(codegen).join(',') + ')');\n  }\n  function fn(name, cast, type) {\n    return args => fncall(name, args, cast, type);\n  }\n  const DATE = 'new Date',\n    STRING = 'String',\n    REGEXP = 'RegExp';\n  return {\n    // MATH functions\n    isNaN: 'Number.isNaN',\n    isFinite: 'Number.isFinite',\n    abs: 'Math.abs',\n    acos: 'Math.acos',\n    asin: 'Math.asin',\n    atan: 'Math.atan',\n    atan2: 'Math.atan2',\n    ceil: 'Math.ceil',\n    cos: 'Math.cos',\n    exp: 'Math.exp',\n    floor: 'Math.floor',\n    hypot: 'Math.hypot',\n    log: 'Math.log',\n    max: 'Math.max',\n    min: 'Math.min',\n    pow: 'Math.pow',\n    random: 'Math.random',\n    round: 'Math.round',\n    sin: 'Math.sin',\n    sqrt: 'Math.sqrt',\n    tan: 'Math.tan',\n    clamp: function (args) {\n      if (args.length < 3) error('Missing arguments to clamp function.');\n      if (args.length > 3) error('Too many arguments to clamp function.');\n      const a = args.map(codegen);\n      return 'Math.max(' + a[1] + ', Math.min(' + a[2] + ',' + a[0] + '))';\n    },\n    // DATE functions\n    now: 'Date.now',\n    utc: 'Date.UTC',\n    datetime: DATE,\n    date: fn('getDate', DATE, 0),\n    day: fn('getDay', DATE, 0),\n    year: fn('getFullYear', DATE, 0),\n    month: fn('getMonth', DATE, 0),\n    hours: fn('getHours', DATE, 0),\n    minutes: fn('getMinutes', DATE, 0),\n    seconds: fn('getSeconds', DATE, 0),\n    milliseconds: fn('getMilliseconds', DATE, 0),\n    time: fn('getTime', DATE, 0),\n    timezoneoffset: fn('getTimezoneOffset', DATE, 0),\n    utcdate: fn('getUTCDate', DATE, 0),\n    utcday: fn('getUTCDay', DATE, 0),\n    utcyear: fn('getUTCFullYear', DATE, 0),\n    utcmonth: fn('getUTCMonth', DATE, 0),\n    utchours: fn('getUTCHours', DATE, 0),\n    utcminutes: fn('getUTCMinutes', DATE, 0),\n    utcseconds: fn('getUTCSeconds', DATE, 0),\n    utcmilliseconds: fn('getUTCMilliseconds', DATE, 0),\n    // sequence functions\n    length: fn('length', null, -1),\n    // STRING functions\n    parseFloat: 'parseFloat',\n    parseInt: 'parseInt',\n    upper: fn('toUpperCase', STRING, 0),\n    lower: fn('toLowerCase', STRING, 0),\n    substring: fn('substring', STRING),\n    split: fn('split', STRING),\n    trim: fn('trim', STRING, 0),\n    // REGEXP functions\n    regexp: REGEXP,\n    test: fn('test', REGEXP),\n    // Control Flow functions\n    if: function (args) {\n      if (args.length < 3) error('Missing arguments to if function.');\n      if (args.length > 3) error('Too many arguments to if function.');\n      const a = args.map(codegen);\n      return '(' + a[0] + '?' + a[1] + ':' + a[2] + ')';\n    }\n  };\n}\n\nfunction stripQuotes(s) {\n  const n = s && s.length - 1;\n  return n && (s[0] === '\"' && s[n] === '\"' || s[0] === '\\'' && s[n] === '\\'') ? s.slice(1, -1) : s;\n}\nfunction codegen (opt) {\n  opt = opt || {};\n  const allowed = opt.allowed ? toSet(opt.allowed) : {},\n    forbidden = opt.forbidden ? toSet(opt.forbidden) : {},\n    constants = opt.constants || Constants,\n    functions = (opt.functions || Functions)(visit),\n    globalvar = opt.globalvar,\n    fieldvar = opt.fieldvar,\n    outputGlobal = isFunction(globalvar) ? globalvar : id => `${globalvar}[\"${id}\"]`;\n  let globals = {},\n    fields = {},\n    memberDepth = 0;\n  function visit(ast) {\n    if (isString(ast)) return ast;\n    const generator = Generators[ast.type];\n    if (generator == null) error('Unsupported type: ' + ast.type);\n    return generator(ast);\n  }\n  const Generators = {\n    Literal: n => n.raw,\n    Identifier: n => {\n      const id = n.name;\n      if (memberDepth > 0) {\n        return id;\n      } else if (hasOwnProperty(forbidden, id)) {\n        return error('Illegal identifier: ' + id);\n      } else if (hasOwnProperty(constants, id)) {\n        return constants[id];\n      } else if (hasOwnProperty(allowed, id)) {\n        return id;\n      } else {\n        globals[id] = 1;\n        return outputGlobal(id);\n      }\n    },\n    MemberExpression: n => {\n      const d = !n.computed,\n        o = visit(n.object);\n      if (d) memberDepth += 1;\n      const p = visit(n.property);\n      if (o === fieldvar) {\n        // strip quotes to sanitize field name (#1653)\n        fields[stripQuotes(p)] = 1;\n      }\n      if (d) memberDepth -= 1;\n      return o + (d ? '.' + p : '[' + p + ']');\n    },\n    CallExpression: n => {\n      if (n.callee.type !== 'Identifier') {\n        error('Illegal callee type: ' + n.callee.type);\n      }\n      const callee = n.callee.name,\n        args = n.arguments,\n        fn = hasOwnProperty(functions, callee) && functions[callee];\n      if (!fn) error('Unrecognized function: ' + callee);\n      return isFunction(fn) ? fn(args) : fn + '(' + args.map(visit).join(',') + ')';\n    },\n    ArrayExpression: n => '[' + n.elements.map(visit).join(',') + ']',\n    BinaryExpression: n => '(' + visit(n.left) + ' ' + n.operator + ' ' + visit(n.right) + ')',\n    UnaryExpression: n => '(' + n.operator + visit(n.argument) + ')',\n    ConditionalExpression: n => '(' + visit(n.test) + '?' + visit(n.consequent) + ':' + visit(n.alternate) + ')',\n    LogicalExpression: n => '(' + visit(n.left) + n.operator + visit(n.right) + ')',\n    ObjectExpression: n => '{' + n.properties.map(visit).join(',') + '}',\n    Property: n => {\n      memberDepth += 1;\n      const k = visit(n.key);\n      memberDepth -= 1;\n      return k + ':' + visit(n.value);\n    }\n  };\n  function codegen(ast) {\n    const result = {\n      code: visit(ast),\n      globals: Object.keys(globals),\n      fields: Object.keys(fields)\n    };\n    globals = {};\n    fields = {};\n    return result;\n  }\n  codegen.functions = functions;\n  codegen.constants = constants;\n  return codegen;\n}\n\nexport { ASTNode, ArrayExpression, BinaryExpression, CallExpression, ConditionalExpression, Identifier, Literal, LogicalExpression, MemberExpression, ObjectExpression, Property, RawCode, UnaryExpression, codegen as codegenExpression, Constants as constants, Functions as functions, parser as parseExpression };\n", "import { bisector, union, intersection } from 'd3-array';\nimport { field, isDate, toNumber, isArray, inrange, extend, array, error, peek, hasOwnProperty } from 'vega-util';\nimport { Literal } from 'vega-expression';\n\n// Registers vega-util field accessors to protect against XSS attacks\nconst SELECTION_GETTER = Symbol('vega_selection_getter');\nfunction getter(f) {\n  if (!f.getter || !f.getter[SELECTION_GETTER]) {\n    f.getter = field(f.field);\n    f.getter[SELECTION_GETTER] = true;\n  }\n  return f.getter;\n}\nconst Intersect = 'intersect';\nconst Union = 'union';\nconst VlMulti = 'vlMulti';\nconst VlPoint = 'vlPoint';\nconst Or = 'or';\nconst And = 'and';\nconst SelectionId = '_vgsid_';\nconst $selectionId = field(SelectionId);\n\nconst TYPE_ENUM = 'E',\n  TYPE_RANGE_INC = 'R',\n  TYPE_RANGE_EXC = 'R-E',\n  TYPE_RANGE_LE = 'R-LE',\n  TYPE_RANGE_RE = 'R-RE',\n  UNIT_INDEX = 'index:unit';\n\n// TODO: revisit date coercion?\nfunction testPoint(datum, entry) {\n  var fields = entry.fields,\n    values = entry.values,\n    n = fields.length,\n    i = 0,\n    dval,\n    f;\n  for (; i < n; ++i) {\n    f = fields[i];\n    dval = getter(f)(datum);\n    if (isDate(dval)) dval = toNumber(dval);\n    if (isDate(values[i])) values[i] = toNumber(values[i]);\n    if (isArray(values[i]) && isDate(values[i][0])) values[i] = values[i].map(toNumber);\n    if (f.type === TYPE_ENUM) {\n      // Enumerated fields can either specify individual values (single/multi selections)\n      // or an array of values (interval selections).\n      if (isArray(values[i]) ? values[i].indexOf(dval) < 0 : dval !== values[i]) {\n        return false;\n      }\n    } else {\n      if (f.type === TYPE_RANGE_INC) {\n        if (!inrange(dval, values[i])) return false;\n      } else if (f.type === TYPE_RANGE_RE) {\n        // Discrete selection of bins test within the range [bin_start, bin_end).\n        if (!inrange(dval, values[i], true, false)) return false;\n      } else if (f.type === TYPE_RANGE_EXC) {\n        // 'R-E'/'R-LE' included for completeness.\n        if (!inrange(dval, values[i], false, false)) return false;\n      } else if (f.type === TYPE_RANGE_LE) {\n        if (!inrange(dval, values[i], false, true)) return false;\n      }\n    }\n  }\n  return true;\n}\n\n/**\n * Tests if a tuple is contained within an interactive selection.\n * @param {string} name - The name of the data set representing the selection.\n *  Tuples in the dataset are of the form\n *  {unit: string, fields: array<fielddef>, values: array<*>}.\n *  Fielddef is of the form\n *  {field: string, channel: string, type: 'E' | 'R'} where\n *  'type' identifies whether tuples in the dataset enumerate\n *  values for the field, or specify a continuous range.\n * @param {object} datum - The tuple to test for inclusion.\n * @param {string} op - The set operation for combining selections.\n *   One of 'intersect' or 'union' (default).\n * @return {boolean} - True if the datum is in the selection, false otherwise.\n */\nfunction selectionTest(name, datum, op) {\n  var data = this.context.data[name],\n    entries = data ? data.values.value : [],\n    unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n    intersect = op === Intersect,\n    n = entries.length,\n    i = 0,\n    entry,\n    miss,\n    count,\n    unit,\n    b;\n  for (; i < n; ++i) {\n    entry = entries[i];\n    if (unitIdx && intersect) {\n      // multi selections union within the same unit and intersect across units.\n      miss = miss || {};\n      count = miss[unit = entry.unit] || 0;\n\n      // if we've already matched this unit, skip.\n      if (count === -1) continue;\n      b = testPoint(datum, entry);\n      miss[unit] = b ? -1 : ++count;\n\n      // if we match and there are no other units return true\n      // if we've missed against all tuples in this unit return false\n      if (b && unitIdx.size === 1) return true;\n      if (!b && count === unitIdx.get(unit).count) return false;\n    } else {\n      b = testPoint(datum, entry);\n\n      // if we find a miss and we do require intersection return false\n      // if we find a match and we don't require intersection return true\n      if (intersect ^ b) return b;\n    }\n  }\n\n  // if intersecting and we made it here, then we saw no misses\n  // if not intersecting, then we saw no matches\n  // if no active selections, return false\n  return n && intersect;\n}\nconst bisect = bisector($selectionId),\n  bisectLeft = bisect.left,\n  bisectRight = bisect.right;\nfunction selectionIdTest(name, datum, op) {\n  const data = this.context.data[name],\n    entries = data ? data.values.value : [],\n    unitIdx = data ? data[UNIT_INDEX] && data[UNIT_INDEX].value : undefined,\n    intersect = op === Intersect,\n    value = $selectionId(datum),\n    index = bisectLeft(entries, value);\n  if (index === entries.length) return false;\n  if ($selectionId(entries[index]) !== value) return false;\n  if (unitIdx && intersect) {\n    if (unitIdx.size === 1) return true;\n    if (bisectRight(entries, value) - index < unitIdx.size) return false;\n  }\n  return true;\n}\n\n/**\n * Maps an array of scene graph items to an array of selection tuples.\n * @param {string} name  - The name of the dataset representing the selection.\n * @param {string} base  - The base object that generated tuples extend.\n *\n * @returns {array} An array of selection entries for the given unit.\n */\nfunction selectionTuples(array, base) {\n  return array.map(x => extend(base.fields ? {\n    values: base.fields.map(f => getter(f)(x.datum))\n  } : {\n    [SelectionId]: $selectionId(x.datum)\n  }, base));\n}\n\n/**\n * Resolves selection for use as a scale domain or reads via the API.\n * @param {string} name - The name of the dataset representing the selection\n * @param {string} [op='union'] - The set operation for combining selections.\n *                 One of 'intersect' or 'union' (default).\n * @param {boolean} isMulti - Identifies a \"multi\" selection to perform more\n *                 expensive resolution computation.\n * @param {boolean} vl5 - With Vega-Lite v5, \"multi\" selections are now called \"point\"\n *                 selections, and thus the resolved tuple should reflect this name.\n *                 This parameter allows us to reflect this change without triggering\n *                 a major version bump for Vega.\n * @returns {object} An object of selected fields and values.\n */\nfunction selectionResolve(name, op, isMulti, vl5) {\n  var data = this.context.data[name],\n    entries = data ? data.values.value : [],\n    resolved = {},\n    multiRes = {},\n    types = {},\n    entry,\n    fields,\n    values,\n    unit,\n    field,\n    value,\n    res,\n    resUnit,\n    type,\n    union,\n    n = entries.length,\n    i = 0,\n    j,\n    m;\n\n  // First union all entries within the same unit.\n  for (; i < n; ++i) {\n    entry = entries[i];\n    unit = entry.unit;\n    fields = entry.fields;\n    values = entry.values;\n    if (fields && values) {\n      // Intentional selection stores\n      for (j = 0, m = fields.length; j < m; ++j) {\n        field = fields[j];\n        res = resolved[field.field] || (resolved[field.field] = {});\n        resUnit = res[unit] || (res[unit] = []);\n        types[field.field] = type = field.type.charAt(0);\n        union = ops[`${type}_union`];\n        res[unit] = union(resUnit, array(values[j]));\n      }\n\n      // If the same multi-selection is repeated over views and projected over\n      // an encoding, it may operate over different fields making it especially\n      // tricky to reliably resolve it. At best, we can de-dupe identical entries\n      // but doing so may be more computationally expensive than it is worth.\n      // Instead, for now, we simply transform our store representation into\n      // a more human-friendly one.\n      if (isMulti) {\n        resUnit = multiRes[unit] || (multiRes[unit] = []);\n        resUnit.push(array(values).reduce((obj, curr, j) => (obj[fields[j].field] = curr, obj), {}));\n      }\n    } else {\n      // Short circuit extensional selectionId stores which hold sorted IDs unique to each unit.\n      field = SelectionId;\n      value = $selectionId(entry);\n      res = resolved[field] || (resolved[field] = {});\n      resUnit = res[unit] || (res[unit] = []);\n      resUnit.push(value);\n      if (isMulti) {\n        resUnit = multiRes[unit] || (multiRes[unit] = []);\n        resUnit.push({\n          [SelectionId]: value\n        });\n      }\n    }\n  }\n\n  // Then resolve fields across units as per the op.\n  op = op || Union;\n  if (resolved[SelectionId]) {\n    resolved[SelectionId] = ops[`${SelectionId}_${op}`](...Object.values(resolved[SelectionId]));\n  } else {\n    Object.keys(resolved).forEach(field => {\n      resolved[field] = Object.keys(resolved[field]).map(unit => resolved[field][unit]).reduce((acc, curr) => acc === undefined ? curr : ops[`${types[field]}_${op}`](acc, curr));\n    });\n  }\n  entries = Object.keys(multiRes);\n  if (isMulti && entries.length) {\n    const key = vl5 ? VlPoint : VlMulti;\n    resolved[key] = op === Union ? {\n      [Or]: entries.reduce((acc, k) => (acc.push(...multiRes[k]), acc), [])\n    } : {\n      [And]: entries.map(k => ({\n        [Or]: multiRes[k]\n      }))\n    };\n  }\n  return resolved;\n}\nvar ops = {\n  [`${SelectionId}_union`]: union,\n  [`${SelectionId}_intersect`]: intersection,\n  E_union: function (base, value) {\n    if (!base.length) return value;\n    var i = 0,\n      n = value.length;\n    for (; i < n; ++i) if (base.indexOf(value[i]) < 0) base.push(value[i]);\n    return base;\n  },\n  E_intersect: function (base, value) {\n    return !base.length ? value : base.filter(v => value.indexOf(v) >= 0);\n  },\n  R_union: function (base, value) {\n    var lo = toNumber(value[0]),\n      hi = toNumber(value[1]);\n    if (lo > hi) {\n      lo = value[1];\n      hi = value[0];\n    }\n    if (!base.length) return [lo, hi];\n    if (base[0] > lo) base[0] = lo;\n    if (base[1] < hi) base[1] = hi;\n    return base;\n  },\n  R_intersect: function (base, value) {\n    var lo = toNumber(value[0]),\n      hi = toNumber(value[1]);\n    if (lo > hi) {\n      lo = value[1];\n      hi = value[0];\n    }\n    if (!base.length) return [lo, hi];\n    if (hi < base[0] || base[1] < lo) {\n      return [];\n    } else {\n      if (base[0] < lo) base[0] = lo;\n      if (base[1] > hi) base[1] = hi;\n    }\n    return base;\n  }\n};\n\nconst DataPrefix = ':',\n  IndexPrefix = '@';\nfunction selectionVisitor(name, args, scope, params) {\n  if (args[0].type !== Literal) error('First argument to selection functions must be a string literal.');\n  const data = args[0].value,\n    op = args.length >= 2 && peek(args).value,\n    field = 'unit',\n    indexName = IndexPrefix + field,\n    dataName = DataPrefix + data;\n\n  // eslint-disable-next-line no-prototype-builtins\n  if (op === Intersect && !hasOwnProperty(params, indexName)) {\n    params[indexName] = scope.getData(data).indataRef(scope, field);\n  }\n\n  // eslint-disable-next-line no-prototype-builtins\n  if (!hasOwnProperty(params, dataName)) {\n    params[dataName] = scope.getData(data).tuplesRef();\n  }\n}\n\nexport { selectionIdTest, selectionResolve, selectionTest, selectionTuples, selectionVisitor };\n", "import { truthy, error, hasOwnProperty, isFunction, isString, stringValue, extend, isArray, isObject, field, peek, identity, array as array$1, isBoolean, isDate, isNumber, isRegExp, toBoolean, toDate, toNumber, toString, flush, lerp, pad, span, inrange, truncate, quarter, utcquarter, extent, clampRange, panLinear, panLog, panPow, panSymlog, zoomLinear, zoomLog, zoomPow, zoomSymlog } from 'vega-util';\nimport { Literal, codegenExpression, constants, functions, parseExpression, CallExpression } from 'vega-expression';\nimport { isRegisteredScale, bandSpace, scale as scale$1, scaleFraction } from 'vega-scale';\nimport { geoArea as geoArea$1, geoBounds as geoBounds$1, geoCentroid as geoCentroid$1 } from 'd3-geo';\nimport { rgb, lab, hcl, hsl } from 'd3-color';\nimport { isTuple } from 'vega-dataflow';\nimport { Gradient, pathRender, pathParse, Bounds, intersect as intersect$1 } from 'vega-scenegraph';\nimport { selectionVisitor, selectionTest, selectionIdTest, selectionResolve, selectionTuples } from 'vega-selections';\nimport { random, cumulativeNormal, cumulativeLogNormal, cumulativeUniform, densityNormal, densityLogNormal, densityUniform, quantileNormal, quantileLogNormal, quantileUniform, sampleNormal, sampleLogNormal, sampleUniform } from 'vega-statistics';\nimport { utcOffset, utcSequence, timeOffset, timeSequence, timeUnitSpecifier, week, utcweek, dayofyear, utcdayofyear } from 'vega-time';\nimport { range as range$1 } from 'd3-array';\n\nfunction data(name) {\n  const data = this.context.data[name];\n  return data ? data.values.value : [];\n}\nfunction indata(name, field, value) {\n  const index = this.context.data[name]['index:' + field],\n    entry = index ? index.value.get(value) : undefined;\n  return entry ? entry.count : entry;\n}\nfunction setdata(name, tuples) {\n  const df = this.context.dataflow,\n    data = this.context.data[name],\n    input = data.input;\n  df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n  return 1;\n}\n\nfunction encode (item, name, retval) {\n  if (item) {\n    const df = this.context.dataflow,\n      target = item.mark.source;\n    df.pulse(target, df.changeset().encode(item, name));\n  }\n  return retval !== undefined ? retval : item;\n}\n\nconst wrap = method => function (value, spec) {\n  const locale = this.context.dataflow.locale();\n  return locale[method](spec)(value);\n};\nconst format = wrap('format');\nconst timeFormat = wrap('timeFormat');\nconst utcFormat = wrap('utcFormat');\nconst timeParse = wrap('timeParse');\nconst utcParse = wrap('utcParse');\nconst dateObj = new Date(2000, 0, 1);\nfunction time(month, day, specifier) {\n  if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n  dateObj.setYear(2000);\n  dateObj.setMonth(month);\n  dateObj.setDate(day);\n  return timeFormat.call(this, dateObj, specifier);\n}\nfunction monthFormat(month) {\n  return time.call(this, month, 1, '%B');\n}\nfunction monthAbbrevFormat(month) {\n  return time.call(this, month, 1, '%b');\n}\nfunction dayFormat(day) {\n  return time.call(this, 0, 2 + day, '%A');\n}\nfunction dayAbbrevFormat(day) {\n  return time.call(this, 0, 2 + day, '%a');\n}\n\nconst DataPrefix = ':';\nconst IndexPrefix = '@';\nconst ScalePrefix = '%';\nconst SignalPrefix = '$';\n\nfunction dataVisitor(name, args, scope, params) {\n  if (args[0].type !== Literal) {\n    error('First argument to data functions must be a string literal.');\n  }\n  const data = args[0].value,\n    dataName = DataPrefix + data;\n  if (!hasOwnProperty(dataName, params)) {\n    try {\n      params[dataName] = scope.getData(data).tuplesRef();\n    } catch (err) {\n      // if data set does not exist, there's nothing to track\n    }\n  }\n}\nfunction indataVisitor(name, args, scope, params) {\n  if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n  if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n  const data = args[0].value,\n    field = args[1].value,\n    indexName = IndexPrefix + field;\n  if (!hasOwnProperty(indexName, params)) {\n    params[indexName] = scope.getData(data).indataRef(scope, field);\n  }\n}\nfunction scaleVisitor(name, args, scope, params) {\n  if (args[0].type === Literal) {\n    // add scale dependency\n    addScaleDependency(scope, params, args[0].value);\n  } else {\n    // indirect scale lookup; add all scales as parameters\n    for (name in scope.scales) {\n      addScaleDependency(scope, params, name);\n    }\n  }\n}\nfunction addScaleDependency(scope, params, name) {\n  const scaleName = ScalePrefix + name;\n  if (!hasOwnProperty(params, scaleName)) {\n    try {\n      params[scaleName] = scope.scaleRef(name);\n    } catch (err) {\n      // TODO: error handling? warning?\n    }\n  }\n}\n\nfunction getScale(nameOrFunction, ctx) {\n  if (isFunction(nameOrFunction)) {\n    return nameOrFunction;\n  }\n  if (isString(nameOrFunction)) {\n    const maybeScale = ctx.scales[nameOrFunction];\n    return maybeScale && isRegisteredScale(maybeScale.value) ? maybeScale.value : undefined;\n  }\n  return undefined;\n}\nfunction internalScaleFunctions(codegen, fnctx, visitors) {\n  // add helper method to the 'this' expression function context\n  fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0;\n\n  // register AST visitors for internal scale functions\n  visitors._bandwidth = scaleVisitor;\n  visitors._range = scaleVisitor;\n  visitors._scale = scaleVisitor;\n\n  // resolve scale reference directly to the signal hash argument\n  const ref = arg => '_[' + (arg.type === Literal ? stringValue(ScalePrefix + arg.value) : stringValue(ScalePrefix) + '+' + codegen(arg)) + ']';\n\n  // define and return internal scale function code generators\n  // these internal functions are called by mark encoders\n  return {\n    _bandwidth: args => `this.__bandwidth(${ref(args[0])})`,\n    _range: args => `${ref(args[0])}.range()`,\n    _scale: args => `${ref(args[0])}(${codegen(args[1])})`\n  };\n}\n\nfunction geoMethod(methodName, globalMethod) {\n  return function (projection, geojson, group) {\n    if (projection) {\n      // projection defined, use it\n      const p = getScale(projection, (group || this).context);\n      return p && p.path[methodName](geojson);\n    } else {\n      // projection undefined, use global method\n      return globalMethod(geojson);\n    }\n  };\n}\nconst geoArea = geoMethod('area', geoArea$1);\nconst geoBounds = geoMethod('bounds', geoBounds$1);\nconst geoCentroid = geoMethod('centroid', geoCentroid$1);\nfunction geoScale(projection, group) {\n  const p = getScale(projection, (group || this).context);\n  return p && p.scale();\n}\n\nfunction inScope (item) {\n  const group = this.context.group;\n  let value = false;\n  if (group) while (item) {\n    if (item === group) {\n      value = true;\n      break;\n    }\n    item = item.mark.group;\n  }\n  return value;\n}\n\nfunction log(df, method, args) {\n  try {\n    df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n  } catch (err) {\n    df.warn(err);\n  }\n  return args[args.length - 1];\n}\nfunction warn() {\n  return log(this.context.dataflow, 'warn', arguments);\n}\nfunction info() {\n  return log(this.context.dataflow, 'info', arguments);\n}\nfunction debug() {\n  return log(this.context.dataflow, 'debug', arguments);\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n  const val = channelValue / 255;\n  if (val <= 0.03928) {\n    return val / 12.92;\n  }\n  return Math.pow((val + 0.055) / 1.055, 2.4);\n}\nfunction luminance(color) {\n  const c = rgb(color),\n    r = channel_luminance_value(c.r),\n    g = channel_luminance_value(c.g),\n    b = channel_luminance_value(c.b);\n  return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nfunction contrast(color1, color2) {\n  const lum1 = luminance(color1),\n    lum2 = luminance(color2),\n    lumL = Math.max(lum1, lum2),\n    lumD = Math.min(lum1, lum2);\n  return (lumL + 0.05) / (lumD + 0.05);\n}\n\nfunction merge () {\n  const args = [].slice.call(arguments);\n  args.unshift({});\n  return extend(...args);\n}\n\nfunction equal(a, b) {\n  return a === b || a !== a && b !== b ? true : isArray(a) ? isArray(b) && a.length === b.length ? equalArray(a, b) : false : isObject(a) && isObject(b) ? equalObject(a, b) : false;\n}\nfunction equalArray(a, b) {\n  for (let i = 0, n = a.length; i < n; ++i) {\n    if (!equal(a[i], b[i])) return false;\n  }\n  return true;\n}\nfunction equalObject(a, b) {\n  for (const key in a) {\n    if (!equal(a[key], b[key])) return false;\n  }\n  return true;\n}\nfunction removePredicate(props) {\n  return _ => equalObject(props, _);\n}\nfunction modify (name, insert, remove, toggle, modify, values) {\n  const df = this.context.dataflow,\n    data = this.context.data[name],\n    input = data.input,\n    stamp = df.stamp();\n  let changes = data.changes,\n    predicate,\n    key;\n  if (df._trigger === false || !(input.value.length || insert || toggle)) {\n    // nothing to do!\n    return 0;\n  }\n  if (!changes || changes.stamp < stamp) {\n    data.changes = changes = df.changeset();\n    changes.stamp = stamp;\n    df.runAfter(() => {\n      data.modified = true;\n      df.pulse(input, changes).run();\n    }, true, 1);\n  }\n  if (remove) {\n    predicate = remove === true ? truthy : isArray(remove) || isTuple(remove) ? remove : removePredicate(remove);\n    changes.remove(predicate);\n  }\n  if (insert) {\n    changes.insert(insert);\n  }\n  if (toggle) {\n    predicate = removePredicate(toggle);\n    if (input.value.some(predicate)) {\n      changes.remove(predicate);\n    } else {\n      changes.insert(toggle);\n    }\n  }\n  if (modify) {\n    for (key in values) {\n      changes.modify(modify, key, values[key]);\n    }\n  }\n  return 1;\n}\n\nfunction pinchDistance(event) {\n  const t = event.touches,\n    dx = t[0].clientX - t[1].clientX,\n    dy = t[0].clientY - t[1].clientY;\n  return Math.hypot(dx, dy);\n}\nfunction pinchAngle(event) {\n  const t = event.touches;\n  return Math.atan2(t[0].clientY - t[1].clientY, t[0].clientX - t[1].clientX);\n}\n\n// memoize accessor functions\nconst accessors = {};\nfunction pluck (data, name) {\n  const accessor = accessors[name] || (accessors[name] = field(name));\n  return isArray(data) ? data.map(accessor) : accessor(data);\n}\n\nfunction array(seq) {\n  return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\nfunction sequence(seq) {\n  return array(seq) || (isString(seq) ? seq : null);\n}\nfunction join(seq) {\n  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    args[_key - 1] = arguments[_key];\n  }\n  return array(seq).join(...args);\n}\nfunction indexof(seq) {\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n  return sequence(seq).indexOf(...args);\n}\nfunction lastindexof(seq) {\n  for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n    args[_key3 - 1] = arguments[_key3];\n  }\n  return sequence(seq).lastIndexOf(...args);\n}\nfunction slice(seq) {\n  for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n    args[_key4 - 1] = arguments[_key4];\n  }\n  return sequence(seq).slice(...args);\n}\nfunction replace(str, pattern, repl) {\n  if (isFunction(repl)) error('Function argument passed to replace.');\n  return String(str).replace(pattern, repl);\n}\nfunction reverse(seq) {\n  return array(seq).slice().reverse();\n}\n\nfunction bandspace(count, paddingInner, paddingOuter) {\n  return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\nfunction bandwidth(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s && s.bandwidth ? s.bandwidth() : 0;\n}\nfunction copy(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s.copy() : undefined;\n}\nfunction domain(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s.domain() : [];\n}\nfunction invert(name, range, group) {\n  const s = getScale(name, (group || this).context);\n  return !s ? undefined : isArray(range) ? (s.invertRange || s.invert)(range) : (s.invert || s.invertExtent)(range);\n}\nfunction range(name, group) {\n  const s = getScale(name, (group || this).context);\n  return s && s.range ? s.range() : [];\n}\nfunction scale(name, value, group) {\n  const s = getScale(name, (group || this).context);\n  return s ? s(value) : undefined;\n}\n\nfunction scaleGradient (scale, p0, p1, count, group) {\n  scale = getScale(scale, (group || this).context);\n  const gradient = Gradient(p0, p1);\n  let stops = scale.domain(),\n    min = stops[0],\n    max = peek(stops),\n    fraction = identity;\n  if (!(max - min)) {\n    // expand scale if domain has zero span, fix #1479\n    scale = (scale.interpolator ? scale$1('sequential')().interpolator(scale.interpolator()) : scale$1('linear')().interpolate(scale.interpolate()).range(scale.range())).domain([min = 0, max = 1]);\n  } else {\n    fraction = scaleFraction(scale, min, max);\n  }\n  if (scale.ticks) {\n    stops = scale.ticks(+count || 15);\n    if (min !== stops[0]) stops.unshift(min);\n    if (max !== peek(stops)) stops.push(max);\n  }\n  stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n  return gradient;\n}\n\nfunction geoShape(projection, geojson, group) {\n  const p = getScale(projection, (group || this).context);\n  return function (context) {\n    return p ? p.path.context(context)(geojson) : '';\n  };\n}\nfunction pathShape(path) {\n  let p = null;\n  return function (context) {\n    return context ? pathRender(context, p = p || pathParse(path)) : path;\n  };\n}\n\nconst datum = d => d.data;\nfunction treeNodes(name, context) {\n  const tree = data.call(context, name);\n  return tree.root && tree.root.lookup || {};\n}\nfunction treePath(name, source, target) {\n  const nodes = treeNodes(name, this),\n    s = nodes[source],\n    t = nodes[target];\n  return s && t ? s.path(t).map(datum) : undefined;\n}\nfunction treeAncestors(name, node) {\n  const n = treeNodes(name, this)[node];\n  return n ? n.ancestors().map(datum) : undefined;\n}\n\nconst _window = () => typeof window !== 'undefined' && window || null;\nfunction screen() {\n  const w = _window();\n  return w ? w.screen : {};\n}\nfunction windowSize() {\n  const w = _window();\n  return w ? [w.innerWidth, w.innerHeight] : [undefined, undefined];\n}\nfunction containerSize() {\n  const view = this.context.dataflow,\n    el = view.container && view.container();\n  return el ? [el.clientWidth, el.clientHeight] : [undefined, undefined];\n}\n\nfunction intersect (b, opt, group) {\n  if (!b) return [];\n  const [u, v] = b,\n    box = new Bounds().set(u[0], u[1], v[0], v[1]),\n    scene = group || this.context.dataflow.scenegraph().root;\n  return intersect$1(scene, box, filter(opt));\n}\nfunction filter(opt) {\n  let p = null;\n  if (opt) {\n    const types = array$1(opt.marktype),\n      names = array$1(opt.markname);\n    p = _ => (!types.length || types.some(t => _.marktype === t)) && (!names.length || names.some(s => _.name === s));\n  }\n  return p;\n}\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nfunction lassoAppend(lasso, x, y) {\n  let minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5;\n  lasso = array$1(lasso);\n  const last = lasso[lasso.length - 1];\n\n  // Add point to lasso if its the first point or distance to last point exceed minDist\n  return last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist ? [...lasso, [x, y]] : lasso;\n}\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nfunction lassoPath(lasso) {\n  return array$1(lasso).reduce((svg, _ref, i) => {\n    let [x, y] = _ref;\n    return svg += i == 0 ? `M ${x},${y} ` : i === lasso.length - 1 ? ' Z' : `L ${x},${y} `;\n  }, '');\n}\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nfunction intersectLasso(markname, pixelLasso, unit) {\n  const {\n    x,\n    y,\n    mark\n  } = unit;\n  const bb = new Bounds().set(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n\n  // Get bounding box around lasso\n  for (const [px, py] of pixelLasso) {\n    if (px < bb.x1) bb.x1 = px;\n    if (px > bb.x2) bb.x2 = px;\n    if (py < bb.y1) bb.y1 = py;\n    if (py > bb.y2) bb.y2 = py;\n  }\n\n  // Translate bb against unit coordinates\n  bb.translate(x, y);\n  const intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]], markname, mark);\n\n  // Check every point against the lasso\n  return intersection.filter(tuple => pointInPolygon(tuple.x, tuple.y, pixelLasso));\n}\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n  let intersections = 0;\n  for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n    const [prevX, prevY] = polygon[j];\n    const [x, y] = polygon[i];\n\n    // count intersections\n    if (y > testy != prevY > testy && testx < (prevX - x) * (testy - y) / (prevY - y) + x) {\n      intersections++;\n    }\n  }\n\n  // point is in polygon if intersection count is odd\n  return intersections & 1;\n}\n\n// Expression function context object\nconst functionContext = {\n  random() {\n    return random();\n  },\n  // override default\n  cumulativeNormal,\n  cumulativeLogNormal,\n  cumulativeUniform,\n  densityNormal,\n  densityLogNormal,\n  densityUniform,\n  quantileNormal,\n  quantileLogNormal,\n  quantileUniform,\n  sampleNormal,\n  sampleLogNormal,\n  sampleUniform,\n  isArray,\n  isBoolean,\n  isDate,\n  isDefined(_) {\n    return _ !== undefined;\n  },\n  isNumber,\n  isObject,\n  isRegExp,\n  isString,\n  isTuple,\n  isValid(_) {\n    return _ != null && _ === _;\n  },\n  toBoolean,\n  toDate(_) {\n    return toDate(_);\n  },\n  // suppress extra arguments\n  toNumber,\n  toString,\n  indexof,\n  join,\n  lastindexof,\n  replace,\n  reverse,\n  slice,\n  flush,\n  lerp,\n  merge,\n  pad,\n  peek,\n  pluck,\n  span,\n  inrange,\n  truncate,\n  rgb,\n  lab,\n  hcl,\n  hsl,\n  luminance,\n  contrast,\n  sequence: range$1,\n  format,\n  utcFormat,\n  utcParse,\n  utcOffset,\n  utcSequence,\n  timeFormat,\n  timeParse,\n  timeOffset,\n  timeSequence,\n  timeUnitSpecifier,\n  monthFormat,\n  monthAbbrevFormat,\n  dayFormat,\n  dayAbbrevFormat,\n  quarter,\n  utcquarter,\n  week,\n  utcweek,\n  dayofyear,\n  utcdayofyear,\n  warn,\n  info,\n  debug,\n  extent(_) {\n    return extent(_);\n  },\n  // suppress extra arguments\n  inScope,\n  intersect,\n  clampRange,\n  pinchDistance,\n  pinchAngle,\n  screen,\n  containerSize,\n  windowSize,\n  bandspace,\n  setdata,\n  pathShape,\n  panLinear,\n  panLog,\n  panPow,\n  panSymlog,\n  zoomLinear,\n  zoomLog,\n  zoomPow,\n  zoomSymlog,\n  encode,\n  modify,\n  lassoAppend,\n  lassoPath,\n  intersectLasso\n};\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'],\n  // event functions\n  eventPrefix = 'event.vega.',\n  // event function prefix\n  thisPrefix = 'this.',\n  // function context prefix\n  astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nconst codegenParams = {\n  forbidden: ['_'],\n  allowed: ['datum', 'event', 'item'],\n  fieldvar: 'datum',\n  globalvar: id => `_[${stringValue(SignalPrefix + id)}]`,\n  functions: buildFunctions,\n  constants: constants,\n  visitors: astVisitors\n};\n\n// export code generator\nconst codeGenerator = codegenExpression(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n  const fn = functions(codegen);\n  eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n  for (const name in functionContext) {\n    fn[name] = thisPrefix + name;\n  }\n  extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n  return fn;\n}\n\n// Register an expression function\nfunction expressionFunction(name, fn, visitor) {\n  if (arguments.length === 1) {\n    return functionContext[name];\n  }\n\n  // register with the functionContext\n  functionContext[name] = fn;\n\n  // if there is an astVisitor register that, too\n  if (visitor) astVisitors[name] = visitor;\n\n  // if the code generator has already been initialized,\n  // we need to also register the function with it\n  if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n  return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('geoScale', geoScale, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\n\nfunction parser (expr, scope) {\n  const params = {};\n\n  // parse the expression to an abstract syntax tree (ast)\n  let ast;\n  try {\n    expr = isString(expr) ? expr : stringValue(expr) + '';\n    ast = parseExpression(expr);\n  } catch (err) {\n    error('Expression parse error: ' + expr);\n  }\n\n  // analyze ast function calls for dependencies\n  ast.visit(node => {\n    if (node.type !== CallExpression) return;\n    const name = node.callee.name,\n      visit = codegenParams.visitors[name];\n    if (visit) visit(name, node.arguments, scope, params);\n  });\n\n  // perform code generation\n  const gen = codeGenerator(ast);\n\n  // collect signal dependencies\n  gen.globals.forEach(name => {\n    const signalName = SignalPrefix + name;\n    if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n      params[signalName] = scope.signalRef(name);\n    }\n  });\n\n  // return generated expression code and dependencies\n  return {\n    $expr: extend({\n      code: gen.code\n    }, scope.options.ast ? {\n      ast\n    } : null),\n    $fields: gen.fields,\n    $params: params\n  };\n}\n\nexport { DataPrefix, IndexPrefix, ScalePrefix, SignalPrefix, bandspace, bandwidth, codeGenerator, codegenParams, containerSize, contrast, copy, data, dataVisitor, dayAbbrevFormat, dayFormat, debug, domain, encode, expressionFunction, format, functionContext, geoArea, geoBounds, geoCentroid, geoScale, geoShape, inScope, indata, indataVisitor, indexof, info, invert, join, lastindexof, luminance, merge, modify, monthAbbrevFormat, monthFormat, parser as parseExpression, pathShape, pinchAngle, pinchDistance, pluck, range, replace, reverse, scale, scaleGradient, scaleVisitor, screen, setdata, slice, timeFormat, timeParse, treeAncestors, treePath, utcFormat, utcParse, warn, windowSize };\n", "import { toSet, stringValue, error, isArray, isObject, hasOwnProperty, accessor, key, field, array, compare, truthy } from 'vega-util';\nimport { tupleid } from 'vega-dataflow';\n\n/**\n * Parse a serialized dataflow specification.\n */\nfunction parse (spec) {\n  const ctx = this,\n    operators = spec.operators || [];\n\n  // parse background\n  if (spec.background) {\n    ctx.background = spec.background;\n  }\n\n  // parse event configuration\n  if (spec.eventConfig) {\n    ctx.eventConfig = spec.eventConfig;\n  }\n\n  // parse locale configuration\n  if (spec.locale) {\n    ctx.locale = spec.locale;\n  }\n\n  // parse operators\n  operators.forEach(entry => ctx.parseOperator(entry));\n\n  // parse operator parameters\n  operators.forEach(entry => ctx.parseOperatorParameters(entry));\n\n  // parse streams\n  (spec.streams || []).forEach(entry => ctx.parseStream(entry));\n\n  // parse updates\n  (spec.updates || []).forEach(entry => ctx.parseUpdate(entry));\n  return ctx.resolve();\n}\n\nconst Skip = toSet(['rule']),\n  Swap = toSet(['group', 'image', 'rect']);\nfunction adjustSpatial(encode, marktype) {\n  let code = '';\n  if (Skip[marktype]) return code;\n  if (encode.x2) {\n    if (encode.x) {\n      if (Swap[marktype]) {\n        code += 'if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;';\n      }\n      code += 'o.width=o.x2-o.x;';\n    } else {\n      code += 'o.x=o.x2-(o.width||0);';\n    }\n  }\n  if (encode.xc) {\n    code += 'o.x=o.xc-(o.width||0)/2;';\n  }\n  if (encode.y2) {\n    if (encode.y) {\n      if (Swap[marktype]) {\n        code += 'if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;';\n      }\n      code += 'o.height=o.y2-o.y;';\n    } else {\n      code += 'o.y=o.y2-(o.height||0);';\n    }\n  }\n  if (encode.yc) {\n    code += 'o.y=o.yc-(o.height||0)/2;';\n  }\n  return code;\n}\nfunction canonicalType(type) {\n  return (type + '').toLowerCase();\n}\nfunction isOperator(type) {\n  return canonicalType(type) === 'operator';\n}\nfunction isCollect(type) {\n  return canonicalType(type) === 'collect';\n}\n\nfunction expression(ctx, args, code) {\n  // wrap code in return statement if expression does not terminate\n  if (!code.endsWith(';')) {\n    code = 'return(' + code + ');';\n  }\n  const fn = Function(...args.concat(code));\n  return ctx && ctx.functions ? fn.bind(ctx.functions) : fn;\n}\n\n// generate code for comparing a single field\nfunction _compare(u, v, lt, gt) {\n  return `((u = ${u}) < (v = ${v}) || u == null) && v != null ? ${lt}\n  : (u > v || v == null) && u != null ? ${gt}\n  : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ${lt}\n  : v !== v && u === u ? ${gt} : `;\n}\nvar expressionCodegen = {\n  /**\n   * Parse an expression used to update an operator value.\n   */\n  operator: (ctx, expr) => expression(ctx, ['_'], expr.code),\n  /**\n   * Parse an expression provided as an operator parameter value.\n   */\n  parameter: (ctx, expr) => expression(ctx, ['datum', '_'], expr.code),\n  /**\n   * Parse an expression applied to an event stream.\n   */\n  event: (ctx, expr) => expression(ctx, ['event'], expr.code),\n  /**\n   * Parse an expression used to handle an event-driven operator update.\n   */\n  handler: (ctx, expr) => {\n    const code = `var datum=event.item&&event.item.datum;return ${expr.code};`;\n    return expression(ctx, ['_', 'event'], code);\n  },\n  /**\n   * Parse an expression that performs visual encoding.\n   */\n  encode: (ctx, encode) => {\n    const {\n      marktype,\n      channels\n    } = encode;\n    let code = 'var o=item,datum=o.datum,m=0,$;';\n    for (const name in channels) {\n      const o = 'o[' + stringValue(name) + ']';\n      code += `$=${channels[name].code};if(${o}!==$)${o}=$,m=1;`;\n    }\n    code += adjustSpatial(channels, marktype);\n    code += 'return m;';\n    return expression(ctx, ['item', '_'], code);\n  },\n  /**\n   * Optimized code generators for access and comparison.\n   */\n  codegen: {\n    get(path) {\n      const ref = `[${path.map(stringValue).join('][')}]`;\n      const get = Function('_', `return _${ref};`);\n      get.path = ref;\n      return get;\n    },\n    comparator(fields, orders) {\n      let t;\n      const map = (f, i) => {\n        const o = orders[i];\n        let u, v;\n        if (f.path) {\n          u = `a${f.path}`;\n          v = `b${f.path}`;\n        } else {\n          (t = t || {})['f' + i] = f;\n          u = `this.f${i}(a)`;\n          v = `this.f${i}(b)`;\n        }\n        return _compare(u, v, -o, o);\n      };\n      const fn = Function('a', 'b', 'var u, v; return ' + fields.map(map).join('') + '0;');\n      return t ? fn.bind(t) : fn;\n    }\n  }\n};\n\n/**\n * Parse a dataflow operator.\n */\nfunction parseOperator(spec) {\n  const ctx = this;\n  if (isOperator(spec.type) || !spec.type) {\n    ctx.operator(spec, spec.update ? ctx.operatorExpression(spec.update) : null);\n  } else {\n    ctx.transform(spec, spec.type);\n  }\n}\n\n/**\n * Parse and assign operator parameters.\n */\nfunction parseOperatorParameters(spec) {\n  const ctx = this;\n  if (spec.params) {\n    const op = ctx.get(spec.id);\n    if (!op) error('Invalid operator id: ' + spec.id);\n    ctx.dataflow.connect(op, op.parameters(ctx.parseParameters(spec.params), spec.react, spec.initonly));\n  }\n}\n\n/**\n * Parse a set of operator parameters.\n */\nfunction parseParameters(spec, params) {\n  params = params || {};\n  const ctx = this;\n  for (const key in spec) {\n    const value = spec[key];\n    params[key] = isArray(value) ? value.map(v => parseParameter(v, ctx, params)) : parseParameter(value, ctx, params);\n  }\n  return params;\n}\n\n/**\n * Parse a single parameter.\n */\nfunction parseParameter(spec, ctx, params) {\n  if (!spec || !isObject(spec)) return spec;\n  for (let i = 0, n = PARSERS.length, p; i < n; ++i) {\n    p = PARSERS[i];\n    if (hasOwnProperty(spec, p.key)) {\n      return p.parse(spec, ctx, params);\n    }\n  }\n  return spec;\n}\n\n/** Reference parsers. */\nvar PARSERS = [{\n  key: '$ref',\n  parse: getOperator\n}, {\n  key: '$key',\n  parse: getKey\n}, {\n  key: '$expr',\n  parse: getExpression\n}, {\n  key: '$field',\n  parse: getField\n}, {\n  key: '$encode',\n  parse: getEncode\n}, {\n  key: '$compare',\n  parse: getCompare\n}, {\n  key: '$context',\n  parse: getContext\n}, {\n  key: '$subflow',\n  parse: getSubflow\n}, {\n  key: '$tupleid',\n  parse: getTupleId\n}];\n\n/**\n * Resolve an operator reference.\n */\nfunction getOperator(_, ctx) {\n  return ctx.get(_.$ref) || error('Operator not defined: ' + _.$ref);\n}\n\n/**\n * Resolve an expression reference.\n */\nfunction getExpression(_, ctx, params) {\n  if (_.$params) {\n    // parse expression parameters\n    ctx.parseParameters(_.$params, params);\n  }\n  const k = 'e:' + _.$expr.code;\n  return ctx.fn[k] || (ctx.fn[k] = accessor(ctx.parameterExpression(_.$expr), _.$fields));\n}\n\n/**\n * Resolve a key accessor reference.\n */\nfunction getKey(_, ctx) {\n  const k = 'k:' + _.$key + '_' + !!_.$flat;\n  return ctx.fn[k] || (ctx.fn[k] = key(_.$key, _.$flat, ctx.expr.codegen));\n}\n\n/**\n * Resolve a field accessor reference.\n */\nfunction getField(_, ctx) {\n  if (!_.$field) return null;\n  const k = 'f:' + _.$field + '_' + _.$name;\n  return ctx.fn[k] || (ctx.fn[k] = field(_.$field, _.$name, ctx.expr.codegen));\n}\n\n/**\n * Resolve a comparator function reference.\n */\nfunction getCompare(_, ctx) {\n  // As of Vega 5.5.3, $tupleid sort is no longer used.\n  // Keep here for now for backwards compatibility.\n  const k = 'c:' + _.$compare + '_' + _.$order,\n    c = array(_.$compare).map(_ => _ && _.$tupleid ? tupleid : _);\n  return ctx.fn[k] || (ctx.fn[k] = compare(c, _.$order, ctx.expr.codegen));\n}\n\n/**\n * Resolve an encode operator reference.\n */\nfunction getEncode(_, ctx) {\n  const spec = _.$encode,\n    encode = {};\n  for (const name in spec) {\n    const enc = spec[name];\n    encode[name] = accessor(ctx.encodeExpression(enc.$expr), enc.$fields);\n    encode[name].output = enc.$output;\n  }\n  return encode;\n}\n\n/**\n * Resolve a context reference.\n */\nfunction getContext(_, ctx) {\n  return ctx;\n}\n\n/**\n * Resolve a recursive subflow specification.\n */\nfunction getSubflow(_, ctx) {\n  const spec = _.$subflow;\n  return function (dataflow, key, parent) {\n    const subctx = ctx.fork().parse(spec),\n      op = subctx.get(spec.operators[0].id),\n      p = subctx.signals.parent;\n    if (p) p.set(parent);\n    op.detachSubflow = () => ctx.detach(subctx);\n    return op;\n  };\n}\n\n/**\n * Resolve a tuple id reference.\n */\nfunction getTupleId() {\n  return tupleid;\n}\n\n/**\n * Parse an event stream specification.\n */\nfunction parseStream (spec) {\n  var ctx = this,\n    filter = spec.filter != null ? ctx.eventExpression(spec.filter) : undefined,\n    stream = spec.stream != null ? ctx.get(spec.stream) : undefined,\n    args;\n  if (spec.source) {\n    stream = ctx.events(spec.source, spec.type, filter);\n  } else if (spec.merge) {\n    args = spec.merge.map(_ => ctx.get(_));\n    stream = args[0].merge.apply(args[0], args.slice(1));\n  }\n  if (spec.between) {\n    args = spec.between.map(_ => ctx.get(_));\n    stream = stream.between(args[0], args[1]);\n  }\n  if (spec.filter) {\n    stream = stream.filter(filter);\n  }\n  if (spec.throttle != null) {\n    stream = stream.throttle(+spec.throttle);\n  }\n  if (spec.debounce != null) {\n    stream = stream.debounce(+spec.debounce);\n  }\n  if (stream == null) {\n    error('Invalid stream definition: ' + JSON.stringify(spec));\n  }\n  if (spec.consume) stream.consume(true);\n  ctx.stream(spec, stream);\n}\n\n/**\n * Parse an event-driven operator update.\n */\nfunction parseUpdate (spec) {\n  var ctx = this,\n    srcid = isObject(srcid = spec.source) ? srcid.$ref : srcid,\n    source = ctx.get(srcid),\n    target = null,\n    update = spec.update,\n    params = undefined;\n  if (!source) error('Source not defined: ' + spec.source);\n  target = spec.target && spec.target.$expr ? ctx.eventExpression(spec.target.$expr) : ctx.get(spec.target);\n  if (update && update.$expr) {\n    if (update.$params) {\n      params = ctx.parseParameters(update.$params);\n    }\n    update = ctx.handlerExpression(update.$expr);\n  }\n  ctx.update(spec, source, target, update, params);\n}\n\nconst SKIP = {\n  skip: true\n};\nfunction getState(options) {\n  var ctx = this,\n    state = {};\n  if (options.signals) {\n    var signals = state.signals = {};\n    Object.keys(ctx.signals).forEach(key => {\n      const op = ctx.signals[key];\n      if (options.signals(key, op)) {\n        signals[key] = op.value;\n      }\n    });\n  }\n  if (options.data) {\n    var data = state.data = {};\n    Object.keys(ctx.data).forEach(key => {\n      const dataset = ctx.data[key];\n      if (options.data(key, dataset)) {\n        data[key] = dataset.input.value;\n      }\n    });\n  }\n  if (ctx.subcontext && options.recurse !== false) {\n    state.subcontext = ctx.subcontext.map(ctx => ctx.getState(options));\n  }\n  return state;\n}\nfunction setState(state) {\n  var ctx = this,\n    df = ctx.dataflow,\n    data = state.data,\n    signals = state.signals;\n  Object.keys(signals || {}).forEach(key => {\n    df.update(ctx.signals[key], signals[key], SKIP);\n  });\n  Object.keys(data || {}).forEach(key => {\n    df.pulse(ctx.data[key].input, df.changeset().remove(truthy).insert(data[key]));\n  });\n  (state.subcontext || []).forEach((substate, i) => {\n    const subctx = ctx.subcontext[i];\n    if (subctx) subctx.setState(substate);\n  });\n}\n\n/**\n * Context objects store the current parse state.\n * Enables lookup of parsed operators, event streams, accessors, etc.\n * Provides a 'fork' method for creating child contexts for subflows.\n */\nfunction context (df, transforms, functions, expr) {\n  return new Context(df, transforms, functions, expr);\n}\nfunction Context(df, transforms, functions, expr) {\n  this.dataflow = df;\n  this.transforms = transforms;\n  this.events = df.events.bind(df);\n  this.expr = expr || expressionCodegen, this.signals = {};\n  this.scales = {};\n  this.nodes = {};\n  this.data = {};\n  this.fn = {};\n  if (functions) {\n    this.functions = Object.create(functions);\n    this.functions.context = this;\n  }\n}\nfunction Subcontext(ctx) {\n  this.dataflow = ctx.dataflow;\n  this.transforms = ctx.transforms;\n  this.events = ctx.events;\n  this.expr = ctx.expr;\n  this.signals = Object.create(ctx.signals);\n  this.scales = Object.create(ctx.scales);\n  this.nodes = Object.create(ctx.nodes);\n  this.data = Object.create(ctx.data);\n  this.fn = Object.create(ctx.fn);\n  if (ctx.functions) {\n    this.functions = Object.create(ctx.functions);\n    this.functions.context = this;\n  }\n}\nContext.prototype = Subcontext.prototype = {\n  fork() {\n    const ctx = new Subcontext(this);\n    (this.subcontext || (this.subcontext = [])).push(ctx);\n    return ctx;\n  },\n  detach(ctx) {\n    this.subcontext = this.subcontext.filter(c => c !== ctx);\n\n    // disconnect all nodes in the subcontext\n    // wipe out targets first for better efficiency\n    const keys = Object.keys(ctx.nodes);\n    for (const key of keys) ctx.nodes[key]._targets = null;\n    for (const key of keys) ctx.nodes[key].detach();\n    ctx.nodes = null;\n  },\n  get(id) {\n    return this.nodes[id];\n  },\n  set(id, node) {\n    return this.nodes[id] = node;\n  },\n  add(spec, op) {\n    const ctx = this,\n      df = ctx.dataflow,\n      data = spec.value;\n    ctx.set(spec.id, op);\n    if (isCollect(spec.type) && data) {\n      if (data.$ingest) {\n        df.ingest(op, data.$ingest, data.$format);\n      } else if (data.$request) {\n        df.preload(op, data.$request, data.$format);\n      } else {\n        df.pulse(op, df.changeset().insert(data));\n      }\n    }\n    if (spec.root) {\n      ctx.root = op;\n    }\n    if (spec.parent) {\n      let p = ctx.get(spec.parent.$ref);\n      if (p) {\n        df.connect(p, [op]);\n        op.targets().add(p);\n      } else {\n        (ctx.unresolved = ctx.unresolved || []).push(() => {\n          p = ctx.get(spec.parent.$ref);\n          df.connect(p, [op]);\n          op.targets().add(p);\n        });\n      }\n    }\n    if (spec.signal) {\n      ctx.signals[spec.signal] = op;\n    }\n    if (spec.scale) {\n      ctx.scales[spec.scale] = op;\n    }\n    if (spec.data) {\n      for (const name in spec.data) {\n        const data = ctx.data[name] || (ctx.data[name] = {});\n        spec.data[name].forEach(role => data[role] = op);\n      }\n    }\n  },\n  resolve() {\n    (this.unresolved || []).forEach(fn => fn());\n    delete this.unresolved;\n    return this;\n  },\n  operator(spec, update) {\n    this.add(spec, this.dataflow.add(spec.value, update));\n  },\n  transform(spec, type) {\n    this.add(spec, this.dataflow.add(this.transforms[canonicalType(type)]));\n  },\n  stream(spec, stream) {\n    this.set(spec.id, stream);\n  },\n  update(spec, stream, target, update, params) {\n    this.dataflow.on(stream, target, update, params, spec.options);\n  },\n  // expression parsing\n  operatorExpression(expr) {\n    return this.expr.operator(this, expr);\n  },\n  parameterExpression(expr) {\n    return this.expr.parameter(this, expr);\n  },\n  eventExpression(expr) {\n    return this.expr.event(this, expr);\n  },\n  handlerExpression(expr) {\n    return this.expr.handler(this, expr);\n  },\n  encodeExpression(encode) {\n    return this.expr.encode(this, encode);\n  },\n  // parse methods\n  parse,\n  parseOperator,\n  parseOperatorParameters,\n  parseParameters,\n  parseStream,\n  parseUpdate,\n  // state methods\n  getState,\n  setState\n};\n\nexport { context };\n", "import { isString, hasOwnProperty, error, truthy, constant, extend, array, isObject, isArray, toSet, debounce, isDate, inherits, stringValue } from 'vega-util';\nimport { changeset, isChangeSet, EventStream, transforms, Dataflow, asyncCallback } from 'vega-dataflow';\nimport { point, renderModule, CanvasHandler, RenderType, Scenegraph } from 'vega-scenegraph';\nimport { tickStep } from 'd3-array';\nimport { functionContext } from 'vega-functions';\nimport { context } from 'vega-runtime';\nimport { interval } from 'd3-timer';\nimport { locale } from 'vega-format';\n\n// initialize aria role and label attributes\nfunction initializeAria(view) {\n  const el = view.container();\n  if (el) {\n    el.setAttribute('role', 'graphics-document');\n    el.setAttribute('aria-roleDescription', 'visualization');\n    ariaLabel(el, view.description());\n  }\n}\n\n// update aria-label if we have a DOM container element\nfunction ariaLabel(el, desc) {\n  if (el) desc == null ? el.removeAttribute('aria-label') : el.setAttribute('aria-label', desc);\n}\n\nfunction background (view) {\n  // respond to background signal\n  view.add(null, _ => {\n    view._background = _.bg;\n    view._resize = 1;\n    return _.bg;\n  }, {\n    bg: view._signals.background\n  });\n}\n\nconst Default = 'default';\nfunction cursor (view) {\n  // get cursor signal, add to dataflow if needed\n  const cursor = view._signals.cursor || (view._signals.cursor = view.add({\n    user: Default,\n    item: null\n  }));\n\n  // evaluate cursor on each mousemove event\n  view.on(view.events('view', 'mousemove'), cursor, (_, event) => {\n    const value = cursor.value,\n      user = value ? isString(value) ? value : value.user : Default,\n      item = event.item && event.item.cursor || null;\n    return value && user === value.user && item == value.item ? value : {\n      user: user,\n      item: item\n    };\n  });\n\n  // when cursor signal updates, set visible cursor\n  view.add(null, function (_) {\n    let user = _.cursor,\n      item = this.value;\n    if (!isString(user)) {\n      item = user.item;\n      user = user.user;\n    }\n    setCursor(view, user && user !== Default ? user : item || user);\n    return item;\n  }, {\n    cursor: cursor\n  });\n}\nfunction setCursor(view, cursor) {\n  const el = view.globalCursor() ? typeof document !== 'undefined' && document.body : view.container();\n  if (el) {\n    return cursor == null ? el.style.removeProperty('cursor') : el.style.cursor = cursor;\n  }\n}\n\nfunction dataref(view, name) {\n  var data = view._runtime.data;\n  if (!hasOwnProperty(data, name)) {\n    error('Unrecognized data set: ' + name);\n  }\n  return data[name];\n}\nfunction data(name, values) {\n  return arguments.length < 2 ? dataref(this, name).values.value : change.call(this, name, changeset().remove(truthy).insert(values));\n}\nfunction change(name, changes) {\n  if (!isChangeSet(changes)) {\n    error('Second argument to changes must be a changeset.');\n  }\n  const dataset = dataref(this, name);\n  dataset.modified = true;\n  return this.pulse(dataset.input, changes);\n}\nfunction insert(name, _) {\n  return change.call(this, name, changeset().insert(_));\n}\nfunction remove(name, _) {\n  return change.call(this, name, changeset().remove(_));\n}\n\nfunction width(view) {\n  var padding = view.padding();\n  return Math.max(0, view._viewWidth + padding.left + padding.right);\n}\nfunction height(view) {\n  var padding = view.padding();\n  return Math.max(0, view._viewHeight + padding.top + padding.bottom);\n}\nfunction offset(view) {\n  var padding = view.padding(),\n    origin = view._origin;\n  return [padding.left + origin[0], padding.top + origin[1]];\n}\nfunction resizeRenderer(view) {\n  var origin = offset(view),\n    w = width(view),\n    h = height(view);\n  view._renderer.background(view.background());\n  view._renderer.resize(w, h, origin);\n  view._handler.origin(origin);\n  view._resizeListeners.forEach(handler => {\n    try {\n      handler(w, h);\n    } catch (error) {\n      view.error(error);\n    }\n  });\n}\n\n/**\n * Extend an event with additional view-specific methods.\n * Adds a new property ('vega') to an event that provides a number\n * of methods for querying information about the current interaction.\n * The vega object provides the following methods:\n *   view - Returns the backing View instance.\n *   item - Returns the currently active scenegraph item (if any).\n *   group - Returns the currently active scenegraph group (if any).\n *     This method accepts a single string-typed argument indicating the name\n *     of the desired parent group. The scenegraph will be traversed from\n *     the item up towards the root to search for a matching group. If no\n *     argument is provided the enclosing group for the active item is\n *     returned, unless the item it itself a group, in which case it is\n *     returned directly.\n *   xy - Returns a two-element array containing the x and y coordinates for\n *     mouse or touch events. For touch events, this is based on the first\n *     elements in the changedTouches array. This method accepts a single\n *     argument: either an item instance or mark name that should serve as\n *     the reference coordinate system. If no argument is provided the\n *     top-level view coordinate system is assumed.\n *   x - Returns the current x-coordinate, accepts the same arguments as xy.\n *   y - Returns the current y-coordinate, accepts the same arguments as xy.\n * @param {Event} event - The input event to extend.\n * @param {Item} item - The currently active scenegraph item (if any).\n * @return {Event} - The extended input event.\n */\nfunction eventExtend (view, event, item) {\n  var r = view._renderer,\n    el = r && r.canvas(),\n    p,\n    e,\n    translate;\n  if (el) {\n    translate = offset(view);\n    e = event.changedTouches ? event.changedTouches[0] : event;\n    p = point(e, el);\n    p[0] -= translate[0];\n    p[1] -= translate[1];\n  }\n  event.dataflow = view;\n  event.item = item;\n  event.vega = extension(view, item, p);\n  return event;\n}\nfunction extension(view, item, point) {\n  const itemGroup = item ? item.mark.marktype === 'group' ? item : item.mark.group : null;\n  function group(name) {\n    var g = itemGroup,\n      i;\n    if (name) for (i = item; i; i = i.mark.group) {\n      if (i.mark.name === name) {\n        g = i;\n        break;\n      }\n    }\n    return g && g.mark && g.mark.interactive ? g : {};\n  }\n  function xy(item) {\n    if (!item) return point;\n    if (isString(item)) item = group(item);\n    const p = point.slice();\n    while (item) {\n      p[0] -= item.x || 0;\n      p[1] -= item.y || 0;\n      item = item.mark && item.mark.group;\n    }\n    return p;\n  }\n  return {\n    view: constant(view),\n    item: constant(item || {}),\n    group: group,\n    xy: xy,\n    x: item => xy(item)[0],\n    y: item => xy(item)[1]\n  };\n}\n\nconst VIEW = 'view',\n  TIMER = 'timer',\n  WINDOW = 'window',\n  NO_TRAP = {\n    trap: false\n  };\n\n/**\n * Initialize event handling configuration.\n * @param {object} config - The configuration settings.\n * @return {object}\n */\nfunction initializeEventConfig(config) {\n  const events = extend({\n    defaults: {}\n  }, config);\n  const unpack = (obj, keys) => {\n    keys.forEach(k => {\n      if (isArray(obj[k])) obj[k] = toSet(obj[k]);\n    });\n  };\n  unpack(events.defaults, ['prevent', 'allow']);\n  unpack(events, ['view', 'window', 'selector']);\n  return events;\n}\nfunction trackEventListener(view, sources, type, handler) {\n  view._eventListeners.push({\n    type: type,\n    sources: array(sources),\n    handler: handler\n  });\n}\nfunction prevent(view, type) {\n  var def = view._eventConfig.defaults,\n    prevent = def.prevent,\n    allow = def.allow;\n  return prevent === false || allow === true ? false : prevent === true || allow === false ? true : prevent ? prevent[type] : allow ? !allow[type] : view.preventDefault();\n}\nfunction permit(view, key, type) {\n  const rule = view._eventConfig && view._eventConfig[key];\n  if (rule === false || isObject(rule) && !rule[type]) {\n    view.warn(`Blocked ${key} ${type} event listener.`);\n    return false;\n  }\n  return true;\n}\n\n/**\n * Create a new event stream from an event source.\n * @param {object} source - The event source to monitor.\n * @param {string} type - The event type.\n * @param {function(object): boolean} [filter] - Event filter function.\n * @return {EventStream}\n */\nfunction events(source, type, filter) {\n  var view = this,\n    s = new EventStream(filter),\n    send = function (e, item) {\n      view.runAsync(null, () => {\n        if (source === VIEW && prevent(view, type)) {\n          e.preventDefault();\n        }\n        s.receive(eventExtend(view, e, item));\n      });\n    },\n    sources;\n  if (source === TIMER) {\n    if (permit(view, 'timer', type)) {\n      view.timer(send, type);\n    }\n  } else if (source === VIEW) {\n    if (permit(view, 'view', type)) {\n      // send traps errors, so use {trap: false} option\n      view.addEventListener(type, send, NO_TRAP);\n    }\n  } else {\n    if (source === WINDOW) {\n      if (permit(view, 'window', type) && typeof window !== 'undefined') {\n        sources = [window];\n      }\n    } else if (typeof document !== 'undefined') {\n      if (permit(view, 'selector', type)) {\n        sources = Array.from(document.querySelectorAll(source));\n      }\n    }\n    if (!sources) {\n      view.warn('Can not resolve event source: ' + source);\n    } else {\n      for (var i = 0, n = sources.length; i < n; ++i) {\n        sources[i].addEventListener(type, send);\n      }\n      trackEventListener(view, sources, type, send);\n    }\n  }\n  return s;\n}\n\nfunction itemFilter(event) {\n  return event.item;\n}\nfunction markTarget(event) {\n  // grab upstream collector feeding the mark operator\n  return event.item.mark.source;\n}\nfunction invoke(name) {\n  return function (_, event) {\n    return event.vega.view().changeset().encode(event.item, name);\n  };\n}\nfunction hover (hoverSet, leaveSet) {\n  hoverSet = [hoverSet || 'hover'];\n  leaveSet = [leaveSet || 'update', hoverSet[0]];\n\n  // invoke hover set upon mouseover\n  this.on(this.events('view', 'mouseover', itemFilter), markTarget, invoke(hoverSet));\n\n  // invoke leave set upon mouseout\n  this.on(this.events('view', 'mouseout', itemFilter), markTarget, invoke(leaveSet));\n  return this;\n}\n\n/**\n * Finalize a View instance that is being removed.\n * Cancel any running timers.\n * Remove all external event listeners.\n * Remove any currently displayed tooltip.\n */\nfunction finalize () {\n  var tooltip = this._tooltip,\n    timers = this._timers,\n    listeners = this._eventListeners,\n    n,\n    m,\n    e;\n  n = timers.length;\n  while (--n >= 0) {\n    timers[n].stop();\n  }\n  n = listeners.length;\n  while (--n >= 0) {\n    e = listeners[n];\n    m = e.sources.length;\n    while (--m >= 0) {\n      e.sources[m].removeEventListener(e.type, e.handler);\n    }\n  }\n  if (tooltip) {\n    tooltip.call(this, this._handler, null, null, null);\n  }\n  return this;\n}\n\nfunction element (tag, attr, text) {\n  const el = document.createElement(tag);\n  for (const key in attr) el.setAttribute(key, attr[key]);\n  if (text != null) el.textContent = text;\n  return el;\n}\n\nconst BindClass = 'vega-bind',\n  NameClass = 'vega-bind-name',\n  RadioClass = 'vega-bind-radio';\n\n/**\n * Bind a signal to an external HTML input element. The resulting two-way\n * binding will propagate input changes to signals, and propagate signal\n * changes to the input element state. If this view instance has no parent\n * element, we assume the view is headless and no bindings are created.\n * @param {Element|string} el - The parent DOM element to which the input\n *   element should be appended as a child. If string-valued, this argument\n *   will be treated as a CSS selector. If null or undefined, the parent\n *   element of this view will be used as the element.\n * @param {object} param - The binding parameters which specify the signal\n *   to bind to, the input element type, and type-specific configuration.\n * @return {View} - This view instance.\n */\nfunction bind (view, el, binding) {\n  if (!el) return;\n  const param = binding.param;\n  let bind = binding.state;\n  if (!bind) {\n    bind = binding.state = {\n      elements: null,\n      active: false,\n      set: null,\n      update: value => {\n        if (value != view.signal(param.signal)) {\n          view.runAsync(null, () => {\n            bind.source = true;\n            view.signal(param.signal, value);\n          });\n        }\n      }\n    };\n    if (param.debounce) {\n      bind.update = debounce(param.debounce, bind.update);\n    }\n  }\n  const create = param.input == null && param.element ? target : generate;\n  create(bind, el, param, view);\n  if (!bind.active) {\n    view.on(view._signals[param.signal], null, () => {\n      bind.source ? bind.source = false : bind.set(view.signal(param.signal));\n    });\n    bind.active = true;\n  }\n  return bind;\n}\n\n/**\n * Bind the signal to an external EventTarget.\n */\nfunction target(bind, node, param, view) {\n  const type = param.event || 'input';\n  const handler = () => bind.update(node.value);\n\n  // initialize signal value to external input value\n  view.signal(param.signal, node.value);\n\n  // listen for changes on the element\n  node.addEventListener(type, handler);\n\n  // register with view, so we can remove it upon finalization\n  trackEventListener(view, node, type, handler);\n\n  // propagate change to element\n  bind.set = value => {\n    node.value = value;\n    node.dispatchEvent(event(type));\n  };\n}\nfunction event(type) {\n  return typeof Event !== 'undefined' ? new Event(type) : {\n    type\n  };\n}\n\n/**\n * Generate an HTML input form element and bind it to a signal.\n */\nfunction generate(bind, el, param, view) {\n  const value = view.signal(param.signal);\n  const div = element('div', {\n    'class': BindClass\n  });\n  const wrapper = param.input === 'radio' ? div : div.appendChild(element('label'));\n  wrapper.appendChild(element('span', {\n    'class': NameClass\n  }, param.name || param.signal));\n  el.appendChild(div);\n  let input = form;\n  switch (param.input) {\n    case 'checkbox':\n      input = checkbox;\n      break;\n    case 'select':\n      input = select;\n      break;\n    case 'radio':\n      input = radio;\n      break;\n    case 'range':\n      input = range;\n      break;\n  }\n  input(bind, wrapper, param, value);\n}\n\n/**\n * Generates an arbitrary input form element.\n * The input type is controlled via user-provided parameters.\n */\nfunction form(bind, el, param, value) {\n  const node = element('input');\n  for (const key in param) {\n    if (key !== 'signal' && key !== 'element') {\n      node.setAttribute(key === 'input' ? 'type' : key, param[key]);\n    }\n  }\n  node.setAttribute('name', param.signal);\n  node.value = value;\n  el.appendChild(node);\n  node.addEventListener('input', () => bind.update(node.value));\n  bind.elements = [node];\n  bind.set = value => node.value = value;\n}\n\n/**\n * Generates a checkbox input element.\n */\nfunction checkbox(bind, el, param, value) {\n  const attr = {\n    type: 'checkbox',\n    name: param.signal\n  };\n  if (value) attr.checked = true;\n  const node = element('input', attr);\n  el.appendChild(node);\n  node.addEventListener('change', () => bind.update(node.checked));\n  bind.elements = [node];\n  bind.set = value => node.checked = !!value || null;\n}\n\n/**\n * Generates a selection list input element.\n */\nfunction select(bind, el, param, value) {\n  const node = element('select', {\n      name: param.signal\n    }),\n    labels = param.labels || [];\n  param.options.forEach((option, i) => {\n    const attr = {\n      value: option\n    };\n    if (valuesEqual(option, value)) attr.selected = true;\n    node.appendChild(element('option', attr, (labels[i] || option) + ''));\n  });\n  el.appendChild(node);\n  node.addEventListener('change', () => {\n    bind.update(param.options[node.selectedIndex]);\n  });\n  bind.elements = [node];\n  bind.set = value => {\n    for (let i = 0, n = param.options.length; i < n; ++i) {\n      if (valuesEqual(param.options[i], value)) {\n        node.selectedIndex = i;\n        return;\n      }\n    }\n  };\n}\n\n/**\n * Generates a radio button group.\n */\nfunction radio(bind, el, param, value) {\n  const group = element('span', {\n      'class': RadioClass\n    }),\n    labels = param.labels || [];\n  el.appendChild(group);\n  bind.elements = param.options.map((option, i) => {\n    const attr = {\n      type: 'radio',\n      name: param.signal,\n      value: option\n    };\n    if (valuesEqual(option, value)) attr.checked = true;\n    const input = element('input', attr);\n    input.addEventListener('change', () => bind.update(option));\n    const label = element('label', {}, (labels[i] || option) + '');\n    label.prepend(input);\n    group.appendChild(label);\n    return input;\n  });\n  bind.set = value => {\n    const nodes = bind.elements,\n      n = nodes.length;\n    for (let i = 0; i < n; ++i) {\n      if (valuesEqual(nodes[i].value, value)) nodes[i].checked = true;\n    }\n  };\n}\n\n/**\n * Generates a slider input element.\n */\nfunction range(bind, el, param, value) {\n  value = value !== undefined ? value : (+param.max + +param.min) / 2;\n  const max = param.max != null ? param.max : Math.max(100, +value) || 100,\n    min = param.min || Math.min(0, max, +value) || 0,\n    step = param.step || tickStep(min, max, 100);\n  const node = element('input', {\n    type: 'range',\n    name: param.signal,\n    min: min,\n    max: max,\n    step: step\n  });\n  node.value = value;\n  const span = element('span', {}, +value);\n  el.appendChild(node);\n  el.appendChild(span);\n  const update = () => {\n    span.textContent = node.value;\n    bind.update(+node.value);\n  };\n\n  // subscribe to both input and change\n  node.addEventListener('input', update);\n  node.addEventListener('change', update);\n  bind.elements = [node];\n  bind.set = value => {\n    node.value = value;\n    span.textContent = value;\n  };\n}\nfunction valuesEqual(a, b) {\n  return a === b || a + '' === b + '';\n}\n\nfunction initializeRenderer (view, r, el, constructor, scaleFactor, opt) {\n  r = r || new constructor(view.loader());\n  return r.initialize(el, width(view), height(view), offset(view), scaleFactor, opt).background(view.background());\n}\n\nfunction trap (view, fn) {\n  return !fn ? null : function () {\n    try {\n      fn.apply(this, arguments);\n    } catch (error) {\n      view.error(error);\n    }\n  };\n}\n\nfunction initializeHandler (view, prevHandler, el, constructor) {\n  // instantiate scenegraph handler\n  const handler = new constructor(view.loader(), trap(view, view.tooltip())).scene(view.scenegraph().root).initialize(el, offset(view), view);\n\n  // transfer event handlers\n  if (prevHandler) {\n    prevHandler.handlers().forEach(h => {\n      handler.on(h.type, h.handler);\n    });\n  }\n  return handler;\n}\n\nfunction initialize (el, elBind) {\n  const view = this,\n    type = view._renderType,\n    config = view._eventConfig.bind,\n    module = renderModule(type);\n\n  // containing dom element\n  el = view._el = el ? lookup(view, el, true) : null;\n\n  // initialize aria attributes\n  initializeAria(view);\n\n  // select appropriate renderer & handler\n  if (!module) view.error('Unrecognized renderer type: ' + type);\n  const Handler = module.handler || CanvasHandler,\n    Renderer = el ? module.renderer : module.headless;\n\n  // initialize renderer and input handler\n  view._renderer = !Renderer ? null : initializeRenderer(view, view._renderer, el, Renderer);\n  view._handler = initializeHandler(view, view._handler, el, Handler);\n  view._redraw = true;\n\n  // initialize signal bindings\n  if (el && config !== 'none') {\n    elBind = elBind ? view._elBind = lookup(view, elBind, true) : el.appendChild(element('form', {\n      'class': 'vega-bindings'\n    }));\n    view._bind.forEach(_ => {\n      if (_.param.element && config !== 'container') {\n        _.element = lookup(view, _.param.element, !!_.param.input);\n      }\n    });\n    view._bind.forEach(_ => {\n      bind(view, _.element || elBind, _);\n    });\n  }\n  return view;\n}\nfunction lookup(view, el, clear) {\n  if (typeof el === 'string') {\n    if (typeof document !== 'undefined') {\n      el = document.querySelector(el);\n      if (!el) {\n        view.error('Signal bind element not found: ' + el);\n        return null;\n      }\n    } else {\n      view.error('DOM document instance not found.');\n      return null;\n    }\n  }\n  if (el && clear) {\n    try {\n      el.textContent = '';\n    } catch (e) {\n      el = null;\n      view.error(e);\n    }\n  }\n  return el;\n}\n\nconst number = _ => +_ || 0;\nconst paddingObject = _ => ({\n  top: _,\n  bottom: _,\n  left: _,\n  right: _\n});\nfunction padding (_) {\n  return isObject(_) ? {\n    top: number(_.top),\n    bottom: number(_.bottom),\n    left: number(_.left),\n    right: number(_.right)\n  } : paddingObject(number(_));\n}\n\n/**\n * Render the current scene in a headless fashion.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A Promise that resolves to a renderer.\n */\nasync function renderHeadless (view, type, scaleFactor, opt) {\n  const module = renderModule(type),\n    ctr = module && module.headless;\n  if (!ctr) error('Unrecognized renderer type: ' + type);\n  await view.runAsync();\n  return initializeRenderer(view, null, null, ctr, scaleFactor, opt).renderAsync(view._scenegraph.root);\n}\n\n/**\n * Produce an image URL for the visualization. Depending on the type\n * parameter, the generated URL contains data for either a PNG or SVG image.\n * The URL can be used (for example) to download images of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @param {string} type - The image type. One of 'svg', 'png' or 'canvas'.\n *   The 'canvas' and 'png' types are synonyms for a PNG image.\n * @return {Promise} - A promise that resolves to an image URL.\n */\nasync function renderToImageURL (type, scaleFactor) {\n  if (type !== RenderType.Canvas && type !== RenderType.SVG && type !== RenderType.PNG) {\n    error('Unrecognized image type: ' + type);\n  }\n  const r = await renderHeadless(this, type, scaleFactor);\n  return type === RenderType.SVG ? toBlobURL(r.svg(), 'image/svg+xml') : r.canvas().toDataURL('image/png');\n}\nfunction toBlobURL(data, mime) {\n  const blob = new Blob([data], {\n    type: mime\n  });\n  return window.URL.createObjectURL(blob);\n}\n\n/**\n * Produce a Canvas instance containing a rendered visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to a Canvas instance.\n */\nasync function renderToCanvas (scaleFactor, opt) {\n  const r = await renderHeadless(this, RenderType.Canvas, scaleFactor, opt);\n  return r.canvas();\n}\n\n/**\n * Produce a rendered SVG string of the visualization.\n * This method is asynchronous, returning a Promise instance.\n * @return {Promise} - A promise that resolves to an SVG string.\n */\nasync function renderToSVG (scaleFactor) {\n  const r = await renderHeadless(this, RenderType.SVG, scaleFactor);\n  return r.svg();\n}\n\nfunction runtime (view, spec, expr) {\n  return context(view, transforms, functionContext, expr).parse(spec);\n}\n\nfunction scale(name) {\n  var scales = this._runtime.scales;\n  if (!hasOwnProperty(scales, name)) {\n    error('Unrecognized scale or projection: ' + name);\n  }\n  return scales[name].value;\n}\n\nvar Width = 'width',\n  Height = 'height',\n  Padding = 'padding',\n  Skip = {\n    skip: true\n  };\nfunction viewWidth(view, width) {\n  var a = view.autosize(),\n    p = view.padding();\n  return width - (a && a.contains === Padding ? p.left + p.right : 0);\n}\nfunction viewHeight(view, height) {\n  var a = view.autosize(),\n    p = view.padding();\n  return height - (a && a.contains === Padding ? p.top + p.bottom : 0);\n}\nfunction initializeResize(view) {\n  var s = view._signals,\n    w = s[Width],\n    h = s[Height],\n    p = s[Padding];\n  function resetSize() {\n    view._autosize = view._resize = 1;\n  }\n\n  // respond to width signal\n  view._resizeWidth = view.add(null, _ => {\n    view._width = _.size;\n    view._viewWidth = viewWidth(view, _.size);\n    resetSize();\n  }, {\n    size: w\n  });\n\n  // respond to height signal\n  view._resizeHeight = view.add(null, _ => {\n    view._height = _.size;\n    view._viewHeight = viewHeight(view, _.size);\n    resetSize();\n  }, {\n    size: h\n  });\n\n  // respond to padding signal\n  const resizePadding = view.add(null, resetSize, {\n    pad: p\n  });\n\n  // set rank to run immediately after source signal\n  view._resizeWidth.rank = w.rank + 1;\n  view._resizeHeight.rank = h.rank + 1;\n  resizePadding.rank = p.rank + 1;\n}\nfunction resizeView(viewWidth, viewHeight, width, height, origin, auto) {\n  this.runAfter(view => {\n    let rerun = 0;\n\n    // reset autosize flag\n    view._autosize = 0;\n\n    // width value changed: update signal, skip resize op\n    if (view.width() !== width) {\n      rerun = 1;\n      view.signal(Width, width, Skip); // set width, skip update calc\n      view._resizeWidth.skip(true); // skip width resize handler\n    }\n\n    // height value changed: update signal, skip resize op\n    if (view.height() !== height) {\n      rerun = 1;\n      view.signal(Height, height, Skip); // set height, skip update calc\n      view._resizeHeight.skip(true); // skip height resize handler\n    }\n\n    // view width changed: update view property, set resize flag\n    if (view._viewWidth !== viewWidth) {\n      view._resize = 1;\n      view._viewWidth = viewWidth;\n    }\n\n    // view height changed: update view property, set resize flag\n    if (view._viewHeight !== viewHeight) {\n      view._resize = 1;\n      view._viewHeight = viewHeight;\n    }\n\n    // origin changed: update view property, set resize flag\n    if (view._origin[0] !== origin[0] || view._origin[1] !== origin[1]) {\n      view._resize = 1;\n      view._origin = origin;\n    }\n\n    // run dataflow on width/height signal change\n    if (rerun) view.run('enter');\n    if (auto) view.runAfter(v => v.resize());\n  }, false, 1);\n}\n\n/**\n * Get the current view state, consisting of signal values and/or data sets.\n * @param {object} [options] - Options flags indicating which state to export.\n *   If unspecified, all signals and data sets will be exported.\n * @param {function(string, Operator):boolean} [options.signals] - Optional\n *   predicate function for testing if a signal should be included in the\n *   exported state. If unspecified, all signals will be included, except for\n *   those named 'parent' or those which refer to a Transform value.\n * @param {function(string, object):boolean} [options.data] - Optional\n *   predicate function for testing if a data set's input should be included\n *   in the exported state. If unspecified, all data sets that have been\n *   explicitly modified will be included.\n * @param {boolean} [options.recurse=true] - Flag indicating if the exported\n *   state should recursively include state from group mark sub-contexts.\n * @return {object} - An object containing the exported state values.\n */\nfunction getState(options) {\n  return this._runtime.getState(options || {\n    data: dataTest,\n    signals: signalTest,\n    recurse: true\n  });\n}\nfunction dataTest(name, data) {\n  return data.modified && isArray(data.input.value) && name.indexOf('_:vega:_');\n}\nfunction signalTest(name, op) {\n  return !(name === 'parent' || op instanceof transforms.proxy);\n}\n\n/**\n * Sets the current view state and updates the view by invoking run.\n * @param {object} state - A state object containing signal and/or\n *   data set values, following the format used by the getState method.\n * @return {View} - This view instance.\n */\nfunction setState(state) {\n  this.runAsync(null, v => {\n    v._trigger = false;\n    v._runtime.setState(state);\n  }, v => {\n    v._trigger = true;\n  });\n  return this;\n}\n\nfunction timer (callback, delay) {\n  function tick(elapsed) {\n    callback({\n      timestamp: Date.now(),\n      elapsed: elapsed\n    });\n  }\n  this._timers.push(interval(tick, delay));\n}\n\nfunction defaultTooltip (handler, event, item, value) {\n  const el = handler.element();\n  if (el) el.setAttribute('title', formatTooltip(value));\n}\nfunction formatTooltip(value) {\n  return value == null ? '' : isArray(value) ? formatArray(value) : isObject(value) && !isDate(value) ? formatObject(value) : value + '';\n}\nfunction formatObject(obj) {\n  return Object.keys(obj).map(key => {\n    const v = obj[key];\n    return key + ': ' + (isArray(v) ? formatArray(v) : formatValue(v));\n  }).join('\\n');\n}\nfunction formatArray(value) {\n  return '[' + value.map(formatValue).join(', ') + ']';\n}\nfunction formatValue(value) {\n  return isArray(value) ? '[\\u2026]' : isObject(value) && !isDate(value) ? '{\\u2026}' : value;\n}\n\n/**\n * Create a new View instance from a Vega dataflow runtime specification.\n * The generated View will not immediately be ready for display. Callers\n * should also invoke the initialize method (e.g., to set the parent\n * DOM element in browser-based deployment) and then invoke the run\n * method to evaluate the dataflow graph. Rendering will automatically\n * be performed upon dataflow runs.\n * @constructor\n * @param {object} spec - The Vega dataflow runtime specification.\n */\nfunction View(spec, options) {\n  const view = this;\n  options = options || {};\n  Dataflow.call(view);\n  if (options.loader) view.loader(options.loader);\n  if (options.logger) view.logger(options.logger);\n  if (options.logLevel != null) view.logLevel(options.logLevel);\n  if (options.locale || spec.locale) {\n    const loc = extend({}, spec.locale, options.locale);\n    view.locale(locale(loc.number, loc.time));\n  }\n  view._el = null;\n  view._elBind = null;\n  view._renderType = options.renderer || RenderType.Canvas;\n  view._scenegraph = new Scenegraph();\n  const root = view._scenegraph.root;\n\n  // initialize renderer, handler and event management\n  view._renderer = null;\n  view._tooltip = options.tooltip || defaultTooltip, view._redraw = true;\n  view._handler = new CanvasHandler().scene(root);\n  view._globalCursor = false;\n  view._preventDefault = false;\n  view._timers = [];\n  view._eventListeners = [];\n  view._resizeListeners = [];\n\n  // initialize event configuration\n  view._eventConfig = initializeEventConfig(spec.eventConfig);\n  view.globalCursor(view._eventConfig.globalCursor);\n\n  // initialize dataflow graph\n  const ctx = runtime(view, spec, options.expr);\n  view._runtime = ctx;\n  view._signals = ctx.signals;\n  view._bind = (spec.bindings || []).map(_ => ({\n    state: null,\n    param: extend({}, _)\n  }));\n\n  // initialize scenegraph\n  if (ctx.root) ctx.root.set(root);\n  root.source = ctx.data.root.input;\n  view.pulse(ctx.data.root.input, view.changeset().insert(root.items));\n\n  // initialize view size\n  view._width = view.width();\n  view._height = view.height();\n  view._viewWidth = viewWidth(view, view._width);\n  view._viewHeight = viewHeight(view, view._height);\n  view._origin = [0, 0];\n  view._resize = 0;\n  view._autosize = 1;\n  initializeResize(view);\n\n  // initialize background color\n  background(view);\n\n  // initialize cursor\n  cursor(view);\n\n  // initialize view description\n  view.description(spec.description);\n\n  // initialize hover proessing, if requested\n  if (options.hover) view.hover();\n\n  // initialize DOM container(s) and renderer\n  if (options.container) view.initialize(options.container, options.bind);\n}\nfunction lookupSignal(view, name) {\n  return hasOwnProperty(view._signals, name) ? view._signals[name] : error('Unrecognized signal name: ' + stringValue(name));\n}\nfunction findOperatorHandler(op, handler) {\n  const h = (op._targets || []).filter(op => op._update && op._update.handler === handler);\n  return h.length ? h[0] : null;\n}\nfunction addOperatorListener(view, name, op, handler) {\n  let h = findOperatorHandler(op, handler);\n  if (!h) {\n    h = trap(view, () => handler(name, op.value));\n    h.handler = handler;\n    view.on(op, null, h);\n  }\n  return view;\n}\nfunction removeOperatorListener(view, op, handler) {\n  const h = findOperatorHandler(op, handler);\n  if (h) op._targets.remove(h);\n  return view;\n}\ninherits(View, Dataflow, {\n  // -- DATAFLOW / RENDERING ----\n\n  async evaluate(encode, prerun, postrun) {\n    // evaluate dataflow and prerun\n    await Dataflow.prototype.evaluate.call(this, encode, prerun);\n\n    // render as needed\n    if (this._redraw || this._resize) {\n      try {\n        if (this._renderer) {\n          if (this._resize) {\n            this._resize = 0;\n            resizeRenderer(this);\n          }\n          await this._renderer.renderAsync(this._scenegraph.root);\n        }\n        this._redraw = false;\n      } catch (e) {\n        this.error(e);\n      }\n    }\n\n    // evaluate postrun\n    if (postrun) asyncCallback(this, postrun);\n    return this;\n  },\n  dirty(item) {\n    this._redraw = true;\n    this._renderer && this._renderer.dirty(item);\n  },\n  // -- GET / SET ----\n\n  description(text) {\n    if (arguments.length) {\n      const desc = text != null ? text + '' : null;\n      if (desc !== this._desc) ariaLabel(this._el, this._desc = desc);\n      return this;\n    }\n    return this._desc;\n  },\n  container() {\n    return this._el;\n  },\n  scenegraph() {\n    return this._scenegraph;\n  },\n  origin() {\n    return this._origin.slice();\n  },\n  signal(name, value, options) {\n    const op = lookupSignal(this, name);\n    return arguments.length === 1 ? op.value : this.update(op, value, options);\n  },\n  width(_) {\n    return arguments.length ? this.signal('width', _) : this.signal('width');\n  },\n  height(_) {\n    return arguments.length ? this.signal('height', _) : this.signal('height');\n  },\n  padding(_) {\n    return arguments.length ? this.signal('padding', padding(_)) : padding(this.signal('padding'));\n  },\n  autosize(_) {\n    return arguments.length ? this.signal('autosize', _) : this.signal('autosize');\n  },\n  background(_) {\n    return arguments.length ? this.signal('background', _) : this.signal('background');\n  },\n  renderer(type) {\n    if (!arguments.length) return this._renderType;\n    if (!renderModule(type)) error('Unrecognized renderer type: ' + type);\n    if (type !== this._renderType) {\n      this._renderType = type;\n      this._resetRenderer();\n    }\n    return this;\n  },\n  tooltip(handler) {\n    if (!arguments.length) return this._tooltip;\n    if (handler !== this._tooltip) {\n      this._tooltip = handler;\n      this._resetRenderer();\n    }\n    return this;\n  },\n  loader(loader) {\n    if (!arguments.length) return this._loader;\n    if (loader !== this._loader) {\n      Dataflow.prototype.loader.call(this, loader);\n      this._resetRenderer();\n    }\n    return this;\n  },\n  resize() {\n    // set flag to perform autosize\n    this._autosize = 1;\n    // touch autosize signal to ensure top-level ViewLayout runs\n    return this.touch(lookupSignal(this, 'autosize'));\n  },\n  _resetRenderer() {\n    if (this._renderer) {\n      this._renderer = null;\n      this.initialize(this._el, this._elBind);\n    }\n  },\n  // -- SIZING ----\n  _resizeView: resizeView,\n  // -- EVENT HANDLING ----\n\n  addEventListener(type, handler, options) {\n    let callback = handler;\n    if (!(options && options.trap === false)) {\n      // wrap callback in error handler\n      callback = trap(this, handler);\n      callback.raw = handler;\n    }\n    this._handler.on(type, callback);\n    return this;\n  },\n  removeEventListener(type, handler) {\n    var handlers = this._handler.handlers(type),\n      i = handlers.length,\n      h,\n      t;\n\n    // search registered handlers, remove if match found\n    while (--i >= 0) {\n      t = handlers[i].type;\n      h = handlers[i].handler;\n      if (type === t && (handler === h || handler === h.raw)) {\n        this._handler.off(t, h);\n        break;\n      }\n    }\n    return this;\n  },\n  addResizeListener(handler) {\n    const l = this._resizeListeners;\n    if (l.indexOf(handler) < 0) {\n      // add handler if it isn't already registered\n      // note: error trapping handled elsewhere, so\n      // no need to wrap handlers here\n      l.push(handler);\n    }\n    return this;\n  },\n  removeResizeListener(handler) {\n    var l = this._resizeListeners,\n      i = l.indexOf(handler);\n    if (i >= 0) {\n      l.splice(i, 1);\n    }\n    return this;\n  },\n  addSignalListener(name, handler) {\n    return addOperatorListener(this, name, lookupSignal(this, name), handler);\n  },\n  removeSignalListener(name, handler) {\n    return removeOperatorListener(this, lookupSignal(this, name), handler);\n  },\n  addDataListener(name, handler) {\n    return addOperatorListener(this, name, dataref(this, name).values, handler);\n  },\n  removeDataListener(name, handler) {\n    return removeOperatorListener(this, dataref(this, name).values, handler);\n  },\n  globalCursor(_) {\n    if (arguments.length) {\n      if (this._globalCursor !== !!_) {\n        const prev = setCursor(this, null); // clear previous cursor\n        this._globalCursor = !!_;\n        if (prev) setCursor(this, prev); // swap cursor\n      }\n\n      return this;\n    } else {\n      return this._globalCursor;\n    }\n  },\n  preventDefault(_) {\n    if (arguments.length) {\n      this._preventDefault = _;\n      return this;\n    } else {\n      return this._preventDefault;\n    }\n  },\n  timer,\n  events,\n  finalize,\n  hover,\n  // -- DATA ----\n  data,\n  change,\n  insert,\n  remove,\n  // -- SCALES --\n  scale,\n  // -- INITIALIZATION ----\n  initialize,\n  // -- HEADLESS RENDERING ----\n  toImageURL: renderToImageURL,\n  toCanvas: renderToCanvas,\n  toSVG: renderToSVG,\n  // -- SAVE / RESTORE STATE ----\n  getState,\n  setState\n});\n\nexport { View };\n", "const VIEW = 'view',\n  LBRACK = '[',\n  RBRACK = ']',\n  LBRACE = '{',\n  RBRACE = '}',\n  COLON = ':',\n  COMMA = ',',\n  NAME = '@',\n  GT = '>',\n  ILLEGAL = /[[\\]{}]/,\n  DEFAULT_MARKS = {\n    '*': 1,\n    arc: 1,\n    area: 1,\n    group: 1,\n    image: 1,\n    line: 1,\n    path: 1,\n    rect: 1,\n    rule: 1,\n    shape: 1,\n    symbol: 1,\n    text: 1,\n    trail: 1\n  };\nlet DEFAULT_SOURCE, MARKS;\n\n/**\n * Parse an event selector string.\n * Returns an array of event stream definitions.\n */\nfunction eventSelector (selector, source, marks) {\n  DEFAULT_SOURCE = source || VIEW;\n  MARKS = marks || DEFAULT_MARKS;\n  return parseMerge(selector.trim()).map(parseSelector);\n}\nfunction isMarkType(type) {\n  return MARKS[type];\n}\nfunction find(s, i, endChar, pushChar, popChar) {\n  const n = s.length;\n  let count = 0,\n    c;\n  for (; i < n; ++i) {\n    c = s[i];\n    if (!count && c === endChar) return i;else if (popChar && popChar.indexOf(c) >= 0) --count;else if (pushChar && pushChar.indexOf(c) >= 0) ++count;\n  }\n  return i;\n}\nfunction parseMerge(s) {\n  const output = [],\n    n = s.length;\n  let start = 0,\n    i = 0;\n  while (i < n) {\n    i = find(s, i, COMMA, LBRACK + LBRACE, RBRACK + RBRACE);\n    output.push(s.substring(start, i).trim());\n    start = ++i;\n  }\n  if (output.length === 0) {\n    throw 'Empty event selector: ' + s;\n  }\n  return output;\n}\nfunction parseSelector(s) {\n  return s[0] === '[' ? parseBetween(s) : parseStream(s);\n}\nfunction parseBetween(s) {\n  const n = s.length;\n  let i = 1,\n    b;\n  i = find(s, i, RBRACK, LBRACK, RBRACK);\n  if (i === n) {\n    throw 'Empty between selector: ' + s;\n  }\n  b = parseMerge(s.substring(1, i));\n  if (b.length !== 2) {\n    throw 'Between selector must have two elements: ' + s;\n  }\n  s = s.slice(i + 1).trim();\n  if (s[0] !== GT) {\n    throw 'Expected \\'>\\' after between selector: ' + s;\n  }\n  b = b.map(parseSelector);\n  const stream = parseSelector(s.slice(1).trim());\n  if (stream.between) {\n    return {\n      between: b,\n      stream: stream\n    };\n  } else {\n    stream.between = b;\n  }\n  return stream;\n}\nfunction parseStream(s) {\n  const stream = {\n      source: DEFAULT_SOURCE\n    },\n    source = [];\n  let throttle = [0, 0],\n    markname = 0,\n    start = 0,\n    n = s.length,\n    i = 0,\n    j,\n    filter;\n\n  // extract throttle from end\n  if (s[n - 1] === RBRACE) {\n    i = s.lastIndexOf(LBRACE);\n    if (i >= 0) {\n      try {\n        throttle = parseThrottle(s.substring(i + 1, n - 1));\n      } catch (e) {\n        throw 'Invalid throttle specification: ' + s;\n      }\n      s = s.slice(0, i).trim();\n      n = s.length;\n    } else throw 'Unmatched right brace: ' + s;\n    i = 0;\n  }\n  if (!n) throw s;\n\n  // set name flag based on first char\n  if (s[0] === NAME) markname = ++i;\n\n  // extract first part of multi-part stream selector\n  j = find(s, i, COLON);\n  if (j < n) {\n    source.push(s.substring(start, j).trim());\n    start = i = ++j;\n  }\n\n  // extract remaining part of stream selector\n  i = find(s, i, LBRACK);\n  if (i === n) {\n    source.push(s.substring(start, n).trim());\n  } else {\n    source.push(s.substring(start, i).trim());\n    filter = [];\n    start = ++i;\n    if (start === n) throw 'Unmatched left bracket: ' + s;\n  }\n\n  // extract filters\n  while (i < n) {\n    i = find(s, i, RBRACK);\n    if (i === n) throw 'Unmatched left bracket: ' + s;\n    filter.push(s.substring(start, i).trim());\n    if (i < n - 1 && s[++i] !== LBRACK) throw 'Expected left bracket: ' + s;\n    start = ++i;\n  }\n\n  // marshall event stream specification\n  if (!(n = source.length) || ILLEGAL.test(source[n - 1])) {\n    throw 'Invalid event selector: ' + s;\n  }\n  if (n > 1) {\n    stream.type = source[1];\n    if (markname) {\n      stream.markname = source[0].slice(1);\n    } else if (isMarkType(source[0])) {\n      stream.marktype = source[0];\n    } else {\n      stream.source = source[0];\n    }\n  } else {\n    stream.type = source[0];\n  }\n  if (stream.type.slice(-1) === '!') {\n    stream.consume = true;\n    stream.type = stream.type.slice(0, -1);\n  }\n  if (filter != null) stream.filter = filter;\n  if (throttle[0]) stream.throttle = throttle[0];\n  if (throttle[1]) stream.debounce = throttle[1];\n  return stream;\n}\nfunction parseThrottle(s) {\n  const a = s.split(COMMA);\n  if (!s.length || a.length > 2) throw s;\n  return a.map(_ => {\n    const x = +_;\n    if (x !== x) throw s;\n    return x;\n  });\n}\n\nexport { eventSelector as parseSelector };\n", "import { isObject, isArray, extend, hasOwnProperty, array, stringValue, peek, error, isString, splitAccessPath, mergeConfig } from 'vega-util';\nimport { parseExpression } from 'vega-functions';\nimport { parseSelector } from 'vega-event-selector';\nimport { isValidScaleType, isDiscrete, isQuantile, isContinuous, isDiscretizing } from 'vega-scale';\nimport { definition as definition$1 } from 'vega-dataflow';\n\nfunction parseAutosize (spec) {\n  return isObject(spec) ? spec : {\n    type: spec || 'pad'\n  };\n}\n\nconst number = _ => +_ || 0;\nconst paddingObject = _ => ({\n  top: _,\n  bottom: _,\n  left: _,\n  right: _\n});\nfunction parsePadding (spec) {\n  return !isObject(spec) ? paddingObject(number(spec)) : spec.signal ? spec : {\n    top: number(spec.top),\n    bottom: number(spec.bottom),\n    left: number(spec.left),\n    right: number(spec.right)\n  };\n}\n\nconst encoder = _ => isObject(_) && !isArray(_) ? extend({}, _) : {\n  value: _\n};\nfunction addEncode(object, name, value, set) {\n  if (value != null) {\n    const isEncoder = isObject(value) && !isArray(value) || isArray(value) && value.length && isObject(value[0]);\n\n    // Always assign signal to update, even if the signal is from the enter block\n    if (isEncoder) {\n      object.update[name] = value;\n    } else {\n      object[set || 'enter'][name] = {\n        value: value\n      };\n    }\n    return 1;\n  } else {\n    return 0;\n  }\n}\nfunction addEncoders(object, enter, update) {\n  for (const name in enter) {\n    addEncode(object, name, enter[name]);\n  }\n  for (const name in update) {\n    addEncode(object, name, update[name], 'update');\n  }\n}\nfunction extendEncode(encode, extra, skip) {\n  for (const name in extra) {\n    if (skip && hasOwnProperty(skip, name)) continue;\n    encode[name] = extend(encode[name] || {}, extra[name]);\n  }\n  return encode;\n}\nfunction has(key, encode) {\n  return encode && (encode.enter && encode.enter[key] || encode.update && encode.update[key]);\n}\n\nconst MarkRole = 'mark';\nconst FrameRole = 'frame';\nconst ScopeRole = 'scope';\nconst AxisRole = 'axis';\nconst AxisDomainRole = 'axis-domain';\nconst AxisGridRole = 'axis-grid';\nconst AxisLabelRole = 'axis-label';\nconst AxisTickRole = 'axis-tick';\nconst AxisTitleRole = 'axis-title';\nconst LegendRole = 'legend';\nconst LegendBandRole = 'legend-band';\nconst LegendEntryRole = 'legend-entry';\nconst LegendGradientRole = 'legend-gradient';\nconst LegendLabelRole = 'legend-label';\nconst LegendSymbolRole = 'legend-symbol';\nconst LegendTitleRole = 'legend-title';\nconst TitleRole = 'title';\nconst TitleTextRole = 'title-text';\nconst TitleSubtitleRole = 'title-subtitle';\n\nfunction applyDefaults (encode, type, role, style, config) {\n  const defaults = {},\n    enter = {};\n  let update, key, skip, props;\n\n  // if text mark, apply global lineBreak settings (#2370)\n  key = 'lineBreak';\n  if (type === 'text' && config[key] != null && !has(key, encode)) {\n    applyDefault(defaults, key, config[key]);\n  }\n\n  // ignore legend and axis roles\n  if (role == 'legend' || String(role).startsWith('axis')) {\n    role = null;\n  }\n\n  // resolve mark config\n  props = role === FrameRole ? config.group : role === MarkRole ? extend({}, config.mark, config[type]) : null;\n  for (key in props) {\n    // do not apply defaults if relevant fields are defined\n    skip = has(key, encode) || (key === 'fill' || key === 'stroke') && (has('fill', encode) || has('stroke', encode));\n    if (!skip) applyDefault(defaults, key, props[key]);\n  }\n\n  // resolve styles, apply with increasing precedence\n  array(style).forEach(name => {\n    const props = config.style && config.style[name];\n    for (const key in props) {\n      if (!has(key, encode)) {\n        applyDefault(defaults, key, props[key]);\n      }\n    }\n  });\n  encode = extend({}, encode); // defensive copy\n  for (key in defaults) {\n    props = defaults[key];\n    if (props.signal) {\n      (update = update || {})[key] = props;\n    } else {\n      enter[key] = props;\n    }\n  }\n  encode.enter = extend(enter, encode.enter);\n  if (update) encode.update = extend(update, encode.update);\n  return encode;\n}\nfunction applyDefault(defaults, key, value) {\n  defaults[key] = value && value.signal ? {\n    signal: value.signal\n  } : {\n    value: value\n  };\n}\n\nconst scaleRef = scale => isString(scale) ? stringValue(scale) : scale.signal ? `(${scale.signal})` : field(scale);\nfunction entry$1(enc) {\n  if (enc.gradient != null) {\n    return gradient(enc);\n  }\n  let value = enc.signal ? `(${enc.signal})` : enc.color ? color(enc.color) : enc.field != null ? field(enc.field) : enc.value !== undefined ? stringValue(enc.value) : undefined;\n  if (enc.scale != null) {\n    value = scale(enc, value);\n  }\n  if (value === undefined) {\n    value = null;\n  }\n  if (enc.exponent != null) {\n    value = `pow(${value},${property(enc.exponent)})`;\n  }\n  if (enc.mult != null) {\n    value += `*${property(enc.mult)}`;\n  }\n  if (enc.offset != null) {\n    value += `+${property(enc.offset)}`;\n  }\n  if (enc.round) {\n    value = `round(${value})`;\n  }\n  return value;\n}\nconst _color = (type, x, y, z) => `(${type}(${[x, y, z].map(entry$1).join(',')})+'')`;\nfunction color(enc) {\n  return enc.c ? _color('hcl', enc.h, enc.c, enc.l) : enc.h || enc.s ? _color('hsl', enc.h, enc.s, enc.l) : enc.l || enc.a ? _color('lab', enc.l, enc.a, enc.b) : enc.r || enc.g || enc.b ? _color('rgb', enc.r, enc.g, enc.b) : null;\n}\nfunction gradient(enc) {\n  // map undefined to null; expression lang does not allow undefined\n  const args = [enc.start, enc.stop, enc.count].map(_ => _ == null ? null : stringValue(_));\n\n  // trim null inputs from the end\n  while (args.length && peek(args) == null) args.pop();\n  args.unshift(scaleRef(enc.gradient));\n  return `gradient(${args.join(',')})`;\n}\nfunction property(property) {\n  return isObject(property) ? '(' + entry$1(property) + ')' : property;\n}\nfunction field(ref) {\n  return resolveField(isObject(ref) ? ref : {\n    datum: ref\n  });\n}\nfunction resolveField(ref) {\n  let object, level, field;\n  if (ref.signal) {\n    object = 'datum';\n    field = ref.signal;\n  } else if (ref.group || ref.parent) {\n    level = Math.max(1, ref.level || 1);\n    object = 'item';\n    while (level-- > 0) {\n      object += '.mark.group';\n    }\n    if (ref.parent) {\n      field = ref.parent;\n      object += '.datum';\n    } else {\n      field = ref.group;\n    }\n  } else if (ref.datum) {\n    object = 'datum';\n    field = ref.datum;\n  } else {\n    error('Invalid field reference: ' + stringValue(ref));\n  }\n  if (!ref.signal) {\n    field = isString(field) ? splitAccessPath(field).map(stringValue).join('][') : resolveField(field);\n  }\n  return object + '[' + field + ']';\n}\nfunction scale(enc, value) {\n  const scale = scaleRef(enc.scale);\n  if (enc.range != null) {\n    // pull value from scale range\n    value = `lerp(_range(${scale}), ${+enc.range})`;\n  } else {\n    // run value through scale and/or pull scale bandwidth\n    if (value !== undefined) value = `_scale(${scale}, ${value})`;\n    if (enc.band) {\n      value = (value ? value + '+' : '') + `_bandwidth(${scale})` + (+enc.band === 1 ? '' : '*' + property(enc.band));\n      if (enc.extra) {\n        // include logic to handle extraneous elements\n        value = `(datum.extra ? _scale(${scale}, datum.extra.value) : ${value})`;\n      }\n    }\n    if (value == null) value = '0';\n  }\n  return value;\n}\n\nfunction rule (enc) {\n  let code = '';\n  enc.forEach(rule => {\n    const value = entry$1(rule);\n    code += rule.test ? `(${rule.test})?${value}:` : value;\n  });\n\n  // if no else clause, terminate with null (#1366)\n  if (peek(code) === ':') {\n    code += 'null';\n  }\n  return code;\n}\n\nfunction parseEncode (encode, type, role, style, scope, params) {\n  const enc = {};\n  params = params || {};\n  params.encoders = {\n    $encode: enc\n  };\n  encode = applyDefaults(encode, type, role, style, scope.config);\n  for (const key in encode) {\n    enc[key] = parseBlock(encode[key], type, params, scope);\n  }\n  return params;\n}\nfunction parseBlock(block, marktype, params, scope) {\n  const channels = {},\n    fields = {};\n  for (const name in block) {\n    if (block[name] != null) {\n      // skip any null entries\n      channels[name] = parse$1(expr(block[name]), scope, params, fields);\n    }\n  }\n  return {\n    $expr: {\n      marktype,\n      channels\n    },\n    $fields: Object.keys(fields),\n    $output: Object.keys(block)\n  };\n}\nfunction expr(enc) {\n  return isArray(enc) ? rule(enc) : entry$1(enc);\n}\nfunction parse$1(code, scope, params, fields) {\n  const expr = parseExpression(code, scope);\n  expr.$fields.forEach(name => fields[name] = 1);\n  extend(params, expr.$params);\n  return expr.$expr;\n}\n\nconst OUTER = 'outer',\n  OUTER_INVALID = ['value', 'update', 'init', 'react', 'bind'];\nfunction outerError(prefix, name) {\n  error(prefix + ' for \"outer\" push: ' + stringValue(name));\n}\nfunction parseSignal (signal, scope) {\n  const name = signal.name;\n  if (signal.push === OUTER) {\n    // signal must already be defined, raise error if not\n    if (!scope.signals[name]) outerError('No prior signal definition', name);\n    // signal push must not use properties reserved for standard definition\n    OUTER_INVALID.forEach(prop => {\n      if (signal[prop] !== undefined) outerError('Invalid property ', prop);\n    });\n  } else {\n    // define a new signal in the current scope\n    const op = scope.addSignal(name, signal.value);\n    if (signal.react === false) op.react = false;\n    if (signal.bind) scope.addBinding(name, signal.bind);\n  }\n}\n\nfunction Entry(type, value, params, parent) {\n  this.id = -1;\n  this.type = type;\n  this.value = value;\n  this.params = params;\n  if (parent) this.parent = parent;\n}\nfunction entry(type, value, params, parent) {\n  return new Entry(type, value, params, parent);\n}\nfunction operator(value, params) {\n  return entry('operator', value, params);\n}\n\n// -----\n\nfunction ref(op) {\n  const ref = {\n    $ref: op.id\n  };\n  // if operator not yet registered, cache ref to resolve later\n  if (op.id < 0) (op.refs = op.refs || []).push(ref);\n  return ref;\n}\nfunction fieldRef$1(field, name) {\n  return name ? {\n    $field: field,\n    $name: name\n  } : {\n    $field: field\n  };\n}\nconst keyFieldRef = fieldRef$1('key');\nfunction compareRef(fields, orders) {\n  return {\n    $compare: fields,\n    $order: orders\n  };\n}\nfunction keyRef(fields, flat) {\n  const ref = {\n    $key: fields\n  };\n  if (flat) ref.$flat = true;\n  return ref;\n}\n\n// -----\n\nconst Ascending = 'ascending';\nconst Descending = 'descending';\nfunction sortKey(sort) {\n  return !isObject(sort) ? '' : (sort.order === Descending ? '-' : '+') + aggrField(sort.op, sort.field);\n}\nfunction aggrField(op, field) {\n  return (op && op.signal ? '$' + op.signal : op || '') + (op && field ? '_' : '') + (field && field.signal ? '$' + field.signal : field || '');\n}\n\n// -----\n\nconst Scope$1 = 'scope';\nconst View = 'view';\nfunction isSignal(_) {\n  return _ && _.signal;\n}\nfunction isExpr$1(_) {\n  return _ && _.expr;\n}\nfunction hasSignal(_) {\n  if (isSignal(_)) return true;\n  if (isObject(_)) for (const key in _) {\n    if (hasSignal(_[key])) return true;\n  }\n  return false;\n}\nfunction value(specValue, defaultValue) {\n  return specValue != null ? specValue : defaultValue;\n}\nfunction deref(v) {\n  return v && v.signal || v;\n}\n\nconst Timer = 'timer';\nfunction parseStream(stream, scope) {\n  const method = stream.merge ? mergeStream : stream.stream ? nestedStream : stream.type ? eventStream : error('Invalid stream specification: ' + stringValue(stream));\n  return method(stream, scope);\n}\nfunction eventSource(source) {\n  return source === Scope$1 ? View : source || View;\n}\nfunction mergeStream(stream, scope) {\n  const list = stream.merge.map(s => parseStream(s, scope)),\n    entry = streamParameters({\n      merge: list\n    }, stream, scope);\n  return scope.addStream(entry).id;\n}\nfunction nestedStream(stream, scope) {\n  const id = parseStream(stream.stream, scope),\n    entry = streamParameters({\n      stream: id\n    }, stream, scope);\n  return scope.addStream(entry).id;\n}\nfunction eventStream(stream, scope) {\n  let id;\n  if (stream.type === Timer) {\n    id = scope.event(Timer, stream.throttle);\n    stream = {\n      between: stream.between,\n      filter: stream.filter\n    };\n  } else {\n    id = scope.event(eventSource(stream.source), stream.type);\n  }\n  const entry = streamParameters({\n    stream: id\n  }, stream, scope);\n  return Object.keys(entry).length === 1 ? id : scope.addStream(entry).id;\n}\nfunction streamParameters(entry, stream, scope) {\n  let param = stream.between;\n  if (param) {\n    if (param.length !== 2) {\n      error('Stream \"between\" parameter must have 2 entries: ' + stringValue(stream));\n    }\n    entry.between = [parseStream(param[0], scope), parseStream(param[1], scope)];\n  }\n  param = stream.filter ? [].concat(stream.filter) : [];\n  if (stream.marktype || stream.markname || stream.markrole) {\n    // add filter for mark type, name and/or role\n    param.push(filterMark(stream.marktype, stream.markname, stream.markrole));\n  }\n  if (stream.source === Scope$1) {\n    // add filter to limit events from sub-scope only\n    param.push('inScope(event.item)');\n  }\n  if (param.length) {\n    entry.filter = parseExpression('(' + param.join(')&&(') + ')', scope).$expr;\n  }\n  if ((param = stream.throttle) != null) {\n    entry.throttle = +param;\n  }\n  if ((param = stream.debounce) != null) {\n    entry.debounce = +param;\n  }\n  if (stream.consume) {\n    entry.consume = true;\n  }\n  return entry;\n}\nfunction filterMark(type, name, role) {\n  const item = 'event.item';\n  return item + (type && type !== '*' ? '&&' + item + '.mark.marktype===\\'' + type + '\\'' : '') + (role ? '&&' + item + '.mark.role===\\'' + role + '\\'' : '') + (name ? '&&' + item + '.mark.name===\\'' + name + '\\'' : '');\n}\n\n// bypass expression parser for internal operator references\nconst OP_VALUE_EXPR = {\n  code: '_.$value',\n  ast: {\n    type: 'Identifier',\n    value: 'value'\n  }\n};\nfunction parseUpdate (spec, scope, target) {\n  const encode = spec.encode,\n    entry = {\n      target: target\n    };\n  let events = spec.events,\n    update = spec.update,\n    sources = [];\n  if (!events) {\n    error('Signal update missing events specification.');\n  }\n\n  // interpret as an event selector string\n  if (isString(events)) {\n    events = parseSelector(events, scope.isSubscope() ? Scope$1 : View);\n  }\n\n  // separate event streams from signal updates\n  events = array(events).filter(s => s.signal || s.scale ? (sources.push(s), 0) : 1);\n\n  // merge internal operator listeners\n  if (sources.length > 1) {\n    sources = [mergeSources(sources)];\n  }\n\n  // merge event streams, include as source\n  if (events.length) {\n    sources.push(events.length > 1 ? {\n      merge: events\n    } : events[0]);\n  }\n  if (encode != null) {\n    if (update) error('Signal encode and update are mutually exclusive.');\n    update = 'encode(item(),' + stringValue(encode) + ')';\n  }\n\n  // resolve update value\n  entry.update = isString(update) ? parseExpression(update, scope) : update.expr != null ? parseExpression(update.expr, scope) : update.value != null ? update.value : update.signal != null ? {\n    $expr: OP_VALUE_EXPR,\n    $params: {\n      $value: scope.signalRef(update.signal)\n    }\n  } : error('Invalid signal update specification.');\n  if (spec.force) {\n    entry.options = {\n      force: true\n    };\n  }\n  sources.forEach(source => scope.addUpdate(extend(streamSource(source, scope), entry)));\n}\nfunction streamSource(stream, scope) {\n  return {\n    source: stream.signal ? scope.signalRef(stream.signal) : stream.scale ? scope.scaleRef(stream.scale) : parseStream(stream, scope)\n  };\n}\nfunction mergeSources(sources) {\n  return {\n    signal: '[' + sources.map(s => s.scale ? 'scale(\"' + s.scale + '\")' : s.signal) + ']'\n  };\n}\n\nfunction parseSignalUpdates (signal, scope) {\n  const op = scope.getSignal(signal.name);\n  let expr = signal.update;\n  if (signal.init) {\n    if (expr) {\n      error('Signals can not include both init and update expressions.');\n    } else {\n      expr = signal.init;\n      op.initonly = true;\n    }\n  }\n  if (expr) {\n    expr = parseExpression(expr, scope);\n    op.update = expr.$expr;\n    op.params = expr.$params;\n  }\n  if (signal.on) {\n    signal.on.forEach(_ => parseUpdate(_, scope, op.id));\n  }\n}\n\nconst transform = name => (params, value, parent) => entry(name, value, params || undefined, parent);\nconst Aggregate = transform('aggregate');\nconst AxisTicks = transform('axisticks');\nconst Bound = transform('bound');\nconst Collect = transform('collect');\nconst Compare = transform('compare');\nconst DataJoin = transform('datajoin');\nconst Encode = transform('encode');\nconst Expression = transform('expression');\nconst Facet = transform('facet');\nconst Field = transform('field');\nconst Key = transform('key');\nconst LegendEntries = transform('legendentries');\nconst Load = transform('load');\nconst Mark = transform('mark');\nconst MultiExtent = transform('multiextent');\nconst MultiValues = transform('multivalues');\nconst Overlap = transform('overlap');\nconst Params = transform('params');\nconst PreFacet = transform('prefacet');\nconst Projection = transform('projection');\nconst Proxy = transform('proxy');\nconst Relay = transform('relay');\nconst Render = transform('render');\nconst Scale = transform('scale');\nconst Sieve = transform('sieve');\nconst SortItems = transform('sortitems');\nconst ViewLayout = transform('viewlayout');\nconst Values = transform('values');\n\nlet FIELD_REF_ID = 0;\nconst MULTIDOMAIN_SORT_OPS = {\n  min: 'min',\n  max: 'max',\n  count: 'sum'\n};\nfunction initScale(spec, scope) {\n  const type = spec.type || 'linear';\n  if (!isValidScaleType(type)) {\n    error('Unrecognized scale type: ' + stringValue(type));\n  }\n  scope.addScale(spec.name, {\n    type,\n    domain: undefined\n  });\n}\nfunction parseScale(spec, scope) {\n  const params = scope.getScale(spec.name).params;\n  let key;\n  params.domain = parseScaleDomain(spec.domain, spec, scope);\n  if (spec.range != null) {\n    params.range = parseScaleRange(spec, scope, params);\n  }\n  if (spec.interpolate != null) {\n    parseScaleInterpolate(spec.interpolate, params);\n  }\n  if (spec.nice != null) {\n    params.nice = parseScaleNice(spec.nice);\n  }\n  if (spec.bins != null) {\n    params.bins = parseScaleBins(spec.bins, scope);\n  }\n  for (key in spec) {\n    if (hasOwnProperty(params, key) || key === 'name') continue;\n    params[key] = parseLiteral(spec[key], scope);\n  }\n}\nfunction parseLiteral(v, scope) {\n  return !isObject(v) ? v : v.signal ? scope.signalRef(v.signal) : error('Unsupported object: ' + stringValue(v));\n}\nfunction parseArray(v, scope) {\n  return v.signal ? scope.signalRef(v.signal) : v.map(v => parseLiteral(v, scope));\n}\nfunction dataLookupError(name) {\n  error('Can not find data set: ' + stringValue(name));\n}\n\n// -- SCALE DOMAIN ----\n\nfunction parseScaleDomain(domain, spec, scope) {\n  if (!domain) {\n    if (spec.domainMin != null || spec.domainMax != null) {\n      error('No scale domain defined for domainMin/domainMax to override.');\n    }\n    return; // default domain\n  }\n\n  return domain.signal ? scope.signalRef(domain.signal) : (isArray(domain) ? explicitDomain : domain.fields ? multipleDomain : singularDomain)(domain, spec, scope);\n}\nfunction explicitDomain(domain, spec, scope) {\n  return domain.map(v => parseLiteral(v, scope));\n}\nfunction singularDomain(domain, spec, scope) {\n  const data = scope.getData(domain.data);\n  if (!data) dataLookupError(domain.data);\n  return isDiscrete(spec.type) ? data.valuesRef(scope, domain.field, parseSort(domain.sort, false)) : isQuantile(spec.type) ? data.domainRef(scope, domain.field) : data.extentRef(scope, domain.field);\n}\nfunction multipleDomain(domain, spec, scope) {\n  const data = domain.data,\n    fields = domain.fields.reduce((dom, d) => {\n      d = isString(d) ? {\n        data: data,\n        field: d\n      } : isArray(d) || d.signal ? fieldRef(d, scope) : d;\n      dom.push(d);\n      return dom;\n    }, []);\n  return (isDiscrete(spec.type) ? ordinalMultipleDomain : isQuantile(spec.type) ? quantileMultipleDomain : numericMultipleDomain)(domain, scope, fields);\n}\nfunction fieldRef(data, scope) {\n  const name = '_:vega:_' + FIELD_REF_ID++,\n    coll = Collect({});\n  if (isArray(data)) {\n    coll.value = {\n      $ingest: data\n    };\n  } else if (data.signal) {\n    const code = 'setdata(' + stringValue(name) + ',' + data.signal + ')';\n    coll.params.input = scope.signalRef(code);\n  }\n  scope.addDataPipeline(name, [coll, Sieve({})]);\n  return {\n    data: name,\n    field: 'data'\n  };\n}\nfunction ordinalMultipleDomain(domain, scope, fields) {\n  const sort = parseSort(domain.sort, true);\n  let a, v;\n\n  // get value counts for each domain field\n  const counts = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.countsRef(scope, f.field, sort);\n  });\n\n  // aggregate the results from each domain field\n  const p = {\n    groupby: keyFieldRef,\n    pulse: counts\n  };\n  if (sort) {\n    a = sort.op || 'count';\n    v = sort.field ? aggrField(a, sort.field) : 'count';\n    p.ops = [MULTIDOMAIN_SORT_OPS[a]];\n    p.fields = [scope.fieldRef(v)];\n    p.as = [v];\n  }\n  a = scope.add(Aggregate(p));\n\n  // collect aggregate output\n  const c = scope.add(Collect({\n    pulse: ref(a)\n  }));\n\n  // extract values for combined domain\n  v = scope.add(Values({\n    field: keyFieldRef,\n    sort: scope.sortRef(sort),\n    pulse: ref(c)\n  }));\n  return ref(v);\n}\nfunction parseSort(sort, multidomain) {\n  if (sort) {\n    if (!sort.field && !sort.op) {\n      if (isObject(sort)) sort.field = 'key';else sort = {\n        field: 'key'\n      };\n    } else if (!sort.field && sort.op !== 'count') {\n      error('No field provided for sort aggregate op: ' + sort.op);\n    } else if (multidomain && sort.field) {\n      if (sort.op && !MULTIDOMAIN_SORT_OPS[sort.op]) {\n        error('Multiple domain scales can not be sorted using ' + sort.op);\n      }\n    }\n  }\n  return sort;\n}\nfunction quantileMultipleDomain(domain, scope, fields) {\n  // get value arrays for each domain field\n  const values = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.domainRef(scope, f.field);\n  });\n\n  // combine value arrays\n  return ref(scope.add(MultiValues({\n    values: values\n  })));\n}\nfunction numericMultipleDomain(domain, scope, fields) {\n  // get extents for each domain field\n  const extents = fields.map(f => {\n    const data = scope.getData(f.data);\n    if (!data) dataLookupError(f.data);\n    return data.extentRef(scope, f.field);\n  });\n\n  // combine extents\n  return ref(scope.add(MultiExtent({\n    extents: extents\n  })));\n}\n\n// -- SCALE BINS -----\n\nfunction parseScaleBins(v, scope) {\n  return v.signal || isArray(v) ? parseArray(v, scope) : scope.objectProperty(v);\n}\n\n// -- SCALE NICE -----\n\nfunction parseScaleNice(nice) {\n  return isObject(nice) ? {\n    interval: parseLiteral(nice.interval),\n    step: parseLiteral(nice.step)\n  } : parseLiteral(nice);\n}\n\n// -- SCALE INTERPOLATION -----\n\nfunction parseScaleInterpolate(interpolate, params) {\n  params.interpolate = parseLiteral(interpolate.type || interpolate);\n  if (interpolate.gamma != null) {\n    params.interpolateGamma = parseLiteral(interpolate.gamma);\n  }\n}\n\n// -- SCALE RANGE -----\n\nfunction parseScaleRange(spec, scope, params) {\n  const config = scope.config.range;\n  let range = spec.range;\n  if (range.signal) {\n    return scope.signalRef(range.signal);\n  } else if (isString(range)) {\n    if (config && hasOwnProperty(config, range)) {\n      spec = extend({}, spec, {\n        range: config[range]\n      });\n      return parseScaleRange(spec, scope, params);\n    } else if (range === 'width') {\n      range = [0, {\n        signal: 'width'\n      }];\n    } else if (range === 'height') {\n      range = isDiscrete(spec.type) ? [0, {\n        signal: 'height'\n      }] : [{\n        signal: 'height'\n      }, 0];\n    } else {\n      error('Unrecognized scale range value: ' + stringValue(range));\n    }\n  } else if (range.scheme) {\n    params.scheme = isArray(range.scheme) ? parseArray(range.scheme, scope) : parseLiteral(range.scheme, scope);\n    if (range.extent) params.schemeExtent = parseArray(range.extent, scope);\n    if (range.count) params.schemeCount = parseLiteral(range.count, scope);\n    return;\n  } else if (range.step) {\n    params.rangeStep = parseLiteral(range.step, scope);\n    return;\n  } else if (isDiscrete(spec.type) && !isArray(range)) {\n    return parseScaleDomain(range, spec, scope);\n  } else if (!isArray(range)) {\n    error('Unsupported range type: ' + stringValue(range));\n  }\n  return range.map(v => (isArray(v) ? parseArray : parseLiteral)(v, scope));\n}\n\nfunction parseProjection (proj, scope) {\n  const config = scope.config.projection || {},\n    params = {};\n  for (const name in proj) {\n    if (name === 'name') continue;\n    params[name] = parseParameter$1(proj[name], name, scope);\n  }\n\n  // apply projection defaults from config\n  for (const name in config) {\n    if (params[name] == null) {\n      params[name] = parseParameter$1(config[name], name, scope);\n    }\n  }\n  scope.addProjection(proj.name, params);\n}\nfunction parseParameter$1(_, name, scope) {\n  return isArray(_) ? _.map(_ => parseParameter$1(_, name, scope)) : !isObject(_) ? _ : _.signal ? scope.signalRef(_.signal) : name === 'fit' ? _ : error('Unsupported parameter object: ' + stringValue(_));\n}\n\nconst Top = 'top';\nconst Left = 'left';\nconst Right = 'right';\nconst Bottom = 'bottom';\nconst Center = 'center';\nconst Vertical = 'vertical';\nconst Start = 'start';\nconst Middle = 'middle';\nconst End = 'end';\nconst Index = 'index';\nconst Label = 'label';\nconst Offset = 'offset';\nconst Perc = 'perc';\nconst Perc2 = 'perc2';\nconst Value = 'value';\nconst GuideLabelStyle = 'guide-label';\nconst GuideTitleStyle = 'guide-title';\nconst GroupTitleStyle = 'group-title';\nconst GroupSubtitleStyle = 'group-subtitle';\nconst Symbols = 'symbol';\nconst Gradient = 'gradient';\nconst Discrete = 'discrete';\nconst Size = 'size';\nconst Shape = 'shape';\nconst Fill = 'fill';\nconst Stroke = 'stroke';\nconst StrokeWidth = 'strokeWidth';\nconst StrokeDash = 'strokeDash';\nconst Opacity = 'opacity';\n\n// Encoding channels supported by legends\n// In priority order of 'canonical' scale\nconst LegendScales = [Size, Shape, Fill, Stroke, StrokeWidth, StrokeDash, Opacity];\nconst Skip = {\n  name: 1,\n  style: 1,\n  interactive: 1\n};\nconst zero = {\n  value: 0\n};\nconst one = {\n  value: 1\n};\n\nconst GroupMark = 'group';\nconst RectMark = 'rect';\nconst RuleMark = 'rule';\nconst SymbolMark = 'symbol';\nconst TextMark = 'text';\n\nfunction guideGroup (mark) {\n  mark.type = GroupMark;\n  mark.interactive = mark.interactive || false;\n  return mark;\n}\n\nfunction lookup(spec, config) {\n  const _ = (name, dflt) => value(spec[name], value(config[name], dflt));\n  _.isVertical = s => Vertical === value(spec.direction, config.direction || (s ? config.symbolDirection : config.gradientDirection));\n  _.gradientLength = () => value(spec.gradientLength, config.gradientLength || config.gradientWidth);\n  _.gradientThickness = () => value(spec.gradientThickness, config.gradientThickness || config.gradientHeight);\n  _.entryColumns = () => value(spec.columns, value(config.columns, +_.isVertical(true)));\n  return _;\n}\nfunction getEncoding(name, encode) {\n  const v = encode && (encode.update && encode.update[name] || encode.enter && encode.enter[name]);\n  return v && v.signal ? v : v ? v.value : null;\n}\nfunction getStyle(name, scope, style) {\n  const s = scope.config.style[style];\n  return s && s[name];\n}\nfunction anchorExpr(s, e, m) {\n  return `item.anchor === '${Start}' ? ${s} : item.anchor === '${End}' ? ${e} : ${m}`;\n}\nconst alignExpr$1 = anchorExpr(stringValue(Left), stringValue(Right), stringValue(Center));\nfunction tickBand(_) {\n  const v = _('tickBand');\n  let offset = _('tickOffset'),\n    band,\n    extra;\n  if (!v) {\n    // if no tick band entry, fall back on other properties\n    band = _('bandPosition');\n    extra = _('tickExtra');\n  } else if (v.signal) {\n    // if signal, augment code to interpret values\n    band = {\n      signal: `(${v.signal}) === 'extent' ? 1 : 0.5`\n    };\n    extra = {\n      signal: `(${v.signal}) === 'extent'`\n    };\n    if (!isObject(offset)) {\n      offset = {\n        signal: `(${v.signal}) === 'extent' ? 0 : ${offset}`\n      };\n    }\n  } else if (v === 'extent') {\n    // if constant, simply set values\n    band = 1;\n    extra = true;\n    offset = 0;\n  } else {\n    band = 0.5;\n    extra = false;\n  }\n  return {\n    extra,\n    band,\n    offset\n  };\n}\nfunction extendOffset(value, offset) {\n  return !offset ? value : !value ? offset : !isObject(value) ? {\n    value,\n    offset\n  } : Object.assign({}, value, {\n    offset: extendOffset(value.offset, offset)\n  });\n}\n\nfunction guideMark (mark, extras) {\n  if (extras) {\n    mark.name = extras.name;\n    mark.style = extras.style || mark.style;\n    mark.interactive = !!extras.interactive;\n    mark.encode = extendEncode(mark.encode, extras, Skip);\n  } else {\n    mark.interactive = false;\n  }\n  return mark;\n}\n\nfunction legendGradient (spec, scale, config, userEncode) {\n  const _ = lookup(spec, config),\n    vertical = _.isVertical(),\n    thickness = _.gradientThickness(),\n    length = _.gradientLength();\n  let enter, start, stop, width, height;\n  if (vertical) {\n    start = [0, 1];\n    stop = [0, 0];\n    width = thickness;\n    height = length;\n  } else {\n    start = [0, 0];\n    stop = [1, 0];\n    width = length;\n    height = thickness;\n  }\n  const encode = {\n    enter: enter = {\n      opacity: zero,\n      x: zero,\n      y: zero,\n      width: encoder(width),\n      height: encoder(height)\n    },\n    update: extend({}, enter, {\n      opacity: one,\n      fill: {\n        gradient: scale,\n        start: start,\n        stop: stop\n      }\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gradientStrokeColor'),\n    strokeWidth: _('gradientStrokeWidth')\n  }, {\n    // update\n    opacity: _('gradientOpacity')\n  });\n  return guideMark({\n    type: RectMark,\n    role: LegendGradientRole,\n    encode\n  }, userEncode);\n}\n\nfunction legendGradientDiscrete (spec, scale, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n    vertical = _.isVertical(),\n    thickness = _.gradientThickness(),\n    length = _.gradientLength();\n  let u,\n    v,\n    uu,\n    vv,\n    adjust = '';\n  vertical ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-') : (u = 'x', uu = 'x2', v = 'y', vv = 'height');\n  const enter = {\n    opacity: zero,\n    fill: {\n      scale: scale,\n      field: Value\n    }\n  };\n  enter[u] = {\n    signal: adjust + 'datum.' + Perc,\n    mult: length\n  };\n  enter[v] = zero;\n  enter[uu] = {\n    signal: adjust + 'datum.' + Perc2,\n    mult: length\n  };\n  enter[vv] = encoder(thickness);\n  const encode = {\n    enter: enter,\n    update: extend({}, enter, {\n      opacity: one\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gradientStrokeColor'),\n    strokeWidth: _('gradientStrokeWidth')\n  }, {\n    // update\n    opacity: _('gradientOpacity')\n  });\n  return guideMark({\n    type: RectMark,\n    role: LegendBandRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nconst alignExpr = `datum.${Perc}<=0?\"${Left}\":datum.${Perc}>=1?\"${Right}\":\"${Center}\"`,\n  baselineExpr = `datum.${Perc}<=0?\"${Bottom}\":datum.${Perc}>=1?\"${Top}\":\"${Middle}\"`;\nfunction legendGradientLabels (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n    vertical = _.isVertical(),\n    thickness = encoder(_.gradientThickness()),\n    length = _.gradientLength();\n  let overlap = _('labelOverlap'),\n    enter,\n    update,\n    u,\n    v,\n    adjust = '';\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontStyle: _('labelFontStyle'),\n    fontWeight: _('labelFontWeight'),\n    limit: value(spec.labelLimit, config.gradientLabelLimit)\n  });\n  if (vertical) {\n    enter.align = {\n      value: 'left'\n    };\n    enter.baseline = update.baseline = {\n      signal: baselineExpr\n    };\n    u = 'y';\n    v = 'x';\n    adjust = '1-';\n  } else {\n    enter.align = update.align = {\n      signal: alignExpr\n    };\n    enter.baseline = {\n      value: 'top'\n    };\n    u = 'x';\n    v = 'y';\n  }\n  enter[u] = update[u] = {\n    signal: adjust + 'datum.' + Perc,\n    mult: length\n  };\n  enter[v] = update[v] = thickness;\n  thickness.offset = value(spec.labelOffset, config.gradientLabelOffset) || 0;\n  overlap = overlap ? {\n    separation: _('labelSeparation'),\n    method: overlap,\n    order: 'datum.' + Index\n  } : undefined;\n\n  // type, role, style, key, dataRef, encode, extras\n  return guideMark({\n    type: TextMark,\n    role: LegendLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: dataRef,\n    encode,\n    overlap\n  }, userEncode);\n}\n\n// userEncode is top-level, includes entries, symbols, labels\nfunction legendSymbolGroups (spec, config, userEncode, dataRef, columns) {\n  const _ = lookup(spec, config),\n    entries = userEncode.entries,\n    interactive = !!(entries && entries.interactive),\n    name = entries ? entries.name : undefined,\n    height = _('clipHeight'),\n    symbolOffset = _('symbolOffset'),\n    valueRef = {\n      data: 'value'\n    },\n    xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`,\n    yEncode = height ? encoder(height) : {\n      field: Size\n    },\n    index = `datum.${Index}`,\n    ncols = `max(1, ${columns})`;\n  let encode, enter, update, nrows, sort;\n  yEncode.mult = 0.5;\n\n  // -- LEGEND SYMBOLS --\n  encode = {\n    enter: enter = {\n      opacity: zero,\n      x: {\n        signal: xSignal,\n        mult: 0.5,\n        offset: symbolOffset\n      },\n      y: yEncode\n    },\n    update: update = {\n      opacity: one,\n      x: enter.x,\n      y: enter.y\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  let baseFill = null,\n    baseStroke = null;\n  if (!spec.fill) {\n    baseFill = config.symbolBaseFillColor;\n    baseStroke = config.symbolBaseStrokeColor;\n  }\n  addEncoders(encode, {\n    fill: _('symbolFillColor', baseFill),\n    shape: _('symbolType'),\n    size: _('symbolSize'),\n    stroke: _('symbolStrokeColor', baseStroke),\n    strokeDash: _('symbolDash'),\n    strokeDashOffset: _('symbolDashOffset'),\n    strokeWidth: _('symbolStrokeWidth')\n  }, {\n    // update\n    opacity: _('symbolOpacity')\n  });\n  LegendScales.forEach(scale => {\n    if (spec[scale]) {\n      update[scale] = enter[scale] = {\n        scale: spec[scale],\n        field: Value\n      };\n    }\n  });\n  const symbols = guideMark({\n    type: SymbolMark,\n    role: LegendSymbolRole,\n    key: Value,\n    from: valueRef,\n    clip: height ? true : undefined,\n    encode\n  }, userEncode.symbols);\n\n  // -- LEGEND LABELS --\n  const labelOffset = encoder(symbolOffset);\n  labelOffset.offset = _('labelOffset');\n  encode = {\n    enter: enter = {\n      opacity: zero,\n      x: {\n        signal: xSignal,\n        offset: labelOffset\n      },\n      y: yEncode\n    },\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      },\n      x: enter.x,\n      y: enter.y\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    align: _('labelAlign'),\n    baseline: _('labelBaseline'),\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontStyle: _('labelFontStyle'),\n    fontWeight: _('labelFontWeight'),\n    limit: _('labelLimit')\n  });\n  const labels = guideMark({\n    type: TextMark,\n    role: LegendLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: valueRef,\n    encode\n  }, userEncode.labels);\n\n  // -- LEGEND ENTRY GROUPS --\n  encode = {\n    enter: {\n      noBound: {\n        value: !height\n      },\n      // ignore width/height in bounds calc\n      width: zero,\n      height: height ? encoder(height) : zero,\n      opacity: zero\n    },\n    exit: {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one,\n      row: {\n        signal: null\n      },\n      column: {\n        signal: null\n      }\n    }\n  };\n\n  // annotate and sort groups to ensure correct ordering\n  if (_.isVertical(true)) {\n    nrows = `ceil(item.mark.items.length / ${ncols})`;\n    update.row.signal = `${index}%${nrows}`;\n    update.column.signal = `floor(${index} / ${nrows})`;\n    sort = {\n      field: ['row', index]\n    };\n  } else {\n    update.row.signal = `floor(${index} / ${ncols})`;\n    update.column.signal = `${index} % ${ncols}`;\n    sort = {\n      field: index\n    };\n  }\n  // handle zero column case (implies infinite columns)\n  update.column.signal = `(${columns})?${update.column.signal}:${index}`;\n\n  // facet legend entries into sub-groups\n  dataRef = {\n    facet: {\n      data: dataRef,\n      name: 'value',\n      groupby: Index\n    }\n  };\n  return guideGroup({\n    role: ScopeRole,\n    from: dataRef,\n    encode: extendEncode(encode, entries, Skip),\n    marks: [symbols, labels],\n    name,\n    interactive,\n    sort\n  });\n}\nfunction legendSymbolLayout(spec, config) {\n  const _ = lookup(spec, config);\n\n  // layout parameters for legend entries\n  return {\n    align: _('gridAlign'),\n    columns: _.entryColumns(),\n    center: {\n      row: true,\n      column: false\n    },\n    padding: {\n      row: _('rowPadding'),\n      column: _('columnPadding')\n    }\n  };\n}\n\n// expression logic for align, anchor, angle, and baseline calculation\nconst isL = 'item.orient === \"left\"',\n  isR = 'item.orient === \"right\"',\n  isLR = `(${isL} || ${isR})`,\n  isVG = `datum.vgrad && ${isLR}`,\n  baseline = anchorExpr('\"top\"', '\"bottom\"', '\"middle\"'),\n  alignFlip = anchorExpr('\"right\"', '\"left\"', '\"center\"'),\n  exprAlign = `datum.vgrad && ${isR} ? (${alignFlip}) : (${isLR} && !(datum.vgrad && ${isL})) ? \"left\" : ${alignExpr$1}`,\n  exprAnchor = `item._anchor || (${isLR} ? \"middle\" : \"start\")`,\n  exprAngle = `${isVG} ? (${isL} ? -90 : 90) : 0`,\n  exprBaseline = `${isLR} ? (datum.vgrad ? (${isR} ? \"bottom\" : \"top\") : ${baseline}) : \"top\"`;\nfunction legendTitle (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config);\n  const encode = {\n    enter: {\n      opacity: zero\n    },\n    update: {\n      opacity: one,\n      x: {\n        field: {\n          group: 'padding'\n        }\n      },\n      y: {\n        field: {\n          group: 'padding'\n        }\n      }\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    orient: _('titleOrient'),\n    _anchor: _('titleAnchor'),\n    anchor: {\n      signal: exprAnchor\n    },\n    angle: {\n      signal: exprAngle\n    },\n    align: {\n      signal: exprAlign\n    },\n    baseline: {\n      signal: exprBaseline\n    },\n    text: spec.title,\n    fill: _('titleColor'),\n    fillOpacity: _('titleOpacity'),\n    font: _('titleFont'),\n    fontSize: _('titleFontSize'),\n    fontStyle: _('titleFontStyle'),\n    fontWeight: _('titleFontWeight'),\n    limit: _('titleLimit'),\n    lineHeight: _('titleLineHeight')\n  }, {\n    // require update\n    align: _('titleAlign'),\n    baseline: _('titleBaseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: LegendTitleRole,\n    style: GuideTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction clip (clip, scope) {\n  let expr;\n  if (isObject(clip)) {\n    if (clip.signal) {\n      expr = clip.signal;\n    } else if (clip.path) {\n      expr = 'pathShape(' + param(clip.path) + ')';\n    } else if (clip.sphere) {\n      expr = 'geoShape(' + param(clip.sphere) + ', {type: \"Sphere\"})';\n    }\n  }\n  return expr ? scope.signalRef(expr) : !!clip;\n}\nfunction param(value) {\n  return isObject(value) && value.signal ? value.signal : stringValue(value);\n}\n\nfunction getRole (spec) {\n  const role = spec.role || '';\n  return !role.indexOf('axis') || !role.indexOf('legend') || !role.indexOf('title') ? role : spec.type === GroupMark ? ScopeRole : role || MarkRole;\n}\n\nfunction definition (spec) {\n  return {\n    marktype: spec.type,\n    name: spec.name || undefined,\n    role: spec.role || getRole(spec),\n    zindex: +spec.zindex || undefined,\n    aria: spec.aria,\n    description: spec.description\n  };\n}\n\nfunction interactive (spec, scope) {\n  return spec && spec.signal ? scope.signalRef(spec.signal) : spec === false ? false : true;\n}\n\n/**\n * Parse a data transform specification.\n */\nfunction parseTransform (spec, scope) {\n  const def = definition$1(spec.type);\n  if (!def) error('Unrecognized transform type: ' + stringValue(spec.type));\n  const t = entry(def.type.toLowerCase(), null, parseParameters(def, spec, scope));\n  if (spec.signal) scope.addSignal(spec.signal, scope.proxy(t));\n  t.metadata = def.metadata || {};\n  return t;\n}\n\n/**\n * Parse all parameters of a data transform.\n */\nfunction parseParameters(def, spec, scope) {\n  const params = {},\n    n = def.params.length;\n  for (let i = 0; i < n; ++i) {\n    const pdef = def.params[i];\n    params[pdef.name] = parseParameter(pdef, spec, scope);\n  }\n  return params;\n}\n\n/**\n * Parse a data transform parameter.\n */\nfunction parseParameter(def, spec, scope) {\n  const type = def.type,\n    value = spec[def.name];\n  if (type === 'index') {\n    return parseIndexParameter(def, spec, scope);\n  } else if (value === undefined) {\n    if (def.required) {\n      error('Missing required ' + stringValue(spec.type) + ' parameter: ' + stringValue(def.name));\n    }\n    return;\n  } else if (type === 'param') {\n    return parseSubParameters(def, spec, scope);\n  } else if (type === 'projection') {\n    return scope.projectionRef(spec[def.name]);\n  }\n  return def.array && !isSignal(value) ? value.map(v => parameterValue(def, v, scope)) : parameterValue(def, value, scope);\n}\n\n/**\n * Parse a single parameter value.\n */\nfunction parameterValue(def, value, scope) {\n  const type = def.type;\n  if (isSignal(value)) {\n    return isExpr(type) ? error('Expression references can not be signals.') : isField(type) ? scope.fieldRef(value) : isCompare(type) ? scope.compareRef(value) : scope.signalRef(value.signal);\n  } else {\n    const expr = def.expr || isField(type);\n    return expr && outerExpr(value) ? scope.exprRef(value.expr, value.as) : expr && outerField(value) ? fieldRef$1(value.field, value.as) : isExpr(type) ? parseExpression(value, scope) : isData(type) ? ref(scope.getData(value).values) : isField(type) ? fieldRef$1(value) : isCompare(type) ? scope.compareRef(value) : value;\n  }\n}\n\n/**\n * Parse parameter for accessing an index of another data set.\n */\nfunction parseIndexParameter(def, spec, scope) {\n  if (!isString(spec.from)) {\n    error('Lookup \"from\" parameter must be a string literal.');\n  }\n  return scope.getData(spec.from).lookupRef(scope, spec.key);\n}\n\n/**\n * Parse a parameter that contains one or more sub-parameter objects.\n */\nfunction parseSubParameters(def, spec, scope) {\n  const value = spec[def.name];\n  if (def.array) {\n    if (!isArray(value)) {\n      // signals not allowed!\n      error('Expected an array of sub-parameters. Instead: ' + stringValue(value));\n    }\n    return value.map(v => parseSubParameter(def, v, scope));\n  } else {\n    return parseSubParameter(def, value, scope);\n  }\n}\n\n/**\n * Parse a sub-parameter object.\n */\nfunction parseSubParameter(def, value, scope) {\n  const n = def.params.length;\n  let pdef;\n\n  // loop over defs to find matching key\n  for (let i = 0; i < n; ++i) {\n    pdef = def.params[i];\n    for (const k in pdef.key) {\n      if (pdef.key[k] !== value[k]) {\n        pdef = null;\n        break;\n      }\n    }\n    if (pdef) break;\n  }\n  // raise error if matching key not found\n  if (!pdef) error('Unsupported parameter: ' + stringValue(value));\n\n  // parse params, create Params transform, return ref\n  const params = extend(parseParameters(pdef, value, scope), pdef.key);\n  return ref(scope.add(Params(params)));\n}\n\n// -- Utilities -----\n\nconst outerExpr = _ => _ && _.expr;\nconst outerField = _ => _ && _.field;\nconst isData = _ => _ === 'data';\nconst isExpr = _ => _ === 'expr';\nconst isField = _ => _ === 'field';\nconst isCompare = _ => _ === 'compare';\n\nfunction parseData$1 (from, group, scope) {\n  let facet, key, op, dataRef, parent;\n\n  // if no source data, generate singleton datum\n  if (!from) {\n    dataRef = ref(scope.add(Collect(null, [{}])));\n  }\n\n  // if faceted, process facet specification\n  else if (facet = from.facet) {\n    if (!group) error('Only group marks can be faceted.');\n\n    // use pre-faceted source data, if available\n    if (facet.field != null) {\n      dataRef = parent = getDataRef(facet, scope);\n    } else {\n      // generate facet aggregates if no direct data specification\n      if (!from.data) {\n        op = parseTransform(extend({\n          type: 'aggregate',\n          groupby: array(facet.groupby)\n        }, facet.aggregate), scope);\n        op.params.key = scope.keyRef(facet.groupby);\n        op.params.pulse = getDataRef(facet, scope);\n        dataRef = parent = ref(scope.add(op));\n      } else {\n        parent = ref(scope.getData(from.data).aggregate);\n      }\n      key = scope.keyRef(facet.groupby, true);\n    }\n  }\n\n  // if not yet defined, get source data reference\n  if (!dataRef) {\n    dataRef = getDataRef(from, scope);\n  }\n  return {\n    key: key,\n    pulse: dataRef,\n    parent: parent\n  };\n}\nfunction getDataRef(from, scope) {\n  return from.$ref ? from : from.data && from.data.$ref ? from.data : ref(scope.getData(from.data).output);\n}\n\nfunction DataScope(scope, input, output, values, aggr) {\n  this.scope = scope; // parent scope object\n  this.input = input; // first operator in pipeline (tuple input)\n  this.output = output; // last operator in pipeline (tuple output)\n  this.values = values; // operator for accessing tuples (but not tuple flow)\n\n  // last aggregate in transform pipeline\n  this.aggregate = aggr;\n\n  // lookup table of field indices\n  this.index = {};\n}\nDataScope.fromEntries = function (scope, entries) {\n  const n = entries.length,\n    values = entries[n - 1],\n    output = entries[n - 2];\n  let input = entries[0],\n    aggr = null,\n    i = 1;\n  if (input && input.type === 'load') {\n    input = entries[1];\n  }\n\n  // add operator entries to this scope, wire up pulse chain\n  scope.add(entries[0]);\n  for (; i < n; ++i) {\n    entries[i].params.pulse = ref(entries[i - 1]);\n    scope.add(entries[i]);\n    if (entries[i].type === 'aggregate') aggr = entries[i];\n  }\n  return new DataScope(scope, input, output, values, aggr);\n};\nfunction fieldKey(field) {\n  return isString(field) ? field : null;\n}\nfunction addSortField(scope, p, sort) {\n  const as = aggrField(sort.op, sort.field);\n  let s;\n  if (p.ops) {\n    for (let i = 0, n = p.as.length; i < n; ++i) {\n      if (p.as[i] === as) return;\n    }\n  } else {\n    p.ops = ['count'];\n    p.fields = [null];\n    p.as = ['count'];\n  }\n  if (sort.op) {\n    p.ops.push((s = sort.op.signal) ? scope.signalRef(s) : sort.op);\n    p.fields.push(scope.fieldRef(sort.field));\n    p.as.push(as);\n  }\n}\nfunction cache(scope, ds, name, optype, field, counts, index) {\n  const cache = ds[name] || (ds[name] = {}),\n    sort = sortKey(counts);\n  let k = fieldKey(field),\n    v,\n    op;\n  if (k != null) {\n    scope = ds.scope;\n    k = k + (sort ? '|' + sort : '');\n    v = cache[k];\n  }\n  if (!v) {\n    const params = counts ? {\n      field: keyFieldRef,\n      pulse: ds.countsRef(scope, field, counts)\n    } : {\n      field: scope.fieldRef(field),\n      pulse: ref(ds.output)\n    };\n    if (sort) params.sort = scope.sortRef(counts);\n    op = scope.add(entry(optype, undefined, params));\n    if (index) ds.index[field] = op;\n    v = ref(op);\n    if (k != null) cache[k] = v;\n  }\n  return v;\n}\nDataScope.prototype = {\n  countsRef(scope, field, sort) {\n    const ds = this,\n      cache = ds.counts || (ds.counts = {}),\n      k = fieldKey(field);\n    let v, a, p;\n    if (k != null) {\n      scope = ds.scope;\n      v = cache[k];\n    }\n    if (!v) {\n      p = {\n        groupby: scope.fieldRef(field, 'key'),\n        pulse: ref(ds.output)\n      };\n      if (sort && sort.field) addSortField(scope, p, sort);\n      a = scope.add(Aggregate(p));\n      v = scope.add(Collect({\n        pulse: ref(a)\n      }));\n      v = {\n        agg: a,\n        ref: ref(v)\n      };\n      if (k != null) cache[k] = v;\n    } else if (sort && sort.field) {\n      addSortField(scope, v.agg.params, sort);\n    }\n    return v.ref;\n  },\n  tuplesRef() {\n    return ref(this.values);\n  },\n  extentRef(scope, field) {\n    return cache(scope, this, 'extent', 'extent', field, false);\n  },\n  domainRef(scope, field) {\n    return cache(scope, this, 'domain', 'values', field, false);\n  },\n  valuesRef(scope, field, sort) {\n    return cache(scope, this, 'vals', 'values', field, sort || true);\n  },\n  lookupRef(scope, field) {\n    return cache(scope, this, 'lookup', 'tupleindex', field, false);\n  },\n  indataRef(scope, field) {\n    return cache(scope, this, 'indata', 'tupleindex', field, true, true);\n  }\n};\n\nfunction parseFacet (spec, scope, group) {\n  const facet = spec.from.facet,\n    name = facet.name,\n    data = getDataRef(facet, scope);\n  let op;\n  if (!facet.name) {\n    error('Facet must have a name: ' + stringValue(facet));\n  }\n  if (!facet.data) {\n    error('Facet must reference a data set: ' + stringValue(facet));\n  }\n  if (facet.field) {\n    op = scope.add(PreFacet({\n      field: scope.fieldRef(facet.field),\n      pulse: data\n    }));\n  } else if (facet.groupby) {\n    op = scope.add(Facet({\n      key: scope.keyRef(facet.groupby),\n      group: ref(scope.proxy(group.parent)),\n      pulse: data\n    }));\n  } else {\n    error('Facet must specify groupby or field: ' + stringValue(facet));\n  }\n\n  // initialize facet subscope\n  const subscope = scope.fork(),\n    source = subscope.add(Collect()),\n    values = subscope.add(Sieve({\n      pulse: ref(source)\n    }));\n  subscope.addData(name, new DataScope(subscope, source, source, values));\n  subscope.addSignal('parent', null);\n\n  // parse faceted subflow\n  op.params.subflow = {\n    $subflow: subscope.parse(spec).toRuntime()\n  };\n}\n\nfunction parseSubflow (spec, scope, input) {\n  const op = scope.add(PreFacet({\n      pulse: input.pulse\n    })),\n    subscope = scope.fork();\n  subscope.add(Sieve());\n  subscope.addSignal('parent', null);\n\n  // parse group mark subflow\n  op.params.subflow = {\n    $subflow: subscope.parse(spec).toRuntime()\n  };\n}\n\nfunction parseTrigger (spec, scope, name) {\n  const remove = spec.remove,\n    insert = spec.insert,\n    toggle = spec.toggle,\n    modify = spec.modify,\n    values = spec.values,\n    op = scope.add(operator());\n  const update = 'if(' + spec.trigger + ',modify(\"' + name + '\",' + [insert, remove, toggle, modify, values].map(_ => _ == null ? 'null' : _).join(',') + '),0)';\n  const expr = parseExpression(update, scope);\n  op.update = expr.$expr;\n  op.params = expr.$params;\n}\n\nfunction parseMark (spec, scope) {\n  const role = getRole(spec),\n    group = spec.type === GroupMark,\n    facet = spec.from && spec.from.facet,\n    overlap = spec.overlap;\n  let layout = spec.layout || role === ScopeRole || role === FrameRole,\n    ops,\n    op,\n    store,\n    enc,\n    name,\n    layoutRef,\n    boundRef;\n  const nested = role === MarkRole || layout || facet;\n\n  // resolve input data\n  const input = parseData$1(spec.from, group, scope);\n\n  // data join to map tuples to visual items\n  op = scope.add(DataJoin({\n    key: input.key || (spec.key ? fieldRef$1(spec.key) : undefined),\n    pulse: input.pulse,\n    clean: !group\n  }));\n  const joinRef = ref(op);\n\n  // collect visual items\n  op = store = scope.add(Collect({\n    pulse: joinRef\n  }));\n\n  // connect visual items to scenegraph\n  op = scope.add(Mark({\n    markdef: definition(spec),\n    interactive: interactive(spec.interactive, scope),\n    clip: clip(spec.clip, scope),\n    context: {\n      $context: true\n    },\n    groups: scope.lookup(),\n    parent: scope.signals.parent ? scope.signalRef('parent') : null,\n    index: scope.markpath(),\n    pulse: ref(op)\n  }));\n  const markRef = ref(op);\n\n  // add visual encoders\n  op = enc = scope.add(Encode(parseEncode(spec.encode, spec.type, role, spec.style, scope, {\n    mod: false,\n    pulse: markRef\n  })));\n\n  // monitor parent marks to propagate changes\n  op.params.parent = scope.encode();\n\n  // add post-encoding transforms, if defined\n  if (spec.transform) {\n    spec.transform.forEach(_ => {\n      const tx = parseTransform(_, scope),\n        md = tx.metadata;\n      if (md.generates || md.changes) {\n        error('Mark transforms should not generate new data.');\n      }\n      if (!md.nomod) enc.params.mod = true; // update encode mod handling\n      tx.params.pulse = ref(op);\n      scope.add(op = tx);\n    });\n  }\n\n  // if item sort specified, perform post-encoding\n  if (spec.sort) {\n    op = scope.add(SortItems({\n      sort: scope.compareRef(spec.sort),\n      pulse: ref(op)\n    }));\n  }\n  const encodeRef = ref(op);\n\n  // add view layout operator if needed\n  if (facet || layout) {\n    layout = scope.add(ViewLayout({\n      layout: scope.objectProperty(spec.layout),\n      legends: scope.legends,\n      mark: markRef,\n      pulse: encodeRef\n    }));\n    layoutRef = ref(layout);\n  }\n\n  // compute bounding boxes\n  const bound = scope.add(Bound({\n    mark: markRef,\n    pulse: layoutRef || encodeRef\n  }));\n  boundRef = ref(bound);\n\n  // if group mark, recurse to parse nested content\n  if (group) {\n    // juggle layout & bounds to ensure they run *after* any faceting transforms\n    if (nested) {\n      ops = scope.operators;\n      ops.pop();\n      if (layout) ops.pop();\n    }\n    scope.pushState(encodeRef, layoutRef || boundRef, joinRef);\n    facet ? parseFacet(spec, scope, input) // explicit facet\n    : nested ? parseSubflow(spec, scope, input) // standard mark group\n    : scope.parse(spec); // guide group, we can avoid nested scopes\n    scope.popState();\n    if (nested) {\n      if (layout) ops.push(layout);\n      ops.push(bound);\n    }\n  }\n\n  // if requested, add overlap removal transform\n  if (overlap) {\n    boundRef = parseOverlap(overlap, boundRef, scope);\n  }\n\n  // render / sieve items\n  const render = scope.add(Render({\n      pulse: boundRef\n    })),\n    sieve = scope.add(Sieve({\n      pulse: ref(render)\n    }, undefined, scope.parent()));\n\n  // if mark is named, make accessible as reactive geometry\n  // add trigger updates if defined\n  if (spec.name != null) {\n    name = spec.name;\n    scope.addData(name, new DataScope(scope, store, render, sieve));\n    if (spec.on) spec.on.forEach(on => {\n      if (on.insert || on.remove || on.toggle) {\n        error('Marks only support modify triggers.');\n      }\n      parseTrigger(on, scope, name);\n    });\n  }\n}\nfunction parseOverlap(overlap, source, scope) {\n  const method = overlap.method,\n    bound = overlap.bound,\n    sep = overlap.separation;\n  const params = {\n    separation: isSignal(sep) ? scope.signalRef(sep.signal) : sep,\n    method: isSignal(method) ? scope.signalRef(method.signal) : method,\n    pulse: source\n  };\n  if (overlap.order) {\n    params.sort = scope.compareRef({\n      field: overlap.order\n    });\n  }\n  if (bound) {\n    const tol = bound.tolerance;\n    params.boundTolerance = isSignal(tol) ? scope.signalRef(tol.signal) : +tol;\n    params.boundScale = scope.scaleRef(bound.scale);\n    params.boundOrient = bound.orient;\n  }\n  return ref(scope.add(Overlap(params)));\n}\n\nfunction parseLegend (spec, scope) {\n  const config = scope.config.legend,\n    encode = spec.encode || {},\n    _ = lookup(spec, config),\n    legendEncode = encode.legend || {},\n    name = legendEncode.name || undefined,\n    interactive = legendEncode.interactive,\n    style = legendEncode.style,\n    scales = {};\n  let scale = 0,\n    entryLayout,\n    params,\n    children;\n\n  // resolve scales and 'canonical' scale name\n  LegendScales.forEach(s => spec[s] ? (scales[s] = spec[s], scale = scale || spec[s]) : 0);\n  if (!scale) error('Missing valid scale for legend.');\n\n  // resolve legend type (symbol, gradient, or discrete gradient)\n  const type = legendType(spec, scope.scaleType(scale));\n\n  // single-element data source for legend group\n  const datum = {\n    title: spec.title != null,\n    scales: scales,\n    type: type,\n    vgrad: type !== 'symbol' && _.isVertical()\n  };\n  const dataRef = ref(scope.add(Collect(null, [datum])));\n\n  // encoding properties for legend entry sub-group\n  const entryEncode = {\n    enter: {\n      x: {\n        value: 0\n      },\n      y: {\n        value: 0\n      }\n    }\n  };\n\n  // data source for legend values\n  const entryRef = ref(scope.add(LegendEntries(params = {\n    type: type,\n    scale: scope.scaleRef(scale),\n    count: scope.objectProperty(_('tickCount')),\n    limit: scope.property(_('symbolLimit')),\n    values: scope.objectProperty(spec.values),\n    minstep: scope.property(spec.tickMinStep),\n    formatType: scope.property(spec.formatType),\n    formatSpecifier: scope.property(spec.format)\n  })));\n\n  // continuous gradient legend\n  if (type === Gradient) {\n    children = [legendGradient(spec, scale, config, encode.gradient), legendGradientLabels(spec, config, encode.labels, entryRef)];\n    // adjust default tick count based on the gradient length\n    params.count = params.count || scope.signalRef(`max(2,2*floor((${deref(_.gradientLength())})/100))`);\n  }\n\n  // discrete gradient legend\n  else if (type === Discrete) {\n    children = [legendGradientDiscrete(spec, scale, config, encode.gradient, entryRef), legendGradientLabels(spec, config, encode.labels, entryRef)];\n  }\n\n  // symbol legend\n  else {\n    // determine legend symbol group layout\n    entryLayout = legendSymbolLayout(spec, config);\n    children = [legendSymbolGroups(spec, config, encode, entryRef, deref(entryLayout.columns))];\n    // pass symbol size information to legend entry generator\n    params.size = sizeExpression(spec, scope, children[0].marks);\n  }\n\n  // generate legend marks\n  children = [guideGroup({\n    role: LegendEntryRole,\n    from: dataRef,\n    encode: entryEncode,\n    marks: children,\n    layout: entryLayout,\n    interactive\n  })];\n\n  // include legend title if defined\n  if (datum.title) {\n    children.push(legendTitle(spec, config, encode.title, dataRef));\n  }\n\n  // parse legend specification\n  return parseMark(guideGroup({\n    role: LegendRole,\n    from: dataRef,\n    encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n}\nfunction legendType(spec, scaleType) {\n  let type = spec.type || Symbols;\n  if (!spec.type && scaleCount(spec) === 1 && (spec.fill || spec.stroke)) {\n    type = isContinuous(scaleType) ? Gradient : isDiscretizing(scaleType) ? Discrete : Symbols;\n  }\n  return type !== Gradient ? type : isDiscretizing(scaleType) ? Discrete : Gradient;\n}\nfunction scaleCount(spec) {\n  return LegendScales.reduce((count, type) => count + (spec[type] ? 1 : 0), 0);\n}\nfunction buildLegendEncode(_, spec, config) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    offset: _('offset'),\n    padding: _('padding'),\n    titlePadding: _('titlePadding'),\n    cornerRadius: _('cornerRadius'),\n    fill: _('fillColor'),\n    stroke: _('strokeColor'),\n    strokeWidth: config.strokeWidth,\n    strokeDash: config.strokeDash,\n    x: _('legendX'),\n    y: _('legendY'),\n    // accessibility support\n    format: spec.format,\n    formatType: spec.formatType\n  });\n  return encode;\n}\nfunction sizeExpression(spec, scope, marks) {\n  const size = deref(getChannel('size', spec, marks)),\n    strokeWidth = deref(getChannel('strokeWidth', spec, marks)),\n    fontSize = deref(getFontSize(marks[1].encode, scope, GuideLabelStyle));\n  return parseExpression(`max(ceil(sqrt(${size})+${strokeWidth}),${fontSize})`, scope);\n}\nfunction getChannel(name, spec, marks) {\n  return spec[name] ? `scale(\"${spec[name]}\",datum)` : getEncoding(name, marks[0].encode);\n}\nfunction getFontSize(encode, scope, style) {\n  return getEncoding('fontSize', encode) || getStyle('fontSize', scope, style);\n}\n\nconst angleExpr = `item.orient===\"${Left}\"?-90:item.orient===\"${Right}\"?90:0`;\nfunction parseTitle (spec, scope) {\n  spec = isString(spec) ? {\n    text: spec\n  } : spec;\n  const _ = lookup(spec, scope.config.title),\n    encode = spec.encode || {},\n    userEncode = encode.group || {},\n    name = userEncode.name || undefined,\n    interactive = userEncode.interactive,\n    style = userEncode.style,\n    children = [];\n\n  // single-element data source for group title\n  const datum = {},\n    dataRef = ref(scope.add(Collect(null, [datum])));\n\n  // include title text\n  children.push(buildTitle(spec, _, titleEncode(spec), dataRef));\n\n  // include subtitle text\n  if (spec.subtitle) {\n    children.push(buildSubTitle(spec, _, encode.subtitle, dataRef));\n  }\n\n  // parse title specification\n  return parseMark(guideGroup({\n    role: TitleRole,\n    from: dataRef,\n    encode: groupEncode(_, userEncode),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n}\n\n// provide backwards-compatibility for title custom encode;\n// the top-level encode block has been *deprecated*.\nfunction titleEncode(spec) {\n  const encode = spec.encode;\n  return encode && encode.title || extend({\n    name: spec.name,\n    interactive: spec.interactive,\n    style: spec.style\n  }, encode);\n}\nfunction groupEncode(_, userEncode) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    anchor: _('anchor'),\n    align: {\n      signal: alignExpr$1\n    },\n    angle: {\n      signal: angleExpr\n    },\n    limit: _('limit'),\n    frame: _('frame'),\n    offset: _('offset') || 0,\n    padding: _('subtitlePadding')\n  });\n  return extendEncode(encode, userEncode, Skip);\n}\nfunction buildTitle(spec, _, userEncode, dataRef) {\n  const zero = {\n      value: 0\n    },\n    text = spec.text,\n    encode = {\n      enter: {\n        opacity: zero\n      },\n      update: {\n        opacity: {\n          value: 1\n        }\n      },\n      exit: {\n        opacity: zero\n      }\n    };\n  addEncoders(encode, {\n    text: text,\n    align: {\n      signal: 'item.mark.group.align'\n    },\n    angle: {\n      signal: 'item.mark.group.angle'\n    },\n    limit: {\n      signal: 'item.mark.group.limit'\n    },\n    baseline: 'top',\n    dx: _('dx'),\n    dy: _('dy'),\n    fill: _('color'),\n    font: _('font'),\n    fontSize: _('fontSize'),\n    fontStyle: _('fontStyle'),\n    fontWeight: _('fontWeight'),\n    lineHeight: _('lineHeight')\n  }, {\n    // update\n    align: _('align'),\n    angle: _('angle'),\n    baseline: _('baseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: TitleTextRole,\n    style: GroupTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\nfunction buildSubTitle(spec, _, userEncode, dataRef) {\n  const zero = {\n      value: 0\n    },\n    text = spec.subtitle,\n    encode = {\n      enter: {\n        opacity: zero\n      },\n      update: {\n        opacity: {\n          value: 1\n        }\n      },\n      exit: {\n        opacity: zero\n      }\n    };\n  addEncoders(encode, {\n    text: text,\n    align: {\n      signal: 'item.mark.group.align'\n    },\n    angle: {\n      signal: 'item.mark.group.angle'\n    },\n    limit: {\n      signal: 'item.mark.group.limit'\n    },\n    baseline: 'top',\n    dx: _('dx'),\n    dy: _('dy'),\n    fill: _('subtitleColor'),\n    font: _('subtitleFont'),\n    fontSize: _('subtitleFontSize'),\n    fontStyle: _('subtitleFontStyle'),\n    fontWeight: _('subtitleFontWeight'),\n    lineHeight: _('subtitleLineHeight')\n  }, {\n    // update\n    align: _('align'),\n    angle: _('angle'),\n    baseline: _('baseline')\n  });\n  return guideMark({\n    type: TextMark,\n    role: TitleSubtitleRole,\n    style: GroupSubtitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction parseData(data, scope) {\n  const transforms = [];\n  if (data.transform) {\n    data.transform.forEach(tx => {\n      transforms.push(parseTransform(tx, scope));\n    });\n  }\n  if (data.on) {\n    data.on.forEach(on => {\n      parseTrigger(on, scope, data.name);\n    });\n  }\n  scope.addDataPipeline(data.name, analyze(data, scope, transforms));\n}\n\n/**\n * Analyze a data pipeline, add needed operators.\n */\nfunction analyze(data, scope, ops) {\n  const output = [];\n  let source = null,\n    modify = false,\n    generate = false,\n    upstream,\n    i,\n    n,\n    t,\n    m;\n  if (data.values) {\n    // hard-wired input data set\n    if (isSignal(data.values) || hasSignal(data.format)) {\n      // if either values is signal or format has signal, use dynamic loader\n      output.push(load(scope, data));\n      output.push(source = collect());\n    } else {\n      // otherwise, ingest upon dataflow init\n      output.push(source = collect({\n        $ingest: data.values,\n        $format: data.format\n      }));\n    }\n  } else if (data.url) {\n    // load data from external source\n    if (hasSignal(data.url) || hasSignal(data.format)) {\n      // if either url or format has signal, use dynamic loader\n      output.push(load(scope, data));\n      output.push(source = collect());\n    } else {\n      // otherwise, request load upon dataflow init\n      output.push(source = collect({\n        $request: data.url,\n        $format: data.format\n      }));\n    }\n  } else if (data.source) {\n    // derives from one or more other data sets\n    source = upstream = array(data.source).map(d => ref(scope.getData(d).output));\n    output.push(null); // populate later\n  }\n\n  // scan data transforms, add collectors as needed\n  for (i = 0, n = ops.length; i < n; ++i) {\n    t = ops[i];\n    m = t.metadata;\n    if (!source && !m.source) {\n      output.push(source = collect());\n    }\n    output.push(t);\n    if (m.generates) generate = true;\n    if (m.modifies && !generate) modify = true;\n    if (m.source) source = t;else if (m.changes) source = null;\n  }\n  if (upstream) {\n    n = upstream.length - 1;\n    output[0] = Relay({\n      derive: modify,\n      pulse: n ? upstream : upstream[0]\n    });\n    if (modify || n) {\n      // collect derived and multi-pulse tuples\n      output.splice(1, 0, collect());\n    }\n  }\n  if (!source) output.push(collect());\n  output.push(Sieve({}));\n  return output;\n}\nfunction collect(values) {\n  const s = Collect({}, values);\n  s.metadata = {\n    source: true\n  };\n  return s;\n}\nfunction load(scope, data) {\n  return Load({\n    url: data.url ? scope.property(data.url) : undefined,\n    async: data.async ? scope.property(data.async) : undefined,\n    values: data.values ? scope.property(data.values) : undefined,\n    format: scope.objectProperty(data.format)\n  });\n}\n\nconst isX = orient => orient === Bottom || orient === Top;\n\n// get sign coefficient based on axis orient\nconst getSign = (orient, a, b) => isSignal(orient) ? ifLeftTopExpr(orient.signal, a, b) : orient === Left || orient === Top ? a : b;\n\n// condition on axis x-direction\nconst ifX = (orient, a, b) => isSignal(orient) ? ifXEnc(orient.signal, a, b) : isX(orient) ? a : b;\n\n// condition on axis y-direction\nconst ifY = (orient, a, b) => isSignal(orient) ? ifYEnc(orient.signal, a, b) : isX(orient) ? b : a;\nconst ifTop = (orient, a, b) => isSignal(orient) ? ifTopExpr(orient.signal, a, b) : orient === Top ? {\n  value: a\n} : {\n  value: b\n};\nconst ifRight = (orient, a, b) => isSignal(orient) ? ifRightExpr(orient.signal, a, b) : orient === Right ? {\n  value: a\n} : {\n  value: b\n};\nconst ifXEnc = ($orient, a, b) => ifEnc(`${$orient} === '${Top}' || ${$orient} === '${Bottom}'`, a, b);\nconst ifYEnc = ($orient, a, b) => ifEnc(`${$orient} !== '${Top}' && ${$orient} !== '${Bottom}'`, a, b);\nconst ifLeftTopExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Left}' || ${$orient} === '${Top}'`, a, b);\nconst ifTopExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Top}'`, a, b);\nconst ifRightExpr = ($orient, a, b) => ifExpr(`${$orient} === '${Right}'`, a, b);\nconst ifEnc = (test, a, b) => {\n  // ensure inputs are encoder objects (or null)\n  a = a != null ? encoder(a) : a;\n  b = b != null ? encoder(b) : b;\n  if (isSimple(a) && isSimple(b)) {\n    // if possible generate simple signal expression\n    a = a ? a.signal || stringValue(a.value) : null;\n    b = b ? b.signal || stringValue(b.value) : null;\n    return {\n      signal: `${test} ? (${a}) : (${b})`\n    };\n  } else {\n    // otherwise generate rule set\n    return [extend({\n      test\n    }, a)].concat(b || []);\n  }\n};\nconst isSimple = enc => enc == null || Object.keys(enc).length === 1;\nconst ifExpr = (test, a, b) => ({\n  signal: `${test} ? (${toExpr(a)}) : (${toExpr(b)})`\n});\nconst ifOrient = ($orient, t, b, l, r) => ({\n  signal: (l != null ? `${$orient} === '${Left}' ? (${toExpr(l)}) : ` : '') + (b != null ? `${$orient} === '${Bottom}' ? (${toExpr(b)}) : ` : '') + (r != null ? `${$orient} === '${Right}' ? (${toExpr(r)}) : ` : '') + (t != null ? `${$orient} === '${Top}' ? (${toExpr(t)}) : ` : '') + '(null)'\n});\nconst toExpr = v => isSignal(v) ? v.signal : v == null ? null : stringValue(v);\nconst mult = (sign, value) => value === 0 ? 0 : isSignal(sign) ? {\n  signal: `(${sign.signal}) * ${value}`\n} : {\n  value: sign * value\n};\nconst patch = (value, base) => {\n  const s = value.signal;\n  return s && s.endsWith('(null)') ? {\n    signal: s.slice(0, -6) + base.signal\n  } : value;\n};\n\nfunction fallback(prop, config, axisConfig, style) {\n  let styleProp;\n  if (config && hasOwnProperty(config, prop)) {\n    return config[prop];\n  } else if (hasOwnProperty(axisConfig, prop)) {\n    return axisConfig[prop];\n  } else if (prop.startsWith('title')) {\n    switch (prop) {\n      case 'titleColor':\n        styleProp = 'fill';\n        break;\n      case 'titleFont':\n      case 'titleFontSize':\n      case 'titleFontWeight':\n        styleProp = prop[5].toLowerCase() + prop.slice(6);\n    }\n    return style[GuideTitleStyle][styleProp];\n  } else if (prop.startsWith('label')) {\n    switch (prop) {\n      case 'labelColor':\n        styleProp = 'fill';\n        break;\n      case 'labelFont':\n      case 'labelFontSize':\n        styleProp = prop[5].toLowerCase() + prop.slice(6);\n    }\n    return style[GuideLabelStyle][styleProp];\n  }\n  return null;\n}\nfunction keys(objects) {\n  const map = {};\n  for (const obj of objects) {\n    if (!obj) continue;\n    for (const key in obj) map[key] = 1;\n  }\n  return Object.keys(map);\n}\nfunction axisConfig (spec, scope) {\n  var config = scope.config,\n    style = config.style,\n    axis = config.axis,\n    band = scope.scaleType(spec.scale) === 'band' && config.axisBand,\n    orient = spec.orient,\n    xy,\n    or,\n    key;\n  if (isSignal(orient)) {\n    const xyKeys = keys([config.axisX, config.axisY]),\n      orientKeys = keys([config.axisTop, config.axisBottom, config.axisLeft, config.axisRight]);\n    xy = {};\n    for (key of xyKeys) {\n      xy[key] = ifX(orient, fallback(key, config.axisX, axis, style), fallback(key, config.axisY, axis, style));\n    }\n    or = {};\n    for (key of orientKeys) {\n      or[key] = ifOrient(orient.signal, fallback(key, config.axisTop, axis, style), fallback(key, config.axisBottom, axis, style), fallback(key, config.axisLeft, axis, style), fallback(key, config.axisRight, axis, style));\n    }\n  } else {\n    xy = orient === Top || orient === Bottom ? config.axisX : config.axisY;\n    or = config['axis' + orient[0].toUpperCase() + orient.slice(1)];\n  }\n  const result = xy || or || band ? extend({}, axis, xy, or, band) : axis;\n  return result;\n}\n\nfunction axisDomain (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n    orient = spec.orient;\n  let enter, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('domainColor'),\n    strokeCap: _('domainCap'),\n    strokeDash: _('domainDash'),\n    strokeDashOffset: _('domainDashOffset'),\n    strokeWidth: _('domainWidth'),\n    strokeOpacity: _('domainOpacity')\n  });\n  const pos0 = position(spec, 0);\n  const pos1 = position(spec, 1);\n  enter.x = update.x = ifX(orient, pos0, zero);\n  enter.x2 = update.x2 = ifX(orient, pos1);\n  enter.y = update.y = ifY(orient, pos0, zero);\n  enter.y2 = update.y2 = ifY(orient, pos1);\n  return guideMark({\n    type: RuleMark,\n    role: AxisDomainRole,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\nfunction position(spec, pos) {\n  return {\n    scale: spec.scale,\n    range: pos\n  };\n}\n\nfunction axisGrid (spec, config, userEncode, dataRef, band) {\n  const _ = lookup(spec, config),\n    orient = spec.orient,\n    vscale = spec.gridScale,\n    sign = getSign(orient, 1, -1),\n    offset = offsetValue(spec.offset, sign);\n  let enter, exit, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: exit = {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('gridColor'),\n    strokeCap: _('gridCap'),\n    strokeDash: _('gridDash'),\n    strokeDashOffset: _('gridDashOffset'),\n    strokeOpacity: _('gridOpacity'),\n    strokeWidth: _('gridWidth')\n  });\n  const tickPos = {\n    scale: spec.scale,\n    field: Value,\n    band: band.band,\n    extra: band.extra,\n    offset: band.offset,\n    round: _('tickRound')\n  };\n  const sz = ifX(orient, {\n    signal: 'height'\n  }, {\n    signal: 'width'\n  });\n  const gridStart = vscale ? {\n    scale: vscale,\n    range: 0,\n    mult: sign,\n    offset: offset\n  } : {\n    value: 0,\n    offset: offset\n  };\n  const gridEnd = vscale ? {\n    scale: vscale,\n    range: 1,\n    mult: sign,\n    offset: offset\n  } : extend(sz, {\n    mult: sign,\n    offset: offset\n  });\n  enter.x = update.x = ifX(orient, tickPos, gridStart);\n  enter.y = update.y = ifY(orient, tickPos, gridStart);\n  enter.x2 = update.x2 = ifY(orient, gridEnd);\n  enter.y2 = update.y2 = ifX(orient, gridEnd);\n  exit.x = ifX(orient, tickPos);\n  exit.y = ifY(orient, tickPos);\n  return guideMark({\n    type: RuleMark,\n    role: AxisGridRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\nfunction offsetValue(offset, sign) {\n  if (sign === 1) ; else if (!isObject(offset)) {\n    offset = isSignal(sign) ? {\n      signal: `(${sign.signal}) * (${offset || 0})`\n    } : sign * (offset || 0);\n  } else {\n    let entry = offset = extend({}, offset);\n    while (entry.mult != null) {\n      if (!isObject(entry.mult)) {\n        entry.mult = isSignal(sign) // no offset if sign === 1\n        ? {\n          signal: `(${entry.mult}) * (${sign.signal})`\n        } : entry.mult * sign;\n        return offset;\n      } else {\n        entry = entry.mult = extend({}, entry.mult);\n      }\n    }\n    entry.mult = sign;\n  }\n  return offset;\n}\n\nfunction axisTicks (spec, config, userEncode, dataRef, size, band) {\n  const _ = lookup(spec, config),\n    orient = spec.orient,\n    sign = getSign(orient, -1, 1);\n  let enter, exit, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero\n    },\n    update: update = {\n      opacity: one\n    },\n    exit: exit = {\n      opacity: zero\n    }\n  };\n  addEncoders(encode, {\n    stroke: _('tickColor'),\n    strokeCap: _('tickCap'),\n    strokeDash: _('tickDash'),\n    strokeDashOffset: _('tickDashOffset'),\n    strokeOpacity: _('tickOpacity'),\n    strokeWidth: _('tickWidth')\n  });\n  const tickSize = encoder(size);\n  tickSize.mult = sign;\n  const tickPos = {\n    scale: spec.scale,\n    field: Value,\n    band: band.band,\n    extra: band.extra,\n    offset: band.offset,\n    round: _('tickRound')\n  };\n  update.y = enter.y = ifX(orient, zero, tickPos);\n  update.y2 = enter.y2 = ifX(orient, tickSize);\n  exit.x = ifX(orient, tickPos);\n  update.x = enter.x = ifY(orient, zero, tickPos);\n  update.x2 = enter.x2 = ifY(orient, tickSize);\n  exit.y = ifY(orient, tickPos);\n  return guideMark({\n    type: RuleMark,\n    role: AxisTickRole,\n    key: Value,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\n\nfunction flushExpr(scale, threshold, a, b, c) {\n  return {\n    signal: 'flush(range(\"' + scale + '\"), ' + 'scale(\"' + scale + '\", datum.value), ' + threshold + ',' + a + ',' + b + ',' + c + ')'\n  };\n}\nfunction axisLabels (spec, config, userEncode, dataRef, size, band) {\n  const _ = lookup(spec, config),\n    orient = spec.orient,\n    scale = spec.scale,\n    sign = getSign(orient, -1, 1),\n    flush = deref(_('labelFlush')),\n    flushOffset = deref(_('labelFlushOffset')),\n    labelAlign = _('labelAlign'),\n    labelBaseline = _('labelBaseline');\n  let flushOn = flush === 0 || !!flush,\n    update;\n  const tickSize = encoder(size);\n  tickSize.mult = sign;\n  tickSize.offset = encoder(_('labelPadding') || 0);\n  tickSize.offset.mult = sign;\n  const tickPos = {\n    scale: scale,\n    field: Value,\n    band: 0.5,\n    offset: extendOffset(band.offset, _('labelOffset'))\n  };\n  const align = ifX(orient, flushOn ? flushExpr(scale, flush, '\"left\"', '\"right\"', '\"center\"') : {\n    value: 'center'\n  }, ifRight(orient, 'left', 'right'));\n  const baseline = ifX(orient, ifTop(orient, 'bottom', 'top'), flushOn ? flushExpr(scale, flush, '\"top\"', '\"bottom\"', '\"middle\"') : {\n    value: 'middle'\n  });\n  const offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0);\n  flushOn = flushOn && flushOffset;\n  const enter = {\n    opacity: zero,\n    x: ifX(orient, tickPos, tickSize),\n    y: ifY(orient, tickPos, tickSize)\n  };\n  const encode = {\n    enter: enter,\n    update: update = {\n      opacity: one,\n      text: {\n        field: Label\n      },\n      x: enter.x,\n      y: enter.y,\n      align,\n      baseline\n    },\n    exit: {\n      opacity: zero,\n      x: enter.x,\n      y: enter.y\n    }\n  };\n  addEncoders(encode, {\n    dx: !labelAlign && flushOn ? ifX(orient, offsetExpr) : null,\n    dy: !labelBaseline && flushOn ? ifY(orient, offsetExpr) : null\n  });\n  addEncoders(encode, {\n    angle: _('labelAngle'),\n    fill: _('labelColor'),\n    fillOpacity: _('labelOpacity'),\n    font: _('labelFont'),\n    fontSize: _('labelFontSize'),\n    fontWeight: _('labelFontWeight'),\n    fontStyle: _('labelFontStyle'),\n    limit: _('labelLimit'),\n    lineHeight: _('labelLineHeight')\n  }, {\n    align: labelAlign,\n    baseline: labelBaseline\n  });\n  const bound = _('labelBound');\n  let overlap = _('labelOverlap');\n\n  // if overlap method or bound defined, request label overlap removal\n  overlap = overlap || bound ? {\n    separation: _('labelSeparation'),\n    method: overlap,\n    order: 'datum.index',\n    bound: bound ? {\n      scale,\n      orient,\n      tolerance: bound\n    } : null\n  } : undefined;\n  if (update.align !== align) {\n    update.align = patch(update.align, align);\n  }\n  if (update.baseline !== baseline) {\n    update.baseline = patch(update.baseline, baseline);\n  }\n  return guideMark({\n    type: TextMark,\n    role: AxisLabelRole,\n    style: GuideLabelStyle,\n    key: Value,\n    from: dataRef,\n    encode,\n    overlap\n  }, userEncode);\n}\n\nfunction axisTitle (spec, config, userEncode, dataRef) {\n  const _ = lookup(spec, config),\n    orient = spec.orient,\n    sign = getSign(orient, -1, 1);\n  let enter, update;\n  const encode = {\n    enter: enter = {\n      opacity: zero,\n      anchor: encoder(_('titleAnchor', null)),\n      align: {\n        signal: alignExpr$1\n      }\n    },\n    update: update = extend({}, enter, {\n      opacity: one,\n      text: encoder(spec.title)\n    }),\n    exit: {\n      opacity: zero\n    }\n  };\n  const titlePos = {\n    signal: `lerp(range(\"${spec.scale}\"), ${anchorExpr(0, 1, 0.5)})`\n  };\n  update.x = ifX(orient, titlePos);\n  update.y = ifY(orient, titlePos);\n  enter.angle = ifX(orient, zero, mult(sign, 90));\n  enter.baseline = ifX(orient, ifTop(orient, Bottom, Top), {\n    value: Bottom\n  });\n  update.angle = enter.angle;\n  update.baseline = enter.baseline;\n  addEncoders(encode, {\n    fill: _('titleColor'),\n    fillOpacity: _('titleOpacity'),\n    font: _('titleFont'),\n    fontSize: _('titleFontSize'),\n    fontStyle: _('titleFontStyle'),\n    fontWeight: _('titleFontWeight'),\n    limit: _('titleLimit'),\n    lineHeight: _('titleLineHeight')\n  }, {\n    // require update\n    align: _('titleAlign'),\n    angle: _('titleAngle'),\n    baseline: _('titleBaseline')\n  });\n  autoLayout(_, orient, encode, userEncode);\n  encode.update.align = patch(encode.update.align, enter.align);\n  encode.update.angle = patch(encode.update.angle, enter.angle);\n  encode.update.baseline = patch(encode.update.baseline, enter.baseline);\n  return guideMark({\n    type: TextMark,\n    role: AxisTitleRole,\n    style: GuideTitleStyle,\n    from: dataRef,\n    encode\n  }, userEncode);\n}\nfunction autoLayout(_, orient, encode, userEncode) {\n  const auto = (value, dim) => value != null ? (encode.update[dim] = patch(encoder(value), encode.update[dim]), false) : !has(dim, userEncode) ? true : false;\n  const autoY = auto(_('titleX'), 'x'),\n    autoX = auto(_('titleY'), 'y');\n  encode.enter.auto = autoX === autoY ? encoder(autoX) : ifX(orient, encoder(autoX), encoder(autoY));\n}\n\nfunction parseAxis (spec, scope) {\n  const config = axisConfig(spec, scope),\n    encode = spec.encode || {},\n    axisEncode = encode.axis || {},\n    name = axisEncode.name || undefined,\n    interactive = axisEncode.interactive,\n    style = axisEncode.style,\n    _ = lookup(spec, config),\n    band = tickBand(_);\n\n  // single-element data source for axis group\n  const datum = {\n    scale: spec.scale,\n    ticks: !!_('ticks'),\n    labels: !!_('labels'),\n    grid: !!_('grid'),\n    domain: !!_('domain'),\n    title: spec.title != null\n  };\n  const dataRef = ref(scope.add(Collect({}, [datum])));\n\n  // data source for axis ticks\n  const ticksRef = ref(scope.add(AxisTicks({\n    scale: scope.scaleRef(spec.scale),\n    extra: scope.property(band.extra),\n    count: scope.objectProperty(spec.tickCount),\n    values: scope.objectProperty(spec.values),\n    minstep: scope.property(spec.tickMinStep),\n    formatType: scope.property(spec.formatType),\n    formatSpecifier: scope.property(spec.format)\n  })));\n\n  // generate axis marks\n  const children = [];\n  let size;\n\n  // include axis gridlines if requested\n  if (datum.grid) {\n    children.push(axisGrid(spec, config, encode.grid, ticksRef, band));\n  }\n\n  // include axis ticks if requested\n  if (datum.ticks) {\n    size = _('tickSize');\n    children.push(axisTicks(spec, config, encode.ticks, ticksRef, size, band));\n  }\n\n  // include axis labels if requested\n  if (datum.labels) {\n    size = datum.ticks ? size : 0;\n    children.push(axisLabels(spec, config, encode.labels, ticksRef, size, band));\n  }\n\n  // include axis domain path if requested\n  if (datum.domain) {\n    children.push(axisDomain(spec, config, encode.domain, dataRef));\n  }\n\n  // include axis title if defined\n  if (datum.title) {\n    children.push(axisTitle(spec, config, encode.title, dataRef));\n  }\n\n  // parse axis specification\n  return parseMark(guideGroup({\n    role: AxisRole,\n    from: dataRef,\n    encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip),\n    marks: children,\n    aria: _('aria'),\n    description: _('description'),\n    zindex: _('zindex'),\n    name,\n    interactive,\n    style\n  }), scope);\n}\nfunction buildAxisEncode(_, spec) {\n  const encode = {\n    enter: {},\n    update: {}\n  };\n  addEncoders(encode, {\n    orient: _('orient'),\n    offset: _('offset') || 0,\n    position: value(spec.position, 0),\n    titlePadding: _('titlePadding'),\n    minExtent: _('minExtent'),\n    maxExtent: _('maxExtent'),\n    range: {\n      signal: `abs(span(range(\"${spec.scale}\")))`\n    },\n    translate: _('translate'),\n    // accessibility support\n    format: spec.format,\n    formatType: spec.formatType\n  });\n  return encode;\n}\n\nfunction parseScope (spec, scope, preprocessed) {\n  const signals = array(spec.signals),\n    scales = array(spec.scales);\n\n  // parse signal definitions, if not already preprocessed\n  if (!preprocessed) signals.forEach(_ => parseSignal(_, scope));\n\n  // parse cartographic projection definitions\n  array(spec.projections).forEach(_ => parseProjection(_, scope));\n\n  // initialize scale references\n  scales.forEach(_ => initScale(_, scope));\n\n  // parse data sources\n  array(spec.data).forEach(_ => parseData(_, scope));\n\n  // parse scale definitions\n  scales.forEach(_ => parseScale(_, scope));\n\n  // parse signal updates\n  (preprocessed || signals).forEach(_ => parseSignalUpdates(_, scope));\n\n  // parse axis definitions\n  array(spec.axes).forEach(_ => parseAxis(_, scope));\n\n  // parse mark definitions\n  array(spec.marks).forEach(_ => parseMark(_, scope));\n\n  // parse legend definitions\n  array(spec.legends).forEach(_ => parseLegend(_, scope));\n\n  // parse title, if defined\n  if (spec.title) parseTitle(spec.title, scope);\n\n  // parse collected lambda (anonymous) expressions\n  scope.parseLambdas();\n  return scope;\n}\n\nconst rootEncode = spec => extendEncode({\n  enter: {\n    x: {\n      value: 0\n    },\n    y: {\n      value: 0\n    }\n  },\n  update: {\n    width: {\n      signal: 'width'\n    },\n    height: {\n      signal: 'height'\n    }\n  }\n}, spec);\nfunction parseView(spec, scope) {\n  const config = scope.config;\n\n  // add scenegraph root\n  const root = ref(scope.root = scope.add(operator()));\n\n  // parse top-level signal definitions\n  const signals = collectSignals(spec, config);\n  signals.forEach(_ => parseSignal(_, scope));\n\n  // assign description, event, legend, and locale configuration\n  scope.description = spec.description || config.description;\n  scope.eventConfig = config.events;\n  scope.legends = scope.objectProperty(config.legend && config.legend.layout);\n  scope.locale = config.locale;\n\n  // store root group item\n  const input = scope.add(Collect());\n\n  // encode root group item\n  const encode = scope.add(Encode(parseEncode(rootEncode(spec.encode), GroupMark, FrameRole, spec.style, scope, {\n    pulse: ref(input)\n  })));\n\n  // perform view layout\n  const parent = scope.add(ViewLayout({\n    layout: scope.objectProperty(spec.layout),\n    legends: scope.legends,\n    autosize: scope.signalRef('autosize'),\n    mark: root,\n    pulse: ref(encode)\n  }));\n  scope.operators.pop();\n\n  // parse remainder of specification\n  scope.pushState(ref(encode), ref(parent), null);\n  parseScope(spec, scope, signals);\n  scope.operators.push(parent);\n\n  // bound / render / sieve root item\n  let op = scope.add(Bound({\n    mark: root,\n    pulse: ref(parent)\n  }));\n  op = scope.add(Render({\n    pulse: ref(op)\n  }));\n  op = scope.add(Sieve({\n    pulse: ref(op)\n  }));\n\n  // track metadata for root item\n  scope.addData('root', new DataScope(scope, input, input, op));\n  return scope;\n}\nfunction signalObject(name, value) {\n  return value && value.signal ? {\n    name,\n    update: value.signal\n  } : {\n    name,\n    value\n  };\n}\n\n/**\n * Collect top-level signals, merging values as needed. Signals\n * defined in the config signals arrays are added only if that\n * signal is not explicitly defined in the specification.\n * Built-in signals (autosize, background, padding, width, height)\n * receive special treatment. They are initialized using the\n * top-level spec property, or, if undefined in the spec, using\n * the corresponding top-level config property. If this property\n * is a signal reference object, the signal expression maps to the\n * signal 'update' property. If the spec's top-level signal array\n * contains an entry that matches a built-in signal, that entry\n * will be merged with the built-in specification, potentially\n * overwriting existing 'value' or 'update' properties.\n */\nfunction collectSignals(spec, config) {\n  const _ = name => value(spec[name], config[name]),\n    signals = [signalObject('background', _('background')), signalObject('autosize', parseAutosize(_('autosize'))), signalObject('padding', parsePadding(_('padding'))), signalObject('width', _('width') || 0), signalObject('height', _('height') || 0)],\n    pre = signals.reduce((p, s) => (p[s.name] = s, p), {}),\n    map = {};\n\n  // add spec signal array\n  array(spec.signals).forEach(s => {\n    if (hasOwnProperty(pre, s.name)) {\n      // merge if built-in signal\n      s = extend(pre[s.name], s);\n    } else {\n      // otherwise add to signal list\n      signals.push(s);\n    }\n    map[s.name] = s;\n  });\n\n  // add config signal array\n  array(config.signals).forEach(s => {\n    if (!hasOwnProperty(map, s.name) && !hasOwnProperty(pre, s.name)) {\n      // add to signal list if not already defined\n      signals.push(s);\n    }\n  });\n  return signals;\n}\n\nfunction Scope(config, options) {\n  this.config = config || {};\n  this.options = options || {};\n  this.bindings = [];\n  this.field = {};\n  this.signals = {};\n  this.lambdas = {};\n  this.scales = {};\n  this.events = {};\n  this.data = {};\n  this.streams = [];\n  this.updates = [];\n  this.operators = [];\n  this.eventConfig = null;\n  this.locale = null;\n  this._id = 0;\n  this._subid = 0;\n  this._nextsub = [0];\n  this._parent = [];\n  this._encode = [];\n  this._lookup = [];\n  this._markpath = [];\n}\nfunction Subscope(scope) {\n  this.config = scope.config;\n  this.options = scope.options;\n  this.legends = scope.legends;\n  this.field = Object.create(scope.field);\n  this.signals = Object.create(scope.signals);\n  this.lambdas = Object.create(scope.lambdas);\n  this.scales = Object.create(scope.scales);\n  this.events = Object.create(scope.events);\n  this.data = Object.create(scope.data);\n  this.streams = [];\n  this.updates = [];\n  this.operators = [];\n  this._id = 0;\n  this._subid = ++scope._nextsub[0];\n  this._nextsub = scope._nextsub;\n  this._parent = scope._parent.slice();\n  this._encode = scope._encode.slice();\n  this._lookup = scope._lookup.slice();\n  this._markpath = scope._markpath;\n}\nScope.prototype = Subscope.prototype = {\n  parse(spec) {\n    return parseScope(spec, this);\n  },\n  fork() {\n    return new Subscope(this);\n  },\n  isSubscope() {\n    return this._subid > 0;\n  },\n  toRuntime() {\n    this.finish();\n    return {\n      description: this.description,\n      operators: this.operators,\n      streams: this.streams,\n      updates: this.updates,\n      bindings: this.bindings,\n      eventConfig: this.eventConfig,\n      locale: this.locale\n    };\n  },\n  id() {\n    return (this._subid ? this._subid + ':' : 0) + this._id++;\n  },\n  add(op) {\n    this.operators.push(op);\n    op.id = this.id();\n    // if pre-registration references exist, resolve them now\n    if (op.refs) {\n      op.refs.forEach(ref => {\n        ref.$ref = op.id;\n      });\n      op.refs = null;\n    }\n    return op;\n  },\n  proxy(op) {\n    const vref = op instanceof Entry ? ref(op) : op;\n    return this.add(Proxy({\n      value: vref\n    }));\n  },\n  addStream(stream) {\n    this.streams.push(stream);\n    stream.id = this.id();\n    return stream;\n  },\n  addUpdate(update) {\n    this.updates.push(update);\n    return update;\n  },\n  // Apply metadata\n  finish() {\n    let name, ds;\n\n    // annotate root\n    if (this.root) this.root.root = true;\n\n    // annotate signals\n    for (name in this.signals) {\n      this.signals[name].signal = name;\n    }\n\n    // annotate scales\n    for (name in this.scales) {\n      this.scales[name].scale = name;\n    }\n\n    // annotate data sets\n    function annotate(op, name, type) {\n      let data, list;\n      if (op) {\n        data = op.data || (op.data = {});\n        list = data[name] || (data[name] = []);\n        list.push(type);\n      }\n    }\n    for (name in this.data) {\n      ds = this.data[name];\n      annotate(ds.input, name, 'input');\n      annotate(ds.output, name, 'output');\n      annotate(ds.values, name, 'values');\n      for (const field in ds.index) {\n        annotate(ds.index[field], name, 'index:' + field);\n      }\n    }\n    return this;\n  },\n  // ----\n\n  pushState(encode, parent, lookup) {\n    this._encode.push(ref(this.add(Sieve({\n      pulse: encode\n    }))));\n    this._parent.push(parent);\n    this._lookup.push(lookup ? ref(this.proxy(lookup)) : null);\n    this._markpath.push(-1);\n  },\n  popState() {\n    this._encode.pop();\n    this._parent.pop();\n    this._lookup.pop();\n    this._markpath.pop();\n  },\n  parent() {\n    return peek(this._parent);\n  },\n  encode() {\n    return peek(this._encode);\n  },\n  lookup() {\n    return peek(this._lookup);\n  },\n  markpath() {\n    const p = this._markpath;\n    return ++p[p.length - 1];\n  },\n  // ----\n\n  fieldRef(field, name) {\n    if (isString(field)) return fieldRef$1(field, name);\n    if (!field.signal) {\n      error('Unsupported field reference: ' + stringValue(field));\n    }\n    const s = field.signal;\n    let f = this.field[s];\n    if (!f) {\n      const params = {\n        name: this.signalRef(s)\n      };\n      if (name) params.as = name;\n      this.field[s] = f = ref(this.add(Field(params)));\n    }\n    return f;\n  },\n  compareRef(cmp) {\n    let signal = false;\n    const check = _ => isSignal(_) ? (signal = true, this.signalRef(_.signal)) : isExpr$1(_) ? (signal = true, this.exprRef(_.expr)) : _;\n    const fields = array(cmp.field).map(check),\n      orders = array(cmp.order).map(check);\n    return signal ? ref(this.add(Compare({\n      fields: fields,\n      orders: orders\n    }))) : compareRef(fields, orders);\n  },\n  keyRef(fields, flat) {\n    let signal = false;\n    const check = _ => isSignal(_) ? (signal = true, ref(sig[_.signal])) : _;\n    const sig = this.signals;\n    fields = array(fields).map(check);\n    return signal ? ref(this.add(Key({\n      fields: fields,\n      flat: flat\n    }))) : keyRef(fields, flat);\n  },\n  sortRef(sort) {\n    if (!sort) return sort;\n\n    // including id ensures stable sorting\n    const a = aggrField(sort.op, sort.field),\n      o = sort.order || Ascending;\n    return o.signal ? ref(this.add(Compare({\n      fields: a,\n      orders: this.signalRef(o.signal)\n    }))) : compareRef(a, o);\n  },\n  // ----\n\n  event(source, type) {\n    const key = source + ':' + type;\n    if (!this.events[key]) {\n      const id = this.id();\n      this.streams.push({\n        id: id,\n        source: source,\n        type: type\n      });\n      this.events[key] = id;\n    }\n    return this.events[key];\n  },\n  // ----\n\n  hasOwnSignal(name) {\n    return hasOwnProperty(this.signals, name);\n  },\n  addSignal(name, value) {\n    if (this.hasOwnSignal(name)) {\n      error('Duplicate signal name: ' + stringValue(name));\n    }\n    const op = value instanceof Entry ? value : this.add(operator(value));\n    return this.signals[name] = op;\n  },\n  getSignal(name) {\n    if (!this.signals[name]) {\n      error('Unrecognized signal name: ' + stringValue(name));\n    }\n    return this.signals[name];\n  },\n  signalRef(s) {\n    if (this.signals[s]) {\n      return ref(this.signals[s]);\n    } else if (!hasOwnProperty(this.lambdas, s)) {\n      this.lambdas[s] = this.add(operator(null));\n    }\n    return ref(this.lambdas[s]);\n  },\n  parseLambdas() {\n    const code = Object.keys(this.lambdas);\n    for (let i = 0, n = code.length; i < n; ++i) {\n      const s = code[i],\n        e = parseExpression(s, this),\n        op = this.lambdas[s];\n      op.params = e.$params;\n      op.update = e.$expr;\n    }\n  },\n  property(spec) {\n    return spec && spec.signal ? this.signalRef(spec.signal) : spec;\n  },\n  objectProperty(spec) {\n    return !spec || !isObject(spec) ? spec : this.signalRef(spec.signal || propertyLambda(spec));\n  },\n  exprRef(code, name) {\n    const params = {\n      expr: parseExpression(code, this)\n    };\n    if (name) params.expr.$name = name;\n    return ref(this.add(Expression(params)));\n  },\n  addBinding(name, bind) {\n    if (!this.bindings) {\n      error('Nested signals do not support binding: ' + stringValue(name));\n    }\n    this.bindings.push(extend({\n      signal: name\n    }, bind));\n  },\n  // ----\n\n  addScaleProj(name, transform) {\n    if (hasOwnProperty(this.scales, name)) {\n      error('Duplicate scale or projection name: ' + stringValue(name));\n    }\n    this.scales[name] = this.add(transform);\n  },\n  addScale(name, params) {\n    this.addScaleProj(name, Scale(params));\n  },\n  addProjection(name, params) {\n    this.addScaleProj(name, Projection(params));\n  },\n  getScale(name) {\n    if (!this.scales[name]) {\n      error('Unrecognized scale name: ' + stringValue(name));\n    }\n    return this.scales[name];\n  },\n  scaleRef(name) {\n    return ref(this.getScale(name));\n  },\n  scaleType(name) {\n    return this.getScale(name).params.type;\n  },\n  projectionRef(name) {\n    return this.scaleRef(name);\n  },\n  projectionType(name) {\n    return this.scaleType(name);\n  },\n  // ----\n\n  addData(name, dataScope) {\n    if (hasOwnProperty(this.data, name)) {\n      error('Duplicate data set name: ' + stringValue(name));\n    }\n    return this.data[name] = dataScope;\n  },\n  getData(name) {\n    if (!this.data[name]) {\n      error('Undefined data set name: ' + stringValue(name));\n    }\n    return this.data[name];\n  },\n  addDataPipeline(name, entries) {\n    if (hasOwnProperty(this.data, name)) {\n      error('Duplicate data set name: ' + stringValue(name));\n    }\n    return this.addData(name, DataScope.fromEntries(this, entries));\n  }\n};\nfunction propertyLambda(spec) {\n  return (isArray(spec) ? arrayLambda : objectLambda)(spec);\n}\nfunction arrayLambda(array) {\n  const n = array.length;\n  let code = '[';\n  for (let i = 0; i < n; ++i) {\n    const value = array[i];\n    code += (i > 0 ? ',' : '') + (isObject(value) ? value.signal || propertyLambda(value) : stringValue(value));\n  }\n  return code + ']';\n}\nfunction objectLambda(obj) {\n  let code = '{',\n    i = 0,\n    key,\n    value;\n  for (key in obj) {\n    value = obj[key];\n    code += (++i > 1 ? ',' : '') + stringValue(key) + ':' + (isObject(value) ? value.signal || propertyLambda(value) : stringValue(value));\n  }\n  return code + '}';\n}\n\n/**\n * Standard configuration defaults for Vega specification parsing.\n * Users can provide their own (sub-)set of these default values\n * by passing in a config object to the top-level parse method.\n */\nfunction defaults () {\n  const defaultFont = 'sans-serif',\n    defaultSymbolSize = 30,\n    defaultStrokeWidth = 2,\n    defaultColor = '#4c78a8',\n    black = '#000',\n    gray = '#888',\n    lightGray = '#ddd';\n  return {\n    // default visualization description\n    description: 'Vega visualization',\n    // default padding around visualization\n    padding: 0,\n    // default for automatic sizing; options: 'none', 'pad', 'fit'\n    // or provide an object (e.g., {'type': 'pad', 'resize': true})\n    autosize: 'pad',\n    // default view background color\n    // covers the entire view component\n    background: null,\n    // default event handling configuration\n    // preventDefault for view-sourced event types except 'wheel'\n    events: {\n      defaults: {\n        allow: ['wheel']\n      }\n    },\n    // defaults for top-level group marks\n    // accepts mark properties (fill, stroke, etc)\n    // covers the data rectangle within group width/height\n    group: null,\n    // defaults for basic mark types\n    // each subset accepts mark properties (fill, stroke, etc)\n    mark: null,\n    arc: {\n      fill: defaultColor\n    },\n    area: {\n      fill: defaultColor\n    },\n    image: null,\n    line: {\n      stroke: defaultColor,\n      strokeWidth: defaultStrokeWidth\n    },\n    path: {\n      stroke: defaultColor\n    },\n    rect: {\n      fill: defaultColor\n    },\n    rule: {\n      stroke: black\n    },\n    shape: {\n      stroke: defaultColor\n    },\n    symbol: {\n      fill: defaultColor,\n      size: 64\n    },\n    text: {\n      fill: black,\n      font: defaultFont,\n      fontSize: 11\n    },\n    trail: {\n      fill: defaultColor,\n      size: defaultStrokeWidth\n    },\n    // style definitions\n    style: {\n      // axis & legend labels\n      'guide-label': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 10\n      },\n      // axis & legend titles\n      'guide-title': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 11,\n        fontWeight: 'bold'\n      },\n      // headers, including chart title\n      'group-title': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 13,\n        fontWeight: 'bold'\n      },\n      // chart subtitle\n      'group-subtitle': {\n        fill: black,\n        font: defaultFont,\n        fontSize: 12\n      },\n      // defaults for styled point marks in Vega-Lite\n      point: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth,\n        shape: 'circle'\n      },\n      circle: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth\n      },\n      square: {\n        size: defaultSymbolSize,\n        strokeWidth: defaultStrokeWidth,\n        shape: 'square'\n      },\n      // defaults for styled group marks in Vega-Lite\n      cell: {\n        fill: 'transparent',\n        stroke: lightGray\n      },\n      view: {\n        fill: 'transparent'\n      }\n    },\n    // defaults for title\n    title: {\n      orient: 'top',\n      anchor: 'middle',\n      offset: 4,\n      subtitlePadding: 3\n    },\n    // defaults for axes\n    axis: {\n      minExtent: 0,\n      maxExtent: 200,\n      bandPosition: 0.5,\n      domain: true,\n      domainWidth: 1,\n      domainColor: gray,\n      grid: false,\n      gridWidth: 1,\n      gridColor: lightGray,\n      labels: true,\n      labelAngle: 0,\n      labelLimit: 180,\n      labelOffset: 0,\n      labelPadding: 2,\n      ticks: true,\n      tickColor: gray,\n      tickOffset: 0,\n      tickRound: true,\n      tickSize: 5,\n      tickWidth: 1,\n      titlePadding: 4\n    },\n    // correction for centering bias\n    axisBand: {\n      tickOffset: -0.5\n    },\n    // defaults for cartographic projection\n    projection: {\n      type: 'mercator'\n    },\n    // defaults for legends\n    legend: {\n      orient: 'right',\n      padding: 0,\n      gridAlign: 'each',\n      columnPadding: 10,\n      rowPadding: 2,\n      symbolDirection: 'vertical',\n      gradientDirection: 'vertical',\n      gradientLength: 200,\n      gradientThickness: 16,\n      gradientStrokeColor: lightGray,\n      gradientStrokeWidth: 0,\n      gradientLabelOffset: 2,\n      labelAlign: 'left',\n      labelBaseline: 'middle',\n      labelLimit: 160,\n      labelOffset: 4,\n      labelOverlap: true,\n      symbolLimit: 30,\n      symbolType: 'circle',\n      symbolSize: 100,\n      symbolOffset: 0,\n      symbolStrokeWidth: 1.5,\n      symbolBaseFillColor: 'transparent',\n      symbolBaseStrokeColor: gray,\n      titleLimit: 180,\n      titleOrient: 'top',\n      titlePadding: 5,\n      layout: {\n        offset: 18,\n        direction: 'horizontal',\n        left: {\n          direction: 'vertical'\n        },\n        right: {\n          direction: 'vertical'\n        }\n      }\n    },\n    // defaults for scale ranges\n    range: {\n      category: {\n        scheme: 'tableau10'\n      },\n      ordinal: {\n        scheme: 'blues'\n      },\n      heatmap: {\n        scheme: 'yellowgreenblue'\n      },\n      ramp: {\n        scheme: 'blues'\n      },\n      diverging: {\n        scheme: 'blueorange',\n        extent: [1, 0]\n      },\n      symbol: ['circle', 'square', 'triangle-up', 'cross', 'diamond', 'triangle-right', 'triangle-down', 'triangle-left']\n    }\n  };\n}\n\nfunction parse (spec, config, options) {\n  if (!isObject(spec)) {\n    error('Input Vega specification must be an object.');\n  }\n  config = mergeConfig(defaults(), config, spec.config);\n  return parseView(spec, new Scope(config, options)).toRuntime();\n}\n\nexport { AxisDomainRole, AxisGridRole, AxisLabelRole, AxisRole, AxisTickRole, AxisTitleRole, DataScope, FrameRole, LegendEntryRole, LegendLabelRole, LegendRole, LegendSymbolRole, LegendTitleRole, MarkRole, Scope, ScopeRole, defaults as config, parse, parseSignal as signal, parseSignalUpdates as signalUpdates, parseStream as stream };\n", "function adjustSpatial (item, encode, swap) {\n  let t;\n  if (encode.x2) {\n    if (encode.x) {\n      if (swap && item.x > item.x2) {\n        t = item.x;\n        item.x = item.x2;\n        item.x2 = t;\n      }\n      item.width = item.x2 - item.x;\n    } else {\n      item.x = item.x2 - (item.width || 0);\n    }\n  }\n  if (encode.xc) {\n    item.x = item.xc - (item.width || 0) / 2;\n  }\n  if (encode.y2) {\n    if (encode.y) {\n      if (swap && item.y > item.y2) {\n        t = item.y;\n        item.y = item.y2;\n        item.y2 = t;\n      }\n      item.height = item.y2 - item.y;\n    } else {\n      item.y = item.y2 - (item.height || 0);\n    }\n  }\n  if (encode.yc) {\n    item.y = item.yc - (item.height || 0) / 2;\n  }\n}\n\nvar Constants = {\n  NaN: NaN,\n  E: Math.E,\n  LN2: Math.LN2,\n  LN10: Math.LN10,\n  LOG2E: Math.LOG2E,\n  LOG10E: Math.LOG10E,\n  PI: Math.PI,\n  SQRT1_2: Math.SQRT1_2,\n  SQRT2: Math.SQRT2,\n  MIN_VALUE: Number.MIN_VALUE,\n  MAX_VALUE: Number.MAX_VALUE\n};\n\nvar Ops = {\n  '*': (a, b) => a * b,\n  '+': (a, b) => a + b,\n  '-': (a, b) => a - b,\n  '/': (a, b) => a / b,\n  '%': (a, b) => a % b,\n  '>': (a, b) => a > b,\n  '<': (a, b) => a < b,\n  '<=': (a, b) => a <= b,\n  '>=': (a, b) => a >= b,\n  '==': (a, b) => a == b,\n  '!=': (a, b) => a != b,\n  '===': (a, b) => a === b,\n  '!==': (a, b) => a !== b,\n  '&': (a, b) => a & b,\n  '|': (a, b) => a | b,\n  '^': (a, b) => a ^ b,\n  '<<': (a, b) => a << b,\n  '>>': (a, b) => a >> b,\n  '>>>': (a, b) => a >>> b\n};\n\nvar Unary = {\n  '+': a => +a,\n  '-': a => -a,\n  '~': a => ~a,\n  '!': a => !a\n};\n\nconst slice = Array.prototype.slice;\nconst apply = (m, args, cast) => {\n  const obj = cast ? cast(args[0]) : args[0];\n  return obj[m].apply(obj, slice.call(args, 1));\n};\nconst datetime = (y, m, d, H, M, S, ms) => new Date(y, m || 0, d != null ? d : 1, H || 0, M || 0, S || 0, ms || 0);\nvar Functions = {\n  // math functions\n  isNaN: Number.isNaN,\n  isFinite: Number.isFinite,\n  abs: Math.abs,\n  acos: Math.acos,\n  asin: Math.asin,\n  atan: Math.atan,\n  atan2: Math.atan2,\n  ceil: Math.ceil,\n  cos: Math.cos,\n  exp: Math.exp,\n  floor: Math.floor,\n  log: Math.log,\n  max: Math.max,\n  min: Math.min,\n  pow: Math.pow,\n  random: Math.random,\n  round: Math.round,\n  sin: Math.sin,\n  sqrt: Math.sqrt,\n  tan: Math.tan,\n  clamp: (a, b, c) => Math.max(b, Math.min(c, a)),\n  // date functions\n  now: Date.now,\n  utc: Date.UTC,\n  datetime: datetime,\n  date: d => new Date(d).getDate(),\n  day: d => new Date(d).getDay(),\n  year: d => new Date(d).getFullYear(),\n  month: d => new Date(d).getMonth(),\n  hours: d => new Date(d).getHours(),\n  minutes: d => new Date(d).getMinutes(),\n  seconds: d => new Date(d).getSeconds(),\n  milliseconds: d => new Date(d).getMilliseconds(),\n  time: d => new Date(d).getTime(),\n  timezoneoffset: d => new Date(d).getTimezoneOffset(),\n  utcdate: d => new Date(d).getUTCDate(),\n  utcday: d => new Date(d).getUTCDay(),\n  utcyear: d => new Date(d).getUTCFullYear(),\n  utcmonth: d => new Date(d).getUTCMonth(),\n  utchours: d => new Date(d).getUTCHours(),\n  utcminutes: d => new Date(d).getUTCMinutes(),\n  utcseconds: d => new Date(d).getUTCSeconds(),\n  utcmilliseconds: d => new Date(d).getUTCMilliseconds(),\n  // sequence functions\n  length: x => x.length,\n  join: function () {\n    return apply('join', arguments);\n  },\n  indexof: function () {\n    return apply('indexOf', arguments);\n  },\n  lastindexof: function () {\n    return apply('lastIndexOf', arguments);\n  },\n  slice: function () {\n    return apply('slice', arguments);\n  },\n  reverse: x => x.slice().reverse(),\n  // string functions\n  parseFloat: parseFloat,\n  parseInt: parseInt,\n  upper: x => String(x).toUpperCase(),\n  lower: x => String(x).toLowerCase(),\n  substring: function () {\n    return apply('substring', arguments, String);\n  },\n  split: function () {\n    return apply('split', arguments, String);\n  },\n  replace: function () {\n    return apply('replace', arguments, String);\n  },\n  trim: x => String(x).trim(),\n  // regexp functions\n  regexp: RegExp,\n  test: (r, t) => RegExp(r).test(t)\n};\n\nconst EventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'];\nconst DisallowedMethods = new Set([Function, eval, setTimeout, setInterval]);\nif (typeof setImmediate === 'function') DisallowedMethods.add(setImmediate);\nconst Visitors = {\n  Literal: ($, n) => n.value,\n  Identifier: ($, n) => {\n    const id = n.name;\n    return $.memberDepth > 0 ? id : id === 'datum' ? $.datum : id === 'event' ? $.event : id === 'item' ? $.item : Constants[id] || $.params['$' + id];\n  },\n  MemberExpression: ($, n) => {\n    const d = !n.computed,\n      o = $(n.object);\n    if (d) $.memberDepth += 1;\n    const p = $(n.property);\n    if (d) $.memberDepth -= 1;\n    if (DisallowedMethods.has(o[p])) {\n      // eslint-disable-next-line no-console\n      console.error(`Prevented interpretation of member \"${p}\" which could lead to insecure code execution`);\n      return;\n    }\n    return o[p];\n  },\n  CallExpression: ($, n) => {\n    const args = n.arguments;\n    let name = n.callee.name;\n\n    // handle special internal functions used by encoders\n    // re-route to corresponding standard function\n    if (name.startsWith('_')) {\n      name = name.slice(1);\n    }\n\n    // special case \"if\" due to conditional evaluation of branches\n    return name === 'if' ? $(args[0]) ? $(args[1]) : $(args[2]) : ($.fn[name] || Functions[name]).apply($.fn, args.map($));\n  },\n  ArrayExpression: ($, n) => n.elements.map($),\n  BinaryExpression: ($, n) => Ops[n.operator]($(n.left), $(n.right)),\n  UnaryExpression: ($, n) => Unary[n.operator]($(n.argument)),\n  ConditionalExpression: ($, n) => $(n.test) ? $(n.consequent) : $(n.alternate),\n  LogicalExpression: ($, n) => n.operator === '&&' ? $(n.left) && $(n.right) : $(n.left) || $(n.right),\n  ObjectExpression: ($, n) => n.properties.reduce((o, p) => {\n    $.memberDepth += 1;\n    const k = $(p.key);\n    $.memberDepth -= 1;\n    if (DisallowedMethods.has($(p.value))) {\n      // eslint-disable-next-line no-console\n      console.error(`Prevented interpretation of property \"${k}\" which could lead to insecure code execution`);\n    } else {\n      o[k] = $(p.value);\n    }\n    return o;\n  }, {})\n};\nfunction interpret (ast, fn, params, datum, event, item) {\n  const $ = n => Visitors[n.type]($, n);\n  $.memberDepth = 0;\n  $.fn = Object.create(fn);\n  $.params = params;\n  $.datum = datum;\n  $.event = event;\n  $.item = item;\n\n  // route event functions to annotated vega event context\n  EventFunctions.forEach(f => $.fn[f] = function () {\n    return event.vega[f](...arguments);\n  });\n  return $(ast);\n}\n\nvar expression = {\n  /**\n   * Parse an expression used to update an operator value.\n   */\n  operator(ctx, expr) {\n    const ast = expr.ast,\n      fn = ctx.functions;\n    return _ => interpret(ast, fn, _);\n  },\n  /**\n   * Parse an expression provided as an operator parameter value.\n   */\n  parameter(ctx, expr) {\n    const ast = expr.ast,\n      fn = ctx.functions;\n    return (datum, _) => interpret(ast, fn, _, datum);\n  },\n  /**\n   * Parse an expression applied to an event stream.\n   */\n  event(ctx, expr) {\n    const ast = expr.ast,\n      fn = ctx.functions;\n    return event => interpret(ast, fn, undefined, undefined, event);\n  },\n  /**\n   * Parse an expression used to handle an event-driven operator update.\n   */\n  handler(ctx, expr) {\n    const ast = expr.ast,\n      fn = ctx.functions;\n    return (_, event) => {\n      const datum = event.item && event.item.datum;\n      return interpret(ast, fn, _, datum, event);\n    };\n  },\n  /**\n   * Parse an expression that performs visual encoding.\n   */\n  encode(ctx, encode) {\n    const {\n        marktype,\n        channels\n      } = encode,\n      fn = ctx.functions,\n      swap = marktype === 'group' || marktype === 'image' || marktype === 'rect';\n    return (item, _) => {\n      const datum = item.datum;\n      let m = 0,\n        v;\n      for (const name in channels) {\n        v = interpret(channels[name].ast, fn, _, datum, undefined, item);\n        if (item[name] !== v) {\n          item[name] = v;\n          m = 1;\n        }\n      }\n      if (marktype !== 'rule') {\n        adjustSpatial(item, channels, swap);\n      }\n      return m;\n    };\n  }\n};\n\nexport { expression as expressionInterpreter };\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/**\n * Parse a vega schema url into library and version.\n */\nexport default function(url: string) {\n    const regex = /schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g;\n    const [library, version] = regex.exec(url)!.slice(1, 3);\n    return {library: library as 'vega' | 'vega-lite', version};\n}\n", "var name = \"vega-themes\";\nvar version$1 = \"2.14.0\";\nvar description = \"Themes for stylized Vega and Vega-Lite visualizations.\";\nvar keywords = [\"vega\", \"vega-lite\", \"themes\", \"style\"];\nvar license = \"BSD-3-Clause\";\nvar author = {\n  name: \"UW Interactive Data Lab\",\n  url: \"https://idl.cs.washington.edu\"\n};\nvar contributors = [{\n  name: \"Emily Gu\",\n  url: \"https://github.com/emilygu\"\n}, {\n  name: \"Arvind Satyanarayan\",\n  url: \"http://arvindsatya.com\"\n}, {\n  name: \"Jeffrey Heer\",\n  url: \"https://idl.cs.washington.edu\"\n}, {\n  name: \"Dominik Moritz\",\n  url: \"https://www.domoritz.de\"\n}];\nvar main = \"build/vega-themes.js\";\nvar module = \"build/vega-themes.module.js\";\nvar unpkg = \"build/vega-themes.min.js\";\nvar jsdelivr = \"build/vega-themes.min.js\";\nvar types = \"build/vega-themes.module.d.ts\";\nvar repository = {\n  type: \"git\",\n  url: \"https://github.com/vega/vega-themes.git\"\n};\nvar files = [\"src\", \"build\"];\nvar scripts = {\n  prebuild: \"yarn clean\",\n  build: \"rollup -c\",\n  clean: \"rimraf build && rimraf examples/build\",\n  \"copy:data\": \"rsync -r node_modules/vega-datasets/data/* examples/data\",\n  \"copy:build\": \"rsync -r build/* examples/build\",\n  \"deploy:gh\": \"yarn build && mkdir -p examples/build && rsync -r build/* examples/build && gh-pages -d examples\",\n  preversion: \"yarn lint\",\n  serve: \"browser-sync start -s -f build examples --serveStatic examples\",\n  start: \"yarn build && concurrently --kill-others -n Server,Rollup 'yarn serve' 'rollup -c -w'\",\n  format: \"eslint . --fix\",\n  lint: \"eslint .\",\n  release: \"release-it\"\n};\nvar devDependencies = {\n  \"@babel/core\": \"^7.22.9\",\n  \"@babel/plugin-proposal-async-generator-functions\": \"^7.20.7\",\n  \"@babel/plugin-proposal-json-strings\": \"^7.18.6\",\n  \"@babel/plugin-proposal-object-rest-spread\": \"^7.20.7\",\n  \"@babel/plugin-proposal-optional-catch-binding\": \"^7.18.6\",\n  \"@babel/plugin-transform-runtime\": \"^7.22.9\",\n  \"@babel/preset-env\": \"^7.22.9\",\n  \"@babel/preset-typescript\": \"^7.22.5\",\n  \"@release-it/conventional-changelog\": \"^7.0.0\",\n  \"@rollup/plugin-json\": \"^6.0.0\",\n  \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n  \"@rollup/plugin-terser\": \"^0.4.3\",\n  \"@typescript-eslint/eslint-plugin\": \"^6.0.0\",\n  \"@typescript-eslint/parser\": \"^6.0.0\",\n  \"browser-sync\": \"^2.29.3\",\n  concurrently: \"^8.2.0\",\n  eslint: \"^8.45.0\",\n  \"eslint-config-prettier\": \"^8.8.0\",\n  \"eslint-plugin-prettier\": \"^5.0.0\",\n  \"gh-pages\": \"^5.0.0\",\n  prettier: \"^3.0.0\",\n  \"release-it\": \"^16.1.0\",\n  rollup: \"^3.26.2\",\n  \"rollup-plugin-bundle-size\": \"^1.0.3\",\n  \"rollup-plugin-ts\": \"^3.2.0\",\n  typescript: \"^5.1.6\",\n  vega: \"^5.25.0\",\n  \"vega-lite\": \"^5.9.3\"\n};\nvar peerDependencies = {\n  vega: \"*\",\n  \"vega-lite\": \"*\"\n};\nvar dependencies = {};\nvar pkg = {\n  name: name,\n  version: version$1,\n  description: description,\n  keywords: keywords,\n  license: license,\n  author: author,\n  contributors: contributors,\n  main: main,\n  module: module,\n  unpkg: unpkg,\n  jsdelivr: jsdelivr,\n  types: types,\n  repository: repository,\n  files: files,\n  scripts: scripts,\n  devDependencies: devDependencies,\n  peerDependencies: peerDependencies,\n  dependencies: dependencies\n};\n\nconst lightColor = '#fff';\nconst medColor = '#888';\nconst darkTheme = {\n  background: '#333',\n  view: {\n    stroke: medColor\n  },\n  title: {\n    color: lightColor,\n    subtitleColor: lightColor\n  },\n  style: {\n    'guide-label': {\n      fill: lightColor\n    },\n    'guide-title': {\n      fill: lightColor\n    }\n  },\n  axis: {\n    domainColor: lightColor,\n    gridColor: medColor,\n    tickColor: lightColor\n  }\n};\n\nconst markColor$7 = '#4572a7';\nconst excelTheme = {\n  background: '#fff',\n  arc: {\n    fill: markColor$7\n  },\n  area: {\n    fill: markColor$7\n  },\n  line: {\n    stroke: markColor$7,\n    strokeWidth: 2\n  },\n  path: {\n    stroke: markColor$7\n  },\n  rect: {\n    fill: markColor$7\n  },\n  shape: {\n    stroke: markColor$7\n  },\n  symbol: {\n    fill: markColor$7,\n    strokeWidth: 1.5,\n    size: 50\n  },\n  axis: {\n    bandPosition: 0.5,\n    grid: true,\n    gridColor: '#000000',\n    gridOpacity: 1,\n    gridWidth: 0.5,\n    labelPadding: 10,\n    tickSize: 5,\n    tickWidth: 0.5\n  },\n  axisBand: {\n    grid: false,\n    tickExtra: true\n  },\n  legend: {\n    labelBaseline: 'middle',\n    labelFontSize: 11,\n    symbolSize: 50,\n    symbolType: 'square'\n  },\n  range: {\n    category: ['#4572a7', '#aa4643', '#8aa453', '#71598e', '#4598ae', '#d98445', '#94aace', '#d09393', '#b9cc98', '#a99cbc']\n  }\n};\n\nconst markColor$6 = '#30a2da';\nconst axisColor$2 = '#cbcbcb';\nconst guideLabelColor = '#999';\nconst guideTitleColor = '#333';\nconst backgroundColor$2 = '#f0f0f0';\nconst blackTitle = '#333';\nconst fiveThirtyEightTheme = {\n  arc: {\n    fill: markColor$6\n  },\n  area: {\n    fill: markColor$6\n  },\n  axis: {\n    domainColor: axisColor$2,\n    grid: true,\n    gridColor: axisColor$2,\n    gridWidth: 1,\n    labelColor: guideLabelColor,\n    labelFontSize: 10,\n    titleColor: guideTitleColor,\n    tickColor: axisColor$2,\n    tickSize: 10,\n    titleFontSize: 14,\n    titlePadding: 10,\n    labelPadding: 4\n  },\n  axisBand: {\n    grid: false\n  },\n  background: backgroundColor$2,\n  group: {\n    fill: backgroundColor$2\n  },\n  legend: {\n    labelColor: blackTitle,\n    labelFontSize: 11,\n    padding: 1,\n    symbolSize: 30,\n    symbolType: 'square',\n    titleColor: blackTitle,\n    titleFontSize: 14,\n    titlePadding: 10\n  },\n  line: {\n    stroke: markColor$6,\n    strokeWidth: 2\n  },\n  path: {\n    stroke: markColor$6,\n    strokeWidth: 0.5\n  },\n  rect: {\n    fill: markColor$6\n  },\n  range: {\n    category: ['#30a2da', '#fc4f30', '#e5ae38', '#6d904f', '#8b8b8b', '#b96db8', '#ff9e27', '#56cc60', '#52d2ca', '#52689e', '#545454', '#9fe4f8'],\n    diverging: ['#cc0020', '#e77866', '#f6e7e1', '#d6e8ed', '#91bfd9', '#1d78b5'],\n    heatmap: ['#d6e8ed', '#cee0e5', '#91bfd9', '#549cc6', '#1d78b5']\n  },\n  point: {\n    filled: true,\n    shape: 'circle'\n  },\n  shape: {\n    stroke: markColor$6\n  },\n  bar: {\n    binSpacing: 2,\n    fill: markColor$6,\n    stroke: null\n  },\n  title: {\n    anchor: 'start',\n    fontSize: 24,\n    fontWeight: 600,\n    offset: 20\n  }\n};\n\nconst markColor$5 = '#000';\nconst ggplot2Theme = {\n  group: {\n    fill: '#e5e5e5'\n  },\n  arc: {\n    fill: markColor$5\n  },\n  area: {\n    fill: markColor$5\n  },\n  line: {\n    stroke: markColor$5\n  },\n  path: {\n    stroke: markColor$5\n  },\n  rect: {\n    fill: markColor$5\n  },\n  shape: {\n    stroke: markColor$5\n  },\n  symbol: {\n    fill: markColor$5,\n    size: 40\n  },\n  axis: {\n    domain: false,\n    grid: true,\n    gridColor: '#FFFFFF',\n    gridOpacity: 1,\n    labelColor: '#7F7F7F',\n    labelPadding: 4,\n    tickColor: '#7F7F7F',\n    tickSize: 5.67,\n    titleFontSize: 16,\n    titleFontWeight: 'normal'\n  },\n  legend: {\n    labelBaseline: 'middle',\n    labelFontSize: 11,\n    symbolSize: 40\n  },\n  range: {\n    category: ['#000000', '#7F7F7F', '#1A1A1A', '#999999', '#333333', '#B0B0B0', '#4D4D4D', '#C9C9C9', '#666666', '#DCDCDC']\n  }\n};\n\nconst headlineFontSize = 22;\nconst headlineFontWeight = 'normal';\nconst labelFont$1 = 'Benton Gothic, sans-serif';\nconst labelFontSize = 11.5;\nconst labelFontWeight = 'normal';\nconst markColor$4 = '#82c6df';\n// const markHighlight = '#006d8f';\n// const markDemocrat = '#5789b8';\n// const markRepublican = '#d94f54';\nconst titleFont = 'Benton Gothic Bold, sans-serif';\nconst titleFontWeight = 'normal';\nconst titleFontSize$1 = 13;\nconst colorSchemes$1 = {\n  'category-6': ['#ec8431', '#829eb1', '#c89d29', '#3580b1', '#adc839', '#ab7fb4'],\n  'fire-7': ['#fbf2c7', '#f9e39c', '#f8d36e', '#f4bb6a', '#e68a4f', '#d15a40', '#ab4232'],\n  'fireandice-6': ['#e68a4f', '#f4bb6a', '#f9e39c', '#dadfe2', '#a6b7c6', '#849eae'],\n  'ice-7': ['#edefee', '#dadfe2', '#c4ccd2', '#a6b7c6', '#849eae', '#607785', '#47525d']\n};\nconst latimesTheme = {\n  background: '#ffffff',\n  title: {\n    anchor: 'start',\n    color: '#000000',\n    font: titleFont,\n    fontSize: headlineFontSize,\n    fontWeight: headlineFontWeight\n  },\n  arc: {\n    fill: markColor$4\n  },\n  area: {\n    fill: markColor$4\n  },\n  line: {\n    stroke: markColor$4,\n    strokeWidth: 2\n  },\n  path: {\n    stroke: markColor$4\n  },\n  rect: {\n    fill: markColor$4\n  },\n  shape: {\n    stroke: markColor$4\n  },\n  symbol: {\n    fill: markColor$4,\n    size: 30\n  },\n  axis: {\n    labelFont: labelFont$1,\n    labelFontSize,\n    labelFontWeight,\n    titleFont,\n    titleFontSize: titleFontSize$1,\n    titleFontWeight\n  },\n  axisX: {\n    labelAngle: 0,\n    labelPadding: 4,\n    tickSize: 3\n  },\n  axisY: {\n    labelBaseline: 'middle',\n    maxExtent: 45,\n    minExtent: 45,\n    tickSize: 2,\n    titleAlign: 'left',\n    titleAngle: 0,\n    titleX: -45,\n    titleY: -11\n  },\n  legend: {\n    labelFont: labelFont$1,\n    labelFontSize,\n    symbolType: 'square',\n    titleFont,\n    titleFontSize: titleFontSize$1,\n    titleFontWeight\n  },\n  range: {\n    category: colorSchemes$1['category-6'],\n    diverging: colorSchemes$1['fireandice-6'],\n    heatmap: colorSchemes$1['fire-7'],\n    ordinal: colorSchemes$1['fire-7'],\n    ramp: colorSchemes$1['fire-7']\n  }\n};\n\nconst markColor$3 = '#ab5787';\nconst axisColor$1 = '#979797';\nconst quartzTheme = {\n  background: '#f9f9f9',\n  arc: {\n    fill: markColor$3\n  },\n  area: {\n    fill: markColor$3\n  },\n  line: {\n    stroke: markColor$3\n  },\n  path: {\n    stroke: markColor$3\n  },\n  rect: {\n    fill: markColor$3\n  },\n  shape: {\n    stroke: markColor$3\n  },\n  symbol: {\n    fill: markColor$3,\n    size: 30\n  },\n  axis: {\n    domainColor: axisColor$1,\n    domainWidth: 0.5,\n    gridWidth: 0.2,\n    labelColor: axisColor$1,\n    tickColor: axisColor$1,\n    tickWidth: 0.2,\n    titleColor: axisColor$1\n  },\n  axisBand: {\n    grid: false\n  },\n  axisX: {\n    grid: true,\n    tickSize: 10\n  },\n  axisY: {\n    domain: false,\n    grid: true,\n    tickSize: 0\n  },\n  legend: {\n    labelFontSize: 11,\n    padding: 1,\n    symbolSize: 30,\n    symbolType: 'square'\n  },\n  range: {\n    category: ['#ab5787', '#51b2e5', '#703c5c', '#168dd9', '#d190b6', '#00609f', '#d365ba', '#154866', '#666666', '#c4c4c4']\n  }\n};\n\nconst markColor$2 = '#3e5c69';\nconst voxTheme = {\n  background: '#fff',\n  arc: {\n    fill: markColor$2\n  },\n  area: {\n    fill: markColor$2\n  },\n  line: {\n    stroke: markColor$2\n  },\n  path: {\n    stroke: markColor$2\n  },\n  rect: {\n    fill: markColor$2\n  },\n  shape: {\n    stroke: markColor$2\n  },\n  symbol: {\n    fill: markColor$2\n  },\n  axis: {\n    domainWidth: 0.5,\n    grid: true,\n    labelPadding: 2,\n    tickSize: 5,\n    tickWidth: 0.5,\n    titleFontWeight: 'normal'\n  },\n  axisBand: {\n    grid: false\n  },\n  axisX: {\n    gridWidth: 0.2\n  },\n  axisY: {\n    gridDash: [3],\n    gridWidth: 0.4\n  },\n  legend: {\n    labelFontSize: 11,\n    padding: 1,\n    symbolType: 'square'\n  },\n  range: {\n    category: ['#3e5c69', '#6793a6', '#182429', '#0570b0', '#3690c0', '#74a9cf', '#a6bddb', '#e2ddf2']\n  }\n};\n\nconst markColor$1 = '#1696d2';\nconst axisColor = '#000000';\nconst backgroundColor$1 = '#FFFFFF';\nconst font = 'Lato';\nconst labelFont = 'Lato';\nconst sourceFont = 'Lato';\nconst gridColor$1 = '#DEDDDD';\nconst titleFontSize = 18;\nconst colorSchemes = {\n  'main-colors': ['#1696d2', '#d2d2d2', '#000000', '#fdbf11', '#ec008b', '#55b748', '#5c5859', '#db2b27'],\n  'shades-blue': ['#CFE8F3', '#A2D4EC', '#73BFE2', '#46ABDB', '#1696D2', '#12719E', '#0A4C6A', '#062635'],\n  'shades-gray': ['#F5F5F5', '#ECECEC', '#E3E3E3', '#DCDBDB', '#D2D2D2', '#9D9D9D', '#696969', '#353535'],\n  'shades-yellow': ['#FFF2CF', '#FCE39E', '#FDD870', '#FCCB41', '#FDBF11', '#E88E2D', '#CA5800', '#843215'],\n  'shades-magenta': ['#F5CBDF', '#EB99C2', '#E46AA7', '#E54096', '#EC008B', '#AF1F6B', '#761548', '#351123'],\n  'shades-green': ['#DCEDD9', '#BCDEB4', '#98CF90', '#78C26D', '#55B748', '#408941', '#2C5C2D', '#1A2E19'],\n  'shades-black': ['#D5D5D4', '#ADABAC', '#848081', '#5C5859', '#332D2F', '#262223', '#1A1717', '#0E0C0D'],\n  'shades-red': ['#F8D5D4', '#F1AAA9', '#E9807D', '#E25552', '#DB2B27', '#A4201D', '#6E1614', '#370B0A'],\n  'one-group': ['#1696d2', '#000000'],\n  'two-groups-cat-1': ['#1696d2', '#000000'],\n  'two-groups-cat-2': ['#1696d2', '#fdbf11'],\n  'two-groups-cat-3': ['#1696d2', '#db2b27'],\n  'two-groups-seq': ['#a2d4ec', '#1696d2'],\n  'three-groups-cat': ['#1696d2', '#fdbf11', '#000000'],\n  'three-groups-seq': ['#a2d4ec', '#1696d2', '#0a4c6a'],\n  'four-groups-cat-1': ['#000000', '#d2d2d2', '#fdbf11', '#1696d2'],\n  'four-groups-cat-2': ['#1696d2', '#ec0008b', '#fdbf11', '#5c5859'],\n  'four-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a'],\n  'five-groups-cat-1': ['#1696d2', '#fdbf11', '#d2d2d2', '#ec008b', '#000000'],\n  'five-groups-cat-2': ['#1696d2', '#0a4c6a', '#d2d2d2', '#fdbf11', '#332d2f'],\n  'five-groups-seq': ['#cfe8f3', '#73bf42', '#1696d2', '#0a4c6a', '#000000'],\n  'six-groups-cat-1': ['#1696d2', '#ec008b', '#fdbf11', '#000000', '#d2d2d2', '#55b748'],\n  'six-groups-cat-2': ['#1696d2', '#d2d2d2', '#ec008b', '#fdbf11', '#332d2f', '#0a4c6a'],\n  'six-groups-seq': ['#cfe8f3', '#a2d4ec', '#73bfe2', '#46abdb', '#1696d2', '#12719e'],\n  'diverging-colors': ['#ca5800', '#fdbf11', '#fdd870', '#fff2cf', '#cfe8f3', '#73bfe2', '#1696d2', '#0a4c6a']\n};\nconst urbanInstituteTheme = {\n  background: backgroundColor$1,\n  title: {\n    anchor: 'start',\n    fontSize: titleFontSize,\n    font: font\n  },\n  axisX: {\n    domain: true,\n    domainColor: axisColor,\n    domainWidth: 1,\n    grid: false,\n    labelFontSize: 12,\n    labelFont: labelFont,\n    labelAngle: 0,\n    tickColor: axisColor,\n    tickSize: 5,\n    titleFontSize: 12,\n    titlePadding: 10,\n    titleFont: font\n  },\n  axisY: {\n    domain: false,\n    domainWidth: 1,\n    grid: true,\n    gridColor: gridColor$1,\n    gridWidth: 1,\n    labelFontSize: 12,\n    labelFont: labelFont,\n    labelPadding: 8,\n    ticks: false,\n    titleFontSize: 12,\n    titlePadding: 10,\n    titleFont: font,\n    titleAngle: 0,\n    titleY: -10,\n    titleX: 18\n  },\n  legend: {\n    labelFontSize: 12,\n    labelFont: labelFont,\n    symbolSize: 100,\n    titleFontSize: 12,\n    titlePadding: 10,\n    titleFont: font,\n    orient: 'right',\n    offset: 10\n  },\n  view: {\n    stroke: 'transparent'\n  },\n  range: {\n    category: colorSchemes['six-groups-cat-1'],\n    diverging: colorSchemes['diverging-colors'],\n    heatmap: colorSchemes['diverging-colors'],\n    ordinal: colorSchemes['six-groups-seq'],\n    ramp: colorSchemes['shades-blue']\n  },\n  area: {\n    fill: markColor$1\n  },\n  rect: {\n    fill: markColor$1\n  },\n  line: {\n    color: markColor$1,\n    stroke: markColor$1,\n    strokeWidth: 5\n  },\n  trail: {\n    color: markColor$1,\n    stroke: markColor$1,\n    strokeWidth: 0,\n    size: 1\n  },\n  path: {\n    stroke: markColor$1,\n    strokeWidth: 0.5\n  },\n  point: {\n    filled: true\n  },\n  text: {\n    font: sourceFont,\n    color: markColor$1,\n    fontSize: 11,\n    align: 'center',\n    fontWeight: 400,\n    size: 11\n  },\n  style: {\n    bar: {\n      fill: markColor$1,\n      stroke: null\n    }\n  },\n  arc: {\n    fill: markColor$1\n  },\n  shape: {\n    stroke: markColor$1\n  },\n  symbol: {\n    fill: markColor$1,\n    size: 30\n  }\n};\n\n/**\n * Copyright 2020 Google LLC.\n *\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file or at\n * https://developers.google.com/open-source/licenses/bsd\n */\n\nconst markColor = '#3366CC';\nconst gridColor = '#ccc';\nconst defaultFont$1 = 'Arial, sans-serif';\nconst googlechartsTheme = {\n  arc: {\n    fill: markColor\n  },\n  area: {\n    fill: markColor\n  },\n  path: {\n    stroke: markColor\n  },\n  rect: {\n    fill: markColor\n  },\n  shape: {\n    stroke: markColor\n  },\n  symbol: {\n    stroke: markColor\n  },\n  circle: {\n    fill: markColor\n  },\n  background: '#fff',\n  padding: {\n    top: 10,\n    right: 10,\n    bottom: 10,\n    left: 10\n  },\n  style: {\n    'guide-label': {\n      font: defaultFont$1,\n      fontSize: 12\n    },\n    'guide-title': {\n      font: defaultFont$1,\n      fontSize: 12\n    },\n    'group-title': {\n      font: defaultFont$1,\n      fontSize: 12\n    }\n  },\n  title: {\n    font: defaultFont$1,\n    fontSize: 14,\n    fontWeight: 'bold',\n    dy: -3,\n    anchor: 'start'\n  },\n  axis: {\n    gridColor: gridColor,\n    tickColor: gridColor,\n    domain: false,\n    grid: true\n  },\n  range: {\n    category: ['#4285F4', '#DB4437', '#F4B400', '#0F9D58', '#AB47BC', '#00ACC1', '#FF7043', '#9E9D24', '#5C6BC0', '#F06292', '#00796B', '#C2185B'],\n    heatmap: ['#c6dafc', '#5e97f6', '#2a56c6']\n  }\n};\n\nconst ptToPx = value => value * (1 / 3 + 1);\nconst fontSmallPx = ptToPx(9);\nconst legendFontPx = ptToPx(10);\nconst fontLargePx = ptToPx(12);\nconst fontStandard = 'Segoe UI';\nconst fontTitle = 'wf_standard-font, helvetica, arial, sans-serif';\nconst firstLevelElementColor = '#252423';\nconst secondLevelElementColor = '#605E5C';\nconst backgroundColor = 'transparent';\nconst backgroundSecondaryColor = '#C8C6C4';\nconst paletteColor1 = '#118DFF';\nconst paletteColor2 = '#12239E';\nconst paletteColor3 = '#E66C37';\nconst paletteColor4 = '#6B007B';\nconst paletteColor5 = '#E044A7';\nconst paletteColor6 = '#744EC2';\nconst paletteColor7 = '#D9B300';\nconst paletteColor8 = '#D64550';\nconst divergentColorMax = paletteColor1;\nconst divergentColorMin = '#DEEFFF';\nconst divergentPalette = [divergentColorMin, divergentColorMax];\nconst ordinalPalette = [divergentColorMin, '#c7e4ff', '#b0d9ff', '#9aceff', '#83c3ff', '#6cb9ff', '#55aeff', '#3fa3ff', '#2898ff', divergentColorMax];\nconst powerbiTheme = {\n  view: {\n    stroke: backgroundColor\n  },\n  background: backgroundColor,\n  font: fontStandard,\n  header: {\n    titleFont: fontTitle,\n    titleFontSize: fontLargePx,\n    titleColor: firstLevelElementColor,\n    labelFont: fontStandard,\n    labelFontSize: legendFontPx,\n    labelColor: secondLevelElementColor\n  },\n  axis: {\n    ticks: false,\n    grid: false,\n    domain: false,\n    labelColor: secondLevelElementColor,\n    labelFontSize: fontSmallPx,\n    titleFont: fontTitle,\n    titleColor: firstLevelElementColor,\n    titleFontSize: fontLargePx,\n    titleFontWeight: 'normal'\n  },\n  axisQuantitative: {\n    tickCount: 3,\n    grid: true,\n    gridColor: backgroundSecondaryColor,\n    gridDash: [1, 5],\n    labelFlush: false\n  },\n  axisBand: {\n    tickExtra: true\n  },\n  axisX: {\n    labelPadding: 5\n  },\n  axisY: {\n    labelPadding: 10\n  },\n  bar: {\n    fill: paletteColor1\n  },\n  line: {\n    stroke: paletteColor1,\n    strokeWidth: 3,\n    strokeCap: 'round',\n    strokeJoin: 'round'\n  },\n  text: {\n    font: fontStandard,\n    fontSize: fontSmallPx,\n    fill: secondLevelElementColor\n  },\n  arc: {\n    fill: paletteColor1\n  },\n  area: {\n    fill: paletteColor1,\n    line: true,\n    opacity: 0.6\n  },\n  path: {\n    stroke: paletteColor1\n  },\n  rect: {\n    fill: paletteColor1\n  },\n  point: {\n    fill: paletteColor1,\n    filled: true,\n    size: 75\n  },\n  shape: {\n    stroke: paletteColor1\n  },\n  symbol: {\n    fill: paletteColor1,\n    strokeWidth: 1.5,\n    size: 50\n  },\n  legend: {\n    titleFont: fontStandard,\n    titleFontWeight: 'bold',\n    titleColor: secondLevelElementColor,\n    labelFont: fontStandard,\n    labelFontSize: legendFontPx,\n    labelColor: secondLevelElementColor,\n    symbolType: 'circle',\n    symbolSize: 75\n  },\n  range: {\n    category: [paletteColor1, paletteColor2, paletteColor3, paletteColor4, paletteColor5, paletteColor6, paletteColor7, paletteColor8],\n    diverging: divergentPalette,\n    heatmap: divergentPalette,\n    ordinal: ordinalPalette\n  }\n};\n\nconst defaultFont = 'IBM Plex Sans,system-ui,-apple-system,BlinkMacSystemFont,\".sfnstext-regular\",sans-serif';\nconst fontWeight = 400;\nconst darkCategories = ['#8a3ffc', '#33b1ff', '#007d79', '#ff7eb6', '#fa4d56', '#fff1f1', '#6fdc8c', '#4589ff', '#d12771', '#d2a106', '#08bdba', '#bae6ff', '#ba4e00', '#d4bbff'];\nconst lightCategories = ['#6929c4', '#1192e8', '#005d5d', '#9f1853', '#fa4d56', '#570408', '#198038', '#002d9c', '#ee538b', '#b28600', '#009d9a', '#012749', '#8a3800', '#a56eff'];\nfunction genCarbonConfig({\n  type,\n  background\n}) {\n  const viewbg = type === 'dark' ? '#161616' : '#ffffff';\n  const textColor = type === 'dark' ? '#f4f4f4' : '#161616';\n  const category = type === 'dark' ? darkCategories : lightCategories;\n  const markColor = type === 'dark' ? '#d4bbff' : '#6929c4';\n  return {\n    background,\n    arc: {\n      fill: markColor\n    },\n    area: {\n      fill: markColor\n    },\n    path: {\n      stroke: markColor\n    },\n    rect: {\n      fill: markColor\n    },\n    shape: {\n      stroke: markColor\n    },\n    symbol: {\n      stroke: markColor\n    },\n    circle: {\n      fill: markColor\n    },\n    view: {\n      fill: viewbg,\n      stroke: viewbg\n    },\n    group: {\n      fill: viewbg\n    },\n    title: {\n      color: textColor,\n      anchor: 'start',\n      dy: -15,\n      fontSize: 16,\n      font: defaultFont,\n      fontWeight: 600\n    },\n    axis: {\n      labelColor: textColor,\n      labelFontSize: 12,\n      grid: true,\n      gridColor: '#525252',\n      titleColor: textColor,\n      labelAngle: 0\n    },\n    style: {\n      'guide-label': {\n        font: defaultFont,\n        fill: textColor,\n        fontWeight: fontWeight\n      },\n      'guide-title': {\n        font: defaultFont,\n        fill: textColor,\n        fontWeight: fontWeight\n      }\n    },\n    range: {\n      category,\n      diverging: ['#750e13', '#a2191f', '#da1e28', '#fa4d56', '#ff8389', '#ffb3b8', '#ffd7d9', '#fff1f1', '#e5f6ff', '#bae6ff', '#82cfff', '#33b1ff', '#1192e8', '#0072c3', '#00539a', '#003a6d'],\n      heatmap: ['#f6f2ff', '#e8daff', '#d4bbff', '#be95ff', '#a56eff', '#8a3ffc', '#6929c4', '#491d8b', '#31135e', '#1c0f30']\n    }\n  };\n}\n\nconst carbonwhite = genCarbonConfig({\n  type: 'light',\n  background: '#ffffff'\n});\n\nconst carbong10 = genCarbonConfig({\n  type: 'light',\n  background: '#f4f4f4'\n});\n\nconst carbong90 = genCarbonConfig({\n  type: 'dark',\n  background: '#262626'\n});\n\nconst carbong100 = genCarbonConfig({\n  type: 'dark',\n  background: '#161616'\n});\n\nconst version = pkg.version;\n\nexport { carbong10, carbong100, carbong90, carbonwhite, darkTheme as dark, excelTheme as excel, fiveThirtyEightTheme as fivethirtyeight, ggplot2Theme as ggplot2, googlechartsTheme as googlecharts, latimesTheme as latimes, powerbiTheme as powerbi, quartzTheme as quartz, urbanInstituteTheme as urbaninstitute, version, voxTheme as vox };\n", "import {isArray, isObject, isString} from 'vega-util';\n\n/**\n * Format the value to be shown in the tooltip.\n *\n * @param value The value to show in the tooltip.\n * @param valueToHtml Function to convert a single cell value to an HTML string\n */\nexport function formatValue(value: any, valueToHtml: (value: any) => string, maxDepth: number): string {\n  if (isArray(value)) {\n    return `[${value.map((v) => valueToHtml(isString(v) ? v : stringify(v, maxDepth))).join(', ')}]`;\n  }\n\n  if (isObject(value)) {\n    let content = '';\n\n    const {title, image, ...rest} = value as any;\n\n    if (title) {\n      content += `<h2>${valueToHtml(title)}</h2>`;\n    }\n\n    if (image) {\n      content += `<img src=\"${valueToHtml(image)}\">`;\n    }\n\n    const keys = Object.keys(rest);\n    if (keys.length > 0) {\n      content += '<table>';\n      for (const key of keys) {\n        let val = (rest as any)[key];\n\n        // ignore undefined properties\n        if (val === undefined) {\n          continue;\n        }\n\n        if (isObject(val)) {\n          val = stringify(val, maxDepth);\n        }\n\n        content += `<tr><td class=\"key\">${valueToHtml(key)}</td><td class=\"value\">${valueToHtml(val)}</td></tr>`;\n      }\n      content += `</table>`;\n    }\n\n    return content || '{}'; // show empty object if there are no properties\n  }\n\n  return valueToHtml(value);\n}\n\nexport function replacer(maxDepth: number) {\n  const stack: any[] = [];\n\n  return function (this: any, key: string, value: any) {\n    if (typeof value !== 'object' || value === null) {\n      return value;\n    }\n    const pos = stack.indexOf(this) + 1;\n    stack.length = pos;\n    if (stack.length > maxDepth) {\n      return '[Object]';\n    }\n    if (stack.indexOf(value) >= 0) {\n      return '[Circular]';\n    }\n    stack.push(value);\n    return value;\n  };\n}\n\n/**\n * Stringify any JS object to valid JSON\n */\nexport function stringify(obj: any, maxDepth: number) {\n  return JSON.stringify(obj, replacer(maxDepth));\n}\n", "// generated with build-style.sh\nexport default `#vg-tooltip-element {\n  visibility: hidden;\n  padding: 8px;\n  position: fixed;\n  z-index: 1000;\n  font-family: sans-serif;\n  font-size: 11px;\n  border-radius: 3px;\n  box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\n  /* The default theme is the light theme. */\n  background-color: rgba(255, 255, 255, 0.95);\n  border: 1px solid #d9d9d9;\n  color: black;\n}\n#vg-tooltip-element.visible {\n  visibility: visible;\n}\n#vg-tooltip-element h2 {\n  margin-top: 0;\n  margin-bottom: 10px;\n  font-size: 13px;\n}\n#vg-tooltip-element table {\n  border-spacing: 0;\n}\n#vg-tooltip-element table tr {\n  border: none;\n}\n#vg-tooltip-element table tr td {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  padding-top: 2px;\n  padding-bottom: 2px;\n}\n#vg-tooltip-element table tr td.key {\n  color: #808080;\n  max-width: 150px;\n  text-align: right;\n  padding-right: 4px;\n}\n#vg-tooltip-element table tr td.value {\n  display: block;\n  max-width: 300px;\n  max-height: 7em;\n  text-align: left;\n}\n#vg-tooltip-element.dark-theme {\n  background-color: rgba(32, 32, 32, 0.9);\n  border: 1px solid #f5f5f5;\n  color: white;\n}\n#vg-tooltip-element.dark-theme td.key {\n  color: #bfbfbf;\n}\n`;\n", "import {formatValue} from './formatValue';\nimport defaultStyle from './style';\n\nconst EL_ID = 'vg-tooltip-element';\n\nexport const DEFAULT_OPTIONS = {\n  /**\n   * X offset.\n   */\n  offsetX: 10,\n\n  /**\n   * Y offset.\n   */\n  offsetY: 10,\n\n  /**\n   * ID of the tooltip element.\n   */\n  id: EL_ID,\n\n  /**\n   * ID of the tooltip CSS style.\n   */\n  styleId: 'vega-tooltip-style',\n\n  /**\n   * The name of the theme. You can use the CSS class called [THEME]-theme to style the tooltips.\n   *\n   * There are two predefined themes: \"light\" (default) and \"dark\".\n   */\n  theme: 'light',\n\n  /**\n   * Do not use the default styles provided by Vega Tooltip. If you enable this option, you need to use your own styles. It is not necessary to disable the default style when using a custom theme.\n   */\n  disableDefaultStyle: false,\n\n  /**\n   * HTML sanitizer function that removes dangerous HTML to prevent XSS.\n   *\n   * This should be a function from string to string. You may replace it with a formatter such as a markdown formatter.\n   */\n  sanitize: escapeHTML,\n\n  /**\n   * The maximum recursion depth when printing objects in the tooltip.\n   */\n  maxDepth: 2,\n\n  /**\n   * A function to customize the rendered HTML of the tooltip.\n   * @param value A value string, or object of value strings keyed by field\n   * @param sanitize The `sanitize` function from `options.sanitize`\n   * @returns {string} The returned string will become the `innerHTML` of the tooltip element\n   */\n  formatTooltip: formatValue,\n};\n\nexport type Options = Partial<typeof DEFAULT_OPTIONS>;\n\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nexport function escapeHTML(value: any): string {\n  return String(value).replace(/&/g, '&amp;').replace(/</g, '&lt;');\n}\n\nexport function createDefaultStyle(id: string): string {\n  // Just in case this id comes from a user, ensure these is no security issues\n  if (!/^[A-Za-z]+[-:.\\w]*$/.test(id)) {\n    throw new Error('Invalid HTML ID');\n  }\n\n  return defaultStyle.toString().replace(EL_ID, id);\n}\n", "/**\n * Position the tooltip\n *\n * @param event The mouse event.\n * @param tooltipBox\n * @param offsetX Horizontal offset.\n * @param offsetY Vertical offset.\n */\nexport function calculatePosition(\n  event: MouseEvent,\n  tooltipBox: {width: number; height: number},\n  offsetX: number,\n  offsetY: number,\n) {\n  let x = event.clientX + offsetX;\n  if (x + tooltipBox.width > window.innerWidth) {\n    x = +event.clientX - offsetX - tooltipBox.width;\n  }\n\n  let y = event.clientY + offsetY;\n  if (y + tooltipBox.height > window.innerHeight) {\n    y = +event.clientY - offsetY - tooltipBox.height;\n  }\n\n  return {x, y};\n}\n", "import {TooltipHandler} from 'vega-typings';\n\nimport {createDefaultStyle, DEFAULT_OPTIONS, Options} from './defaults';\nimport {calculatePosition} from './position';\n\n/**\n * The tooltip handler class.\n */\nexport class Handler {\n  /**\n   * The handler function. We bind this to this function in the constructor.\n   */\n  public call: TooltipHandler;\n\n  /**\n   * Complete tooltip options.\n   */\n  private options: Required<Options>;\n\n  /**\n   * The tooltip html element.\n   */\n  private el: HTMLElement | null;\n\n  /**\n   * Create the tooltip handler and initialize the element and style.\n   *\n   * @param options Tooltip Options\n   */\n  constructor(options?: Options) {\n    this.options = {...DEFAULT_OPTIONS, ...options};\n    const elementId = this.options.id;\n    this.el = null;\n\n    // bind this to call\n    this.call = this.tooltipHandler.bind(this);\n\n    // prepend a default stylesheet for tooltips to the head\n    if (!this.options.disableDefaultStyle && !document.getElementById(this.options.styleId)) {\n      const style = document.createElement('style');\n      style.setAttribute('id', this.options.styleId);\n      style.innerHTML = createDefaultStyle(elementId);\n\n      const head = document.head;\n      if (head.childNodes.length > 0) {\n        head.insertBefore(style, head.childNodes[0]);\n      } else {\n        head.appendChild(style);\n      }\n    }\n  }\n\n  /**\n   * The tooltip handler function.\n   */\n  private tooltipHandler(handler: any, event: MouseEvent, item: any, value: any) {\n    // console.log(handler, event, item, value);\n\n    // append a div element that we use as a tooltip unless it already exists\n    this.el = document.getElementById(this.options.id);\n    if (!this.el) {\n      this.el = document.createElement('div');\n      this.el.setAttribute('id', this.options.id);\n      this.el.classList.add('vg-tooltip');\n\n      const tooltipContainer = document.fullscreenElement ?? document.body;\n      tooltipContainer.appendChild(this.el);\n    }\n\n    // hide tooltip for null, undefined, or empty string values\n    if (value == null || value === '') {\n      this.el.classList.remove('visible', `${this.options.theme}-theme`);\n      return;\n    }\n\n    // set the tooltip content\n    this.el.innerHTML = this.options.formatTooltip(value, this.options.sanitize, this.options.maxDepth);\n\n    // make the tooltip visible\n    this.el.classList.add('visible', `${this.options.theme}-theme`);\n\n    const {x, y} = calculatePosition(\n      event,\n      this.el.getBoundingClientRect(),\n      this.options.offsetX,\n      this.options.offsetY,\n    );\n\n    this.el.style.top = `${y}px`;\n    this.el.style.left = `${x}px`;\n  }\n}\n", "import pkg from '../package.json';\nimport {View} from 'vega-typings';\n\nimport {Options} from './defaults';\nimport {Handler} from './Handler';\n\nconst version = pkg.version;\n\nexport * from './defaults';\nexport * from './formatValue';\nexport * from './position';\nexport * from './Handler';\nexport {version};\n\n/**\n * Create a tooltip handler and register it with the provided view.\n *\n * @param view The Vega view.\n * @param opt Tooltip options.\n */\nexport default function (view: View, opt?: Options) {\n  const handler = new Handler(opt);\n\n  view.tooltip(handler.call).run();\n\n  return handler;\n}\n", "export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}", "import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}", "import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}", "'use strict'\nmodule.exports = function (Yallist) {\n  Yallist.prototype[Symbol.iterator] = function* () {\n    for (let walker = this.head; walker; walker = walker.next) {\n      yield walker.value\n    }\n  }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n  var self = this\n  if (!(self instanceof Yallist)) {\n    self = new Yallist()\n  }\n\n  self.tail = null\n  self.head = null\n  self.length = 0\n\n  if (list && typeof list.forEach === 'function') {\n    list.forEach(function (item) {\n      self.push(item)\n    })\n  } else if (arguments.length > 0) {\n    for (var i = 0, l = arguments.length; i < l; i++) {\n      self.push(arguments[i])\n    }\n  }\n\n  return self\n}\n\nYallist.prototype.removeNode = function (node) {\n  if (node.list !== this) {\n    throw new Error('removing node which does not belong to this list')\n  }\n\n  var next = node.next\n  var prev = node.prev\n\n  if (next) {\n    next.prev = prev\n  }\n\n  if (prev) {\n    prev.next = next\n  }\n\n  if (node === this.head) {\n    this.head = next\n  }\n  if (node === this.tail) {\n    this.tail = prev\n  }\n\n  node.list.length--\n  node.next = null\n  node.prev = null\n  node.list = null\n\n  return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n  if (node === this.head) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var head = this.head\n  node.list = this\n  node.next = head\n  if (head) {\n    head.prev = node\n  }\n\n  this.head = node\n  if (!this.tail) {\n    this.tail = node\n  }\n  this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n  if (node === this.tail) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var tail = this.tail\n  node.list = this\n  node.prev = tail\n  if (tail) {\n    tail.next = node\n  }\n\n  this.tail = node\n  if (!this.head) {\n    this.head = node\n  }\n  this.length++\n}\n\nYallist.prototype.push = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    push(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.unshift = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    unshift(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.pop = function () {\n  if (!this.tail) {\n    return undefined\n  }\n\n  var res = this.tail.value\n  this.tail = this.tail.prev\n  if (this.tail) {\n    this.tail.next = null\n  } else {\n    this.head = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.shift = function () {\n  if (!this.head) {\n    return undefined\n  }\n\n  var res = this.head.value\n  this.head = this.head.next\n  if (this.head) {\n    this.head.prev = null\n  } else {\n    this.tail = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.head, i = 0; walker !== null; i++) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.next\n  }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.prev\n  }\n}\n\nYallist.prototype.get = function (n) {\n  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.next\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.getReverse = function (n) {\n  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.prev\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.head; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.next\n  }\n  return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.tail; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.prev\n  }\n  return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n  var acc\n  var walker = this.head\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.head) {\n    walker = this.head.next\n    acc = this.head.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = 0; walker !== null; i++) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.next\n  }\n\n  return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n  var acc\n  var walker = this.tail\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.tail) {\n    walker = this.tail.prev\n    acc = this.tail.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = this.length - 1; walker !== null; i--) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.prev\n  }\n\n  return acc\n}\n\nYallist.prototype.toArray = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.head; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.next\n  }\n  return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.tail; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.prev\n  }\n  return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n    walker = walker.next\n  }\n  for (; walker !== null && i < to; i++, walker = walker.next) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n    walker = walker.prev\n  }\n  for (; walker !== null && i > from; i--, walker = walker.prev) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n  if (start > this.length) {\n    start = this.length - 1\n  }\n  if (start < 0) {\n    start = this.length + start;\n  }\n\n  for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n    walker = walker.next\n  }\n\n  var ret = []\n  for (var i = 0; walker && i < deleteCount; i++) {\n    ret.push(walker.value)\n    walker = this.removeNode(walker)\n  }\n  if (walker === null) {\n    walker = this.tail\n  }\n\n  if (walker !== this.head && walker !== this.tail) {\n    walker = walker.prev\n  }\n\n  for (var i = 0; i < nodes.length; i++) {\n    walker = insert(this, walker, nodes[i])\n  }\n  return ret;\n}\n\nYallist.prototype.reverse = function () {\n  var head = this.head\n  var tail = this.tail\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p = walker.prev\n    walker.prev = walker.next\n    walker.next = p\n  }\n  this.head = tail\n  this.tail = head\n  return this\n}\n\nfunction insert (self, node, value) {\n  var inserted = node === self.head ?\n    new Node(value, null, node, self) :\n    new Node(value, node, node.next, self)\n\n  if (inserted.next === null) {\n    self.tail = inserted\n  }\n  if (inserted.prev === null) {\n    self.head = inserted\n  }\n\n  self.length++\n\n  return inserted\n}\n\nfunction push (self, item) {\n  self.tail = new Node(item, self.tail, null, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift (self, item) {\n  self.head = new Node(item, null, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nfunction Node (value, prev, next, list) {\n  if (!(this instanceof Node)) {\n    return new Node(value, prev, next, list)\n  }\n\n  this.list = list\n  this.value = value\n\n  if (prev) {\n    prev.next = this\n    this.prev = prev\n  } else {\n    this.prev = null\n  }\n\n  if (next) {\n    next.prev = this\n    this.next = next\n  } else {\n    this.next = null\n  }\n}\n\ntry {\n  // add if support for Symbol.iterator is present\n  require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest.  the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node.  This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n  constructor (options) {\n    if (typeof options === 'number')\n      options = { max: options }\n\n    if (!options)\n      options = {}\n\n    if (options.max && (typeof options.max !== 'number' || options.max < 0))\n      throw new TypeError('max must be a non-negative number')\n    // Kind of weird to have a default max of Infinity, but oh well.\n    const max = this[MAX] = options.max || Infinity\n\n    const lc = options.length || naiveLength\n    this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n    this[ALLOW_STALE] = options.stale || false\n    if (options.maxAge && typeof options.maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n    this[MAX_AGE] = options.maxAge || 0\n    this[DISPOSE] = options.dispose\n    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n    this.reset()\n  }\n\n  // resize the cache when the max changes.\n  set max (mL) {\n    if (typeof mL !== 'number' || mL < 0)\n      throw new TypeError('max must be a non-negative number')\n\n    this[MAX] = mL || Infinity\n    trim(this)\n  }\n  get max () {\n    return this[MAX]\n  }\n\n  set allowStale (allowStale) {\n    this[ALLOW_STALE] = !!allowStale\n  }\n  get allowStale () {\n    return this[ALLOW_STALE]\n  }\n\n  set maxAge (mA) {\n    if (typeof mA !== 'number')\n      throw new TypeError('maxAge must be a non-negative number')\n\n    this[MAX_AGE] = mA\n    trim(this)\n  }\n  get maxAge () {\n    return this[MAX_AGE]\n  }\n\n  // resize the cache when the lengthCalculator changes.\n  set lengthCalculator (lC) {\n    if (typeof lC !== 'function')\n      lC = naiveLength\n\n    if (lC !== this[LENGTH_CALCULATOR]) {\n      this[LENGTH_CALCULATOR] = lC\n      this[LENGTH] = 0\n      this[LRU_LIST].forEach(hit => {\n        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n        this[LENGTH] += hit.length\n      })\n    }\n    trim(this)\n  }\n  get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n  get length () { return this[LENGTH] }\n  get itemCount () { return this[LRU_LIST].length }\n\n  rforEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].tail; walker !== null;) {\n      const prev = walker.prev\n      forEachStep(this, fn, walker, thisp)\n      walker = prev\n    }\n  }\n\n  forEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].head; walker !== null;) {\n      const next = walker.next\n      forEachStep(this, fn, walker, thisp)\n      walker = next\n    }\n  }\n\n  keys () {\n    return this[LRU_LIST].toArray().map(k => k.key)\n  }\n\n  values () {\n    return this[LRU_LIST].toArray().map(k => k.value)\n  }\n\n  reset () {\n    if (this[DISPOSE] &&\n        this[LRU_LIST] &&\n        this[LRU_LIST].length) {\n      this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n    }\n\n    this[CACHE] = new Map() // hash of items by key\n    this[LRU_LIST] = new Yallist() // list of items in order of use recency\n    this[LENGTH] = 0 // length of items in the list\n  }\n\n  dump () {\n    return this[LRU_LIST].map(hit =>\n      isStale(this, hit) ? false : {\n        k: hit.key,\n        v: hit.value,\n        e: hit.now + (hit.maxAge || 0)\n      }).toArray().filter(h => h)\n  }\n\n  dumpLru () {\n    return this[LRU_LIST]\n  }\n\n  set (key, value, maxAge) {\n    maxAge = maxAge || this[MAX_AGE]\n\n    if (maxAge && typeof maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n\n    const now = maxAge ? Date.now() : 0\n    const len = this[LENGTH_CALCULATOR](value, key)\n\n    if (this[CACHE].has(key)) {\n      if (len > this[MAX]) {\n        del(this, this[CACHE].get(key))\n        return false\n      }\n\n      const node = this[CACHE].get(key)\n      const item = node.value\n\n      // dispose of the old one before overwriting\n      // split out into 2 ifs for better coverage tracking\n      if (this[DISPOSE]) {\n        if (!this[NO_DISPOSE_ON_SET])\n          this[DISPOSE](key, item.value)\n      }\n\n      item.now = now\n      item.maxAge = maxAge\n      item.value = value\n      this[LENGTH] += len - item.length\n      item.length = len\n      this.get(key)\n      trim(this)\n      return true\n    }\n\n    const hit = new Entry(key, value, len, now, maxAge)\n\n    // oversized objects fall out of cache automatically.\n    if (hit.length > this[MAX]) {\n      if (this[DISPOSE])\n        this[DISPOSE](key, value)\n\n      return false\n    }\n\n    this[LENGTH] += hit.length\n    this[LRU_LIST].unshift(hit)\n    this[CACHE].set(key, this[LRU_LIST].head)\n    trim(this)\n    return true\n  }\n\n  has (key) {\n    if (!this[CACHE].has(key)) return false\n    const hit = this[CACHE].get(key).value\n    return !isStale(this, hit)\n  }\n\n  get (key) {\n    return get(this, key, true)\n  }\n\n  peek (key) {\n    return get(this, key, false)\n  }\n\n  pop () {\n    const node = this[LRU_LIST].tail\n    if (!node)\n      return null\n\n    del(this, node)\n    return node.value\n  }\n\n  del (key) {\n    del(this, this[CACHE].get(key))\n  }\n\n  load (arr) {\n    // reset the cache\n    this.reset()\n\n    const now = Date.now()\n    // A previous serialized cache has the most recent items first\n    for (let l = arr.length - 1; l >= 0; l--) {\n      const hit = arr[l]\n      const expiresAt = hit.e || 0\n      if (expiresAt === 0)\n        // the item was created without expiration in a non aged cache\n        this.set(hit.k, hit.v)\n      else {\n        const maxAge = expiresAt - now\n        // dont add already expired items\n        if (maxAge > 0) {\n          this.set(hit.k, hit.v, maxAge)\n        }\n      }\n    }\n  }\n\n  prune () {\n    this[CACHE].forEach((value, key) => get(this, key, false))\n  }\n}\n\nconst get = (self, key, doUse) => {\n  const node = self[CACHE].get(key)\n  if (node) {\n    const hit = node.value\n    if (isStale(self, hit)) {\n      del(self, node)\n      if (!self[ALLOW_STALE])\n        return undefined\n    } else {\n      if (doUse) {\n        if (self[UPDATE_AGE_ON_GET])\n          node.value.now = Date.now()\n        self[LRU_LIST].unshiftNode(node)\n      }\n    }\n    return hit.value\n  }\n}\n\nconst isStale = (self, hit) => {\n  if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n    return false\n\n  const diff = Date.now() - hit.now\n  return hit.maxAge ? diff > hit.maxAge\n    : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n  if (self[LENGTH] > self[MAX]) {\n    for (let walker = self[LRU_LIST].tail;\n      self[LENGTH] > self[MAX] && walker !== null;) {\n      // We know that we're about to delete this one, and also\n      // what the next least recently used key will be, so just\n      // go ahead and set it now.\n      const prev = walker.prev\n      del(self, walker)\n      walker = prev\n    }\n  }\n}\n\nconst del = (self, node) => {\n  if (node) {\n    const hit = node.value\n    if (self[DISPOSE])\n      self[DISPOSE](hit.key, hit.value)\n\n    self[LENGTH] -= hit.length\n    self[CACHE].delete(hit.key)\n    self[LRU_LIST].removeNode(node)\n  }\n}\n\nclass Entry {\n  constructor (key, value, length, now, maxAge) {\n    this.key = key\n    this.value = value\n    this.length = length\n    this.now = now\n    this.maxAge = maxAge || 0\n  }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n  let hit = node.value\n  if (isStale(self, hit)) {\n    del(self, node)\n    if (!self[ALLOW_STALE])\n      hit = undefined\n  }\n  if (hit)\n    fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n", "// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n", "const debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n", "const {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n", "const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n          version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    return (\n      compareIdentifiers(this.major, other.major) ||\n      compareIdentifiers(this.minor, other.minor) ||\n      compareIdentifiers(this.patch, other.patch)\n    )\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (!identifier && identifierBase === false) {\n          throw new Error('invalid increment argument: identifier is empty')\n        }\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n", "const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    comp = comp.trim().split(/\\s+/).join(' ')\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    options = parseOptions(options)\n\n    // Special cases where nothing can possibly be lower\n    if (options.includePrerelease &&\n      (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n      return false\n    }\n    if (!options.includePrerelease &&\n      (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n      return false\n    }\n\n    // Same direction increasing (> or >=)\n    if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n      return true\n    }\n    // Same direction decreasing (< or <=)\n    if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // same SemVer and both sides are inclusive (<= or >=)\n    if (\n      (this.semver.version === comp.semver.version) &&\n      this.operator.includes('=') && comp.operator.includes('=')) {\n      return true\n    }\n    // opposite directions less than\n    if (cmp(this.semver, '<', comp.semver, options) &&\n      this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // opposite directions greater than\n    if (cmp(this.semver, '>', comp.semver, options) &&\n      this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n      return true\n    }\n    return false\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.format()\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range\n      .trim()\n      .split(/\\s+/)\n      .join(' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.format()\n  }\n\n  format () {\n    this.range = this.set\n      .map((comps) => comps.join(' ').trim())\n      .join('||')\n      .trim()\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceTilde(c, options))\n    .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceCaret(c, options))\n    .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp\n    .split(/\\s+/)\n    .map((c) => replaceXRange(c, options))\n    .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp\n    .trim()\n    .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp\n    .trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr, tb) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n", "const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n", "import {MessageData} from './types';\n\n/**\n * Open editor url in a new window, and pass a message.\n */\nexport default function (window: Window, url: string, data: MessageData) {\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  const editor = window.open(url)!;\n  const wait = 10_000;\n  const step = 250;\n  const {origin} = new URL(url);\n  // eslint-disable-next-line no-bitwise\n  let count = ~~(wait / step);\n\n  function listen(evt: MessageEvent) {\n    if (evt.source === editor) {\n      count = 0;\n      window.removeEventListener('message', listen, false);\n    }\n  }\n  window.addEventListener('message', listen, false);\n\n  // send message\n  // periodically resend until ack received or timeout\n  function send() {\n    if (count <= 0) {\n      return;\n    }\n    editor.postMessage(data, origin);\n    setTimeout(send, step);\n    count -= 1;\n  }\n  setTimeout(send, step);\n}\n", "// generated with build-style.sh\nexport default `.vega-embed {\n  position: relative;\n  display: inline-block;\n  box-sizing: border-box;\n}\n.vega-embed.has-actions {\n  padding-right: 38px;\n}\n.vega-embed details:not([open]) > :not(summary) {\n  display: none !important;\n}\n.vega-embed summary {\n  list-style: none;\n  position: absolute;\n  top: 0;\n  right: 0;\n  padding: 6px;\n  z-index: 1000;\n  background: white;\n  box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\n  color: #1b1e23;\n  border: 1px solid #aaa;\n  border-radius: 999px;\n  opacity: 0.2;\n  transition: opacity 0.4s ease-in;\n  cursor: pointer;\n  line-height: 0px;\n}\n.vega-embed summary::-webkit-details-marker {\n  display: none;\n}\n.vega-embed summary:active {\n  box-shadow: #aaa 0px 0px 0px 1px inset;\n}\n.vega-embed summary svg {\n  width: 14px;\n  height: 14px;\n}\n.vega-embed details[open] summary {\n  opacity: 0.7;\n}\n.vega-embed:hover summary, .vega-embed:focus-within summary {\n  opacity: 1 !important;\n  transition: opacity 0.2s ease;\n}\n.vega-embed .vega-actions {\n  position: absolute;\n  z-index: 1001;\n  top: 35px;\n  right: -9px;\n  display: flex;\n  flex-direction: column;\n  padding-bottom: 8px;\n  padding-top: 8px;\n  border-radius: 4px;\n  box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\n  border: 1px solid #d9d9d9;\n  background: white;\n  animation-duration: 0.15s;\n  animation-name: scale-in;\n  animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n  text-align: left;\n}\n.vega-embed .vega-actions a {\n  padding: 8px 16px;\n  font-family: sans-serif;\n  font-size: 14px;\n  font-weight: 600;\n  white-space: nowrap;\n  color: #434a56;\n  text-decoration: none;\n}\n.vega-embed .vega-actions a:hover, .vega-embed .vega-actions a:focus {\n  background-color: #f7f7f9;\n  color: black;\n}\n.vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\n  content: \"\";\n  display: inline-block;\n  position: absolute;\n}\n.vega-embed .vega-actions::before {\n  left: auto;\n  right: 14px;\n  top: -16px;\n  border: 8px solid rgba(0, 0, 0, 0);\n  border-bottom-color: #d9d9d9;\n}\n.vega-embed .vega-actions::after {\n  left: auto;\n  right: 15px;\n  top: -14px;\n  border: 7px solid rgba(0, 0, 0, 0);\n  border-bottom-color: #fff;\n}\n.vega-embed .chart-wrapper.fit-x {\n  width: 100%;\n}\n.vega-embed .chart-wrapper.fit-y {\n  height: 100%;\n}\n\n.vega-embed-wrapper {\n  max-width: 100%;\n  overflow: auto;\n  padding-right: 14px;\n}\n\n@keyframes scale-in {\n  from {\n    opacity: 0;\n    transform: scale(0.6);\n  }\n  to {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n`;\n", "import {writeConfig} from 'vega';\n\nexport function isURL(s: string): boolean {\n  return s.startsWith('http://') || s.startsWith('https://') || s.startsWith('//');\n}\n\nexport type DeepPartial<T> = {[P in keyof T]?: P extends unknown ? unknown : DeepPartial<T[P]>};\n\nexport function mergeDeep<T>(dest: T, ...src: readonly DeepPartial<T>[]): T {\n  for (const s of src) {\n    deepMerge_(dest, s);\n  }\n  return dest;\n}\n\nfunction deepMerge_(dest: any, src: any) {\n  for (const property of Object.keys(src)) {\n    writeConfig(dest, property, src[property], true);\n  }\n}\n", "import {applyPatch, Operation} from 'fast-json-patch';\nimport stringify from 'json-stringify-pretty-compact';\n// need this import because of https://github.com/npm/node-semver/issues/381\nimport satisfies from 'semver/functions/satisfies';\nimport * as vegaImport from 'vega';\nimport {\n  AutoSize,\n  Config as VgConfig,\n  EncodeEntryName,\n  isBoolean,\n  isObject,\n  isString,\n  Loader,\n  LoaderOptions,\n  mergeConfig,\n  Renderers,\n  Spec as VgSpec,\n  TooltipHandler,\n  View,\n} from 'vega';\nimport {expressionInterpreter} from 'vega-interpreter';\nimport * as vegaLiteImport from 'vega-lite';\nimport {Config as VlConfig, TopLevelSpec as VlSpec} from 'vega-lite';\nimport schemaParser from 'vega-schema-url-parser';\nimport * as themes from 'vega-themes';\nimport {Handler, Options as TooltipOptions} from 'vega-tooltip';\nimport post from './post';\nimport embedStyle from './style';\nimport {Config, ExpressionFunction, Mode} from './types';\nimport {mergeDeep} from './util';\nimport pkg from '../package.json';\n\nexport const version = pkg.version;\n\nexport * from './types';\n\nexport const vega = vegaImport;\nexport let vegaLite = vegaLiteImport;\n\n// For backwards compatibility with Vega-Lite before v4.\nconst w = (typeof window !== 'undefined' ? window : undefined) as any;\nif (vegaLite === undefined && w?.vl?.compile) {\n  vegaLite = w.vl;\n}\n\nexport interface Actions {\n  export?: boolean | {svg?: boolean; png?: boolean};\n  source?: boolean;\n  compiled?: boolean;\n  editor?: boolean;\n}\n\nexport const DEFAULT_ACTIONS = {export: {svg: true, png: true}, source: true, compiled: true, editor: true};\n\nexport interface Hover {\n  hoverSet?: EncodeEntryName;\n  updateSet?: EncodeEntryName;\n}\n\nexport type PatchFunc = (spec: VgSpec) => VgSpec;\n\nconst I18N = {\n  CLICK_TO_VIEW_ACTIONS: 'Click to view actions',\n  COMPILED_ACTION: 'View Compiled Vega',\n  EDITOR_ACTION: 'Open in Vega Editor',\n  PNG_ACTION: 'Save as PNG',\n  SOURCE_ACTION: 'View Source',\n  SVG_ACTION: 'Save as SVG',\n};\n\nexport interface EmbedOptions<S = string, R = Renderers> {\n  bind?: HTMLElement | string;\n  actions?: boolean | Actions;\n  mode?: Mode;\n  theme?: 'excel' | 'ggplot2' | 'quartz' | 'vox' | 'dark';\n  defaultStyle?: boolean | string;\n  logLevel?: number;\n  loader?: Loader | LoaderOptions;\n  renderer?: R;\n  tooltip?: TooltipHandler | TooltipOptions | boolean;\n  patch?: S | PatchFunc | Operation[];\n  width?: number;\n  height?: number;\n  padding?: number | {left?: number; right?: number; top?: number; bottom?: number};\n  scaleFactor?: number | {svg?: number; png?: number};\n  config?: S | Config;\n  sourceHeader?: string;\n  sourceFooter?: string;\n  editorUrl?: string;\n  hover?: boolean | Hover;\n  i18n?: Partial<typeof I18N>;\n  downloadFileName?: string;\n  formatLocale?: Record<string, unknown>;\n  timeFormatLocale?: Record<string, unknown>;\n  expressionFunctions?: ExpressionFunction;\n  ast?: boolean;\n  expr?: typeof expressionInterpreter;\n  viewClass?: typeof View;\n  forceActionsMenu?: boolean;\n}\n\nconst NAMES: {[key in Mode]: string} = {\n  vega: 'Vega',\n  'vega-lite': 'Vega-Lite',\n};\n\nconst VERSION = {\n  vega: vega.version,\n  'vega-lite': vegaLite ? vegaLite.version : 'not available',\n};\n\nconst PREPROCESSOR: {[mode in Mode]: (spec: any, config?: Config) => VgSpec} = {\n  vega: (vgSpec: VgSpec) => vgSpec,\n  'vega-lite': (vlSpec, config) => vegaLite.compile(vlSpec as VlSpec, {config: config as VlConfig}).spec,\n};\n\nconst SVG_CIRCLES = `\n<svg viewBox=\"0 0 16 16\" fill=\"currentColor\" stroke=\"none\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n  <circle r=\"2\" cy=\"8\" cx=\"2\"></circle>\n  <circle r=\"2\" cy=\"8\" cx=\"8\"></circle>\n  <circle r=\"2\" cy=\"8\" cx=\"14\"></circle>\n</svg>`;\n\nconst CHART_WRAPPER_CLASS = 'chart-wrapper';\n\nexport type VisualizationSpec = VlSpec | VgSpec;\n\nexport interface Result {\n  /** The Vega view. */\n  view: View;\n\n  /** The input specification. */\n  spec: VisualizationSpec;\n\n  /** The compiled and patched Vega specification. */\n  vgSpec: VgSpec;\n\n  /** The Vega-Embed options. */\n  embedOptions: EmbedOptions;\n\n  /** Removes references to unwanted behaviors and memory leaks. Calls Vega's `view.finalize`.  */\n  finalize: () => void;\n}\n\nfunction isTooltipHandler(h?: boolean | TooltipOptions | TooltipHandler): h is TooltipHandler {\n  return typeof h === 'function';\n}\n\nfunction viewSource(source: string, sourceHeader: string, sourceFooter: string, mode: Mode) {\n  const header = `<html><head>${sourceHeader}</head><body><pre><code class=\"json\">`;\n  const footer = `</code></pre>${sourceFooter}</body></html>`;\n  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n  const win = window.open('')!;\n  win.document.write(header + source + footer);\n  win.document.title = `${NAMES[mode]} JSON Source`;\n}\n\n/**\n * Try to guess the type of spec.\n *\n * @param spec Vega or Vega-Lite spec.\n */\nexport function guessMode(spec: VisualizationSpec, providedMode?: Mode): Mode {\n  // Decide mode\n  if (spec.$schema) {\n    const parsed = schemaParser(spec.$schema);\n    if (providedMode && providedMode !== parsed.library) {\n      console.warn(\n        `The given visualization spec is written in ${NAMES[parsed.library]}, but mode argument sets ${\n          NAMES[providedMode] ?? providedMode\n        }.`,\n      );\n    }\n\n    const mode = parsed.library as Mode;\n\n    if (!satisfies(VERSION[mode], `^${parsed.version.slice(1)}`)) {\n      console.warn(\n        `The input spec uses ${NAMES[mode]} ${parsed.version}, but the current version of ${NAMES[mode]} is v${VERSION[mode]}.`,\n      );\n    }\n\n    return mode;\n  }\n\n  // try to guess from the provided spec\n  if (\n    'mark' in spec ||\n    'encoding' in spec ||\n    'layer' in spec ||\n    'hconcat' in spec ||\n    'vconcat' in spec ||\n    'facet' in spec ||\n    'repeat' in spec\n  ) {\n    return 'vega-lite';\n  }\n\n  if ('marks' in spec || 'signals' in spec || 'scales' in spec || 'axes' in spec) {\n    return 'vega';\n  }\n\n  return providedMode ?? 'vega';\n}\n\nfunction isLoader(o?: LoaderOptions | Loader): o is Loader {\n  return !!(o && 'load' in o);\n}\n\nfunction createLoader(opts?: Loader | LoaderOptions) {\n  return isLoader(opts) ? opts : vega.loader(opts);\n}\n\nfunction embedOptionsFromUsermeta(parsedSpec: VisualizationSpec) {\n  const opts = (parsedSpec.usermeta as any)?.embedOptions ?? {};\n  if (isString(opts.defaultStyle)) {\n    // we don't allow styles set via usermeta since it would allow injection of logic (we set the style via innerHTML)\n    opts.defaultStyle = false;\n  }\n  return opts;\n}\n\n/**\n * Embed a Vega visualization component in a web page. This function returns a promise.\n *\n * @param el        DOM element in which to place component (DOM node or CSS selector).\n * @param spec      String : A URL string from which to load the Vega specification.\n *                  Object : The Vega/Vega-Lite specification as a parsed JSON object.\n * @param opts       A JavaScript object containing options for embedding.\n */\nexport default async function embed(\n  el: HTMLElement | string,\n  spec: VisualizationSpec | string,\n  opts: EmbedOptions = {},\n): Promise<Result> {\n  let parsedSpec: VisualizationSpec;\n  let loader: Loader | undefined;\n\n  if (isString(spec)) {\n    loader = createLoader(opts.loader);\n    parsedSpec = JSON.parse(await loader.load(spec));\n  } else {\n    parsedSpec = spec;\n  }\n\n  const loadedEmbedOptions = embedOptionsFromUsermeta(parsedSpec);\n  const usermetaLoader = loadedEmbedOptions.loader;\n\n  // either create the loader for the first time or create a new loader if the spec has new loader options\n  if (!loader || usermetaLoader) {\n    loader = createLoader(opts.loader ?? usermetaLoader);\n  }\n\n  const usermetaOpts = await loadOpts(loadedEmbedOptions, loader);\n  const parsedOpts = await loadOpts(opts, loader);\n\n  const mergedOpts = {\n    ...mergeDeep(parsedOpts, usermetaOpts),\n    config: mergeConfig(parsedOpts.config ?? {}, usermetaOpts.config ?? {}),\n  };\n\n  return await _embed(el, parsedSpec, mergedOpts, loader);\n}\n\nasync function loadOpts(opt: EmbedOptions, loader: Loader): Promise<EmbedOptions<never>> {\n  const config: Config = isString(opt.config) ? JSON.parse(await loader.load(opt.config)) : opt.config ?? {};\n  const patch: PatchFunc | Operation[] = isString(opt.patch) ? JSON.parse(await loader.load(opt.patch)) : opt.patch;\n  return {\n    ...(opt as any),\n    ...(patch ? {patch} : {}),\n    ...(config ? {config} : {}),\n  };\n}\n\nfunction getRoot(el: Element) {\n  const possibleRoot = el.getRootNode ? el.getRootNode() : document;\n  return possibleRoot instanceof ShadowRoot\n    ? {root: possibleRoot, rootContainer: possibleRoot}\n    : {root: document, rootContainer: document.head ?? document.body};\n}\n\nasync function _embed(\n  el: HTMLElement | string,\n  spec: VisualizationSpec,\n  opts: EmbedOptions<never> = {},\n  loader: Loader,\n): Promise<Result> {\n  const config = opts.theme ? mergeConfig(themes[opts.theme], opts.config ?? {}) : opts.config;\n\n  const actions = isBoolean(opts.actions) ? opts.actions : mergeDeep<Actions>({}, DEFAULT_ACTIONS, opts.actions ?? {});\n  const i18n = {...I18N, ...opts.i18n};\n\n  const renderer = opts.renderer ?? 'canvas';\n  const logLevel = opts.logLevel ?? vega.Warn;\n  const downloadFileName = opts.downloadFileName ?? 'visualization';\n\n  const element = typeof el === 'string' ? document.querySelector(el) : el;\n  if (!element) {\n    throw new Error(`${el} does not exist`);\n  }\n\n  if (opts.defaultStyle !== false) {\n    const ID = 'vega-embed-style';\n    const {root, rootContainer} = getRoot(element);\n    if (!root.getElementById(ID)) {\n      const style = document.createElement('style');\n      style.id = ID;\n      style.innerHTML =\n        opts.defaultStyle === undefined || opts.defaultStyle === true\n          ? (embedStyle ?? '').toString()\n          : opts.defaultStyle;\n      rootContainer.appendChild(style);\n    }\n  }\n\n  const mode = guessMode(spec, opts.mode);\n\n  let vgSpec: VgSpec = PREPROCESSOR[mode](spec, config);\n\n  if (mode === 'vega-lite') {\n    if (vgSpec.$schema) {\n      const parsed = schemaParser(vgSpec.$schema);\n\n      if (!satisfies(VERSION.vega, `^${parsed.version.slice(1)}`)) {\n        console.warn(`The compiled spec uses Vega ${parsed.version}, but current version is v${VERSION.vega}.`);\n      }\n    }\n  }\n\n  element.classList.add('vega-embed');\n  if (actions) {\n    element.classList.add('has-actions');\n  }\n  element.innerHTML = ''; // clear container\n\n  let container = element;\n  if (actions) {\n    const chartWrapper = document.createElement('div');\n    chartWrapper.classList.add(CHART_WRAPPER_CLASS);\n    element.appendChild(chartWrapper);\n    container = chartWrapper;\n  }\n\n  const patch = opts.patch;\n  if (patch) {\n    vgSpec = patch instanceof Function ? patch(vgSpec) : applyPatch(vgSpec, patch, true, false).newDocument;\n  }\n\n  // Set locale. Note that this is a global setting.\n  if (opts.formatLocale) {\n    vega.formatLocale(opts.formatLocale);\n  }\n\n  if (opts.timeFormatLocale) {\n    vega.timeFormatLocale(opts.timeFormatLocale);\n  }\n\n  // Set custom expression functions\n  if (opts.expressionFunctions) {\n    for (const name in opts.expressionFunctions) {\n      const expressionFunction = opts.expressionFunctions[name];\n      if ('fn' in expressionFunction) {\n        vega.expressionFunction(name, expressionFunction.fn, expressionFunction['visitor']);\n      } else if (expressionFunction instanceof Function) {\n        vega.expressionFunction(name, expressionFunction);\n      }\n    }\n  }\n\n  const {ast} = opts;\n\n  // Do not apply the config to Vega when we have already applied it to Vega-Lite.\n  // This call may throw an Error if parsing fails.\n  const runtime = vega.parse(vgSpec, mode === 'vega-lite' ? {} : (config as VgConfig), {ast});\n\n  const view = new (opts.viewClass || vega.View)(runtime, {\n    loader,\n    logLevel,\n    renderer,\n    ...(ast ? {expr: (vega as any).expressionInterpreter ?? opts.expr ?? expressionInterpreter} : {}),\n  });\n\n  view.addSignalListener('autosize', (_, autosize: Exclude<AutoSize, string>) => {\n    const {type} = autosize;\n    if (type == 'fit-x') {\n      container.classList.add('fit-x');\n      container.classList.remove('fit-y');\n    } else if (type == 'fit-y') {\n      container.classList.remove('fit-x');\n      container.classList.add('fit-y');\n    } else if (type == 'fit') {\n      container.classList.add('fit-x', 'fit-y');\n    } else {\n      container.classList.remove('fit-x', 'fit-y');\n    }\n  });\n\n  if (opts.tooltip !== false) {\n    const handler = isTooltipHandler(opts.tooltip)\n      ? opts.tooltip\n      : // user provided boolean true or tooltip options\n        new Handler(opts.tooltip === true ? {} : opts.tooltip).call;\n\n    view.tooltip(handler);\n  }\n\n  let {hover} = opts;\n\n  if (hover === undefined) {\n    hover = mode === 'vega';\n  }\n\n  if (hover) {\n    const {hoverSet, updateSet} = (typeof hover === 'boolean' ? {} : hover) as Hover;\n\n    view.hover(hoverSet, updateSet);\n  }\n\n  if (opts) {\n    if (opts.width != null) {\n      view.width(opts.width);\n    }\n    if (opts.height != null) {\n      view.height(opts.height);\n    }\n    if (opts.padding != null) {\n      view.padding(opts.padding);\n    }\n  }\n\n  await view.initialize(container, opts.bind).runAsync();\n\n  let documentClickHandler: ((this: Document, ev: MouseEvent) => void) | undefined;\n\n  if (actions !== false) {\n    let wrapper = element;\n\n    if (opts.defaultStyle !== false || opts.forceActionsMenu) {\n      const details = document.createElement('details');\n      details.title = i18n.CLICK_TO_VIEW_ACTIONS;\n      element.append(details);\n\n      wrapper = details;\n      const summary = document.createElement('summary');\n      summary.innerHTML = SVG_CIRCLES;\n\n      details.append(summary);\n\n      documentClickHandler = (ev: MouseEvent) => {\n        if (!details.contains(ev.target as any)) {\n          details.removeAttribute('open');\n        }\n      };\n      document.addEventListener('click', documentClickHandler);\n    }\n\n    const ctrl = document.createElement('div');\n    wrapper.append(ctrl);\n    ctrl.classList.add('vega-actions');\n\n    // add 'Export' action\n    if (actions === true || actions.export !== false) {\n      for (const ext of ['svg', 'png'] as const) {\n        if (actions === true || actions.export === true || (actions.export as {svg?: boolean; png?: boolean})[ext]) {\n          const i18nExportAction = (i18n as {[key: string]: string})[`${ext.toUpperCase()}_ACTION`];\n          const exportLink = document.createElement('a');\n          const scaleFactor = isObject(opts.scaleFactor) ? opts.scaleFactor[ext] : opts.scaleFactor;\n\n          exportLink.text = i18nExportAction;\n          exportLink.href = '#';\n          exportLink.target = '_blank';\n          exportLink.download = `${downloadFileName}.${ext}`;\n          // add link on mousedown so that it's correct when the click happens\n          exportLink.addEventListener('mousedown', async function (this, e) {\n            e.preventDefault();\n            const url = await view.toImageURL(ext, scaleFactor);\n            this.href = url;\n          });\n\n          ctrl.append(exportLink);\n        }\n      }\n    }\n\n    // add 'View Source' action\n    if (actions === true || actions.source !== false) {\n      const viewSourceLink = document.createElement('a');\n\n      viewSourceLink.text = i18n.SOURCE_ACTION;\n      viewSourceLink.href = '#';\n      viewSourceLink.addEventListener('click', function (this, e) {\n        viewSource(stringify(spec), opts.sourceHeader ?? '', opts.sourceFooter ?? '', mode);\n        e.preventDefault();\n      });\n\n      ctrl.append(viewSourceLink);\n    }\n\n    // add 'View Compiled' action\n    if (mode === 'vega-lite' && (actions === true || actions.compiled !== false)) {\n      const compileLink = document.createElement('a');\n\n      compileLink.text = i18n.COMPILED_ACTION;\n      compileLink.href = '#';\n      compileLink.addEventListener('click', function (this, e) {\n        viewSource(stringify(vgSpec), opts.sourceHeader ?? '', opts.sourceFooter ?? '', 'vega');\n        e.preventDefault();\n      });\n\n      ctrl.append(compileLink);\n    }\n\n    // add 'Open in Vega Editor' action\n    if (actions === true || actions.editor !== false) {\n      const editorUrl = opts.editorUrl ?? 'https://vega.github.io/editor/';\n      const editorLink = document.createElement('a');\n\n      editorLink.text = i18n.EDITOR_ACTION;\n      editorLink.href = '#';\n      editorLink.addEventListener('click', function (this, e) {\n        post(window, editorUrl, {\n          config: config as Config,\n          mode,\n          renderer,\n          spec: stringify(spec),\n        });\n        e.preventDefault();\n      });\n\n      ctrl.append(editorLink);\n    }\n  }\n\n  function finalize() {\n    if (documentClickHandler) {\n      document.removeEventListener('click', documentClickHandler);\n    }\n    view.finalize();\n  }\n\n  return {view, spec, vgSpec, finalize, embedOptions: opts};\n}\n", "var sparkMd5 = {\n  exports: {}\n};\n\n(function(module, exports) {\n  (function(factory) {\n    {\n      module.exports = factory();\n    }\n  })((function(undefined$1) {\n    var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n    function md5cycle(x, k) {\n      var a = x[0], b = x[1], c = x[2], d = x[3];\n      a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[10] - 42063 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b ^ c ^ d) + k[5] - 378558 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      x[0] = a + x[0] | 0;\n      x[1] = b + x[1] | 0;\n      x[2] = c + x[2] | 0;\n      x[3] = d + x[3] | 0;\n    }\n    function md5blk(s) {\n      var md5blks = [], i;\n      for (i = 0; i < 64; i += 4) {\n        md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n      }\n      return md5blks;\n    }\n    function md5blk_array(a) {\n      var md5blks = [], i;\n      for (i = 0; i < 64; i += 4) {\n        md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n      }\n      return md5blks;\n    }\n    function md51(s) {\n      var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n      for (i = 64; i <= n; i += 64) {\n        md5cycle(state, md5blk(s.substring(i - 64, i)));\n      }\n      s = s.substring(i - 64);\n      length = s.length;\n      tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n      }\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(state, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = n * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(state, tail);\n      return state;\n    }\n    function md51_array(a) {\n      var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n      for (i = 64; i <= n; i += 64) {\n        md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n      }\n      a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n      length = a.length;\n      tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= a[i] << (i % 4 << 3);\n      }\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(state, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = n * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(state, tail);\n      return state;\n    }\n    function rhex(n) {\n      var s = \"\", j;\n      for (j = 0; j < 4; j += 1) {\n        s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n      }\n      return s;\n    }\n    function hex(x) {\n      var i;\n      for (i = 0; i < x.length; i += 1) {\n        x[i] = rhex(x[i]);\n      }\n      return x.join(\"\");\n    }\n    if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n    if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n      (function() {\n        function clamp(val, length) {\n          val = val | 0 || 0;\n          if (val < 0) {\n            return Math.max(val + length, 0);\n          }\n          return Math.min(val, length);\n        }\n        ArrayBuffer.prototype.slice = function(from, to) {\n          var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n          if (to !== undefined$1) {\n            end = clamp(to, length);\n          }\n          if (begin > end) {\n            return new ArrayBuffer(0);\n          }\n          num = end - begin;\n          target = new ArrayBuffer(num);\n          targetArray = new Uint8Array(target);\n          sourceArray = new Uint8Array(this, begin, num);\n          targetArray.set(sourceArray);\n          return target;\n        };\n      })();\n    }\n    function toUtf8(str) {\n      if (/[\\u0080-\\uFFFF]/.test(str)) {\n        str = unescape(encodeURIComponent(str));\n      }\n      return str;\n    }\n    function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n      var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n      for (i = 0; i < length; i += 1) {\n        arr[i] = str.charCodeAt(i);\n      }\n      return returnUInt8Array ? arr : buff;\n    }\n    function arrayBuffer2Utf8Str(buff) {\n      return String.fromCharCode.apply(null, new Uint8Array(buff));\n    }\n    function concatenateArrayBuffers(first, second, returnUInt8Array) {\n      var result = new Uint8Array(first.byteLength + second.byteLength);\n      result.set(new Uint8Array(first));\n      result.set(new Uint8Array(second), first.byteLength);\n      return returnUInt8Array ? result : result.buffer;\n    }\n    function hexToBinaryString(hex) {\n      var bytes = [], length = hex.length, x;\n      for (x = 0; x < length - 1; x += 2) {\n        bytes.push(parseInt(hex.substr(x, 2), 16));\n      }\n      return String.fromCharCode.apply(String, bytes);\n    }\n    function SparkMD5() {\n      this.reset();\n    }\n    SparkMD5.prototype.append = function(str) {\n      this.appendBinary(toUtf8(str));\n      return this;\n    };\n    SparkMD5.prototype.appendBinary = function(contents) {\n      this._buff += contents;\n      this._length += contents.length;\n      var length = this._buff.length, i;\n      for (i = 64; i <= length; i += 64) {\n        md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n      }\n      this._buff = this._buff.substring(i - 64);\n      return this;\n    };\n    SparkMD5.prototype.end = function(raw) {\n      var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n      }\n      this._finish(tail, length);\n      ret = hex(this._hash);\n      if (raw) {\n        ret = hexToBinaryString(ret);\n      }\n      this.reset();\n      return ret;\n    };\n    SparkMD5.prototype.reset = function() {\n      this._buff = \"\";\n      this._length = 0;\n      this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n      return this;\n    };\n    SparkMD5.prototype.getState = function() {\n      return {\n        buff: this._buff,\n        length: this._length,\n        hash: this._hash.slice()\n      };\n    };\n    SparkMD5.prototype.setState = function(state) {\n      this._buff = state.buff;\n      this._length = state.length;\n      this._hash = state.hash;\n      return this;\n    };\n    SparkMD5.prototype.destroy = function() {\n      delete this._hash;\n      delete this._buff;\n      delete this._length;\n    };\n    SparkMD5.prototype._finish = function(tail, length) {\n      var i = length, tmp, lo, hi;\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(this._hash, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = this._length * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(this._hash, tail);\n    };\n    SparkMD5.hash = function(str, raw) {\n      return SparkMD5.hashBinary(toUtf8(str), raw);\n    };\n    SparkMD5.hashBinary = function(content, raw) {\n      var hash = md51(content), ret = hex(hash);\n      return raw ? hexToBinaryString(ret) : ret;\n    };\n    SparkMD5.ArrayBuffer = function() {\n      this.reset();\n    };\n    SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n      var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n      this._length += arr.byteLength;\n      for (i = 64; i <= length; i += 64) {\n        md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n      }\n      this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n      return this;\n    };\n    SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n      var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= buff[i] << (i % 4 << 3);\n      }\n      this._finish(tail, length);\n      ret = hex(this._hash);\n      if (raw) {\n        ret = hexToBinaryString(ret);\n      }\n      this.reset();\n      return ret;\n    };\n    SparkMD5.ArrayBuffer.prototype.reset = function() {\n      this._buff = new Uint8Array(0);\n      this._length = 0;\n      this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n      return this;\n    };\n    SparkMD5.ArrayBuffer.prototype.getState = function() {\n      var state = SparkMD5.prototype.getState.call(this);\n      state.buff = arrayBuffer2Utf8Str(state.buff);\n      return state;\n    };\n    SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n      state.buff = utf8Str2ArrayBuffer(state.buff, true);\n      return SparkMD5.prototype.setState.call(this, state);\n    };\n    SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n    SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n    SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n      var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n      return raw ? hexToBinaryString(ret) : ret;\n    };\n    return SparkMD5;\n  }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n  static create(file, callback) {\n    const instance = new FileChecksum(file);\n    instance.create(callback);\n  }\n  constructor(file) {\n    this.file = file;\n    this.chunkSize = 2097152;\n    this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n    this.chunkIndex = 0;\n  }\n  create(callback) {\n    this.callback = callback;\n    this.md5Buffer = new SparkMD5.ArrayBuffer;\n    this.fileReader = new FileReader;\n    this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n    this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n    this.readNextChunk();\n  }\n  fileReaderDidLoad(event) {\n    this.md5Buffer.append(event.target.result);\n    if (!this.readNextChunk()) {\n      const binaryDigest = this.md5Buffer.end(true);\n      const base64digest = btoa(binaryDigest);\n      this.callback(null, base64digest);\n    }\n  }\n  fileReaderDidError(event) {\n    this.callback(`Error reading ${this.file.name}`);\n  }\n  readNextChunk() {\n    if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n      const start = this.chunkIndex * this.chunkSize;\n      const end = Math.min(start + this.chunkSize, this.file.size);\n      const bytes = fileSlice.call(this.file, start, end);\n      this.fileReader.readAsArrayBuffer(bytes);\n      this.chunkIndex++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n\nfunction getMetaValue(name) {\n  const element = findElement(document.head, `meta[name=\"${name}\"]`);\n  if (element) {\n    return element.getAttribute(\"content\");\n  }\n}\n\nfunction findElements(root, selector) {\n  if (typeof root == \"string\") {\n    selector = root;\n    root = document;\n  }\n  const elements = root.querySelectorAll(selector);\n  return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n  if (typeof root == \"string\") {\n    selector = root;\n    root = document;\n  }\n  return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n  const {disabled: disabled} = element;\n  const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n  const event = document.createEvent(\"Event\");\n  event.initEvent(type, bubbles || true, cancelable || true);\n  event.detail = detail || {};\n  try {\n    element.disabled = false;\n    element.dispatchEvent(event);\n  } finally {\n    element.disabled = disabled;\n  }\n  return event;\n}\n\nfunction toArray(value) {\n  if (Array.isArray(value)) {\n    return value;\n  } else if (Array.from) {\n    return Array.from(value);\n  } else {\n    return [].slice.call(value);\n  }\n}\n\nclass BlobRecord {\n  constructor(file, checksum, url, customHeaders = {}) {\n    this.file = file;\n    this.attributes = {\n      filename: file.name,\n      content_type: file.type || \"application/octet-stream\",\n      byte_size: file.size,\n      checksum: checksum\n    };\n    this.xhr = new XMLHttpRequest;\n    this.xhr.open(\"POST\", url, true);\n    this.xhr.responseType = \"json\";\n    this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n    this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n    this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n    Object.keys(customHeaders).forEach((headerKey => {\n      this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n    }));\n    const csrfToken = getMetaValue(\"csrf-token\");\n    if (csrfToken != undefined) {\n      this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n    }\n    this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n    this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n  }\n  get status() {\n    return this.xhr.status;\n  }\n  get response() {\n    const {responseType: responseType, response: response} = this.xhr;\n    if (responseType == \"json\") {\n      return response;\n    } else {\n      return JSON.parse(response);\n    }\n  }\n  create(callback) {\n    this.callback = callback;\n    this.xhr.send(JSON.stringify({\n      blob: this.attributes\n    }));\n  }\n  requestDidLoad(event) {\n    if (this.status >= 200 && this.status < 300) {\n      const {response: response} = this;\n      const {direct_upload: direct_upload} = response;\n      delete response.direct_upload;\n      this.attributes = response;\n      this.directUploadData = direct_upload;\n      this.callback(null, this.toJSON());\n    } else {\n      this.requestDidError(event);\n    }\n  }\n  requestDidError(event) {\n    this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n  }\n  toJSON() {\n    const result = {};\n    for (const key in this.attributes) {\n      result[key] = this.attributes[key];\n    }\n    return result;\n  }\n}\n\nclass BlobUpload {\n  constructor(blob) {\n    this.blob = blob;\n    this.file = blob.file;\n    const {url: url, headers: headers} = blob.directUploadData;\n    this.xhr = new XMLHttpRequest;\n    this.xhr.open(\"PUT\", url, true);\n    this.xhr.responseType = \"text\";\n    for (const key in headers) {\n      this.xhr.setRequestHeader(key, headers[key]);\n    }\n    this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n    this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n  }\n  create(callback) {\n    this.callback = callback;\n    this.xhr.send(this.file.slice());\n  }\n  requestDidLoad(event) {\n    const {status: status, response: response} = this.xhr;\n    if (status >= 200 && status < 300) {\n      this.callback(null, response);\n    } else {\n      this.requestDidError(event);\n    }\n  }\n  requestDidError(event) {\n    this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n  }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n  constructor(file, url, delegate, customHeaders = {}) {\n    this.id = ++id;\n    this.file = file;\n    this.url = url;\n    this.delegate = delegate;\n    this.customHeaders = customHeaders;\n  }\n  create(callback) {\n    FileChecksum.create(this.file, ((error, checksum) => {\n      if (error) {\n        callback(error);\n        return;\n      }\n      const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n      notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n      blob.create((error => {\n        if (error) {\n          callback(error);\n        } else {\n          const upload = new BlobUpload(blob);\n          notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n          upload.create((error => {\n            if (error) {\n              callback(error);\n            } else {\n              callback(null, blob.toJSON());\n            }\n          }));\n        }\n      }));\n    }));\n  }\n}\n\nfunction notify(object, methodName, ...messages) {\n  if (object && typeof object[methodName] == \"function\") {\n    return object[methodName](...messages);\n  }\n}\n\nclass DirectUploadController {\n  constructor(input, file) {\n    this.input = input;\n    this.file = file;\n    this.directUpload = new DirectUpload(this.file, this.url, this);\n    this.dispatch(\"initialize\");\n  }\n  start(callback) {\n    const hiddenInput = document.createElement(\"input\");\n    hiddenInput.type = \"hidden\";\n    hiddenInput.name = this.input.name;\n    this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n    this.dispatch(\"start\");\n    this.directUpload.create(((error, attributes) => {\n      if (error) {\n        hiddenInput.parentNode.removeChild(hiddenInput);\n        this.dispatchError(error);\n      } else {\n        hiddenInput.value = attributes.signed_id;\n      }\n      this.dispatch(\"end\");\n      callback(error);\n    }));\n  }\n  uploadRequestDidProgress(event) {\n    const progress = event.loaded / event.total * 100;\n    if (progress) {\n      this.dispatch(\"progress\", {\n        progress: progress\n      });\n    }\n  }\n  get url() {\n    return this.input.getAttribute(\"data-direct-upload-url\");\n  }\n  dispatch(name, detail = {}) {\n    detail.file = this.file;\n    detail.id = this.directUpload.id;\n    return dispatchEvent(this.input, `direct-upload:${name}`, {\n      detail: detail\n    });\n  }\n  dispatchError(error) {\n    const event = this.dispatch(\"error\", {\n      error: error\n    });\n    if (!event.defaultPrevented) {\n      alert(error);\n    }\n  }\n  directUploadWillCreateBlobWithXHR(xhr) {\n    this.dispatch(\"before-blob-request\", {\n      xhr: xhr\n    });\n  }\n  directUploadWillStoreFileWithXHR(xhr) {\n    this.dispatch(\"before-storage-request\", {\n      xhr: xhr\n    });\n    xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n  }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n  constructor(form) {\n    this.form = form;\n    this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n  }\n  start(callback) {\n    const controllers = this.createDirectUploadControllers();\n    const startNextController = () => {\n      const controller = controllers.shift();\n      if (controller) {\n        controller.start((error => {\n          if (error) {\n            callback(error);\n            this.dispatch(\"end\");\n          } else {\n            startNextController();\n          }\n        }));\n      } else {\n        callback();\n        this.dispatch(\"end\");\n      }\n    };\n    this.dispatch(\"start\");\n    startNextController();\n  }\n  createDirectUploadControllers() {\n    const controllers = [];\n    this.inputs.forEach((input => {\n      toArray(input.files).forEach((file => {\n        const controller = new DirectUploadController(input, file);\n        controllers.push(controller);\n      }));\n    }));\n    return controllers;\n  }\n  dispatch(name, detail = {}) {\n    return dispatchEvent(this.form, `direct-uploads:${name}`, {\n      detail: detail\n    });\n  }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n  if (!started) {\n    started = true;\n    document.addEventListener(\"click\", didClick, true);\n    document.addEventListener(\"submit\", didSubmitForm, true);\n    document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n  }\n}\n\nfunction didClick(event) {\n  const button = event.target.closest(\"button, input\");\n  if (button && button.type === \"submit\" && button.form) {\n    submitButtonsByForm.set(button.form, button);\n  }\n}\n\nfunction didSubmitForm(event) {\n  handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n  if (event.target.tagName == \"FORM\") {\n    handleFormSubmissionEvent(event);\n  }\n}\n\nfunction handleFormSubmissionEvent(event) {\n  const form = event.target;\n  if (form.hasAttribute(processingAttribute)) {\n    event.preventDefault();\n    return;\n  }\n  const controller = new DirectUploadsController(form);\n  const {inputs: inputs} = controller;\n  if (inputs.length) {\n    event.preventDefault();\n    form.setAttribute(processingAttribute, \"\");\n    inputs.forEach(disable);\n    controller.start((error => {\n      form.removeAttribute(processingAttribute);\n      if (error) {\n        inputs.forEach(enable);\n      } else {\n        submitForm(form);\n      }\n    }));\n  }\n}\n\nfunction submitForm(form) {\n  let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n  if (button) {\n    const {disabled: disabled} = button;\n    button.disabled = false;\n    button.focus();\n    button.click();\n    button.disabled = disabled;\n  } else {\n    button = document.createElement(\"input\");\n    button.type = \"submit\";\n    button.style.display = \"none\";\n    form.appendChild(button);\n    button.click();\n    form.removeChild(button);\n  }\n  submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n  input.disabled = true;\n}\n\nfunction enable(input) {\n  input.disabled = false;\n}\n\nfunction autostart() {\n  if (window.ActiveStorage) {\n    start();\n  }\n}\n\nsetTimeout(autostart, 1);\n\nexport { DirectUpload, DirectUploadController, DirectUploadsController, start };\n"],
  "mappings": "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,EACA,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,CACI,EAAK,WACL,EAAK,SACT,CACJ,CACJ,EACA,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,OACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,uBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,SACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,YACL,EAAK,WACT,EACA,CACI,EAAK,YACL,EAAK,WACT,EACA,CACI,EAAK,YACL,EAAK,WACT,EACA,CACI,EAAK,WACL,EAAK,WACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,sBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,uBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,SACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,oBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,aACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,gBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,QACT,EACA,CACI,EAAK,SACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,aACR,MAAS,CACL,GACA,GACA,GACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,YACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,WACT,EACA,CACI,EAAK,UACL,EAAK,WACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,SACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,iBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,YACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,QACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,mBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,QACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,QACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,qBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,UACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,sBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,SACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,kBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,kBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,SACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,UACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,CACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,gBACR,MAAS,CACL,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,GACA,GACA,GACA,EACJ,CACJ,EACA,CACI,KAAQ,eACR,MAAS,CACL,GACA,GACA,GACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CACI,EAAK,WACL,EAAK,UACT,EACA,CAC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AAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,O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,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EACrf,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAC5f,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAC5f,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAEC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BACzd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACrf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,WAAW,EACxf,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4CACre,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,aAC5e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpf,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOACzd,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,oBAAoB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yGAAyG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAClf,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gCAC1e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sFAAsF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,EACzf,OAAO,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4pCAC5F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yqCACnC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,0jBAC/K,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,kDAAkD,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,uFAAuF,kNACzU,kSAAkS,6WAA6W,EAC/oB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,yBAAyB,4FAA4F,wNAC3V,4SAA4S,sXAAsX,EAClqB,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,uFAAuF,kNACzT,kSAAkS,6WAA6W,EAC/oB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,yBAAyB,4FAA4F,wNAC3V,4SAA4S,sXAAsX,CAAC,EACnqB,CAAC,CAAC,gCAAgC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCACvd,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mKACrd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2VAA2V,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eACnf,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,EACnf,CAAC,CAAC,sBAAsB,QAAQ,CAAC,qDAAqD,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,QAAQ,CAAC,qDAAqD,EAAE,KAAK,EACxf,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,8aAChW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yGAAyG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,sDAAsD,IAAI,CAAC,CAAC,cAC5e,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,EAAE,QAAQ,UAAU,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAC3e,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,EAAE,QAAQ,UAAU,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BACxd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4FAChb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,sDAAsD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+IACtZ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kHAAkH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CACpf,mCAAmC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,qBAAqB,2BAA2B,EAAE,OAAO,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,qBAAqB,2BAA2B,EAAE,OAAO,EAAE,CAAC,CAAC,mCAAmC,cAC5e,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sJAAsJ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EACvf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACnf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uHAAuH,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,kCACzd,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kFAAkF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kxCACzI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,mLAAmL,EAC9iB,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,kBAAkB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6HACvZ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EACvf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kGAAkG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCACpd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6FAA6F,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,6BAA6B,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QACjf,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,qCAAqC,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,EAClgB,KAAK,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,qCAAqC,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0HAC/e,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,kCAChe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,KACjf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAC5U,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACtf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uNAAuN,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,cAAc,IACpf,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,6EAA6E,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CACpf,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,yCAAyC,IAAI,CAAC,CAAC,8DAA8D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,2EAA2E,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,oBAAoB,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAC7e,0CAA0C,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,4DAA4D,EAAE,OAAO,YAAY,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,oBAAoB,EAAE,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,oBAAoB,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,2BACpf,WAAW,CAAC,4DAA4D,EAAE,OAAO,YAAY,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,oBAAoB,EAAE,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4IAA4I,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uKAClf,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,CAAC,EAC1f,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wKAAwK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC,CACpf,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mIAAmI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gLAAgL,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAC3d,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,oDAAoD,uFAAuF,EAAE,OAAO,EAAE,CAAC,CAAC,mCACpd,cAAc,CAAC,yBAAyB,EAAE,OAAO,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAClf,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kLAAkL,CAAC,CAAC,CAAC,aAC5e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kLAAkL,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+OACxU,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0IAA0I,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yGACta,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,sDAAsD,IAAI,CAAC,CAAC,kBAAkB,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CACpf,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,4EAC9b,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAChf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,2CAA2C,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eACnf,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,oXACzZ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oXAAoX,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CACpf,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,yDAAyD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,kDAAkD,EAAE,MAAM,EAC1f,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,kDAAkD,EAAE,MAAM,EAAE,CAAC,CAAC,6BAA6B,WAClf,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cACnf,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sHAAsH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,i3BACtT,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sVACvP,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,6BAA6B,IAAI,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,uBAAuB,+BAA+B,+BAA+B,EAAE,MAAM,QAAQ,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,sDAAsD,wEAAwE,CAAC,EAAE,CAAC,CAAC,mBACle,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,+QAA+Q,4SACnU,qUAAqU,sUAAsU,EAC3oB,MAAM,QAAQ,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,sDAAsD,kqBAC5G,+tBAA+tB,CAAC,EAChuB,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,2BAA2B,2BAA2B,4DAA4D,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,+LAA+L,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,qBACpe,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,uBAAuB,+BAA+B,+BAA+B,EAAE,MAAM,QAAQ,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,+QACnc,4SAA4S,qUAC5S,sUAAsU,EAAE,MAAM,QAAQ,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,2BAA2B,2BAA2B,4DAA4D,EAC1iB,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,+LAA+L,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,EACvf,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kIAAkI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aACpf,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,4BAA4B,IAAI,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,SAAS,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,mBAAmB,EAAE,OAAO,SAAS,EAAE,CAAC,CAAC,mBAAmB,QAClf,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACxf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,WAClf,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,kBAAkB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4DACpf,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uHAAuH,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,2CACpf,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4JAC/a,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yGAAyG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,sDAAsD,IAAI,CAAC,CAAC,kBAC5e,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CACpf,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,mCACte,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gMAAgM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GACnf,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,geAAge,CACpf,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,QAAQ,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,sBACte,QAAQ,CAAC,sGAAsG,8GAA8G,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,QAAQ,CAAC,uGAAuG,0bAA0b,EACxyB,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,EAAE,KAAK,EACzf,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,4HACtc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,wCACtd,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnf,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACrf,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mWAAmW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6DACpe,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CACrf,CAAC,wDAAwD,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,oEAAoE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,EACrf,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CACpf,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CACpf,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gSAAgS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,mDAAmD,8EAA8E,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,sBAAsB,0BAA0B,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yCACld,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6FAA6F,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,8BAA8B,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAC3f,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnf,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wLACzY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,8EAA8E,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,EACzf,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4qBACrM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAChe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,sDAAsD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,kBAAkB,QAAQ,CAAC,iCAAiC,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,uBAAuB,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CACrf,sBAAsB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,iCAAiC,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,uBAAuB,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,qIAAqI,EAAE,CAAC,CAAC,CAAC,+IAC1c,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,0FAC5b,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CACpf,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,2FAA2F,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,8BACzd,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EACxf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,0DAA0D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCACze,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,q9CAClL,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4NAA4N,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aACpf,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,QAAQ,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,OAAO,QAAQ,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,yBAAyB,qCAAqC,kDAAkD,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,sBACnf,gCAAgC,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8GACpZ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oEAAoE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAClf,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oQACpS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BACve,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kDAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wFACva,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qMAAqM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAChf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qDAC3d,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAC1e,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sHAAsH,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QACpf,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wEAAwE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cACxe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gGAAgG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAC3e,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAChf,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mXACvM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,4DAA4D,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,6BAC1e,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gOAAgO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gOAC1W,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8GACpf,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,oIAChZ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kSAAkS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uEAC7c,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mQAClT,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,ySAAyS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAC9e,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sDACxc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BACte,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sCAC/e,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6EAA6E,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAC7e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,sDAAsD,EAAE,SAAS,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EACpf,CAAC,CAAC,CAAC,kcAAkc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAC9e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,6BAA6B,WAChf,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,KAAK,EAAE,KAAK,EACvf,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sDAChf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0KAA0K,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAClf,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,gCAAgC,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAChe,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0HACjd,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uFAAuF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,SAAS,EAAE,KAAK,EACtf,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,qCAAqC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,aACjf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,oBAAoB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,8EAA8E,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACzf,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0uCACpF,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+/BACnC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,8BAA8B,4CAA4C,4CAA4C,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAC/e,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,qCAAqC,2DAA2D,0FAA0F,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,sYACrS,meAAme,ukBAAukB,EAC1iC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,iKAAiK,wSACpN,iWAAiW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mCAChf,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,8BAA8B,4CAA4C,4CAA4C,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,qCAAqC,2DAA2D,0FAA0F,EACjjB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,sYAAsY,meACzb,ukBAAukB,EACvkB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,iKAAiK,wSACpN,iWAAiW,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mCAChf,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,8EAA8E,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCACxe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CACpf,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4MAA4M,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uIAAuI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACtf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,0EAA0E,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2EACpd,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6JAA6J,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kJAAkJ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mFACpd,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,8aACte,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iHAAiH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,gBAAgB,yBAAyB,CAAC,EACtgB,CAAC,CAAC,WAAW,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wCAAwC,uDAAuD,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,2BACpf,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wCAAwC,uDAAuD,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,oBAAoB,CAAC,EACpgB,CAAC,CAAC,6BAA6B,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,YAAY,EAC9f,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,wGAAwG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,sBAAsB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gHACxb,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oOAAoO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yKAC7V,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,ieACrE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YACze,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wQAAwQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBACpe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uGAAuG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,OAAO,QAAQ,WAAW,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,6FAC1d,gLAAgL,qMAAqM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,wBAAwB,yCAAyC,EAC3hB,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,qVAAqV,gnBACrY,gsBACA,+tBAA+tB,EAC/tB,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,kCAAkC,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAC1e,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,6FAA6F,gLAAgL,qMAAqM,EAClkB,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,wBAAwB,yCAAyC,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,qVACtN,gnBACA,gsBACA,+tBAA+tB,EAC/tB,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,kCAAkC,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uFAC1d,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAC/e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sQAAsQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+FAA+F,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,kCAAkC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2IACnX,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0JAA0J,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EACzf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uIAAuI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EACnf,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uDAC/e,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAC9e,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAChf,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2GAA2G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kFAAkF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yFACva,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,sDAAsD,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,YAAY,aAAa,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,8BAA8B,EAAE,MAAM,SAAS,EAAE,CAAC,CACpf,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,GAAG,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAC3d,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,8BAA8B,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,GAAG,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,MAAM,SAAS,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAC9e,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mFAAmF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uQACjX,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4HAA4H,CACpf,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iGAAiG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOACvR,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4dACvP,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wCAC9d,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8FAA8F,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,sFAAsF,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,+CAA+C,EACngB,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACxf,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yFACnc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0FAA0F,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,sBAAsB,yBAAyB,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BACne,WAAW,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+GAA+G,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YACpf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBACze,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,8FAC9Z,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,kEAAkE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,kEAAkE,EACvjB,CAAC,QAAQ,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,qCAAqC,cAAc,CAAC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,6CAA6C,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,qCAAqC,cAChf,CAAC,iDAAiD,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACpf,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2NAA2N,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACxf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sLAAsL,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IACnf,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,aAAa,iBAAiB,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,6BAA6B,wCAAwC,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAChe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EACxf,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,wCAAwC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACpf,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gGAAgG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sCAC5e,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,yCACpf,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KACnf,IAAI,KAAK,IAAI,CAAC,CAAC,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uMAAuM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6FAA6F,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EACpf,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,8BAA8B,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,UAAU,EACrf,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,oBAAoB,8CAA8C,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oEACxe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yhCAC3B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mMAAmM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAChf,WAAW,CAAC,2DAA2D,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,6BAA6B,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qHAAqH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,MAChf,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,sCAAsC,0CAA0C,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wCAC9c,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sGAAsG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8GACzd,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8GAA8G,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOACpR,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAClf,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOACnX,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,kBAAkB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,UAAU,EACrf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,qGAAqG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8FACla,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,qEACve,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAC9e,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qHACzb,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0bAA0b,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+0BACnf,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,QAAQ,KAAK,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gCAAgC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gCACxd,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gCAAgC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gCAAgC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mXACnZ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oQAAoQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mGACrb,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,2BAA2B,EAAE,KAAK,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mBACle,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0WACzc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAChf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iGAAiG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CACrf,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,gBAAgB,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EACtf,CAAC,CAAC,CAAC,4KAA4K,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mGAAmG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAChe,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UACpf,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gGAAgG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0PAC/c,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BACxe,WAAW,CAAC,yCAAyC,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,yCAAyC,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,4GAC/b,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6HAA6H,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAClf,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mHAC1a,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iCAAiC,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,mBACxe,QAAQ,CAAC,iCAAiC,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACrf,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8FAA8F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,6DACtc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,kBAAkB,uBAAuB,EAAE,KAAK,EAAE,CAAC,CAAC,wBAChe,WAAW,CAAC,2BAA2B,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eACxe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oDACpd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wbAAwb,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mDACre,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kKACtd,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,uBAAuB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,cAAc,CAAC,EAChgB,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+GAA+G,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sFAAsF,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAC5e,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,qEAAqE,qHAAqH,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,wBAAwB,+BAA+B,EAAE,OAAO,EAAE,CAAC,CAAC,wBAC3e,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,qCAAqC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kKAAkK,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qQAAqQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAC7e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kJAAkJ,qKAAqK,EACvf,OAAO,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,4DAA4D,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,mDAAmD,EAAE,OAAO,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,qNACva,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,6IAA6I,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAC9e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,iFAAiF,iFAAiF,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,gDAAgD,CAAC,EAC3f,CAAC,CAAC,mCAAmC,cAAc,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAClf,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOACre,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WACpf,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2EAA2E,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,8EAA8E,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,8DACxd,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wFAC7a,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mPACvY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,uCAAuC,EAAE,OAAO,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wDAAwD,EAAE,OAAO,EAAE,CAAC,CAAC,6BAC9e,WAAW,CAAC,sDAAsD,EAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,WAC/e,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,4GACne,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gEAC5e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,YAC/e,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wGAAwG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oGAAoG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wKAAwK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UACpf,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,qBAAqB,6CAA6C,+DAA+D,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,gCACrd,cAAc,CAAC,sBAAsB,2EAA2E,4LAA4L,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,mCACrd,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,qBAAqB,6CAA6C,+DAA+D,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,sBAAsB,2EAA2E,4LAA4L,EACljB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACpf,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kDAC1e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAC9e,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gHAAgH,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BACve,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0EAA0E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,meACvZ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,wCAAwC,EAAE,KAAK,EACxf,CAAC,CAAC,kCAAkC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,sHAAsH,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,qCAAqC,cAAc,CAAC,mDAAmD,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,gCACne,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,+EAA+E,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2CAA2C,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,kCAC/e,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,sHAAsH,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,qCAAqC,cAAc,CAAC,mDAAmD,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCACxd,cAAc,CAAC,+EAA+E,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2CAA2C,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gEACjd,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,cAAc,mCAAmC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAClf,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wFAAwF,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,uBAAuB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,uBAAuB,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mCACve,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yCACre,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wHAAwH,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,WAC7e,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,cAAc,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,gCAC1d,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,4DAA4D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CACpf,CAAC,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,yDAC7b,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACpf,4EAA4E,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yHAAyH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,gBAAgB,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC,gBACxe,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,WAClf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,sCAC7d,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CACpf,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,eAAe,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAC1d,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CACrf,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sDACje,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4CAC1e,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,YAChf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oEAC9e,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,wBAAwB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACzf,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAC3e,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mHAAmH,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACvf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,gCAAgC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,aAC5e,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EACpf,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sIACzb,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,mCAC7e,cAAc,CAAC,iBAAiB,kBAAkB,kBAAkB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,iBAAiB,kBAAkB,kBAAkB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,6BAClf,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oGAAoG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oGAAoG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAC3d,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,sBAAsB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAClf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,6fAC7c,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,IAAI,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,0BACxe,WAAW,CAAC,wCAAwC,8CAA8C,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAChf,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C,CAAC,CACpf,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,8DAA8D,iFAAiF,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAChf,CAAC,8EAA8E,sFAAsF,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0HACha,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,yBAAyB,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAC5e,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6vBACnB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6vBAC3B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,aACpf,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,mBAAmB,IACnf,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mXACpV,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,qsCACnB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mCAAmC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,wBACnf,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iHAAiH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EACnf,CAAC,CAAC,CAAC,8FAA8F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOACzU,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,mBAAmB,QAAQ,CAAC,UAAU,EAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wGAAwG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAC/e,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAAuO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,qBAAqB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0JACne,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0JAA0J,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uOAChU,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,mBAAmB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,+FAA+F,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yFAAyF,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCAC1d,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BACze,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oCACxe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO,EAAE,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,mCAAmC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gDACve,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACpf,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+BACne,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qFAAqF,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,WAAW,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,4BAC/d,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mFAAmF,CAAC,CAAC,CAAC,YACjf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4RAA4R,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,mGACvd,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CACpf,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wHAAwH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2mBAC9K,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,QAAQ,CAAC,wFAAwF,EAAE,KAAK,EAAE,CAAC,CAAC,0BAA0B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,KAAK,EACtf,CAAC,CAAC,mBAAmB,QAAQ,CAAC,6CAA6C,4EAA4E,EAAE,OAAO,EAAE,CAAC,CAAC,2BAA2B,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,+CAA+C,+CAA+C,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,2IAA2I,EAC9jB,KAAK,EAAE,CAAC,CAAC,6BAA6B,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,QAAQ,CAAC,aAAa,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpf,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EA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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
  "names": ["adapters_default", "init_adapters", "__esmMin", "logger_default", "init_logger", "__esmMin", "init_adapters", "messages", "adapters_default", "now", "secondsSince", "ConnectionMonitor", "connection_monitor_default", "init_connection_monitor", "__esmMin", "init_logger", "time", "connection", "logger_default", "staleThreshold", "reconnectionBackoffRate", "backoff", "jitter", "internal_default", "init_internal", "__esmMin", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "connection_default", "init_connection", "__esmMin", "init_adapters", "init_connection_monitor", "init_internal", "init_logger", "internal_default", "consumer", "connection_monitor_default", "data", "logger_default", "adapters_default", "allowReconnect", "error", "states", "state", "eventName", "handler", "event", "identifier", "message", "reason", "reconnect", "type", "extend", "Subscription", "init_subscription", "__esmMin", "object", "properties", "key", "value", "consumer", "params", "mixin", "action", "data", "SubscriptionGuarantor", "subscription_guarantor_default", "init_subscription_guarantor", "__esmMin", "init_logger", "subscriptions", "subscription", "logger_default", "s", "Subscriptions", "init_subscriptions", "__esmMin", "init_subscription", "init_subscription_guarantor", "init_logger", "consumer", "subscription_guarantor_default", "channelName", "mixin", "channel", "params", "subscription", "Subscription", "identifier", "s", "callbackName", "args", "subscriptions", "logger_default", "command", "createWebSocketURL", "url", "a", "Consumer", "init_consumer", "__esmMin", "init_connection", "init_subscriptions", "Subscriptions", "connection_default", "data", "src_exports", "__export", "connection_default", "connection_monitor_default", "Consumer", "internal_default", "Subscription", "subscription_guarantor_default", "Subscriptions", "adapters_default", "createConsumer", "createWebSocketURL", "getConfig", "logger_default", "url", "name", "element", "init_src", "__esmMin", "init_connection", "init_connection_monitor", "init_consumer", "init_internal", "init_subscription", "init_subscriptions", "init_subscription_guarantor", "init_adapters", "init_logger", "require_action_cable", "__commonJSMin", "exports", "module", "global", "factory", "adapters", "logger", "_adapters$logger", "_len", "messages", "_key", "_typeof", "obj", "classCallCheck", "instance", "Constructor", "createClass", "defineProperties", "target", "props", "i", "descriptor", "protoProps", "staticProps", "now", "secondsSince", "time", "clamp", "number", "min", "max", "ConnectionMonitor", "connection", "_this", "_constructor$pollInte", "multiplier", "interval", "_this2", "INTERNAL", "message_types", "protocols", "supportedProtocols", "indexOf", "Connection", "consumer", "data", "_ref", "allowReconnect", "error", "states", "state", "eventName", "handler", "event", "_JSON$parse", "identifier", "message", "reason", "reconnect", "type", "extend", "object", "properties", "key", "value", "Subscription", "params", "mixin", "action", "SubscriptionGuarantor", "subscriptions", "subscription", "s", "Subscriptions", "channelName", "channel", "callbackName", "_this3", "args", "_len2", "_key2", "_this4", "command", "Consumer", "url", "createWebSocketURL", "a", "createConsumer", "getConfig", "name", "element", "require_jquery", "__commonJSMin", "exports", "module", "global", "factory", "w", "window", "noGlobal", "arr", "getProto", "slice", "flat", "array", "push", "indexOf", "class2type", "toString", "hasOwn", "fnToString", "ObjectFunctionString", "support", "isFunction", "obj", "isWindow", "document", "preservedScriptAttributes", "DOMEval", "code", "node", "doc", "i", "val", "script", "toType", "version", "jQuery", "selector", "context", "num", "elems", "ret", "callback", "elem", "_elem", "len", "j", "options", "name", "src", "copy", "copyIsArray", "clone", "target", "length", "deep", "msg", "proto", "Ctor", "isArrayLike", "results", "first", "second", "invert", "callbackInverse", "matches", "callbackExpect", "arg", "value", "_i", "type", "Sizzle", "Expr", "getText", "isXML", "tokenize", "compile", "select", "outermostContext", "sortInput", "hasDuplicate", "setDocument", "docElem", "documentIsHTML", "rbuggyQSA", "rbuggyMatches", "contains", "expando", "preferredDoc", "dirruns", "done", "classCache", "createCache", "tokenCache", "compilerCache", "nonnativeSelectorCache", "sortOrder", "a", "b", "pop", "pushNative", "list", "booleans", "whitespace", "identifier", "attributes", "pseudos", "rwhitespace", "rtrim", "rcomma", "rcombinators", "rdescend", "rpseudo", "ridentifier", "matchExpr", "rhtml", "rinputs", "rheader", "rnative", "rquickExpr", "rsibling", "runescape", "funescape", "escape", "nonHex", "high", "rcssescape", "fcssescape", "ch", "asCodePoint", "unloadHandler", "inDisabledFieldset", "addCombinator", "e", "els", "seed", "m", "nid", "match", "groups", "newSelector", "newContext", "nodeType", "testContext", "toSelector", "qsaError", "keys", "cache", "key", "markFunction", "fn", "assert", "el", "addHandle", "attrs", "handler", "siblingCheck", "cur", "diff", "createInputPseudo", "createButtonPseudo", "createDisabledPseudo", "disabled", "createPositionalPseudo", "argument", "matchIndexes", "namespace", "hasCompare", "subWindow", "id", "attrId", "tag", "tmp", "className", "input", "adown", "bup", "compare", "aup", "ap", "bp", "expr", "elements", "sel", "duplicates", "excess", "unquoted", "nodeNameSelector", "nodeName", "pattern", "operator", "check", "result", "what", "_argument", "last", "simple", "forward", "ofType", "_context", "xml", "uniqueCache", "outerCache", "nodeIndex", "start", "dir", "parent", "useCache", "pseudo", "args", "idx", "matched", "matcher", "unmatched", "text", "lang", "elemLang", "hash", "attr", "_matchIndexes", "setFilters", "parseOnly", "tokens", "soFar", "preFilters", "cached", "combinator", "base", "skip", "checkNonElements", "doneName", "oldCache", "newCache", "elementMatcher", "matchers", "multipleContexts", "contexts", "condense", "map", "filter", "newUnmatched", "mapped", "setMatcher", "preFilter", "postFilter", "postFinder", "postSelector", "temp", "preMap", "postMap", "preexisting", "matcherIn", "matcherOut", "matcherFromTokens", "checkContext", "leadingRelative", "implicitRelative", "matchContext", "matchAnyContext", "matcherFromGroupMatchers", "elementMatchers", "setMatchers", "bySet", "byElement", "superMatcher", "outermost", "matchedCount", "setMatched", "contextBackup", "dirrunsUnique", "token", "find", "compiled", "_name", "until", "truncate", "siblings", "n", "rneedsContext", "rsingleTag", "winnow", "qualifier", "not", "self", "rootjQuery", "init", "root", "rparentsprev", "guaranteedUnique", "targets", "l", "selectors", "sibling", "rnothtmlwhite", "createOptions", "object", "_", "flag", "firing", "memory", "fired", "locked", "queue", "firingIndex", "fire", "add", "index", "Identity", "v", "Thrower", "ex", "adoptValue", "resolve", "reject", "noValue", "method", "func", "tuples", "state", "promise", "deferred", "fns", "newDefer", "tuple", "returned", "onFulfilled", "onRejected", "onProgress", "maxDepth", "depth", "special", "that", "mightThrow", "then", "process", "stateString", "singleValue", "remaining", "resolveContexts", "resolveValues", "primary", "updateFunc", "rerrorNames", "error", "stack", "readyList", "wait", "completed", "access", "chainable", "emptyGet", "raw", "bulk", "_key", "rmsPrefix", "rdashAlpha", "fcamelCase", "_all", "letter", "camelCase", "string", "acceptData", "owner", "Data", "data", "prop", "dataPriv", "dataUser", "rbrace", "rmultiDash", "getData", "dataAttr", "startLength", "hooks", "next", "setter", "count", "defer", "pnum", "rcssNum", "cssExpand", "documentElement", "isAttached", "composed", "isHiddenWithinTree", "adjustCSS", "valueParts", "tween", "adjusted", "scale", "maxIterations", "currentValue", "initial", "unit", "initialInUnit", "defaultDisplayMap", "getDefaultDisplay", "display", "showHide", "show", "values", "rcheckableType", "rtagName", "rscriptType", "fragment", "div", "wrapMap", "getAll", "setGlobalEval", "refElements", "buildFragment", "scripts", "selection", "ignored", "wrap", "attached", "nodes", "rtypenamespace", "returnTrue", "returnFalse", "expectSync", "safeActiveElement", "err", "on", "types", "one", "origFn", "event", "handleObjIn", "eventHandle", "events", "t", "handleObj", "handlers", "namespaces", "origType", "elemData", "mappedTypes", "origCount", "nativeEvent", "handlerQueue", "matchedHandlers", "matchedSelectors", "delegateCount", "hook", "originalEvent", "leverageNative", "notAsync", "saved", "handle", "props", "delegateType", "orig", "fix", "related", "rnoInnerhtml", "rchecked", "rcleanScript", "manipulationTarget", "content", "disableScript", "restoreScript", "cloneCopyEvent", "dest", "pdataOld", "udataOld", "udataCur", "fixInput", "domManip", "collection", "hasScripts", "iNoClone", "valueIsFunction", "remove", "keepData", "html", "dataAndEvents", "deepDataAndEvents", "srcElements", "destElements", "inPage", "original", "insert", "rnumnonpx", "getStyles", "view", "swap", "old", "rboxStyle", "computeStyleTests", "container", "divStyle", "pixelPositionVal", "reliableMarginLeftVal", "roundPixelMeasures", "pixelBoxStylesVal", "boxSizingReliableVal", "scrollboxSizeVal", "measure", "reliableTrDimensionsVal", "table", "tr", "trChild", "trStyle", "curCSS", "computed", "width", "minWidth", "maxWidth", "style", "addGetHookIf", "conditionFn", "hookFn", "cssPrefixes", "emptyStyle", "vendorProps", "vendorPropName", "capName", "finalPropName", "final", "rdisplayswap", "rcustomProp", "cssShow", "cssNormalTransform", "setPositiveNumber", "subtract", "boxModelAdjustment", "dimension", "box", "isBorderBox", "styles", "computedVal", "extra", "delta", "getWidthOrHeight", "boxSizingNeeded", "valueIsBorderBox", "offsetProp", "origName", "isCustomProp", "scrollboxSizeBuggy", "prefix", "suffix", "expanded", "parts", "Tween", "end", "easing", "percent", "eased", "p", "fxNow", "inProgress", "rfxtypes", "rrun", "schedule", "createFxNow", "genFx", "includeWidth", "which", "createTween", "animation", "Animation", "defaultPrefilter", "opts", "toggle", "oldfire", "propTween", "restoreDisplay", "isBox", "anim", "hidden", "dataShow", "propFilter", "specialEasing", "properties", "stopped", "tick", "currentTime", "gotoEnd", "prepend", "speed", "opt", "to", "empty", "optall", "doAnimation", "clearQueue", "stopQueue", "stop", "dequeue", "timers", "cssFn", "timer", "time", "timeout", "boolHook", "attrHandle", "nType", "attrNames", "getter", "lowercaseName", "rfocusable", "rclickable", "tabindex", "stripAndCollapse", "getClass", "classesToArray", "classes", "curValue", "clazz", "finalValue", "stateVal", "isValidValue", "classNames", "rreturn", "option", "max", "optionSet", "rfocusMorph", "stopPropagationCallback", "onlyHandlers", "bubbleType", "ontype", "lastElement", "eventPath", "attaches", "location", "nonce", "rquery", "parserErrorElem", "rbracket", "rCRLF", "rsubmitterTypes", "rsubmittable", "buildParams", "traditional", "s", "valueOrFunction", "r20", "rhash", "rantiCache", "rheaders", "rlocalProtocol", "rnoContent", "rprotocol", "prefilters", "transports", "allTypes", "originAnchor", "addToPrefiltersOrTransports", "structure", "dataTypeExpression", "dataType", "dataTypes", "inspectPrefiltersOrTransports", "originalOptions", "jqXHR", "inspected", "seekingTransport", "inspect", "selected", "prefilterOrFactory", "dataTypeOrTransport", "ajaxExtend", "flatOptions", "ajaxHandleResponses", "responses", "ct", "finalDataType", "firstDataType", "contents", "ajaxConvert", "response", "isSuccess", "conv2", "current", "conv", "prev", "converters", "settings", "url", "transport", "cacheURL", "responseHeadersString", "responseHeaders", "timeoutTimer", "urlAnchor", "fireGlobals", "uncached", "callbackContext", "globalEventContext", "completeDeferred", "statusCode", "requestHeaders", "requestHeadersNames", "strAbort", "statusText", "finalText", "status", "nativeStatusText", "headers", "success", "modified", "htmlIsFunction", "xhrSuccessStatus", "xhrSupported", "errorCallback", "complete", "xhr", "evt", "oldCallbacks", "rjsonp", "originalSettings", "callbackName", "overwritten", "responseContainer", "jsonProp", "body", "keepScripts", "parsed", "params", "off", "responseText", "curPosition", "curLeft", "curCSSTop", "curTop", "curOffset", "curCSSLeft", "calculatePosition", "position", "curElem", "rect", "win", "offsetParent", "offset", "parentOffset", "top", "defaultExtra", "funcName", "margin", "fnOver", "fnOut", "proxy", "hold", "_jQuery", "_$", "require_trix", "__commonJSMin", "exports", "module", "t", "e", "i", "c", "o", "h", "n", "r", "p", "u", "l", "s", "a", "A", "b", "g", "m", "C", "x", "w", "d", "f", "v", "y", "E", "S", "R", "k", "D", "L", "require_moment", "__commonJSMin", "exports", "module", "global", "factory", "hookCallback", "hooks", "setHookCallback", "callback", "isArray", "input", "isObject", "hasOwnProp", "a", "b", "isObjectEmpty", "obj", "k", "isUndefined", "isNumber", "isDate", "map", "arr", "fn", "res", "i", "extend", "createUTC", "format", "locale", "strict", "createLocalOrUTC", "defaultParsingFlags", "getParsingFlags", "m", "some", "fun", "t", "len", "isValid", "flags", "parsedParts", "isNowValid", "createInvalid", "momentProperties", "updateInProgress", "copyConfig", "to", "from", "prop", "val", "Moment", "config", "isMoment", "warn", "msg", "deprecate", "firstTime", "args", "arg", "key", "deprecations", "deprecateSimple", "name", "isFunction", "set", "mergeConfigs", "parentConfig", "childConfig", "Locale", "keys", "defaultCalendar", "calendar", "mom", "now", "output", "zeroFill", "number", "targetLength", "forceSign", "absNumber", "zerosToFill", "sign", "formattingTokens", "localFormattingTokens", "formatFunctions", "formatTokenFunctions", "addFormatToken", "token", "padded", "ordinal", "func", "removeFormattingTokens", "makeFormatFunction", "array", "length", "formatMoment", "expandFormat", "replaceLongDateFormatTokens", "defaultLongDateFormat", "longDateFormat", "formatUpper", "tok", "defaultInvalidDate", "invalidDate", "defaultOrdinal", "defaultDayOfMonthOrdinalParse", "defaultRelativeTime", "relativeTime", "withoutSuffix", "string", "isFuture", "pastFuture", "diff", "aliases", "addUnitAlias", "unit", "shorthand", "lowerCase", "normalizeUnits", "units", "normalizeObjectUnits", "inputObject", "normalizedInput", "normalizedProp", "priorities", "addUnitPriority", "priority", "getPrioritizedUnits", "unitsObj", "u", "isLeapYear", "year", "absFloor", "toInt", "argumentForCoercion", "coercedNumber", "value", "makeGetSet", "keepTime", "set$1", "get", "daysInMonth", "stringGet", "stringSet", "prioritized", "match1", "match2", "match3", "match4", "match6", "match1to2", "match3to4", "match5to6", "match1to3", "match1to4", "match1to6", "matchUnsigned", "matchSigned", "matchOffset", "matchShortOffset", "matchTimestamp", "matchWord", "regexes", "addRegexToken", "regex", "strictRegex", "isStrict", "localeData", "getParseRegexForToken", "unescapeFormat", "s", "regexEscape", "matched", "p1", "p2", "p3", "p4", "tokens", "addParseToken", "addWeekParseToken", "addTimeToArrayFromToken", "YEAR", "MONTH", "DATE", "HOUR", "MINUTE", "SECOND", "MILLISECOND", "WEEK", "WEEKDAY", "mod", "n", "x", "indexOf", "o", "month", "modMonth", "defaultLocaleMonths", "defaultLocaleMonthsShort", "MONTHS_IN_FORMAT", "defaultMonthsShortRegex", "defaultMonthsRegex", "localeMonths", "localeMonthsShort", "handleStrictParse", "monthName", "ii", "llc", "localeMonthsParse", "setMonth", "dayOfMonth", "getSetMonth", "getDaysInMonth", "monthsShortRegex", "computeMonthsParse", "monthsRegex", "cmpLenRev", "shortPieces", "longPieces", "mixedPieces", "y", "daysInYear", "getSetYear", "getIsLeapYear", "createDate", "d", "h", "M", "ms", "date", "createUTCDate", "firstWeekOffset", "dow", "doy", "fwd", "fwdlw", "dayOfYearFromWeeks", "week", "weekday", "localWeekday", "weekOffset", "dayOfYear", "resYear", "resDayOfYear", "weekOfYear", "resWeek", "weeksInYear", "weekOffsetNext", "localeWeek", "defaultLocaleWeek", "localeFirstDayOfWeek", "localeFirstDayOfYear", "getSetWeek", "getSetISOWeek", "parseWeekday", "parseIsoWeekday", "shiftWeekdays", "ws", "defaultLocaleWeekdays", "defaultLocaleWeekdaysShort", "defaultLocaleWeekdaysMin", "defaultWeekdaysRegex", "defaultWeekdaysShortRegex", "defaultWeekdaysMinRegex", "localeWeekdays", "weekdays", "localeWeekdaysShort", "localeWeekdaysMin", "handleStrictParse$1", "weekdayName", "localeWeekdaysParse", "getSetDayOfWeek", "day", "getSetLocaleDayOfWeek", "getSetISODayOfWeek", "weekdaysRegex", "computeWeekdaysParse", "weekdaysShortRegex", "weekdaysMinRegex", "minPieces", "minp", "shortp", "longp", "hFormat", "kFormat", "meridiem", "lowercase", "matchMeridiem", "kInput", "pos", "pos1", "pos2", "localeIsPM", "defaultLocaleMeridiemParse", "getSetHour", "localeMeridiem", "hours", "minutes", "isLower", "baseConfig", "locales", "localeFamilies", "globalLocale", "commonPrefix", "arr1", "arr2", "minl", "normalizeLocale", "chooseLocale", "names", "j", "next", "split", "loadLocale", "oldLocale", "aliasedRequire", "__require", "getSetGlobalLocale", "e", "values", "data", "getLocale", "defineLocale", "updateLocale", "tmpLocale", "listLocales", "checkOverflow", "overflow", "extendedIsoRegex", "basicIsoRegex", "tzRegex", "isoDates", "isoTimes", "aspNetJsonRegex", "rfc2822", "obsOffsets", "configFromISO", "l", "match", "allowTime", "dateFormat", "timeFormat", "tzFormat", "configFromStringAndFormat", "extractFromRFC2822Strings", "yearStr", "monthStr", "dayStr", "hourStr", "minuteStr", "secondStr", "result", "untruncateYear", "preprocessRFC2822", "checkWeekday", "weekdayStr", "parsedInput", "weekdayProvided", "weekdayActual", "calculateOffset", "obsOffset", "militaryOffset", "numOffset", "hm", "configFromRFC2822", "parsedArray", "configFromString", "defaults", "c", "currentDateArray", "nowValue", "configFromArray", "currentDate", "expectedWeekday", "yearToUse", "dayOfYearFromWeekInfo", "w", "weekYear", "temp", "weekdayOverflow", "curWeek", "createLocal", "skipped", "stringLength", "totalParsedInputLength", "era", "meridiemFixWrap", "hour", "isPm", "configFromStringAndArray", "tempConfig", "bestMoment", "scoreToBeat", "currentScore", "validFormatFound", "bestFormatIsValid", "configFromObject", "dayOrDate", "createFromConfig", "prepareConfig", "configFromInput", "isUTC", "prototypeMin", "other", "prototypeMax", "pickBy", "moments", "min", "max", "ordering", "isDurationValid", "unitHasDecimal", "isValid$1", "createInvalid$1", "createDuration", "Duration", "duration", "years", "quarters", "months", "weeks", "days", "seconds", "milliseconds", "isDuration", "absRound", "compareArrays", "array1", "array2", "dontConvert", "lengthDiff", "diffs", "offset", "separator", "offsetFromString", "chunkOffset", "matcher", "matches", "chunk", "parts", "cloneWithOffset", "model", "getDateOffset", "getSetOffset", "keepLocalTime", "keepMinutes", "localAdjust", "addSubtract", "getSetZone", "setOffsetToUTC", "setOffsetToLocal", "setOffsetToParsedOffset", "tZone", "hasAlignedHourOffset", "isDaylightSavingTime", "isDaylightSavingTimeShifted", "isLocal", "isUtcOffset", "isUtc", "aspNetRegex", "isoRegex", "ret", "diffRes", "parseIso", "momentsDifference", "inp", "positiveMomentsDifference", "base", "createAdder", "direction", "period", "dur", "tmp", "isAdding", "updateOffset", "add", "subtract", "isString", "isMomentInput", "isNumberOrStringArray", "isMomentInputObject", "objectTest", "propertyTest", "properties", "property", "arrayTest", "dataTypeTest", "item", "isCalendarSpec", "getCalendarFormat", "myMoment", "calendar$1", "time", "formats", "sod", "clone", "isAfter", "localInput", "isBefore", "isBetween", "inclusivity", "localFrom", "localTo", "isSame", "inputMs", "isSameOrAfter", "isSameOrBefore", "asFloat", "that", "zoneDelta", "monthDiff", "wholeMonthDiff", "anchor", "anchor2", "adjust", "toString", "toISOString", "keepOffset", "utc", "inspect", "zone", "prefix", "datetime", "suffix", "inputString", "fromNow", "toNow", "newLocaleData", "lang", "MS_PER_SECOND", "MS_PER_MINUTE", "MS_PER_HOUR", "MS_PER_400_YEARS", "mod$1", "dividend", "divisor", "localStartOfDate", "utcStartOfDate", "startOf", "startOfDate", "endOf", "valueOf", "unix", "toDate", "toArray", "toObject", "toJSON", "isValid$2", "parsingFlags", "invalidAt", "creationData", "matchEraAbbr", "matchEraName", "matchEraNarrow", "matchEraYearOrdinal", "localeEras", "eras", "localeErasParse", "eraName", "abbr", "narrow", "localeErasConvertYear", "dir", "getEraName", "getEraNarrow", "getEraAbbr", "getEraYear", "erasNameRegex", "computeErasParse", "erasAbbrRegex", "erasNarrowRegex", "abbrPieces", "namePieces", "narrowPieces", "addWeekYearFormatToken", "getter", "getSetWeekYear", "getSetWeekYearHelper", "getSetISOWeekYear", "getISOWeeksInYear", "getISOWeeksInISOWeekYear", "getWeeksInYear", "weekInfo", "getWeeksInWeekYear", "weeksTarget", "setWeekAll", "dayOfYearData", "getSetQuarter", "getSetDayOfMonth", "getSetDayOfYear", "getSetMinute", "getSetSecond", "getSetMillisecond", "parseMs", "getZoneAbbr", "getZoneName", "proto", "createUnix", "createInZone", "preParsePostFormat", "proto$1", "get$1", "index", "field", "setter", "listMonthsImpl", "out", "listWeekdaysImpl", "localeSorted", "shift", "listMonths", "listMonthsShort", "listWeekdays", "listWeekdaysShort", "listWeekdaysMin", "mathAbs", "abs", "addSubtract$1", "add$1", "subtract$1", "absCeil", "bubble", "monthsFromDays", "monthsToDays", "daysToMonths", "as", "valueOf$1", "makeAs", "alias", "asMilliseconds", "asSeconds", "asMinutes", "asHours", "asDays", "asWeeks", "asMonths", "asQuarters", "asYears", "clone$1", "get$2", "makeGetter", "round", "thresholds", "substituteTimeAgo", "relativeTime$1", "posNegDuration", "getSetRelativeTimeRounding", "roundingFunction", "getSetRelativeTimeThreshold", "threshold", "limit", "humanize", "argWithSuffix", "argThresholds", "withSuffix", "th", "abs$1", "toISOString$1", "total", "totalSign", "ymSign", "daysSign", "hmsSign", "proto$2", "main_min_exports", "__export", "FullCalendar", "init_main_min", "__esmMin", "e", "n", "t", "r", "o", "i", "a", "s", "c", "d", "p", "f", "h", "g", "m", "y", "E", "S", "D", "b", "C", "w", "_", "I", "R", "l", "u", "v", "T", "H", "N", "k", "M", "x", "O", "P", "A", "U", "L", "W", "V", "z", "F", "B", "j", "G", "q", "Y", "Z", "X", "K", "J", "$", "Q", "ee", "te", "ne", "re", "oe", "ie", "ae", "se", "le", "ue", "ce", "de", "pe", "fe", "he", "ke", "Me", "ve", "ge", "me", "ye", "Ee", "be", "Se", "De", "_e", "Ce", "we", "Re", "Te", "xe", "Ie", "Pe", "Ne", "He", "Oe", "Ae", "Ue", "Le", "We", "Ve", "ze", "Fe", "Be", "je", "Ge", "qe", "Ye", "Ze", "Xe", "Ke", "Je", "$e", "Qe", "et", "tt", "nt", "rt", "ot", "it", "at", "st", "lt", "ut", "ct", "dt", "pt", "ft", "ht", "vt", "gt", "mt", "yt", "Et", "St", "Dt", "bt", "Ct", "wt", "Rt", "Tt", "kt", "Mt", "xt", "It", "Zt", "qt", "Pt", "Nt", "At", "Ht", "Ot", "Ut", "Lt", "Wt", "Vt", "zt", "Ft", "Bt", "jt", "Gt", "Yt", "Xt", "Kt", "Jt", "$t", "Qt", "en", "tn", "nn", "rn", "on", "an", "sn", "ln", "pn", "un", "cn", "dn", "fn", "hn", "vn", "gn", "mn", "yn", "En", "Sn", "Dn", "bn", "Cn", "wn", "Rn", "Tn", "kn", "Mn", "xn", "_n", "In", "Pn", "Nn", "Hn", "On", "An", "Un", "Ln", "Wn", "Vn", "zn", "Fn", "Bn", "jn", "Gn", "qn", "Yn", "Zn", "Xn", "Kn", "Jn", "$n", "Qn", "er", "tr", "nr", "rr", "or", "ir", "ar", "sr", "lr", "ur", "cr", "dr", "pr", "fr", "hr", "vr", "gr", "mr", "yr", "Er", "Sr", "Dr", "br", "Cr", "wr", "Rr", "Tr", "kr", "Mr", "xr", "_r", "Ir", "Pr", "Nr", "Hr", "Or", "Ar", "Ur", "Lr", "Wr", "Vr", "zr", "Fr", "Br", "Gr", "qr", "jr", "Yr", "Zr", "Xr", "Kr", "Jr", "$r", "Qr", "eo", "ro", "to", "no", "oo", "io", "ao", "so", "lo", "uo", "ho", "po", "go", "co", "fo", "mo", "vo", "yo", "Eo", "So", "Do", "bo", "Co", "wo", "ko", "Ro", "Mo", "xo", "Io", "To", "Po", "_o", "No", "Ho", "Oo", "Ao", "Uo", "Lo", "Wo", "Vo", "zo", "Fo", "Bo", "jo", "Go", "qo", "Yo", "Zo", "Xo", "Ko", "Jo", "$o", "ti", "Qo", "ei", "ni", "ri", "oi", "ii", "ai", "si", "li", "ui", "ci", "di", "pi", "fi", "hi", "vi", "gi", "mi", "yi", "Ei", "Di", "Si", "bi", "Ci", "wi", "Ri", "ki", "Ti", "Mi", "xi", "_i", "Ii", "Pi", "Ni", "Hi", "Oi", "Ai", "Ui", "Li", "Wi", "Vi", "zi", "Fi", "Bi", "ji", "Gi", "qi", "Yi", "Zi", "Xi", "Ki", "Ji", "$i", "Qi", "ea", "ta", "na", "ra", "oa", "aa", "ia", "sa", "la", "ua", "ca", "da", "pa", "fa", "ha", "va", "ga", "ma", "ya", "Ea", "Sa", "Da", "ba", "Ca", "wa", "Ra", "Ta", "ka", "Ma", "xa", "_a", "Ia", "Pa", "Na", "Ha", "Oa", "Aa", "Ua", "La", "Wa", "Va", "za", "Fa", "Ba", "ja", "Ga", "Za", "Ya", "qa", "Xa", "Ka", "Ja", "$a", "Qa", "es", "ns", "ts", "rs", "os", "is", "as", "ss", "ls", "us", "cs", "ds", "ps", "fs", "hs", "vs", "gs", "ms", "ys", "Ss", "Es", "Ds", "bs", "Cs", "ws", "Rs", "Ts", "ks", "Ms", "xs", "_s", "Is", "Ps", "Ns", "Hs", "Os", "As", "Us", "Ls", "Ws", "Vs", "zs", "Fs", "Bs", "js", "Gs", "qs", "Ys", "Zs", "Xs", "Ks", "Js", "$s", "Qs", "el", "nl", "tl", "rl", "ol", "il", "al", "sl", "require_rails_ujs", "__commonJSMin", "exports", "module", "context", "Rails", "nonce", "ref", "expando", "m", "element", "selector", "key", "value", "$", "csrfParam", "csrfToken", "meta", "xhr", "token", "param", "input", "CustomEvent", "fire", "matches", "preventDefault", "event", "params", "evt", "result", "obj", "name", "data", "e", "eventType", "handler", "target", "AcceptHeaders", "CSRFProtection", "createXHR", "cspNonce", "prepareOptions", "processResponse", "options", "response", "done", "type", "parser", "script", "error", "url", "originAnchor", "urlAnchor", "toArray", "additionalParam", "inputs", "option", "form", "el", "allowAction", "stopEverything", "message", "answer", "callback", "disableFormElement", "disableFormElements", "disableLinkElement", "enableFormElement", "enableFormElements", "enableLinkElement", "formElements", "getData", "isXhrRedirect", "setData", "replacement", "originalText", "formContent", "href", "link", "method", "ajax", "isCrossDomain", "isRemote", "serializeElement", "slice", "button", "dataType", "withCredentials", "args", "insignificantMetaClick", "metaClick", "nonPrimaryMouseClick", "delegate", "disableElement", "enableElement", "formSubmitButtonClick", "handleConfirm", "handleDisabledElement", "handleMethod", "handleRemote", "loadCSPNonce", "preventInsignificantClick", "refreshCSRFTokens", "originalOptions", "require_intlTelInput", "__commonJSMin", "exports", "module", "factory", "undefined", "allCountries", "i", "c", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "descriptor", "_createClass", "protoProps", "staticProps", "intlTelInputGlobals", "input", "id", "defaults", "regionlessNanpNumbers", "forEachProp", "obj", "callback", "keys", "forEachInstance", "method", "key", "Iti", "options", "_this", "customOptions", "value", "_this2", "autoCountryPromise", "resolve", "reject", "utilsScriptPromise", "iso2", "countryCode", "priority", "index", "lowerCaseOnlyCountries", "country", "lowerCaseExcludeCountries", "iso", "a", "b", "_i", "_c", "rootCountryCode", "j", "areaCode", "partialDialCode", "countryData", "name", "attrs", "container", "el", "parentClass", "wrapper", "hiddenInputName", "countries", "className", "preferred", "tmp", "idSuffix", "attributeValue", "inputValue", "useAttribute", "val", "dialCode", "isRegionlessNanp", "_this$options", "initialCountry", "nationalMode", "autoHideDialCode", "separateDialCode", "_this3", "_this4", "e", "label", "isDropdownHidden", "_this5", "_this6", "number", "max", "_this7", "numeric", "s", "shouldHaveClass", "_this8", "pos", "windowTop", "inputTop", "dropdownHeight", "dropdownFitsBelow", "dropdownFitsAbove", "extraTop", "_this9", "listItem", "isOpening", "query", "queryTimer", "next", "originalNumber", "useNational", "_intlTelInputUtils$nu", "NATIONAL", "INTERNATIONAL", "format", "selectedDialCode", "isNanp", "countryCodes", "alreadySelected", "isRegionlessNanpNumber", "shouldFocus", "prevItem", "ignoreOnlyCountriesOption", "allowFail", "countryList", "prevCountry", "title", "selectedFlagWidth", "nextItem", "containerClone", "flagsContainerClone", "selectedFlagClone", "width", "shouldSetPlaceholder", "numberType", "placeholder", "flagChanged", "len", "element", "middle", "containerHeight", "containerTop", "containerBottom", "elementHeight", "elementTop", "elementBottom", "newScrollTop", "middleOffset", "heightDifference", "newDialCodeBare", "hasSelectedListItem", "inputVal", "newDialCode", "newNumber", "prevDialCode", "includeAreaCode", "numericChars", "prefix", "numericVal", "start", "form", "originalCountryCode", "type", "injectScript", "path", "handleSuccess", "handleFailure", "script", "iti", "require_intl_tel_input", "__commonJSMin", "exports", "module", "require_jquery_minicolors", "__commonJSMin", "exports", "module", "factory", "$", "method", "data", "destroy", "hide", "updateFromInput", "rgbObject", "rgbString", "settings", "show", "init", "input", "minicolors", "defaults", "event", "panel", "move", "target", "animate", "picker", "offsetX", "offsetY", "x", "y", "duration", "wx", "wy", "r", "phi", "updateFromControl", "getCoords", "container", "left", "top", "hue", "saturation", "brightness", "hex", "opacity", "swatch", "grid", "slider", "opacitySlider", "gridPicker", "sliderPicker", "opacityPicker", "gridPos", "sliderPos", "opacityPos", "keepWithin", "hsb2hex", "convertCase", "doChange", "preserveInputValue", "hsb", "parseHex", "hex2hsb", "lastChange", "rgb", "hex2rgb", "alpha", "string", "letterCase", "expand", "value", "min", "max", "hsb2rgb", "h", "s", "v", "t1", "t2", "t3", "rgb2hex", "nr", "val", "rgb2hsb", "delta", "_a", "toString", "hasOwnProperty", "OBJECT_TYPE", "ARRAY_TYPE", "flatten", "obj", "path", "result", "type", "key", "val", "join", "exports", "forEvents", "events", "callback", "split", "forEach", "event", "MicroEvent", "constructor", "_events", "on", "fct", "push", "off", "n", "arguments", "length", "splice", "indexOf", "trigger", "args", "self", "apply", "MicroPlugin", "Interface", "plugins", "names", "settings", "requested", "loaded", "define", "name", "fn", "initializePlugins", "key", "queue", "Array", "isArray", "plugin", "options", "hasOwnProperty", "shift", "require", "loadPlugin", "Error", "latin_pat", "accent_pat", "accent_reg", "RegExp", "diacritic_patterns", "latin_convert", "convert_pat", "Object", "keys", "join", "code_points", "asciifold", "str", "normalize", "replace", "toLowerCase", "foreignletter", "arrayToPattern", "chars", "glue", "longest", "a", "Math", "max", "allSubstrings", "input", "result", "substring", "subresult", "tmp", "slice", "charAt", "unshift", "generateDiacritics", "diacritics", "code_range", "i", "diacritic", "String", "fromCharCode", "latin", "patt", "match", "latin_chars", "sort", "b", "substrings", "pattern", "map", "sub_pat", "l", "diacriticRegexPoints", "regex", "undefined", "part", "no_accent", "composed_part", "getAttr", "obj", "getAttrNesting", "scoreValue", "value", "token", "weight", "score", "pos", "search", "string", "escape_regex", "propToArray", "iterate", "object", "cmp", "Sifter", "items", "tokenize", "query", "respect_word_boundaries", "weights", "tokens", "words", "field_regex", "word", "field_match", "field", "getScoreFunction", "prepareSearch", "_getScoreFunction", "token_count", "fields", "field_count", "getAttrFn", "scoreObject", "data", "sum", "conjunction", "getSortFunction", "_getSortFunction", "implicit_score", "sort_empty", "sort_flds", "multipliers", "bind", "get_field", "id", "direction", "sort_flds_count", "sort_fld", "multiplier", "optsUser", "assign", "trim", "total", "nesting", "fn_score", "item", "filter", "fn_sort", "limit", "getDom", "jquery", "HTMLElement", "isHtmlString", "div", "document", "createElement", "innerHTML", "firstChild", "querySelector", "arg", "escapeQuery", "triggerEvent", "dom_el", "event_name", "createEvent", "initEvent", "dispatchEvent", "applyCSS", "css", "style", "addClasses", "elmts", "classes", "norm_classes", "classesArray", "castAsArray", "el", "cls", "classList", "add", "removeClasses", "remove", "_classes", "concat", "Boolean", "parentMatch", "target", "selector", "wrapper", "contains", "matches", "parentNode", "getTail", "list", "isEmptyObject", "nodeIndex", "amongst", "nodeName", "previousElementSibling", "setAttr", "attrs", "val", "attr", "removeAttribute", "setAttribute", "replaceNode", "existing", "replacement", "replaceChild", "highlight", "element", "highlightText", "node", "spannode", "className", "middlebit", "splitText", "index", "middleclone", "cloneNode", "appendChild", "highlightChildren", "nodeType", "childNodes", "test", "tagName", "highlightRecursive", "removeHighlight", "elements", "querySelectorAll", "prototype", "call", "parent", "KEY_A", "KEY_RETURN", "KEY_ESC", "KEY_LEFT", "KEY_UP", "KEY_RIGHT", "KEY_DOWN", "KEY_BACKSPACE", "KEY_DELETE", "KEY_TAB", "KEY_SHORTCUT", "navigator", "userAgent", "defaults", "optgroups", "delimiter", "splitOn", "persist", "create", "createOnBlur", "createFilter", "openOnFocus", "shouldOpen", "maxOptions", "maxItems", "hideSelected", "duplicates", "addPrecedence", "selectOnTab", "preload", "allowEmptyOption", "loadThrottle", "loadingClass", "dataAttr", "optgroupField", "valueField", "labelField", "disabledField", "optgroupLabelField", "optgroupValueField", "lockOptgroupOrder", "sortField", "searchField", "searchConjunction", "mode", "wrapperClass", "controlClass", "dropdownClass", "dropdownContentClass", "itemClass", "optionClass", "dropdownParent", "controlInput", "copyClassesToDropdown", "placeholder", "hidePlaceholder", "shouldLoad", "render", "hash_key", "get_hash", "escape_html", "loadDebounce", "delay", "timeout", "loading", "clearTimeout", "setTimeout", "loadedSearches", "debounce_events", "types", "type", "event_args", "getSelection", "start", "selectionStart", "selectionEnd", "preventDefault", "evt", "stop", "stopPropagation", "addEvent", "addEventListener", "isKeyDown", "key_name", "count", "altKey", "ctrlKey", "shiftKey", "metaKey", "getId", "existing_id", "getAttribute", "addSlashes", "append", "getSettings", "settings_user", "attr_data", "field_label", "field_value", "field_disabled", "field_optgroup", "field_optgroup_label", "field_optgroup_value", "tag_name", "option", "textContent", "settings_element", "init_select", "optionsMap", "group_count", "readData", "dataset", "json", "JSON", "parse", "addOption", "group", "arr", "option_data", "disabled", "$option", "selected", "addGroup", "optgroup", "optgroup_data", "children", "hasAttribute", "child", "init_textbox", "data_raw", "opt", "values", "instance_i", "TomSelect", "input_arg", "user_settings", "order", "isOpen", "isDisabled", "isInvalid", "isValid", "isLocked", "isFocused", "isInputHidden", "isSetup", "ignoreFocus", "hasOptions", "lastValue", "caretPos", "activeOption", "activeItems", "userOptions", "dir", "tomselect", "computedStyle", "window", "getComputedStyle", "getPropertyValue", "tabIndex", "is_select_tag", "rtl", "inputId", "isRequired", "required", "sifter", "setupCallbacks", "setupTemplates", "control", "dropdown", "_render", "dropdown_content", "inputMode", "control_input", "focus_node", "setup", "passive_event", "passive", "listboxId", "role", "control_id", "label", "label_click", "focus", "for", "label_id", "width", "classes_plugins", "multiple", "load", "onOptionSelect", "target_match", "onItemSelect", "onClick", "e", "onKeyDown", "onKeyPress", "onInput", "positionDropdown", "onBlur", "onFocus", "onPaste", "doc_mousedown", "composedPath", "blur", "inputState", "win_scroll", "_destroy", "removeEventListener", "revertSettings", "insertAdjacentElement", "sync", "refreshState", "updateOriginalInput", "refreshItems", "close", "disable", "enable", "onChange", "setupOptions", "addOptions", "registerOptionGroup", "templates", "escape", "callbacks", "get_settings", "setValue", "lastQuery", "clearActiveItems", "onMouseDown", "pastedText", "inputValue", "splitInput", "piece", "createItem", "character", "keyCode", "which", "constants", "selectAll", "open", "next", "getAdjacent", "setActiveOption", "prev", "canSelect", "advanceSelection", "deleteSelection", "refreshOptions", "wasFocused", "showInput", "hasFocus", "deactivate", "setActiveItem", "setCaret", "parentElement", "closeAfterSelect", "addItem", "canLoad", "loadCallback", "clearActiveOption", "setTextboxValue", "changed", "getValue", "silent", "clear", "addItems", "setMaxItems", "eventName", "begin", "end", "swap", "last", "getLastActive", "setActiveItemClass", "removeActiveItem", "hideInput", "last_active", "idx", "scrollToOption", "behavior", "content", "height_menu", "clientHeight", "scrollTop", "height_item", "offsetHeight", "y", "getBoundingClientRect", "top", "scroll", "scrollBehavior", "controlChildren", "toggle", "offsetWidth", "getSearchOptions", "calculateScore", "currentResults", "hashed", "triggerDropdown", "j", "k", "html", "has_create_option", "active_value", "active_group", "groups", "groups_order", "results", "active_option", "show_dropdown", "closest", "min", "opt_value", "option_el", "getOption", "includes", "createDocumentFragment", "$id", "a_order", "$order", "b_order", "group_options", "header", "group_html", "tok", "add_template", "template", "insertBefore", "canCreate", "active_index", "selectable", "user_created", "dat", "registerOption", "addOptionGroup", "hashed_id", "removeOptionGroup", "clearCache", "clearOptionGroups", "updateOption", "item_new", "index_item", "value_old", "value_new", "getItem", "uncacheValue", "option_new", "removeOption", "removeItem", "clearOptions", "$div", "all", "x", "isPending", "wasFull", "isFull", "insertAtCaret", "caret", "output", "lock", "created", "unlock", "refreshValidityState", "wrap_classList", "checkValidity", "opts", "empty_option", "AddSelected", "reuse_opt", "visibility", "display", "context", "rect", "scrollY", "left", "scrollX", "selection", "tail", "rm_items", "onDelete", "pop", "adjacent", "nextElementSibling", "moveCaret", "new_pos", "from", "destroy", "templateName", "hook", "when", "method", "new_fn", "orig_method", "result_new", "change_listener", "checkbox_options", "orig_onOptionSelect", "UpdateCheckbox", "checkbox", "checked", "orig_render_option", "rendered", "prepend", "clear_button", "title", "button", "drag_drop", "$", "sortable", "orig_lock", "orig_unlock", "$control", "forcePlaceholderSize", "ui", "helper", "overflow", "each", "dropdown_header", "headerClass", "titleRowClass", "labelClass", "closeClass", "close_link", "caret_position", "dropdown_input", "orig_onBlur", "relatedTarget", "input_autogrow", "test_input", "cssText", "transfer_styles", "style_name", "resize", "clientWidth", "no_backspace_delete", "orig_deleteSelection", "no_active_items", "optgroup_columns", "orig_keydown", "previousSibling", "nextSibling", "remove_button", "orig_render_item", "close_button", "restore_on_backspace", "text", "virtual_scroll", "orig_canLoad", "orig_clearActiveOption", "orig_loadCallback", "pagination", "loading_more", "firstUrl", "canLoadMore", "setNextUrl", "next_url", "getUrl", "no_more_results", "scrollHeight", "require_monthSelect", "__commonJSMin", "exports", "module", "global", "factory", "__assign", "t", "s", "i", "n", "p", "monthToStr", "monthNumber", "shorthand", "locale", "getEventTarget", "event", "path", "error", "defaultConfig", "monthSelectPlugin", "pluginConfig", "config", "fp", "self", "clearUnnecessaryDOMElements", "index", "element", "addListeners", "e", "selectYear", "addMonths", "month", "selectMonth", "setCurrentlySelected", "currentlySelected", "targetMonth", "selectedDate", "months", "eventTarget", "setMonth", "date", "shifts", "onKeyDown", "_", "__", "___", "shouldMove", "target", "destroyPluginInstance", "require_froala_editor_min", "__commonJSMin", "exports", "module", "M", "e", "t", "n", "r", "o", "i", "a", "s", "l", "c", "d", "f", "p", "h", "zc", "V", "u", "g", "C", "m", "v", "L", "b", "E", "y", "S", "N", "T", "x", "O", "w", "k", "$", "A", "H", "D", "_", "require_align_min", "__commonJSMin", "exports", "module", "n", "i", "a", "l", "t", "e", "require_colors_min", "__commonJSMin", "exports", "module", "o", "k", "g", "E", "l", "s", "t", "r", "e", "i", "c", "a", "C", "b", "n", "p", "u", "d", "f", "require_image_min", "__commonJSMin", "exports", "module", "Me", "Ke", "e", "A", "C", "p", "g", "f", "s", "a", "S", "E", "t", "i", "c", "d", "m", "R", "U", "r", "u", "o", "n", "P", "N", "h", "k", "l", "ve", "he", "v", "be", "b", "D", "y", "ce", "ye", "x", "T", "$", "te", "z", "Ce", "Se", "w", "ue", "Ae", "I", "O", "ae", "X", "B", "fe", "L", "_", "W", "M", "K", "Y", "G", "H", "F", "V", "q", "j", "J", "Q", "Z", "ee", "we", "ie", "re", "ne", "oe", "se", "le", "pe", "ge", "de", "me", "Ee", "require_link_min", "__commonJSMin", "exports", "module", "y", "h", "m", "v", "e", "t", "r", "n", "i", "b", "a", "l", "s", "o", "p", "E", "f", "c", "d", "u", "k", "require_special_characters_min", "__commonJSMin", "exports", "module", "c", "E", "t", "W", "N", "T", "L", "a", "I", "R", "S", "A", "e", "r", "s", "h", "d", "C", "O", "require_draggable_min", "__commonJSMin", "exports", "module", "c", "g", "d", "e", "p", "v", "m", "t", "r", "n", "a", "o", "i", "l", "s", "require_font_size_min", "__commonJSMin", "exports", "module", "t", "e", "o", "i", "n", "require_lists_min", "__commonJSMin", "exports", "module", "i", "m", "g", "d", "e", "f", "t", "a", "n", "r", "o", "l", "s", "c", "p", "require_paragraph_format_min", "__commonJSMin", "exports", "module", "a", "h", "g", "c", "t", "e", "r", "n", "o", "i", "p", "l", "s", "m", "d", "f", "require_help_min", "__commonJSMin", "exports", "module", "c", "a", "o", "s", "e", "t", "l", "require_quick_insert_min", "__commonJSMin", "exports", "module", "h", "e", "t", "r", "a", "l", "c", "u", "n", "i", "s", "o", "p", "require_video_min", "__commonJSMin", "exports", "module", "we", "w", "s", "p", "f", "E", "i", "o", "A", "C", "c", "v", "u", "S", "U", "a", "g", "e", "t", "r", "l", "n", "J", "d", "h", "q", "Z", "m", "x", "b", "k", "L", "R", "V", "y", "_", "F", "B", "D", "I", "T", "Y", "z", "M", "P", "$", "O", "te", "N", "H", "K", "X", "G", "j", "W", "Q", "ee", "require_table_min", "__commonJSMin", "exports", "module", "Ce", "R", "A", "f", "n", "r", "l", "o", "O", "y", "u", "e", "$", "t", "p", "a", "S", "s", "i", "c", "d", "h", "Q", "ee", "_", "g", "M", "b", "v", "m", "w", "C", "D", "x", "E", "T", "N", "I", "K", "z", "k", "te", "B", "Y", "F", "W", "L", "G", "U", "H", "J", "P", "V", "j", "X", "q", "Z", "require_url_min", "__commonJSMin", "exports", "module", "r", "f", "s", "o", "t", "e", "n", "a", "p", "u", "c", "l", "i", "assign", "obj", "props", "i", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "slice", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "constructor", "__v", "vnodeId", "__i", "__u", "options", "createRef", "current", "Fragment", "BaseComponent", "context", "this", "getDomSibling", "childIndex", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "rerenderQueue", "push", "process", "__r", "prevDebounce", "debounceRendering", "defer", "renderQueueLength", "component", "newVNode", "oldVNode", "oldDom", "commitQueue", "refQueue", "sort", "depthSort", "shift", "__P", "diff", "__n", "namespaceURI", "commitRoot", "diffChildren", "parentDom", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "namespace", "excessDomChildren", "isHydrating", "childVNode", "newDom", "firstChildDom", "oldChildren", "EMPTY_ARR", "newChildrenLength", "constructNewChildrenArray", "EMPTY_OBJ", "applyRef", "insert", "nextSibling", "skewedIndex", "matchingIndex", "oldChildrenLength", "remainingOldChildren", "skew", "String", "isArray", "findMatchingIndex", "unmount", "parentVNode", "contains", "insertBefore", "nodeType", "toChildArray", "out", "some", "x", "y", "setStyle", "style", "value", "setProperty", "IS_NON_DIMENSIONAL", "test", "dom", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "_attached", "eventClock", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "createEventProxy", "eventHandler", "_dispatched", "event", "tmp", "isNew", "oldProps", "oldState", "snapshot", "clearProcessingException", "newProps", "isClassComponent", "provider", "componentContext", "renderHook", "count", "newType", "outer", "prototype", "render", "contextType", "__E", "doRender", "sub", "state", "__h", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "componentWillUpdate", "componentDidUpdate", "getChildContext", "getSnapshotBeforeUpdate", "MODE_HYDRATE", "indexOf", "diffElementNodes", "diffed", "root", "cb", "newHtml", "oldHtml", "newChildren", "inputValue", "checked", "localName", "document", "createTextNode", "createElementNS", "is", "__m", "data", "childNodes", "attributes", "__html", "innerHTML", "hasRefUnmount", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "hydrate", "cloneElement", "createContext", "defaultValue", "contextId", "Consumer", "contextValue", "Provider", "subs", "ctx", "Set", "_props", "forEach", "add", "old", "delete", "isValidElement", "init_preact_module", "__esmMin", "Array", "error", "errorInfo", "ctor", "handled", "getDerivedStateFromError", "setState", "componentDidCatch", "undefined", "update", "callback", "s", "forceUpdate", "Promise", "then", "bind", "resolve", "setTimeout", "a", "b", "getHookState", "index", "type", "options", "__h", "currentComponent", "currentHook", "hooks", "__H", "__", "length", "push", "useState", "initialState", "useReducer", "invokeOrReturn", "reducer", "init", "hookState", "currentIndex", "_reducer", "__c", "action", "currentValue", "__N", "nextValue", "setState", "_hasScuFromHooks", "updateHookState", "p", "s", "c", "stateHooks", "filter", "x", "every", "prevScu", "call", "this", "shouldUpdate", "forEach", "hookItem", "props", "shouldComponentUpdate", "prevCWU", "componentWillUpdate", "__e", "tmp", "useEffect", "callback", "args", "state", "__s", "argsChanged", "_pendingArgs", "useLayoutEffect", "useRef", "initialValue", "useMemo", "current", "useImperativeHandle", "ref", "createHandle", "concat", "factory", "useCallback", "useContext", "context", "provider", "sub", "value", "useDebugValue", "formatter", "n", "useErrorBoundary", "cb", "errState", "componentDidCatch", "err", "errorInfo", "undefined", "useId", "root", "__v", "__m", "mask", "flushAfterPaintEffects", "component", "afterPaintEffects", "shift", "__P", "invokeCleanup", "invokeEffect", "e", "afterNextFrame", "raf", "done", "clearTimeout", "timeout", "HAS_RAF", "cancelAnimationFrame", "setTimeout", "requestAnimationFrame", "hook", "comp", "cleanup", "oldArgs", "newArgs", "some", "arg", "f", "previousComponent", "prevRaf", "oldBeforeDiff", "oldBeforeRender", "oldAfterDiff", "oldCommit", "oldBeforeUnmount", "oldRoot", "_options", "__b", "__r", "diffed", "unmount", "vnode", "parentDom", "__k", "commitQueue", "hasErrored", "shallowDiffers", "a", "b", "i", "PureComponent", "p", "c", "this", "props", "context", "memo", "comparer", "shouldUpdate", "nextProps", "ref", "updateRef", "call", "current", "Memoed", "shouldComponentUpdate", "createElement", "displayName", "name", "prototype", "isReactComponent", "__f", "forwardRef", "fn", "Forwarded", "result", "$$typeof", "REACT_FORWARD_SYMBOL", "render", "detachedClone", "vnode", "detachedParent", "parentDom", "__c", "__H", "__", "forEach", "effect", "obj", "__P", "__k", "map", "child", "removeOriginal", "originalParent", "__v", "__e", "appendChild", "Suspense", "__u", "_suspenders", "__b", "suspended", "component", "__a", "lazy", "loader", "prom", "error", "Lazy", "then", "exports", "default", "e", "SuspenseList", "_next", "_map", "ContextProvider", "getChildContext", "children", "Portal", "_this", "container", "_container", "componentWillUnmount", "_temp", "nodeType", "parentNode", "childNodes", "contains", "push", "insertBefore", "before", "removeChild", "splice", "indexOf", "createPortal", "el", "containerInfo", "parent", "callback", "textContent", "preactRender", "hydrate", "preactHydrate", "empty", "isPropagationStopped", "cancelBubble", "isDefaultPrevented", "defaultPrevented", "createFactory", "type", "bind", "isValidElement", "element", "REACT_ELEMENT_TYPE", "isFragment", "Fragment", "isMemo", "String", "startsWith", "cloneElement", "preactCloneElement", "apply", "arguments", "unmountComponentAtNode", "findDOMNode", "base", "startTransition", "cb", "useDeferredValue", "val", "useTransition", "useSyncExternalStore", "subscribe", "getSnapshot", "value", "_useState", "useState", "_instance", "_getSnapshot", "forceUpdate", "useLayoutEffect", "didSnapshotChange", "useEffect", "inst", "x", "y", "latestGetSnapshot", "prevValue", "nextValue", "oldDiffHook", "mapFn", "Children", "oldCatchError", "oldUnmount", "resolve", "CAMEL_PROPS", "ON_ANI", "CAMEL_REPLACE", "IS_DOM", "onChangeInputType", "oldEventHook", "currentComponent", "classNameDescriptorNonEnumberable", "oldVNodeHook", "oldBeforeRender", "oldDiffed", "__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED", "version", "unstable_batchedUpdates", "flushSync", "StrictMode", "useInsertionEffect", "isElement", "index", "Component", "isPureReactComponent", "state", "options", "Symbol", "for", "toChildArray", "count", "length", "only", "normalized", "toArray", "newVNode", "oldVNode", "errorInfo", "unmount", "__R", "promise", "suspendingVNode", "suspendingComponent", "resolved", "onResolved", "onSuspensionComplete", "suspendedVNode", "__O", "setState", "pop", "document", "detachedComponent", "fallback", "list", "node", "delete", "revealOrder", "size", "delegated", "get", "unsuspend", "wrappedUnsuspend", "Map", "reverse", "set", "componentDidUpdate", "componentDidMount", "test", "key", "Object", "defineProperty", "configurable", "v", "writable", "event", "persist", "nativeEvent", "enumerable", "class", "normalizedProps", "isNonDashedType", "lowerCased", "toLowerCase", "replace", "multiple", "Array", "isArray", "selected", "defaultValue", "className", "__r", "diffed", "dom", "ReactCurrentDispatcher", "readContext", "__n", "useCallback", "useContext", "useDebugValue", "useId", "useImperativeHandle", "useMemo", "useReducer", "useRef", "arg", "createContext", "createRef", "require_ReactPropTypesSecret", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "require_factoryWithThrowingShims", "__commonJSMin", "exports", "module", "ReactPropTypesSecret", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "err", "getShim", "ReactPropTypes", "require_prop_types", "__commonJSMin", "exports", "module", "ReactIs", "throwOnDirectAccess", "require_react", "__commonJSMin", "exports", "module", "require_react_stripe_umd", "__commonJSMin", "exports", "module", "global", "factory", "React", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "key", "_defineProperty", "_typeof", "obj", "value", "_objectWithoutPropertiesLoose", "excluded", "sourceKeys", "_objectWithoutProperties", "sourceSymbolKeys", "_slicedToArray", "arr", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_i", "_arr", "_n", "_d", "_s", "_e", "err", "o", "minLen", "_arrayLikeToArray", "n", "len", "arr2", "getDefaultExportFromCjs", "x", "propTypes", "ReactPropTypesSecret_1", "hasRequiredReactPropTypesSecret", "requireReactPropTypesSecret", "ReactPropTypesSecret", "factoryWithThrowingShims", "hasRequiredFactoryWithThrowingShims", "requireFactoryWithThrowingShims", "emptyFunction", "emptyFunctionWithReset", "shim", "props", "propName", "componentName", "location", "propFullName", "secret", "getShim", "ReactPropTypes", "propTypesExports", "PropTypes", "useAttachEvent", "element", "event", "cb", "cbDefined", "cbRef", "decoratedCb", "usePrevious", "ref", "isUnknownObject", "raw", "isPromise", "isStripe", "PLAIN_OBJECT_STR", "isEqual", "left", "right", "leftArray", "rightArray", "leftPlainObject", "rightPlainObject", "leftKeys", "rightKeys", "keySet", "allKeys", "l", "r", "pred", "extractAllowedOptionsUpdates", "options", "prevOptions", "immutableKeys", "newOptions", "isUpdated", "INVALID_STRIPE_ERROR$2", "validateStripe", "maybeStripe", "errorMsg", "parseStripeProp", "result", "stripe", "registerWithStripeJs", "ElementsContext", "parseElementsContext", "ctx", "useCase", "Elements", "_ref", "rawStripeProp", "children", "parsed", "_React$useState", "_React$useState2", "setContext", "isMounted", "safeSetContext", "prevStripe", "updates", "useElementsContextWithUseCase", "useCaseMessage", "useElements", "_useElementsContextWi", "elements", "ElementsConsumer", "_ref2", "_excluded", "CheckoutSdkContext", "parseCheckoutSdkContext", "CheckoutContext", "extractCheckoutContextValue", "checkoutSdk", "sessionState", "actions", "INVALID_STRIPE_ERROR$1", "CheckoutProvider", "session", "setSession", "_React$useState3", "_React$useState4", "initCheckoutCalledRef", "_prevOptions$elements", "_options$elementsOpti", "previousAppearance", "currentAppearance", "checkoutContextValue", "useCheckoutSdkContextWithUseCase", "useCaseString", "useElementsOrCheckoutSdkContextWithUseCase", "checkoutSdkContext", "elementsContext", "useCheckout", "capitalized", "str", "createElementComponent", "type", "isServer", "displayName", "ClientElement", "id", "className", "_ref$options", "onBlur", "onFocus", "onReady", "onChange", "onEscape", "onClick", "onLoadError", "onLoaderStart", "onNetworksChange", "onConfirm", "onCancel", "onShippingAddressChange", "onShippingRateChange", "setElement", "elementRef", "domNode", "readyCallback", "newElement", "error", "ServerElement", "Element", "EmbeddedCheckoutContext", "useEmbeddedCheckoutContext", "INVALID_STRIPE_ERROR", "EmbeddedCheckoutProvider", "embeddedCheckoutPromise", "loadedStripe", "setStripeAndInitEmbeddedCheckout", "embeddedCheckout", "EmbeddedCheckoutClientElement", "_useEmbeddedCheckoutC", "e", "EmbeddedCheckoutServerElement", "EmbeddedCheckout", "useStripe", "_useElementsOrCheckou", "AuBankAccountElement", "CardElement", "CardNumberElement", "CardExpiryElement", "CardCvcElement", "FpxBankElement", "IbanElement", "IdealBankElement", "P24BankElement", "EpsBankElement", "PaymentElement", "ExpressCheckoutElement", "CurrencySelectorElement", "PaymentRequestButtonElement", "LinkAuthenticationElement", "AddressElement", "ShippingAddressElement", "PaymentMethodMessagingElement", "AffirmMessageElement", "AfterpayClearpayMessageElement", "require_cable", "__commonJSMin", "exports", "import_actioncable", "require_jstz", "__commonJSMin", "exports", "module", "root", "jstz", "HEMISPHERE_SOUTH", "consts", "get_date_offset", "date", "offset", "lookup_key", "january_offset", "june_offset", "diff", "get_from_internationalization_api", "format", "timezone", "dst_dates", "year", "yearstart", "yearend", "current", "dst_start", "dst_end", "dateToCheck", "dateToCheckOffset", "find_dst_fold", "a_date", "padding", "iterator", "date_start", "date_end", "dst_change", "windows7_adaptations", "rule_list", "preliminary_timezone", "score", "sample", "best_dst_match", "score_sample", "j", "scoreboard", "dst_zones", "dst_zones_length", "ambiguities", "i", "tz", "get_by_dst", "get_rules", "year_rules", "check_has_dst", "rules", "has_dst", "determine", "preliminary_tz", "require_jstz", "__commonJSMin", "exports", "module", "require_local_time", "__commonJSMin", "exports", "module", "t", "e", "n", "r", "a", "i", "o", "s", "u", "c", "l", "d", "h", "f", "m", "p", "require_json_stringify_pretty_compact", "__commonJSMin", "exports", "module", "stringOrChar", "passedObj", "options", "indent", "maxLength", "replacer", "_stringify", "obj", "currentIndent", "reserved", "end", "index", "items", "key", "keyPart", "keys", "length", "nextIndent", "prettified", "start", "string", "value", "match", "stringLiteral", "require_select2", "__commonJSMin", "exports", "module", "factory", "root", "jQuery", "S2", "require", "requirejs", "define", "undef", "main", "req", "makeMap", "handlers", "defined", "waiting", "config", "defining", "hasOwn", "aps", "jsSuffixRegExp", "hasProp", "obj", "prop", "normalize", "name", "baseName", "nameParts", "nameSegment", "mapValue", "foundMap", "lastIndex", "foundI", "foundStarMap", "starI", "i", "j", "part", "normalizedBaseParts", "baseParts", "map", "starMap", "makeRequire", "relName", "forceSync", "args", "makeNormalize", "makeLoad", "depName", "value", "callDep", "splitPrefix", "prefix", "index", "makeRelParts", "relParts", "plugin", "parts", "relResourceName", "makeConfig", "e", "deps", "callback", "cjsModule", "ret", "callbackType", "usingExports", "alt", "cfg", "_$", "$", "Utils", "ChildClass", "SuperClass", "__hasProp", "BaseConstructor", "key", "getMethods", "theClass", "proto", "methods", "methodName", "m", "DecoratorClass", "decoratedMethods", "superMethods", "DecoratedClass", "unshift", "argCount", "calledConstructor", "ctr", "superMethod", "calledMethod", "originalMethod", "decoratedMethod", "d", "Observable", "event", "slice", "params", "listeners", "len", "length", "chars", "randomChar", "func", "context", "data", "originalKey", "keys", "dataLevel", "k", "el", "$el", "overflowX", "overflowY", "markup", "replaceMap", "match", "id", "element", "select2Id", "dest", "src", "classes", "destinationClasses", "clazz", "sourceClasses", "replacements", "Results", "$element", "options", "dataAdapter", "$results", "escapeMarkup", "$message", "message", "$options", "item", "$option", "$dropdown", "$resultsContainer", "sorter", "$selected", "self", "selected", "selectedIds", "s", "loadingMore", "loading", "$loading", "option", "attrs", "matches", "attr", "val", "label", "$children", "c", "child", "$child", "$childrenContainer", "container", "$container", "$highlighted", "currentIndex", "nextIndex", "$next", "currentOffset", "nextTop", "nextOffset", "nextBottom", "top", "bottom", "isAtTop", "isAtBottom", "evt", "$this", "offsetDelta", "result", "template", "content", "KEYS", "BaseSelection", "$selection", "resultsId", "$target", "$select", "$all", "$selectionContainer", "SingleSelection", "$rendered", "selection", "formatted", "title", "MultipleSelection", "$remove", "$selections", "selectionIdPrefix", "selectionId", "removeItem", "Placeholder", "decorated", "_", "placeholder", "$placeholder", "placeholderTitle", "singlePlaceholder", "multipleSelections", "AllowClear", "$clear", "previousVal", "unselectData", "removeAll", "Search", "searchLabel", "$search", "$previousChoice", "msie", "disableInputEvents", "searchHadFocus", "input", "width", "minimumWidth", "SelectionCSS", "selectionCssClass", "EventRelay", "relayEvents", "preventableEvents", "Translation", "dict", "translation", "path", "translations", "diacritics", "BaseAdapter", "SelectAdapter", "selectedElement", "currentData", "normalizedData", "children", "defaults", "matcher", "ArrayAdapter", "elm", "$existing", "existingIds", "onlyItem", "$existingOption", "existingData", "newData", "$newOption", "AjaxAdapter", "success", "failure", "$request", "results", "request", "Tags", "tags", "createTag", "insertTag", "t", "tag", "wrapper", "checkChildren", "optionText", "paramsTerm", "checkText", "term", "Tokenizer", "tokenizer", "createAndSelect", "$existingOptions", "select", "tokenData", "separators", "termChar", "partParams", "MinimumInputLength", "$e", "MaximumInputLength", "MaximumSelectionLength", "successCallback", "count", "Dropdown", "showSearch", "HidePlaceholder", "modifiedData", "InfiniteScroll", "isLoadMoreVisible", "loadingMoreOffset", "AttachBody", "scrollEvent", "resizeEvent", "orientationEvent", "$watchers", "ev", "position", "$window", "isCurrentlyAbove", "isCurrentlyBelow", "newDirection", "offset", "dropdown", "viewport", "enoughRoomAbove", "enoughRoomBelow", "css", "$offsetParent", "parentOffset", "countResults", "MinimumResultsForSearch", "SelectOnClose", "$highlightedResults", "CloseOnSelect", "originalEvent", "DropdownCSS", "dropdownCssClass", "TagsSearchHighlight", "$firstOption", "firstElement", "overChars", "remainingChars", "ResultsList", "SelectionSearch", "DIACRITICS", "SelectData", "ArrayData", "AjaxData", "DropdownSearch", "EnglishTranslation", "Defaults", "SearchableDropdown", "uniqueLanguages", "l", "language", "stripDiacritics", "text", "a", "original", "optionLanguage", "defaultLanguage", "elementLanguage", "parentLanguage", "languages", "resolvedLanguages", "languageParts", "baseLanguage", "debug", "languageData", "ex", "camelKey", "convertedData", "Options", "excludedData", "dataset", "upperCaseLetter", "letter", "attributeName", "dataName", "dataValue", "camelDataName", "Select2", "tabindex", "DataAdapter", "SelectionAdapter", "DropdownAdapter", "ResultsAdapter", "initialData", "method", "WIDTH", "styleWidth", "elementWidth", "style", "computedStyle", "mutations", "nonRelayEvents", "n", "node", "mutation", "changed", "actualTrigger", "preTriggerMap", "preTriggerName", "preTriggerArgs", "disabled", "newVal", "thisMethods", "instanceOptions", "instance", "select2", "turbo_es2017_esm_exports", "__export", "FrameElement", "FrameLoadingStyle", "FrameRenderer", "PageRenderer", "PageSnapshot", "StreamActions", "StreamElement", "StreamSourceElement", "cache", "clearCache", "connectStreamSource", "disconnectStreamSource", "navigator$1", "registerAdapter", "renderStreamMessage", "session", "setConfirmMethod", "setFormMode", "setProgressBarDelay", "start", "visit", "BuiltInHTMLElement", "wrapperForTheName", "prototype", "submitter", "validateSubmitter", "form", "raise", "errorConstructor", "message", "name", "submittersByForm", "findSubmitterFromClickTarget", "target", "element", "candidate", "clickCaptured", "event", "FrameLoadingStyle", "FrameElement", "value", "frameLoadingStyleFromString", "_a", "_b", "style", "expandURL", "locatable", "getAnchor", "url", "anchorMatch", "getAction", "action", "getExtension", "getLastPathComponent", "isHTML", "isPrefixedBy", "baseURL", "prefix", "getPrefix", "locationIsVisitable", "location", "rootLocation", "getRequestURL", "anchor", "toCacheKey", "urlsAreEqual", "left", "right", "getPathComponents", "addTrailingSlash", "FetchResponse", "response", "isAction", "activateScriptElement", "createdScriptElement", "cspNonce", "getMetaContent", "copyElementAttributes", "destinationElement", "sourceElement", "createDocumentFragment", "html", "template", "dispatch", "eventName", "cancelable", "detail", "nextAnimationFrame", "resolve", "nextEventLoopTick", "nextMicrotask", "parseHTMLDocument", "unindent", "strings", "values", "lines", "interpolate", "match", "indent", "line", "result", "string", "uuid", "_", "i", "getAttribute", "attributeName", "elements", "hasAttribute", "markAsBusy", "clearBusyState", "waitForLoad", "timeoutInMilliseconds", "onComplete", "getHistoryMethodForAction", "getVisitAction", "getMetaElement", "setMetaContent", "content", "FetchMethod", "fetchMethodFromString", "method", "FetchRequest", "delegate", "body", "_value", "__async", "fetchOptions", "error", "fetchResponse", "mimeType", "requestInterception", "AppearanceObserver", "entries", "lastEntry", "StreamMessage", "fragment", "importStreamElements", "streamElement", "inertScriptElement", "FormSubmissionState", "FormEnctype", "formEnctypeFromString", "encoding", "FormSubmission", "formElement", "mustRedirect", "buildFormData", "mergeFormDataEntries", "_element", "_submitter", "formElementAction", "initialized", "requesting", "confirmationMessage", "stopping", "stopped", "headers", "request", "token", "getCookieValue", "_request", "responseSucceededWithoutRedirect", "formData", "cookieName", "cookie", "searchParams", "Snapshot", "inertDisabledOrHidden", "queryPermanentElementsAll", "id", "getPermanentElementById", "snapshot", "permanentElementMap", "currentPermanentElement", "newPermanentElement", "node", "FormSubmitObserver", "eventTarget", "submissionDoesNotDismissDialog", "submissionDoesNotTargetIFrame", "View", "x", "y", "renderer", "isPreview", "shouldRender", "renderInterception", "options", "reason", "FrameView", "LinkInterceptor", "_event", "LinkClickObserver", "link", "doesNotTargetIFrame", "FormLinkClickObserver", "originalEvent", "turboFrame", "turboAction", "turboConfirm", "Bardo", "callback", "bardo", "permanentElement", "placeholder", "createPlaceholderForPermanentElement", "clone", "Renderer", "currentSnapshot", "newSnapshot", "renderElement", "willRender", "reject", "elementIsFocusable", "FrameRenderer", "currentElement", "newElement", "destinationRange", "frameElement", "sourceRange", "block", "readScrollLogicalPosition", "behavior", "readScrollBehavior", "activatedScriptElement", "defaultValue", "ProgressBar", "HeadSnapshot", "elementIsNoscript", "elementWithoutNonce", "outerHTML", "details", "elementType", "elementIsTracked", "matchedType", "type", "tracked", "elementIsMetaElementWithName", "elementIsScript", "elementIsStylesheet", "tagName", "PageSnapshot", "headSnapshot", "head", "clonedElement", "selectElements", "clonedSelectElements", "index", "source", "option", "clonedPasswordInput", "root", "TimingMetric", "VisitState", "defaultOptions", "SystemStatusCode", "Visit", "restorationIdentifier", "historyChanged", "referrer", "snapshotHTML", "visitCachedSnapshot", "updateHistory", "shouldCacheSnapshot", "acceptsStreamResponse", "actionForHistory", "statusCode", "isSuccessful", "responseHTML", "_response", "redirected", "_error", "scrollPosition", "metric", "BrowserAdapter", "session", "visit", "_visit", "_formSubmission", "CacheObserver", "staleElements", "FrameRedirector", "_location", "frame", "meta", "History", "turbo", "state", "additionalData", "restorationData", "Navigator", "formSubmission", "visitOptions", "currentAnchor", "isRestorationToTop", "oldURL", "newURL", "PageStage", "PageObserver", "readyState", "ScrollObserver", "position", "StreamMessageRenderer", "getPermanentElementMapForFragment", "permanentElementsInDocument", "permanentElementInDocument", "elementInStream", "StreamObserver", "fetchResponseFromEvent", "fetchResponseIsStream", "ErrorRenderer", "documentElement", "replaceableElement", "parentNode", "PageRenderer", "newStylesheetElements", "loadingElements", "SnapshotCache", "size", "key", "PageView", "cachedSnapshot", "Preloader", "responseText", "Session", "adapter", "delay", "mode", "extendURLWithDeprecatedProperties", "defaultPrevented", "render", "_snapshot", "_isPreview", "ev", "newBody", "timing", "submitterIsNavigatable", "container", "withinFrame", "deprecatedLocationPropertyDescriptors", "Cache", "StreamActions", "cache", "navigator$1", "start", "registerAdapter", "connectStreamSource", "disconnectStreamSource", "renderStreamMessage", "clearCache", "setProgressBarDelay", "setConfirmMethod", "confirmMethod", "setFormMode", "Turbo", "FrameController", "_fetchResponse", "src", "newFrameElement", "fetchRequest", "newFrame", "_newElement", "_0", "_1", "wrapped", "getFrameElementById", "activateElement", "sourceURL", "currentURL", "StreamElement", "c", "existingChildren", "e", "newChildrenIds", "actionFunction", "StreamSourceElement", "consumer", "getConsumer", "__async", "setConsumer", "createConsumer", "newConsumer", "subscribeTo", "channel", "mixin", "subscriptions", "walk", "obj", "acc", "key", "camel", "m", "x", "TurboCableStreamSourceElement", "__async", "connectStreamSource", "subscribeTo", "disconnectStreamSource", "data", "event", "channel", "signed_stream_name", "__spreadValues", "walk", "encodeMethodIntoRequestBody", "event", "form", "fetchOptions", "submitter", "method", "encodeMethodIntoRequestBody", "DOCUMENT_FRAGMENT_NODE", "morphAttrs", "fromNode", "toNode", "toNodeAttrs", "attr", "attrName", "attrNamespaceURI", "attrValue", "fromValue", "i", "fromNodeAttrs", "range", "NS_XHTML", "doc", "HAS_TEMPLATE_SUPPORT", "HAS_RANGE_SUPPORT", "createFragmentFromTemplate", "str", "template", "createFragmentFromRange", "fragment", "createFragmentFromWrap", "toElement", "compareNodeNames", "fromEl", "toEl", "fromNodeName", "toNodeName", "fromCodeStart", "toCodeStart", "createElementNS", "name", "namespaceURI", "moveChildren", "curChild", "nextChild", "syncBooleanAttrProp", "specialElHandlers", "parentNode", "parentName", "newValue", "firstChild", "oldValue", "selectedIndex", "optgroup", "nodeName", "ELEMENT_NODE", "DOCUMENT_FRAGMENT_NODE$1", "TEXT_NODE", "COMMENT_NODE", "noop", "defaultGetNodeKey", "node", "morphdomFactory", "options", "toNodeHtml", "getNodeKey", "onBeforeNodeAdded", "onNodeAdded", "onBeforeElUpdated", "onElUpdated", "onBeforeNodeDiscarded", "onNodeDiscarded", "onBeforeElChildrenUpdated", "skipFromChildren", "addChild", "parent", "child", "childrenOnly", "fromNodesLookup", "keyedRemovalList", "addKeyedRemoval", "key", "walkDiscardedChildNodes", "skipKeyedNodes", "removeNode", "indexTree", "handleNodeAdded", "el", "nextSibling", "unmatchedFromEl", "morphEl", "cleanupFromEl", "curFromNodeChild", "curFromNodeKey", "fromNextSibling", "toElKey", "morphChildren", "skipFrom", "curToNodeChild", "curToNodeKey", "toNextSibling", "matchingFromEl", "outer", "curFromNodeType", "isCompatible", "onBeforeNodeAddedResult", "specialElHandler", "morphedNode", "morphedNodeType", "toNodeType", "len", "elToRemove", "morphdom", "morph", "element", "initialize$1", "streamActions", "camelize", "value", "_", "char", "capitalize", "dasherize", "tokenize", "typecast", "e", "Utils", "add_css_class", "classes", "remove_attribute", "attribute", "remove_css_class", "set_attribute", "set_dataset_attribute", "set_property", "set_style", "set_styles", "styles", "set_value", "toggle_css_class", "className", "replace_css_class", "from", "to", "registerAttributesActions", "reload", "scroll_into_view", "alignToTop", "block", "inline", "behavior", "set_focus", "set_title", "title", "titleElement", "registerBrowserActions", "console_log", "message", "level", "console_table", "data", "columns", "registerDebugActions", "invoke", "registerDeprecatedActions", "CookieStringBuilder", "streamElement", "cookieString", "streamElementAttribute", "cookieKey", "isBooleanAttribute", "cookieValue", "cookieKeyPair", "set_cookie", "cookie", "set_cookie_item", "cookieStringBuilder", "registerDocumentActions", "graft", "selector", "inner_html", "html", "insert_adjacent_html", "position", "insert_adjacent_text", "outer_html", "set_meta", "content", "meta", "text_content", "text", "registerDOMActions", "dispatch_event", "detail", "event", "error", "registerEventsActions", "reset_form", "form", "registerFormActions", "push_state", "url", "state", "replace_state", "history_back", "history_forward", "history_go", "delta", "registerHistoryActions", "PERMITTED_ATTRIBUTES", "createNotification", "attributes", "notification", "permission", "registerNotificationActions", "storage", "type", "clear_storage", "set_storage_item", "remove_storage_item", "registerStorageActions", "Proxy", "redirect_to", "turboAction", "turboFrame", "turbo", "turbo_clear_cache", "registerTurboActions", "turbo_progress_bar_set_value", "turbo_progress_bar_show", "turbo_progress_bar_hide", "registerTurboProgressBarActions", "turbo_frame_reload", "turbo_frame_set_src", "src", "registerTurboFrameActions", "register$1", "Actions", "initialize", "register", "action", "index", "import_actioncable", "import_jquery", "jquery", "initializeTooltips", "initializeDropdownTabs", "parent", "selector", "$elements", "$this", "selText", "initializeCounters", "countTo", "initializeTooltips", "initializeDropdownTabs", "initializeCounters", "initializeWidgetCollapseExpand", "$collapsiblePanel", "$this", "$toggler", "pref_update", "$section", "section_name", "updateDashboardCollapsePreferences", "preferences", "path", "data", "initializeWidgetCollapseExpand", "import_trix", "initializeTrix", "addHeadingAttributes", "addForegroundColorAttributes", "addBackgroundColorAttributes", "event", "TrixExt", "insertToken", "insertHorizontalRule", "editor", "token", "buildHorizontalRule", "Trix", "element", "isAgreementEditor", "tagName", "i", "color", "e", "uploadAttachment", "attachment", "file", "form", "xhr", "progress", "data", "initializeTrix", "enableApplyToPreviewButton", "removeDeletedElements", "d", "initializeEmbedCodeModal", "$modal", "e", "$this", "$target", "embedcode", "initializeTemplateStartDatePicker", "initializeDeleteMembershipTemplateCheckboxes", "initializeCollapsibleModule", "$module", "$selectedModule", "initializeCollapsibleModules", "moduleNames", "moduleName", "handleProspectCreationToggle", "formFieldInputs", "formFieldInputsRequiredToCreateProspects", "index", "value", "key", "requireness", "requiredFieldsPresent", "$prospectCreationToggle", "profitItemOptions", "enableProfitItemOptions", "disableProfitItemOptions", "options", "option", "modName", "selectedModule", "initializeTelephoneInputBehavior", "element", "phoneInputs", "phoneInput", "reloadPreview", "preview", "oldFrame", "newFrame", "$form", "xhr", "data", "leftSection", "collapsdModules", "id", "encodedCollapsedModules", "_data", "event", "settings", "membershipItemsWrapper", "hasMemberships", "checkbox", "toggleCreateProspectButton", "enableApplyToPreviewButton", "removeDeletedElements", "initializeEmbedCodeModal", "initializeTemplateStartDatePicker", "initializeDeleteMembershipTemplateCheckboxes", "initializeCollapsibleModule", "initializeCollapsibleModules", "handleProspectCreationToggle", "disableProfitItemOptions", "enableProfitItemOptions", "reloadPreview", "addCountToCounter", "inputName", "count", "enableApplyButtonOnNewMembershipSelection", "enableApplyToPreviewButton", "activateApplyButtonWhenMembershipChecked", "inputId", "initializeTrialMembershipBehavior", "initializeProspectOffWarning", "addCountToCounter", "activateApplyButtonWhenMembershipChecked", "initializeTrialMembershipBehavior", "initializeProspectOffWarning", "activateApplyButtonWhenProgramChecked", "initializeProgramSignupBehavior", "activateApplyButtonWhenProgramChecked", "initializeProgramSignupBehavior", "initializeSchedulerBehavior", "initializeSchedulerBehavior", "fc", "SIGNATURE_PADS", "formatSelect2Option", "state", "$state", "image_data", "initializeSelect2Fields", "parent", "fields", "tagFields", "data", "tag", "findCheckedCheckBoxes", "checkedCheckBoxes", "initializeSelectAllCheckboxes", "checkboxes", "initializeAllCheckbox", "desiredState", "checkBoxes", "totalCheckBoxes", "totalCheckedCheckBoxes", "initializeColorPickerFields", "$", "initializeButtonToggleFormFields", "autoexpandDefinedInputs", "clickedOutsideInPlaceEditableField", "$target", "initializeDiscardButton", "$field", "path", "token", "xhr", "updatedData", "errorData", "signaturePad", "phoneContainerInput", "phoneInputs", "phoneInput", "requiredCheckboxes", "e", "regex", "str", "initializeFormFieldEdits", "$this", "insertData", "targetPhoneInput", "initializeBootstrapToggle", "error", "handleEditableFieldUpdate", "_e", "keycode", "handleDiscardButton", "tooltip", "btn", "value", "targetInput", "responseData", "formatSelect2Option", "initializeSelect2Fields", "findCheckedCheckBoxes", "initializeSelectAllCheckboxes", "initializeColorPickerFields", "initializeButtonToggleFormFields", "autoexpandDefinedInputs", "clickedOutsideInPlaceEditableField", "initializeDiscardButton", "initializeFormFieldEdits", "initializeAdditionalInfoModalContent", "initializeAdditionalInfoModalContent", "handleLazyLoadResponse", "target", "data", "loadLazyPartials", "path", "loadLazyPartial", "isReload", "fadeIn", "request", "parent", "$containers", "$this", "loadLazyPartial", "updateStudentStatus", "container", "path", "button", "token", "xhr", "data", "handleUpdateStudentStatusResponse", "e", "getStudentStatus", "initializeStudentStatusDropdowns", "parent", "$this", "$target", "$parentButton", "handleAdditionalInfoNeededUpdateStudentResponse", "initializeStudentAttendanceLog", "populateProgramAttendances", "programId", "$table", "$footer", "initializeViewMoreAttendancesActionable", "initializeAttendanceDelete", "actionableElement", "initializeAttendanceLogProgramSelector", "selectedProgram", "programAttendanceContainerPath", "initialSelectedProgram", "target", "isSelected", "urlPath", "deleteButtonElement", "checkedAttendanceCheckboxes", "selectedAttendanceIds", "initializeStudentDelete", "element", "initializeStudentRestore", "cw", "width", "initializeStudentStatusDropdowns", "initializeAttendanceLogProgramSelector", "initializeStudentAttendanceLog", "initializeFeedback", "projectId", "id", "s", "parent_node", "hide", "initializeFeedback", "addPDFPreview", "target", "waitPromise", "ms", "resolve", "pdfTimeout", "pdfPromise", "previewFilePromise", "objectElement", "addPDFPreview", "initializeClipboardCopyButton", "parent", "btn", "initializeClipboardCopyButton", "buildListViewElement", "segs", "calendar", "content", "scroller", "list", "days", "dateRange", "items", "sliceSegmentsByDay", "_segs", "index", "buildListViewItem", "item", "date", "itemDate", "buildListViewItemDateBit", "itemEvents", "events", "seg", "buildListViewSegmentAnchor", "event", "buildEventContent", "info", "showFormFields", "_a", "_b", "_c", "_d", "eventContent", "mainDiv", "timeDiv", "subjectDiv", "subjectLink", "titleContainerDiv", "titleDiv", "iconMap", "htmlDiv", "customIcon", "linkIcon", "formFields", "buildListViewFormFields", "parent", "anchor", "eventFrame", "start", "end", "timeText", "jsEvent", "itemDateMonthBit", "itemDateDayBit", "itemDateDayOfWeekBit", "itemDateWrapper", "itemDateMonthDayWrapper", "quickActionsWrapper", "eventType", "parseEventType", "values", "statusToggler", "buildListViewStatusToggler", "statusText", "updateCallback", "debounce", "updateEvent", "statusDropdown", "statusDropdownToggler", "statusDropdownList", "path", "value", "statusDropdownListItem", "statusDropdownListItemLink", "day", "modifiedPath", "oldQueryString", "queryString", "response", "type", "func", "time", "immediate", "timeout", "args", "context", "later", "callNow", "buildListViewElement", "buildEventContent", "onLoad", "initializeTooltips", "hideLoadingIndicator", "showLoadingIndicator", "parent", "selector", "$elements", "hideLoadingIndicator", "showLoadingIndicator", "isMobile", "isMobile", "b64toBlob", "b64Data", "contentType", "sliceSize", "byteCharacters", "byteArrays", "offset", "slice", "byteNumbers", "i", "byteArray", "blob", "b64toBlob", "highlightModule", "selectedModule", "name", "focusModules", "focusNav", "showAll", "unfocusModule", "unfocusNav", "selectedType", "$selectedModules", "possibleModules", "div", "module", "lazyLoad", "lazyLoadItem", "item", "selectedName", "possible_modules", "wasActive", "highlightModule", "initializeAccountFormSubmit", "btn", "status", "$target", "path", "initializeCloseUserAccount", "token", "xhr", "data", "loadPath", "initializeAccountRestrictionChecks", "initializeChangeUserAccountPassword", "$modal", "input", "password", "confirmation", "initializeAccountFormSubmit", "initializeCloseUserAccount", "initializeAccountRestrictionChecks", "initializeChangeUserAccountPassword", "registerProfileModulesDropdownClickEvents", "module", "$this", "path", "$target", "initializeViewAllProfileItemsActionable", "actionableElement", "$table", "$footer", "data", "initializeAgreementDeletes", "initializeViewMoreProfileItemsActionable", "initializeInfiniteViewAll", "initializeHoverTooltips", "initializePaymentNotesModal", "initializeDocumentDeletes", "$viewMoreResults", "$viewAllResults", "$infinityScrollable", "onScroll", "bottom", "initializeFileUpload", "post_url", "options", "files", "store_filestack_data", "client", "e", "filesUploaded", "url", "target", "frame", "document_ids", "i", "checkbox", "remove_filestack_data", "token", "xhr", "docsPath", "initializeCommentDeletes", "initializeAddNewComment", "$globalAlerts", "$modal", "_e", "loadPath", "defaultProgressionLevelSuccess", "getProgramProgressionLevels", "student_program_progression_levels_path", "onlyExisting", "onComplete", "initializeAttendanceModuleActionSelector", "includeAttendances", "checkedAttendanceCheckboxes", "_data", "$modalSubmitButton", "program_progression_levels_path", "lazy_load_path", "initializeTabModule", "clickableElements", "$row", "content", "initializeDropToggleThing", "$toggleable", "row_id", "el", "icon", "handleAttendanceModuleContextSwitching", "initializeLeftPanelSelection", "handleButtonUpdate", "parentElement", "buttonElement", "modulePath", "initializeMembershipActivationButtons", "initializeAttendanceAwardProgramSelector", "programId", "populateAttendanceAwards", "initializeSortingColumns", "sortColumn", "sortAscending", "historySections", "commentSections", "registerProfileModulesDropdownClickEvents", "initializeViewAllProfileItemsActionable", "initializeViewMoreProfileItemsActionable", "initializeInfiniteViewAll", "initializeAgreementDeletes", "handleAttendanceModuleContextSwitching", "initializeInventoryItemCheckbox", "initializeInventoryItemCheckbox", "initializeLandingPageModules", "parent", "$selectedModule", "$keyField", "destroyFlag", "splittedString", "key", "hasTrialMemberships", "updateProgramModule", "programModule", "hasScheduler", "hasPrograms", "updateLandingPageStatus", "container", "path", "button", "token", "xhr", "data", "initializeLandingPageStatusDropdowns", "$this", "$target", "$parentButton", "loadModulePartial", "targetElement", "moduleElement", "$lastField", "initializeProgramModule", "initializeOtherModules", "moduleName", "initializeLandingPageModules", "Point", "x", "y", "pressure", "time", "start", "other", "Bezier", "startPoint", "control2", "control1", "endPoint", "startWidth", "endWidth", "points", "widths", "c2", "c3", "s1", "s2", "s3", "dx1", "dy1", "dx2", "dy2", "m1", "m2", "l1", "l2", "dxm", "dym", "k", "cm", "tx", "ty", "length", "px", "py", "i", "t", "cx", "cy", "xdiff", "ydiff", "c1", "end", "SignatureEventTarget", "error", "type", "listener", "options", "event", "callback", "throttle", "fn", "wait", "previous", "timeout", "result", "storedContext", "storedArgs", "later", "args", "now", "remaining", "SignaturePad", "canvas", "touch", "ctx", "dataUrl", "resolve", "reject", "image", "ratio", "width", "height", "xOffset", "yOffset", "encoderOptions", "isIOS", "pointGroups", "clear", "group", "pointGroupOptions", "newPointGroup", "point", "lastPointGroup", "lastPoints", "lastPoint", "isLastPointTooClose", "curve", "rect", "_lastPoints", "velocity", "newWidth", "widthDelta", "drawSteps", "tt", "ttt", "u", "uu", "uuu", "drawCurve", "drawDot", "j", "basicPoint", "includeBackgroundColor", "minX", "minY", "maxX", "maxY", "svg", "penColor", "path", "attr", "dotSize", "minWidth", "maxWidth", "circle", "size", "SignaturePad", "Pallette", "PalletteDark", "Pallette", "PalletteDark", "$createProspectToggle", "enableCreateProspectToggle", "enableCreateProspectToggle", "import_ujs", "Rails", "import_intl_tel_input", "intlTelInput", "el", "rect", "$", "version", "transitionEnd", "el", "transEndEventNames", "name", "duration", "called", "$el", "callback", "e", "dismiss", "Alert", "$this", "selector", "$parent", "removeElement", "Plugin", "option", "data", "old", "Button", "element", "options", "state", "d", "val", "changed", "$input", "$btn", "Carousel", "item", "direction", "active", "activeIndex", "willWrap", "delta", "itemIndex", "pos", "that", "type", "next", "$active", "$next", "isCycling", "relatedTarget", "slideEvent", "$nextIndicator", "slidEvent", "action", "clickHandler", "href", "target", "$target", "slideIndex", "$carousel", "Collapse", "hasWidth", "activesData", "actives", "startEvent", "dimension", "complete", "scrollSize", "i", "$element", "getTargetFromTrigger", "$trigger", "isOpen", "backdrop", "toggle", "Dropdown", "getParent", "clearMenus", "isActive", "desc", "$items", "index", "Modal", "_relatedTarget", "transition", "animate", "doAnimate", "callbackRemove", "modalIsOverflowing", "fullWindowWidth", "documentElementRect", "bodyPad", "scrollbarWidth", "actualPadding", "calculatedPadding", "padding", "scrollDiv", "showEvent", "DISALLOWED_ATTRIBUTES", "uriAttrs", "ARIA_ATTRIBUTE_PATTERN", "DefaultWhitelist", "SAFE_URL_PATTERN", "DATA_URL_PATTERN", "allowedAttribute", "attr", "allowedAttributeList", "attrName", "regExp", "value", "l", "sanitizeHtml", "unsafeHtml", "whiteList", "sanitizeFn", "createdDocument", "whitelistKeys", "elements", "len", "elName", "attributeList", "whitelistedAttributes", "j", "len2", "Tooltip", "triggers", "trigger", "eventIn", "eventOut", "dataAttributes", "dataAttr", "defaults", "key", "obj", "self", "inDom", "$tip", "tipId", "placement", "autoToken", "autoPlace", "actualWidth", "actualHeight", "orgPlacement", "viewportDim", "calculatedOffset", "prevHoverState", "offset", "width", "height", "marginTop", "marginLeft", "props", "isVertical", "arrowDelta", "arrowOffsetPosition", "title", "$e", "isBody", "elRect", "isSvg", "elOffset", "scroll", "outerDims", "viewportPadding", "viewportDimensions", "topEdgeOffset", "bottomEdgeOffset", "leftEdgeOffset", "rightEdgeOffset", "o", "prefix", "Popover", "content", "typeContent", "ScrollSpy", "offsetMethod", "offsetBase", "$href", "b", "scrollTop", "scrollHeight", "maxScroll", "offsets", "targets", "activeTarget", "$spy", "Tab", "$ul", "$previous", "hideEvent", "container", "Affix", "offsetTop", "offsetBottom", "position", "targetHeight", "initializing", "colliderTop", "colliderHeight", "affix", "affixType", "$", "Toggle", "element", "options", "size", "$toggleOn", "$toggleOff", "$toggleHandle", "$toggleGroup", "$toggle", "width", "height", "silent", "Plugin", "option", "$this", "data", "old", "e", "$checkbox", "import_jquery_minicolors", "$", "value", "options", "settings", "ctx", "W", "H", "centerW", "position", "new_position", "difference", "text", "animation_loop", "redraw_loop", "radians", "degrees", "update", "fontArgs", "draw", "animate_to", "aa", "k", "a", "b", "c", "d", "m", "e", "g", "f", "h", "ba", "ca", "da", "ea", "fa", "ha", "ia", "ja", "ka", "la", "ma", "na", "oa", "n", "p", "q", "r", "t", "u", "v", "w", "x", "y", "A", "B", "C", "D", "E", "F", "pa", "qa", "H", "ra", "I", "sa", "ta", "J", "va", "K", "wa", "xa", "L", "ya", "za", "Aa", "Ba", "Ca", "N", "Da", "Ea", "Fa", "Ga", "Ha", "O", "Ia", "P", "Ja", "Ka", "Q", "La", "R", "Ma", "S", "T", "l", "U", "V", "W", "X", "Na", "Y", "Oa", "Pa", "Qa", "Z", "Ra", "z", "M", "ua", "Sa", "Ta", "EventListener", "eventTarget", "eventName", "eventOptions", "binding", "event", "extendedEvent", "extendEvent", "left", "right", "leftIndex", "rightIndex", "stopImmediatePropagation", "Dispatcher", "application", "eventListener", "listeners", "map", "clearEventListeners", "error", "message", "detail", "eventListenerMap", "cacheKey", "parts", "key", "defaultActionDescriptorFilters", "value", "element", "descriptorPattern", "parseActionDescriptorString", "descriptorString", "matches", "keyFilter", "parseEventTarget", "parseEventOptions", "eventTargetName", "options", "token", "stringifyEventTarget", "camelize", "_", "char", "namespaceCamelize", "capitalize", "dasherize", "tokenize", "Action", "index", "descriptor", "schema", "getDefaultEventNameForElement", "eventFilter", "filteres", "modifiers", "meta", "ctrl", "alt", "shift", "modifier", "standardFilter", "params", "pattern", "name", "match", "typecast", "defaultEventNames", "tagName", "o_O", "Binding", "context", "action", "method", "actionDescriptorFilters", "passes", "filter", "target", "currentTarget", "actionEvent", "identifier", "controller", "ElementObserver", "delegate", "mutations", "callback", "mutation", "node", "attributeName", "nodes", "tree", "processor", "AttributeObserver", "add", "fetch", "del", "prune", "values", "Multimap", "set", "size", "_key", "_values", "SelectorObserver", "element", "selector", "delegate", "details", "ElementObserver", "Multimap", "callback", "matches", "tree", "match", "_attributeName", "matchedBefore", "StringMapObserver", "mutations", "attributeName", "mutation", "oldValue", "key", "value", "attribute", "TokenListObserver", "AttributeObserver", "unmatchedTokens", "matchedTokens", "tokens", "token", "previousTokens", "currentTokens", "firstDifferingIndex", "zip", "previousToken", "currentToken", "tokensAreEqual", "tokenString", "parseTokenString", "content", "index", "left", "right", "length", "_", "ValueListObserver", "parseResult", "valuesByToken", "error", "BindingObserver", "context", "action", "binding", "Binding", "Action", "ValueObserver", "receiver", "descriptor", "name", "defaultValue", "writer", "rawValue", "rawOldValue", "changedMethodName", "changedMethod", "valueDescriptorMap", "descriptors", "hasMethodName", "capitalize", "TargetObserver", "_a", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "values", "getOwnStaticArrayValues", "readInheritableStaticObjectPairs", "pairs", "getOwnStaticObjectPairs", "definition", "OutletObserver", "outletName", "observer", "_selector", "outlet", "dependencies", "module", "identifiers", "Context", "scope", "functionName", "detail", "identifier", "controller", "message", "namespaceCamelize", "methodName", "args", "bless", "shadow", "getBlessedProperties", "properties", "shadowConstructor", "extend", "shadowProperties", "getShadowProperties", "blessedProperties", "blessing", "prototype", "getOwnKeys", "getShadowedDescriptor", "shadowingDescriptor", "object", "extendWithReflect", "extended", "testReflectExtension", "b", "blessDefinition", "Module", "application", "ClassMap", "tokenize", "DataMap", "dasherize", "Guide", "logger", "warnedKeys", "attributeValueContainsToken", "TargetSet", "targetName", "targetNames", "target", "targets", "targetDescriptor", "revisedAttributeName", "OutletSet", "controllerElement", "outletNames", "outlets", "controllerAttribute", "Scope", "schema", "ScopeObserver", "scopesByIdentifier", "referenceCount", "Router", "contexts", "afterLoad", "defaultSchema", "objectFromEntries", "c", "n", "array", "memo", "k", "v", "Application", "Dispatcher", "defaultActionDescriptorFilters", "__async", "domReady", "controllerConstructor", "filter", "head", "rest", "resolve", "ClassPropertiesBlessing", "classDefinition", "propertiesForClassDefinition", "classes", "OutletPropertiesBlessing", "outletDefinition", "propertiesForOutletDefinition", "camelizedName", "outletController", "TargetPropertiesBlessing", "targetDefinition", "propertiesForTargetDefinition", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "propertiesForValueDefinitionPair", "read", "write", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "parseValueTypeDefault", "parseValueTypeObject", "payload", "typeFromObject", "defaultValueType", "propertyPath", "parseValueTypeDefinition", "typeFromDefaultValue", "typeFromConstant", "type", "defaultValueForDefinition", "defaultValuesByType", "camelize", "readers", "writers", "writeString", "writeJSON", "Controller", "_identifier", "_application", "eventName", "prefix", "bubbles", "cancelable", "event", "application", "Application", "get", "path", "getCsrfToken", "getStream", "r", "html", "put", "body", "post", "getCsrfToken", "_a", "ApplicationController", "Controller", "selector", "_a", "frame", "src", "frameElement", "target", "url", "params", "getStream", "event", "currentTarget", "form", "input", "key", "value", "element", "attribute", "callback", "animation", "duration", "isff", "addEvent", "object", "event", "method", "getMods", "modifier", "key", "mods", "i", "getKeys", "keys", "index", "compareArray", "a1", "a2", "arr1", "arr2", "isIndex", "_keyMap", "_modifier", "modifierMap", "_mods", "_handlers", "k", "_downKeys", "_scope", "elementHasBindEvent", "code", "x", "setScope", "scope", "getScope", "getPressedKeyCodes", "filter", "target", "tagName", "flag", "isPressed", "keyCode", "deleteScope", "newScope", "handlers", "clearModifier", "hotkeys", "unbind", "keysInfo", "info", "eachUnbind", "_len", "args", "_key", "_ref", "_ref$splitKey", "splitKey", "multipleKeys", "originKey", "unbindKeys", "len", "lastKey", "record", "isMatchingMethod", "eventHandler", "handler", "modifiersMatch", "y", "dispatch", "asterisk", "keyName", "keyNum", "e", "_i", "keyShortcut", "_downKeysCurrent", "a", "isElementBind", "element", "option", "keyup", "keydown", "_api", "_hotkeys", "deep", "hotkeys_esm_default", "composeEventName", "name", "controller", "eventPrefix", "composedName", "extendedEvent", "type", "event", "detail", "bubbles", "cancelable", "composed", "isElementInViewport", "el", "rect", "windowHeight", "windowWidth", "vertInView", "horInView", "defaultOptions$5", "useClickOutside", "controller", "options", "onlyVisible", "dispatchEvent", "events", "eventPrefix", "onEvent", "event", "targetElement", "isElementInViewport", "eventName", "composeEventName", "clickOutsideEvent", "extendedEvent", "observe", "unobserve", "controllerDisconnect", "__rest", "s", "e", "t", "p", "defaultOptions$4", "StimulusUse", "controller", "options", "_a", "_b", "_c", "functionName", "args", "eventName", "details", "event", "eventDetails", "customEvent", "methodName", "method", "name", "detail", "bubbles", "cancelable", "composed", "composedName", "dispatchEvent", "eventPrefix", "UseMutation", "StimulusUse", "controller", "options", "error", "entries", "controllerDisconnect", "disconnect", "useMutation", "observer", "DebounceController", "Controller", "defaultWait$1", "debounce", "fn", "wait", "timeoutId", "args", "context", "callback", "useDebounce", "controller", "options", "_a", "func", "name", "ThrottleController", "UseHotkeys", "StimulusUse", "controller", "hotkeysOptions", "hotkey", "definition", "handler", "hotkeys_esm_default", "e", "controllerDisconnect", "disconnect", "convertSimpleHotkeyDefinition", "coerceOptions", "options", "hotkeys", "useHotkeys", "ClickOutsideController", "Controller", "useClickOutside", "event", "ignoreElement", "__publicField", "removeModals", "_modal", "_backdrop", "removeModalOpen", "manageClassEventDragAndDrop", "modal", "calendar", "closeBtn", "cancelBtn", "saveBtn", "showBackdrop", "modalDialog", "_modalDialog", "modalContent", "_modalContent", "modalHeader", "_modalHeader", "modalTitle", "title", "options", "_modalTitle", "modalBody", "_modalBody", "modalBodyMessage", "message", "_modalBodyMessage", "modalFooter", "_modalFooter", "closeButton", "_closeButton", "icon", "_icon", "cancelButton", "denyText", "_cancelButton", "submitButton", "confirmText", "form_id", "_submitButton", "submitAnchor", "path", "method", "_submitAnchor", "createModal", "removeExtraBackdrops", "import_q_flat", "confirmation_submit_controller_default", "Controller", "event", "payload", "queryString", "calendar", "createModal", "manageClassEventDragAndDrop", "removeExtraBackdrops", "__publicField", "dashboard_module_controller_default", "Controller", "initializeDropdownTabs", "initializeTooltips", "header", "sortColumn", "sortAscending", "url", "event", "collapsed", "sectionName", "put", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "key", "_defineProperty", "_typeof", "obj", "value", "_extends", "_objectWithoutPropertiesLoose", "excluded", "sourceKeys", "_objectWithoutProperties", "sourceSymbolKeys", "version", "userAgent", "pattern", "IE11OrLess", "Edge", "FireFox", "Safari", "IOS", "ChromeForAndroid", "captureMode", "on", "el", "event", "fn", "off", "matches", "selector", "_", "getParentOrHost", "closest", "ctx", "includeCTX", "R_SPACE", "toggleClass", "name", "state", "className", "css", "prop", "val", "style", "matrix", "selfOnly", "appliedTransforms", "transform", "matrixFn", "find", "tagName", "iterator", "list", "n", "getWindowScrollingElement", "scrollingElement", "getRect", "relativeToContainingBlock", "relativeToNonStaticParent", "undoScale", "container", "elRect", "top", "left", "bottom", "right", "height", "width", "containerRect", "elMatrix", "scaleX", "scaleY", "isScrolledPast", "elSide", "parentSide", "parent", "getParentAutoScrollElement", "elSideVal", "parentSideVal", "visible", "getChild", "childNum", "options", "includeDragEl", "currentChild", "i", "children", "Sortable", "lastChild", "last", "index", "getRelativeScrollOffset", "offsetLeft", "offsetTop", "winScroller", "indexOfObject", "arr", "obj", "key", "includeSelf", "elem", "gotSelf", "elemCSS", "extend", "dst", "src", "isRectEqual", "rect1", "rect2", "_throttleTimeout", "throttle", "callback", "ms", "args", "_this", "cancelThrottle", "scrollBy", "x", "y", "clone", "Polymer", "$", "expando", "AnimationStateManager", "animationStates", "animationCallbackId", "children", "child", "css", "Sortable", "getRect", "fromRect", "_objectSpread2", "childMatrix", "matrix", "state", "target", "indexOfObject", "callback", "_this", "animating", "animationTime", "time", "toRect", "prevFromRect", "prevToRect", "animatingRect", "targetMatrix", "isRectEqual", "calculateRealTime", "currentRect", "duration", "elMatrix", "scaleX", "scaleY", "translateX", "translateY", "repaint", "options", "plugins", "defaults", "PluginManager", "plugin", "option", "p", "eventName", "sortable", "evt", "eventNameGlobal", "el", "pluginName", "initialized", "_extends", "modified", "name", "eventProperties", "value", "modifiedValue", "dispatchEvent", "_ref", "rootEl", "targetEl", "cloneEl", "toEl", "fromEl", "oldIndex", "newIndex", "oldDraggableIndex", "newDraggableIndex", "originalEvent", "putSortable", "extraEventProperties", "onName", "IE11OrLess", "Edge", "allEventProperties", "_excluded", "pluginEvent", "data", "_objectWithoutProperties", "dragEl", "parentEl", "ghostEl", "nextEl", "lastDownEl", "cloneHidden", "moved", "_hideGhostForTarget", "_unhideGhostForTarget", "_dispatchEvent", "info", "activeGroup", "awaitingDragStarted", "ignoreNextClick", "sortables", "tapEvt", "touchEvt", "lastDx", "lastDy", "tapDistanceLeft", "tapDistanceTop", "lastTarget", "lastDirection", "pastFirstInvertThresh", "isCircumstantialInvert", "targetMoveDistance", "ghostRelativeParent", "ghostRelativeParentInitialScroll", "_silent", "savedInputChecked", "documentExists", "PositionGhostAbsolutely", "IOS", "CSSFloatProperty", "supportDraggable", "ChromeForAndroid", "supportCssPointerEvents", "_detectDirection", "elCSS", "elWidth", "child1", "getChild", "child2", "firstChildCSS", "secondChildCSS", "firstChildWidth", "secondChildWidth", "touchingSideChild2", "_dragElInRowColumn", "dragRect", "targetRect", "vertical", "dragElS1Opp", "dragElS2Opp", "dragElOppLength", "targetS1Opp", "targetS2Opp", "targetOppLength", "_detectNearestEmptySortable", "x", "y", "ret", "threshold", "lastChild", "rect", "insideHorizontally", "insideVertically", "_prepareGroup", "toFn", "pull", "to", "from", "sameGroup", "otherGroup", "group", "originalGroup", "_typeof", "nearestEmptyInsertDetectEvent", "nearest", "event", "_checkOutsideTargetEl", "dataTransfer", "Safari", "fn", "on", "preventOnFilter", "type", "touch", "originalTarget", "filter", "_saveInputCheckedState", "closest", "index", "criteria", "ownerDocument", "dragStartFn", "FireFox", "toggleClass", "find", "_disableDraggable", "e", "off", "_nextTick", "err", "fallback", "parent", "inserted", "fallbackTolerance", "fallbackOffset", "ghostMatrix", "relativeScrollOffset", "getRelativeScrollOffset", "dx", "dy", "cssMatrix", "container", "getWindowScrollingElement", "clone", "revert", "activeSortable", "isOwner", "canSort", "fromSortable", "completedFired", "dragOverEvent", "extra", "completed", "after", "_onMove", "changed", "capture", "insertion", "elLastChild", "_ghostIsLast", "_ghostIsFirst", "firstChild", "direction", "targetBeforeFirstSwap", "differentLevel", "differentRowCol", "side1", "scrolledPastTop", "isScrolledPast", "scrollBefore", "_getSwapDirection", "sibling", "dragIndex", "nextSibling", "moveVector", "_unsilent", "scrollBy", "_cancelNextTick", "_globalDragOver", "order", "n", "_generateId", "useAnimation", "items", "id", "i", "store", "selector", "willInsertAfter", "onMoveFn", "retVal", "spacer", "swapThreshold", "invertedSwapThreshold", "invertSwap", "isLastTarget", "mouseOnAxis", "targetLength", "targetS1", "targetS2", "invert", "_getInsertDirection", "str", "sum", "root", "inputs", "idx", "extend", "throttle", "element", "_len", "_key", "version", "autoScrolls", "scrollEl", "scrollRootEl", "scrolling", "lastAutoScrollX", "lastAutoScrollY", "touchEvt$1", "pointerElemChangedInterval", "AutoScrollPlugin", "AutoScroll", "_ref2", "clearPointerElemChangedInterval", "clearAutoScrolls", "cancelThrottle", "elem", "autoScroll", "ogElemScroller", "getParentAutoScrollElement", "newElem", "isFallback", "sens", "speed", "winScroller", "scrollThisInstance", "scrollCustomFn", "layersOut", "currentParent", "top", "bottom", "left", "right", "width", "height", "canScrollX", "canScrollY", "scrollWidth", "scrollHeight", "scrollPosX", "scrollPosY", "vx", "vy", "scrollOffsetY", "scrollOffsetX", "drop", "dispatchSortableEvent", "hideGhostForTarget", "unhideGhostForTarget", "toSortable", "Revert", "_ref3", "Remove", "_ref4", "parentSortable", "OnSpill", "Sortable", "OnSpill", "AutoScrollPlugin", "createSortable", "element", "options", "__spreadValues", "DropSortableController", "Controller", "options", "__spreadValues", "event", "item", "createSortable", "ids", "put", "__publicField", "objectExtend", "extend", "args", "deep", "result", "isUnextendable", "extenders", "len", "i", "extender", "key", "value", "isCloneable", "base", "obj", "val", "$4040acfd8584338d$export$2e2bcd8739ae039", "event", "fn", "args", "callbacks", "callback", "eventName", "detail", "params", "evt", "$fd6031f88dce2e32$exports", "$4ca367182776f80b$var$defaultOptions", "files", "xhr", "chunk", "file", "done", "messageElement", "child", "$3ed269f2f0fb224b$export$2e2bcd8739ae039", "span", "width", "height", "resizeMethod", "info", "srcRatio", "trgRatio", "$parcel$interopDefault", "node", "removeFileEvent", "e", "removeLink", "dataUrl", "thumbnailElement", "message", "progress", "bytesSent", "$4ca367182776f80b$export$2e2bcd8739ae039", "status", "setupHiddenFileInput", "containsFiles", "noPropagation", "efct", "error", "clickableElement", "totalUploadProgress", "totalBytesSent", "totalBytes", "n", "existingFallback", "form", "fieldsString", "fields", "getFallback", "elements", "el", "tagName", "fallback", "elementListeners", "result", "listener", "element", "size", "selectedSize", "selectedUnit", "units", "i", "unit", "cutoff", "items", "$3ed269f2f0fb224b$var$__guard__", "x", "item", "entry", "directory", "path", "dirReader", "errorHandler", "$3ed269f2f0fb224b$var$__guardMethod__", "o", "readEntries", "entries", "$3ed269f2f0fb224b$var$without", "cancelIfNecessary", "canvas", "resizeMimeType", "resizedDataURL", "$3ed269f2f0fb224b$var$ExifRestore", "fixOrientation", "fileReader", "mockFile", "imageUrl", "crossOrigin", "resizeThumbnail", "onDone", "thumbnail", "img", "loadExif", "orientation", "resizeInfo", "ctx", "$3ed269f2f0fb224b$var$drawImageIOSFix", "parallelUploads", "processingLength", "queuedFiles", "groupedFiles", "groupedFile", "groupedFile1", "option", "transformedFiles", "transformedFile", "startedChunkCount", "handleNextChunk", "chunkIndex", "start", "end", "dataBlock", "response", "allFinished", "dataBlocks", "method", "url", "progressObj", "headers", "objectExtend", "headerName", "headerValue", "formData", "additionalParams", "key", "value", "doneCounter", "input", "inputName", "inputType", "responseText", "c", "r", "options", "left", "elementOptions", "$3ed269f2f0fb224b$var$camelize", "dropzones", "checkElements", "dropzone", "capableBrowser", "regex", "dataURI", "byteString", "mimeString", "ab", "ia", "asc", "list", "rejectedItem", "str", "match", "string", "div", "container", "name", "els", "question", "accepted", "rejected", "acceptedFiles", "mimeType", "baseMimeType", "validType", "$3ed269f2f0fb224b$var$detectVerticalSquash", "iw", "ih", "data", "sy", "ey", "py", "ratio", "sx", "sw", "sh", "dx", "dy", "dw", "dh", "vertSquashRatio", "output", "chr1", "chr2", "chr3", "enc1", "enc2", "enc3", "enc4", "origFileBase64", "resizedFileBase64", "rawImage", "segments", "image", "exifArray", "newImageArray", "seg", "imageData", "buf", "separatePoint", "mae", "ato", "array", "rawImageArray", "head", "length", "endPoint", "$3ed269f2f0fb224b$var$__guard__", "value", "transform", "$3ed269f2f0fb224b$var$__guardMethod__", "obj", "methodName", "dropzone_controller_default", "Controller", "$3ed269f2f0fb224b$export$2e2bcd8739ae039", "file", "responseData", "agreementsComp", "event", "name", "element", "__publicField", "elementIsVisible", "element", "lp_navigation_controller_default", "Controller", "button", "index", "event", "step", "otherSteps", "_step", "_index", "items", "currentItem", "prevItem", "futureItem", "item", "small", "hideInactive", "fields", "field", "elementIsVisible", "signed", "signature", "acc", "__publicField", "lp_payment_controller_default", "Controller", "event", "cartDataArr", "cartData", "subtotal", "acc", "item", "items", "itemQueryString", "post", "response", "__async", "data", "target", "element", "cartItem", "itemDesc", "itemPrice", "payload", "__publicField", "lp_scheduler_controller_default", "Controller", "event", "calendarEvent", "item", "required", "target", "dataset", "className", "classDate", "classTime", "desc", "instructor", "program_signup_controller_default", "Controller", "event", "id", "element", "button", "__publicField", "import_intl_tel_input", "public_controller_default", "Controller", "__publicField", "customPhoneField", "intlTelInput", "event", "signature", "rawAgreement", "tokenFields", "tokenField", "token", "shouldBeRequired", "i", "input", "outlets", "a", "b", "recent_activity_filter_controller_default", "Controller", "scrollableArea", "url", "filters", "turbo_es2017_esm_exports", "event", "target", "newState", "subItems", "subItem", "checkbox", "icon", "__publicField", "focus_controller_default", "Controller", "event", "FormSortableController", "Controller", "onEnd", "options", "__spreadValues", "createSortable", "index", "input", "__publicField", "icon_loading_controller_default", "Controller", "__publicField", "_typeof", "obj", "_classCallCheck", "instance", "Constructor", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_defineProperty", "key", "value", "_inherits", "subClass", "superClass", "_setPrototypeOf", "_getPrototypeOf", "o", "p", "_isNativeReflectConstruct", "_objectWithoutPropertiesLoose", "source", "excluded", "sourceKeys", "_objectWithoutProperties", "sourceSymbolKeys", "_assertThisInitialized", "self", "_possibleConstructorReturn", "call", "_createSuper", "Derived", "hasNativeReflectConstruct", "Super", "result", "NewTarget", "_superPropBase", "object", "property", "_get", "receiver", "base", "desc", "set", "_set", "isStrict", "s", "_slicedToArray", "arr", "_arrayWithHoles", "_iterableToArrayLimit", "_unsupportedIterableToArray", "_nonIterableRest", "_i", "_arr", "_n", "_d", "_s", "_e", "err", "minLen", "_arrayLikeToArray", "len", "arr2", "isString", "str", "DIRECTION", "forceDirection", "direction", "DIRECTION", "escapeRegExp", "str", "objectIncludes", "b", "a", "arrA", "arrB", "_typeof", "dateA", "dateB", "regexpA", "regexpB", "keys", "ActionDetails", "value", "cursorPos", "oldValue", "oldSelection", "_classCallCheck", "_createClass", "DIRECTION", "ChangeDetails", "details", "_classCallCheck", "_createClass", "ContinuousTailDetails", "value", "from", "stop", "_classCallCheck", "_createClass", "tail", "masked", "state", "pos", "shiftChar", "IMask", "el", "opts", "Masked", "opts", "_classCallCheck", "_createClass", "state", "value", "cursorPos", "direction", "fromPos", "toPos", "ContinuousTailDetails", "tail", "isString", "ch", "ChangeDetails", "flags", "checkTail", "consistentState", "details", "consistentTail", "appended", "beforeTailState", "tailDetails", "str", "ci", "fn", "rawInput", "ret", "start", "deleteCount", "inserted", "removeDirection", "tailPos", "startChangePos", "changeDetails", "v", "IMask", "maskedClass", "mask", "IMask", "isString", "createMask", "opts", "MaskedClass", "_excluded", "DEFAULT_INPUT_DEFINITIONS", "PatternInputDefinition", "opts", "_classCallCheck", "mask", "blockOpts", "_objectWithoutProperties", "createMask", "_createClass", "fromPos", "toPos", "ChangeDetails", "str", "flags", "state", "details", "_this$masked", "_this$masked2", "_this$masked3", "cursorPos", "direction", "DIRECTION", "minPos", "maxPos", "boundPos", "_this$masked4", "_this$parent", "PatternFixedDefinition", "opts", "_classCallCheck", "_createClass", "fromPos", "toPos", "ChangeDetails", "cursorPos", "direction", "DIRECTION", "minPos", "maxPos", "flags", "str", "details", "appended", "isResolved", "ContinuousTailDetails", "tail", "isString", "state", "_excluded", "ChunksTailDetails", "chunks", "from", "_classCallCheck", "_createClass", "tailChunk", "isString", "ContinuousTailDetails", "lastChunk", "extendLast", "firstTailChunk", "masked", "IMask", "tail", "details", "ChangeDetails", "ci", "chunk", "lastBlockIter", "stop", "chunkBlock", "tailDetails", "remainChars", "c", "state", "props", "_objectWithoutProperties", "cstate", "pos", "chunkShiftPos", "shiftChar", "MaskedRegExp", "_Masked", "_inherits", "_super", "_createSuper", "_classCallCheck", "_createClass", "opts", "value", "_get", "_getPrototypeOf", "Masked", "IMask", "_excluded", "MaskedPattern", "_Masked", "_inherits", "_super", "_createSuper", "opts", "_classCallCheck", "DEFAULT_INPUT_DEFINITIONS", "_createClass", "_get", "_getPrototypeOf", "_this", "defs", "pattern", "unmaskingBlock", "optionalBlock", "i", "_ret", "p", "bNames", "bName", "a", "b", "maskedBlock", "createMask", "char", "_isInput", "def", "PatternInputDefinition", "PatternFixedDefinition", "state", "_blocks", "maskedState", "_objectWithoutProperties", "bi", "_set", "str", "unmaskedValue", "value", "tail", "ch", "flags", "blockIter", "details", "ChangeDetails", "_block", "blockDetails", "skip", "_this2", "fromPos", "toPos", "chunkTail", "ChunksTailDetails", "bFromPos", "bToPos", "blockChunk", "input", "_", "blockIndex", "stopBefore", "si", "stop", "toBlockIndex", "_this3", "startBlockIter", "startBlockIndex", "endBlockIndex", "args", "bDetails", "pos", "accVal", "_block2", "blockStartPos", "fn", "fromBlockIter", "toBlockIter", "isSameBlock", "fromBlockStartPos", "fromBlockEndPos", "removeDetails", "cursorPos", "direction", "DIRECTION", "beginBlockData", "beginBlockOffset", "beginBlockIndex", "beginBlock", "beginBlockCursorPos", "forceDirection", "cursorAtRight", "cursorAtLeft", "searchBlockIndex", "blockIndexAtLeft", "blockAtLeft", "blockInputPos", "firstInputAtRight", "blockAtRight", "_blockInputPos", "_bi", "_block3", "_blockInputPos2", "firstFilledBlockIndexAtRight", "_bi2", "filledBlock", "_blockInputPos3", "firstFilledInputBlockIndex", "firstEmptyInputBlockIndex", "_bi3", "_block4", "_blockInputPos4", "_bi4", "_block5", "_blockInputPos5", "blockAlignedPos", "isInput", "_bi5", "_block6", "_blockInputPos6", "firstInputBlockAlignedIndex", "firstInputBlockAlignedPos", "_bi6", "_block7", "_blockInputPos7", "_bi7", "_block8", "_blockInputPos8", "_bi8", "_block9", "_blockInputPos9", "alignedPos", "name", "_this4", "indices", "gi", "Masked", "block", "IMask", "MaskedRange", "_MaskedPattern", "_inherits", "_super", "_createSuper", "_classCallCheck", "_createClass", "opts", "maxLength", "fromStr", "toStr", "sameCharsCount", "_get", "_getPrototypeOf", "str", "minstr", "maxstr", "_ref", "_ref2", "_slicedToArray", "placeholder", "num", "flags", "val", "prepStr", "ci", "nextVal", "_this$boundaries", "_this$boundaries2", "_get2", "firstNonZero", "_this$boundaries3", "_this$boundaries4", "_len", "args", "_key", "MaskedPattern", "IMask", "MaskedDate", "_MaskedPattern", "_inherits", "_super", "_createSuper", "opts", "_classCallCheck", "_createClass", "blocks", "bk", "b", "_get", "_getPrototypeOf", "_get2", "date", "_len", "args", "_key", "str", "value", "_set", "MaskedPattern", "day", "month", "year", "_str$split", "_str$split2", "_slicedToArray", "MaskedRange", "IMask", "MaskElement", "_classCallCheck", "_createClass", "start", "e", "end", "handlers", "IMask", "HTMLMaskElement", "_MaskElement", "_inherits", "_super", "_createSuper", "input", "_this", "_classCallCheck", "_createClass", "start", "end", "value", "handlers", "_this2", "event", "_this3", "handler", "MaskElement", "IMask", "HTMLContenteditableMaskElement", "_HTMLMaskElement", "_inherits", "_super", "_createSuper", "_classCallCheck", "_createClass", "root", "selection", "start", "end", "range", "value", "HTMLMaskElement", "IMask", "_excluded", "InputMask", "el", "opts", "_classCallCheck", "MaskElement", "HTMLContenteditableMaskElement", "HTMLMaskElement", "createMask", "_createClass", "mask", "IMask", "maskedClass", "masked", "MaskedDate", "str", "val", "ev", "_len", "args", "_key", "listeners", "l", "pos", "newUnmaskedValue", "newValue", "isChanged", "restOpts", "_objectWithoutProperties", "updateMask", "updateOpts", "objectIncludes", "cursorPos", "_this", "DIRECTION", "handler", "hIndex", "e", "details", "ActionDetails", "oldRawValue", "offset", "removeDirection", "MaskedEnum", "_MaskedPattern", "_inherits", "_super", "_createSuper", "_classCallCheck", "_createClass", "opts", "_get", "_getPrototypeOf", "_this", "_get2", "_len", "args", "_key", "e", "MaskedPattern", "IMask", "MaskedNumber", "_Masked", "_inherits", "_super", "_createSuper", "opts", "_classCallCheck", "_createClass", "_get", "_getPrototypeOf", "start", "midInput", "mid", "end", "escapeRegExp", "value", "parts", "str", "_get2", "_len", "args", "_key", "to", "extendOnSeparators", "count", "pos", "slice", "fromPos", "toPos", "flags", "_this$_adjustRangeWit", "_this$_adjustRangeWit2", "_slicedToArray", "ch", "prevBeforeTailValue", "prevBeforeTailSeparatorsCount", "appendDetails", "beforeTailValue", "beforeTailSeparatorsCount", "searchFrom", "separatorPos", "from", "separatorAroundFromPos", "separatorAroundToPos", "_this$_adjustRangeWit3", "_this$_adjustRangeWit4", "valueBeforePos", "valueAfterPos", "ChangeDetails", "cursorPos", "direction", "DIRECTION", "separatorAtLeftPos", "separatorAtLeftEndPos", "separatorAtRightPos", "regexp", "valid", "number", "validnum", "formatted", "match", "sign", "zeros", "num", "unmaskedValue", "_set", "n", "Masked", "IMask", "MaskedFunction", "_Masked", "_inherits", "_super", "_createSuper", "_classCallCheck", "_createClass", "opts", "_get", "_getPrototypeOf", "Masked", "IMask", "_excluded", "MaskedDynamic", "_Masked", "_inherits", "_super", "_createSuper", "opts", "_this", "_classCallCheck", "_createClass", "_get", "_getPrototypeOf", "m", "createMask", "ch", "flags", "details", "appended", "prevValueBeforeTail", "inputValue", "insertValue", "tailValue", "prevMask", "ChangeDetails", "prevMaskState", "d", "_get2", "_this$currentMask", "_len", "args", "_key", "value", "_set", "unmaskedValue", "_this$currentMask2", "state", "compiledMasks", "currentMaskRef", "currentMask", "maskedState", "_objectWithoutProperties", "mi", "_this$currentMask3", "_this$currentMask4", "_get3", "_len2", "_key2", "_this$currentMask5", "_get4", "_len3", "_key3", "overwrite", "Masked", "masked", "inputs", "index", "weight", "i1", "i2", "IMask", "PIPE_TYPE", "createPipe", "mask", "from", "to", "masked", "createMask", "value", "m", "pipe", "_len", "pipeArgs", "_key", "IMask", "IMask", "imask_controller_default", "Controller", "element", "IMask", "__publicField", "inline_edit_controller_default", "Controller", "useClickOutside", "__publicField", "modal_controller_default", "Controller", "removeExtraBackdrops", "element", "event", "turbo_es2017_esm_exports", "preferences_controller_default", "Controller", "event", "key", "value", "get", "element", "target", "__publicField", "radio_btn_controller_default", "Controller", "child", "selector", "radioBtnGroup", "__publicField", "radio_btn_group_controller_default", "Controller", "radioBtn", "__publicField", "class_events_controller_default", "Controller", "frame", "program_id", "__publicField", "class_registrations_controller_default", "Controller", "__publicField", "event_type_toggler_controller_default", "Controller", "event", "selected", "frame", "__publicField", "hovercard_controller_default", "Controller", "loadingHovercard", "r", "html", "newHovercard", "fragment", "__publicField", "MembershipTemplatesController", "Controller", "__publicField", "mini_calendar_controller_default", "Controller", "event", "date", "pagination_controller_default", "Controller", "response", "data", "that", "onScroll", "scroll", "__publicField", "PrettyCheckboxController", "Controller", "e", "target", "input", "icon", "i", "__publicField", "programs_controller_default", "Controller", "frame", "program_id", "__publicField", "grayOutTheNone", "element", "previewBeltGraphic", "$form", "path", "token", "html", "xhr", "data", "formChanged", "element", "$form", "html", "previewBeltGraphic", "ranks_controller_default", "Controller", "emblem", "dropdown", "grayOutTheNone", "that", "checkbox", "__publicField", "RecurringClassesController", "Controller", "event", "classNameOptions", "classNameOption", "__publicField", "StudentsFilterController", "Controller", "url", "frame", "turbo_es2017_esm_exports", "targets", "ids", "target", "__publicField", "select2_controller_default", "Controller", "placeholderText", "state", "searchType", "markup", "params", "query", "$state", "image_data", "icon", "component_default", "Controller", "maskOptions", "IMask", "ToggleClassController", "Controller", "eventId", "__publicField", "programs_and_ranks_step_controller_default", "Controller", "target", "rankDropdown", "sel", "allowEnable", "hiddenRank", "__publicField", "calculate_membership_totals_controller_default", "Controller", "params", "target", "parsedTemplateId", "registrationFeeInput", "registrationFeeContainer", "taxExemptTarget", "endDateOutlet", "selectedDate", "newDate", "intervalDurationElement", "intervalDuration", "endDate", "membershipDueDate", "templateId", "value", "taxRate", "registrationFee", "registrationFeeTaxRate", "taxAmount", "registrationFeeTaxAmount", "total", "taxRateElement", "amountElement", "amount", "beginningOfDay", "valueDate", "outlet", "date", "interval", "unit", "momentDate", "el", "__publicField", "toggle_disable_controller_default", "Controller", "shouldFocus", "disablee", "__publicField", "elementIsFlatpickr", "element", "toggle_form_submit_controller_default", "Controller", "el", "group", "target", "fieldset", "checkboxes", "checkbox", "elementIsVisible", "elementIsFlatpickr", "__publicField", "import_tom_select", "tom_select_controller_default", "Controller", "_a", "TomSelect", "__spreadValues", "value", "relativeTo", "dropdown", "relativeToTop", "relativeToLeft", "tsControl", "controlTop", "controlLeft", "controlWidth", "controlHeight", "selectedValue", "__publicField", "tooltip_controller_default", "Controller", "text", "url_field_controller_default", "Controller", "useClickOutside", "replace_on_change_controller_default", "Controller", "input", "frame", "src", "url", "params", "__publicField", "payment_form_controller_default", "Controller", "__publicField", "lazy_image_controller_default", "Controller", "response", "imageBlob", "url", "src", "setCookie", "name", "value", "expires", "getCookie", "c", "key", "v", "pwa_controller_default", "Controller", "setCookie", "__async", "outcome", "target", "event", "element", "animation", "today", "getCookie", "__publicField", "beacon_controller_default", "Controller", "user_agent", "mobile", "post", "__publicField", "HOOKS", "defaults", "err", "givenDate", "date", "week1", "english", "nth", "s", "default_default", "pad", "number", "length", "int", "bool", "debounce", "fn", "wait", "t", "arrayify", "obj", "toggleClass", "elem", "className", "bool", "createElement", "tag", "content", "e", "clearNode", "node", "findParent", "condition", "createNumberInput", "inputClassName", "opts", "wrapper", "numInput", "arrowUp", "arrowDown", "key", "getEventTarget", "event", "error", "doNothing", "monthToStr", "monthNumber", "shorthand", "locale", "revFormat", "dateObj", "monthName", "hour", "day", "amPM", "int", "shortMonth", "seconds", "_", "unixSeconds", "weekNum", "weekNumber", "date", "year", "ISODate", "minutes", "month", "unixMillSeconds", "tokenRegex", "formats", "options", "pad", "createDateFormatter", "config", "defaults", "l10n", "english", "isMobile", "dateObj", "frmt", "overrideLocale", "locale", "c", "i", "arr", "formats", "createDateParser", "date", "givenFormat", "timeless", "customLocale", "parsedDate", "dateOrig", "format", "datestr", "matched", "ops", "matchIndex", "regexStr", "token", "isBackSlash", "escaped", "tokenRegex", "match", "revFormat", "fn", "val", "compareDates", "date1", "date2", "isBetween", "ts", "ts1", "ts2", "duration", "getDefaultHours", "config", "hours", "minutes", "seconds", "minHour", "minMinutes", "minSeconds", "maxHr", "maxMinutes", "target", "args", "source", "key", "DEBOUNCED_CHANGE_MS", "FlatpickrInstance", "element", "instanceConfig", "self", "defaults", "flatpickr", "default_default", "createDateParser", "bind", "setHoursFromDate", "positionCalendar", "changeMonth", "changeYear", "clear", "close", "createElement", "destroy", "isEnabled", "jumpToDate", "open", "redraw", "set", "setDate", "toggle", "setupHelperFunctions", "month", "yr", "init", "parseConfig", "setupLocale", "setupInputs", "setupDates", "build", "bindEvents", "updateValue", "setCalendarWidth", "isSafari", "triggerEvent", "bindToInstance", "fn", "config", "daysWidth", "updateTime", "e", "defaultDate", "compareDates", "getDefaultHours", "timeWrapper", "prevValue", "setHoursFromInputs", "ampm2military", "hour", "amPM", "int", "military2ampm", "hours", "minutes", "seconds", "limitMinHours", "maxTime", "minTime", "setHours", "dateObj", "date", "pad", "onYearInput", "event", "eventTarget", "getEventTarget", "year", "handler", "options", "ev", "el", "triggerChange", "evt", "setupMobile", "debouncedResize", "debounce", "onResize", "onMouseOver", "onKeyDown", "documentClick", "onMonthNavClick", "selectDate", "selText", "timeIncrement", "onBlur", "jumpDate", "jumpTo", "oldYear", "oldMonth", "buildMonthSwitch", "incrementNumInput", "delta", "inputElem", "target", "input", "createEvent", "fragment", "buildMonthNav", "weekWrapper", "weekNumbers", "buildWeeks", "buildWeekdays", "buildDays", "buildTime", "toggleClass", "customAppend", "wrapper", "createDay", "className", "dayNumber", "i", "dateIsEnabled", "dayElement", "isDateSelected", "isDateInRange", "focusOnDayElem", "targetNode", "getFirstAvailableDay", "startMonth", "endMonth", "m", "startIndex", "endIndex", "c", "getNextAvailableDay", "current", "givenMonth", "loopDelta", "numMonthDays", "focusOnDay", "offset", "dayFocused", "isInView", "startElem", "buildMonthDays", "firstOfMonth", "prevMonthDays", "daysInMonth", "days", "isMultiMonth", "prevMonthDayClass", "nextMonthDayClass", "dayIndex", "dayNum", "dayContainer", "clearNode", "frag", "d", "shouldBuildMonth", "monthToStr", "buildMonth", "container", "monthNavFragment", "monthElement", "selectedMonth", "yearInput", "createNumberInput", "yearElement", "currentMonth", "buildMonths", "bool", "updateNavigationCurrentMonth", "separator", "hourInput", "minuteInput", "secondInput", "updateWeekdays", "firstDayOfWeek", "weekdays", "value", "isOffset", "triggerChangeEvent", "toInitial", "k", "_", "isCalendarElem", "elem", "isCalendarElement", "isInput", "lostFocus", "isIgnored", "newYear", "newYearNum", "isNewYear", "timeless", "_a", "dateToCheck", "array", "parsed", "allowInput", "allowKeydown", "allowInlineKeydown", "isTimeObj", "focusAndClose", "elems", "x", "hoverDate", "initialDate", "rangeStartDate", "rangeEndDate", "containsDisabled", "minRange", "maxRange", "t", "duration", "l", "dayElem", "timestamp", "outOfRange", "isBetween", "positionElement", "wasOpen", "minMaxDateSetter", "type", "inverseDateObj", "boolOpts", "userConfig", "formats", "dates", "parseDateRules", "timeMode", "defaultDateFormat", "defaultAltFormat", "minMaxTimeSetter", "val", "HOOKS", "hook", "arrayify", "pluginConf", "key", "getInputElem", "tokenRegex", "createDateFormatter", "customPositionElement", "calendarHeight", "acc", "child", "calendarWidth", "configPos", "configPosVertical", "configPosHorizontal", "inputBounds", "distanceFromBottom", "showOnTop", "top", "left", "isCenter", "isRight", "right", "rightMost", "centerMost", "doc", "getDocumentStyleSheet", "bodyWidth", "centerLeft", "centerBefore", "centerAfter", "centerIndex", "centerStyle", "editableSheet", "sheet", "err", "createStyleSheet", "style", "isSelectable", "day", "findParent", "selectedDate", "shouldChangeMonth", "selectedIndex", "a", "b", "single", "range", "CALLBACKS", "option", "setSelectedDate", "inputDate", "format", "arr", "rule", "preloadedDate", "inputType", "data", "hooks", "name", "getDateStr", "dObj", "isPrevMonth", "isNextMonth", "isKeyDown", "min", "max", "step", "curValue", "newValue", "isHourElem", "isMinuteElem", "_flatpickr", "nodeList", "nodes", "instances", "node", "selector", "l10n", "esm_default", "camelize", "value", "replace", "_", "char", "toUpperCase", "capitalize", "charAt", "slice", "dasherize", "toLowerCase", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "Array", "from", "reduce", "values", "getOwnStaticArrayValues", "forEach", "name", "add", "Set", "readInheritableStaticObjectPairs", "pairs", "push", "getOwnStaticObjectPairs", "Object", "getPrototypeOf", "reverse", "definition", "isArray", "keys", "map", "key", "extend", "extendWithReflect", "extended", "Reflect", "construct", "arguments", "new", "prototype", "create", "setPrototypeOf", "testReflectExtension", "b", "a", "call", "error", "ClassPropertiesBlessing", "properties", "classDefinition", "assign", "propertiesForClassDefinition", "get", "classes", "has", "attribute", "getAttributeName", "Error", "getAll", "TargetPropertiesBlessing", "targetDefinition", "propertiesForTargetDefinition", "target", "targets", "find", "identifier", "findAll", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "valueDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "attributeName", "data", "getAttributeNameForKey", "propertiesForValueDefinitionPair", "reader", "read", "writer", "write", "defaultValue", "set", "undefined", "delete", "hasCustomDefaultValue", "token", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "Boolean", "Number", "String", "parseValueTypeDefault", "toString", "parseValueTypeObject", "typeObject", "typeFromObject", "type", "defaultValueType", "default", "parseValueTypeDefinition", "typeFromDefaultValue", "typeFromConstant", "defaultValueForDefinition", "defaultValuesByType", "readers", "writers", "array", "boolean", "number", "object", "string", "JSON", "parse", "TypeError", "writeString", "writeJSON", "stringify", "Controller", "context", "shouldLoad", "application", "scope", "element", "initialize", "connect", "disconnect", "dispatch", "eventName", "detail", "prefix", "bubbles", "cancelable", "event", "CustomEvent", "dispatchEvent", "blessings", "kebabCase", "booleanOptions", "stringOptions", "numberOptions", "arrayOptions", "arrayOrStringOptions", "dateOptions", "dateFormats", "options", "date", "arrayOrString", "events", "elements", "mapping", "strftimeRegex", "RegExp", "join", "convertDateFormat", "format", "match", "StimulusFlatpickr", "config", "_initializeEvents", "_initializeOptions", "_initializeDateFormats", "fp", "flatpickr", "flatpickrElement", "_objectSpread2", "_initializeElements", "inputTarget", "destroy", "hook", "bind", "optionType", "option", "optionKebab", "_handleDaysOfWeek", "disableDaysOfWeek", "_validateDaysOfWeek", "disable", "_disable", "enableDaysOfWeek", "enable", "_enable", "days", "day", "parseInt", "console", "includes", "getDay", "dateFormat", "val", "e", "hasInstanceTarget", "instanceTarget", "import_monthSelect", "flatpickr_controller_default", "index_m_default", "monthSelectPlugin", "__publicField", "isObject", "obj", "extend", "target", "src", "key", "ssrDocument", "getDocument", "doc", "ssrWindow", "callback", "id", "getWindow", "win", "makeReactive", "obj", "proto", "value", "Dom7", "items", "arrayFlat", "arr", "res", "el", "arrayFilter", "callback", "arrayUnique", "uniqueArray", "i", "qsa", "selector", "context", "a", "res", "$", "window", "getWindow", "document", "getDocument", "arr", "Dom7", "html", "toCreate", "tempParent", "i", "arrayUnique", "addClass", "classes", "classNames", "arrayFlat", "c", "el", "removeClass", "toggleClass", "className", "hasClass", "arrayFilter", "attr", "attrs", "value", "attrName", "removeAttr", "transform", "i", "transition", "duration", "on", "args", "eventType", "targetSelector", "listener", "capture", "handleLiveEvent", "e", "target", "eventData", "$", "parents", "k", "handleEvent", "events", "j", "el", "event", "off", "handlers", "handler", "trigger", "args", "window", "getWindow", "events", "eventData", "event", "j", "el", "evt", "data", "dataIndex", "transitionEnd", "callback", "dom", "fireCallBack", "e", "outerWidth", "includeMargins", "styles", "outerHeight", "includeMargins", "styles", "offset", "window", "getWindow", "document", "getDocument", "el", "box", "body", "clientTop", "clientLeft", "scrollTop", "scrollLeft", "styles", "window", "getWindow", "css", "props", "value", "i", "prop", "each", "callback", "el", "index", "filter", "result", "arrayFilter", "$", "html", "text", "is", "selector", "document", "getDocument", "compareWith", "Dom7", "child", "eq", "length", "returnIndex", "append", "els", "newChild", "k", "tempDiv", "j", "prepend", "newChild", "document", "getDocument", "i", "j", "tempDiv", "Dom7", "next", "selector", "$", "nextAll", "nextEls", "el", "prev", "prevAll", "prevEls", "parent", "selector", "parents", "i", "$", "closest", "find", "foundElements", "found", "j", "children", "childNodes", "remove", "noTrigger", "shortcut", "name", "eventHandler", "args", "i", "$", "click", "blur", "focus", "focusin", "focusout", "keyup", "keydown", "keypress", "submit", "change", "mousedown", "mousemove", "mouseup", "mouseenter", "mouseleave", "mouseout", "mouseover", "touchstart", "touchend", "touchmove", "resize", "scroll", "Methods", "addClass", "removeClass", "hasClass", "toggleClass", "attr", "removeAttr", "transform", "transition", "on", "off", "trigger", "transitionEnd", "outerWidth", "outerHeight", "styles", "offset", "css", "each", "html", "text", "is", "index", "eq", "append", "prepend", "next", "nextAll", "prev", "prevAll", "parent", "parents", "closest", "find", "children", "filter", "remove", "methodName", "$", "dom_default", "deleteProps", "obj", "object", "key", "e", "nextTick", "callback", "delay", "now", "getComputedStyle", "el", "window", "getWindow", "style", "getTranslate", "axis", "matrix", "curTransform", "transformMatrix", "curStyle", "isObject", "o", "isNode", "node", "extend", "args", "to", "noExtend", "i", "nextSource", "keysArray", "nextIndex", "len", "nextKey", "desc", "setCSSProperty", "varName", "varValue", "animateCSSModeScroll", "swiper", "targetPosition", "side", "startPosition", "startTime", "time", "duration", "dir", "isOutOfBound", "current", "target", "animate", "progress", "easeProgress", "currentPosition", "support", "calcSupport", "window", "getWindow", "document", "getDocument", "supportsPassive", "opts", "e", "getSupport", "deviceCached", "calcDevice", "userAgent", "support", "getSupport", "window", "getWindow", "platform", "ua", "device", "screenWidth", "screenHeight", "android", "ipad", "ipod", "iphone", "windows", "macos", "iPadScreens", "getDevice", "overrides", "browser", "calcBrowser", "window", "getWindow", "isSafari", "ua", "getBrowser", "Resize", "swiper", "on", "emit", "window", "getWindow", "observer", "resizeHandler", "createObserver", "entries", "width", "height", "newWidth", "newHeight", "contentBoxSize", "contentRect", "target", "removeObserver", "orientationChangeHandler", "Observer", "swiper", "extendParams", "on", "emit", "observers", "window", "getWindow", "attach", "target", "options", "ObserverFunc", "observer", "mutations", "observerUpdate", "init", "containerParents", "i", "destroy", "events_emitter_default", "events", "handler", "priority", "self", "method", "event", "onceHandler", "args", "index", "eventHandler", "data", "context", "updateSize", "swiper", "width", "height", "$el", "updateSlides", "swiper", "getDirectionLabel", "property", "getDirectionPropertyValue", "node", "label", "params", "$wrapperEl", "swiperSize", "rtl", "wrongRTL", "isVirtual", "previousSlidesLength", "slides", "slidesLength", "snapGrid", "slidesGrid", "slidesSizesGrid", "offsetBefore", "offsetAfter", "previousSnapGridLength", "previousSlidesGridLength", "spaceBetween", "slidePosition", "prevSlideSize", "index", "setCSSProperty", "gridEnabled", "slideSize", "shouldResetSlideSize", "key", "i", "slide", "slideStyles", "currentTransform", "currentWebKitTransform", "width", "paddingLeft", "paddingRight", "marginLeft", "marginRight", "boxSizing", "clientWidth", "offsetWidth", "newSlidesGrid", "slidesGridItem", "_", "slideIndex", "allSlidesSize", "slideSizeValue", "maxSnap", "snap", "allSlidesOffset", "snapIndex", "addToSnapGrid", "addToSlidesGrid", "v", "updateAutoHeight", "speed", "swiper", "activeSlides", "isVirtual", "newHeight", "i", "getSlideByIndex", "index", "el", "slide", "height", "updateSlidesOffset", "swiper", "slides", "i", "updateSlidesProgress", "translate", "swiper", "params", "slides", "rtl", "snapGrid", "offsetCenter", "i", "slide", "slideOffset", "slideProgress", "originalSlideProgress", "slideBefore", "slideAfter", "dom_default", "updateProgress", "translate", "swiper", "multiplier", "params", "translatesDiff", "progress", "isBeginning", "isEnd", "wasBeginning", "wasEnd", "updateSlidesClasses", "swiper", "slides", "params", "$wrapperEl", "activeIndex", "realIndex", "isVirtual", "activeSlide", "nextSlide", "prevSlide", "updateActiveIndex", "newActiveIndex", "swiper", "translate", "slidesGrid", "snapGrid", "params", "previousIndex", "previousRealIndex", "previousSnapIndex", "activeIndex", "snapIndex", "i", "skip", "realIndex", "updateClickedSlide", "swiper", "params", "slide", "dom_default", "slideFound", "slideIndex", "i", "update_default", "updateSize", "updateSlides", "updateAutoHeight", "updateSlidesOffset", "updateSlidesProgress", "updateProgress", "updateSlidesClasses", "updateActiveIndex", "updateClickedSlide", "getSwiperTranslate", "axis", "swiper", "params", "rtl", "translate", "$wrapperEl", "currentTranslate", "getTranslate", "setTranslate", "translate", "byController", "swiper", "rtl", "params", "$wrapperEl", "wrapperEl", "progress", "x", "y", "z", "newProgress", "translatesDiff", "minTranslate", "maxTranslate", "translateTo", "translate", "speed", "runCallbacks", "translateBounds", "internal", "swiper", "params", "wrapperEl", "minTranslate", "maxTranslate", "newTranslate", "isH", "animateCSSModeScroll", "e", "translate_default", "getSwiperTranslate", "setTranslate", "minTranslate", "maxTranslate", "translateTo", "setTransition", "duration", "byController", "swiper", "transitionEmit", "swiper", "runCallbacks", "direction", "step", "activeIndex", "previousIndex", "dir", "transitionStart", "runCallbacks", "direction", "swiper", "params", "transitionEmit", "transitionEnd", "runCallbacks", "direction", "swiper", "params", "transitionEmit", "transition_default", "setTransition", "transitionStart", "transitionEnd", "slideTo", "index", "speed", "runCallbacks", "internal", "initial", "indexAsNumber", "swiper", "slideIndex", "params", "snapGrid", "slidesGrid", "previousIndex", "activeIndex", "rtl", "wrapperEl", "enabled", "skip", "snapIndex", "translate", "i", "normalizedTranslate", "normalizedGrid", "normalizedGridNext", "direction", "isH", "t", "isVirtual", "animateCSSModeScroll", "e", "slideToLoop", "index", "speed", "runCallbacks", "internal", "swiper", "newIndex", "slideNext", "speed", "runCallbacks", "internal", "swiper", "animating", "enabled", "params", "perGroup", "increment", "slidePrev", "speed", "runCallbacks", "internal", "swiper", "params", "animating", "snapGrid", "slidesGrid", "rtlTranslate", "enabled", "translate", "normalize", "val", "normalizedTranslate", "normalizedSnapGrid", "prevSnap", "prevSnapIndex", "snap", "snapIndex", "prevIndex", "slideReset", "speed", "runCallbacks", "internal", "swiper", "slideToClosest", "speed", "runCallbacks", "internal", "threshold", "swiper", "index", "skip", "snapIndex", "translate", "currentSnap", "nextSnap", "prevSnap", "slideToClickedSlide", "swiper", "params", "$wrapperEl", "slidesPerView", "slideToIndex", "realIndex", "dom_default", "nextTick", "slide_default", "slideTo", "slideToLoop", "slideNext", "slidePrev", "slideReset", "slideToClosest", "slideToClickedSlide", "loopCreate", "swiper", "document", "getDocument", "params", "$wrapperEl", "$selector", "dom_default", "slides", "blankSlidesNum", "i", "blankNode", "prependSlides", "appendSlides", "el", "index", "slide", "loopFix", "swiper", "activeIndex", "slides", "loopedSlides", "allowSlidePrev", "allowSlideNext", "snapGrid", "rtl", "newIndex", "diff", "loopDestroy", "swiper", "$wrapperEl", "params", "slides", "loop_default", "loopCreate", "loopFix", "loopDestroy", "setGrabCursor", "moving", "swiper", "el", "unsetGrabCursor", "swiper", "grab_cursor_default", "setGrabCursor", "unsetGrabCursor", "closestElement", "selector", "base", "__closestFrom", "el", "getDocument", "getWindow", "onTouchStart", "event", "swiper", "document", "window", "data", "params", "touches", "enabled", "e", "$targetEl", "dom_default", "noSwipingSelector", "isTargetShadow", "startX", "startY", "edgeSwipeDetection", "edgeSwipeThreshold", "now", "preventDefault", "shouldPreventDefault", "onTouchMove", "event", "document", "getDocument", "swiper", "data", "params", "touches", "rtl", "enabled", "e", "targetTouch", "pageX", "pageY", "now", "dom_default", "diffX", "diffY", "__pow", "touchAngle", "diff", "disableParentSwiper", "resistanceRatio", "onTouchEnd", "event", "swiper", "data", "params", "touches", "rtl", "slidesGrid", "enabled", "e", "touchEndTime", "now", "timeDiff", "pathTree", "nextTick", "currentPos", "stopIndex", "groupSize", "i", "increment", "ratio", "onResize", "swiper", "params", "el", "allowSlideNext", "allowSlidePrev", "snapGrid", "onClick", "swiper", "onScroll", "swiper", "wrapperEl", "rtlTranslate", "enabled", "newProgress", "translatesDiff", "dummyEventAttached", "dummyEventListener", "events", "swiper", "method", "document", "getDocument", "params", "touchEvents", "el", "wrapperEl", "device", "support", "capture", "domMethod", "swiperMethod", "passiveListener", "onResize", "attachEvents", "onTouchStart", "onTouchMove", "onTouchEnd", "onScroll", "onClick", "detachEvents", "events_default", "isGridEnabled", "swiper", "params", "setBreakpoint", "activeIndex", "initialized", "loopedSlides", "$el", "breakpoints", "breakpoint", "breakpointParams", "wasMultiRow", "isMultiRow", "wasEnabled", "directionChanged", "needsReLoop", "extend", "isEnabled", "getBreakpoint", "breakpoints", "base", "containerEl", "breakpoint", "window", "getWindow", "currentHeight", "points", "point", "minRatio", "b", "i", "value", "breakpoints_default", "setBreakpoint", "getBreakpoint", "prepareClasses", "entries", "prefix", "resultClasses", "item", "classNames", "addClasses", "swiper", "params", "rtl", "$el", "device", "support", "suffixes", "removeClasses", "swiper", "$el", "classNames", "classes_default", "addClasses", "removeClasses", "loadImage", "imageEl", "src", "srcset", "sizes", "checkForComplete", "callback", "window", "getWindow", "image", "onReady", "dom_default", "preloadImages", "swiper", "onReady", "i", "imageEl", "images_default", "loadImage", "preloadImages", "checkOverflow", "swiper", "wasLocked", "params", "slidesOffsetBefore", "lastSlideIndex", "lastSlideRightEdge", "check_overflow_default", "defaults_default", "moduleExtendParams", "params", "allModulesParams", "obj", "moduleParamName", "moduleParams", "extend", "prototypes", "events_emitter_default", "update_default", "translate_default", "transition_default", "slide_default", "loop_default", "grab_cursor_default", "events_default", "breakpoints_default", "check_overflow_default", "classes_default", "images_default", "extendedDefaults", "Swiper", "args", "el", "params", "extend", "dom_default", "swipers", "containerEl", "newParams", "swiper", "getSupport", "getDevice", "getBrowser", "allModulesParams", "mod", "moduleExtendParams", "swiperParams", "defaults_default", "eventName", "touch", "desktop", "now", "progress", "speed", "min", "current", "cls", "className", "slideEl", "updates", "classNames", "view", "exact", "slides", "slidesGrid", "slidesSizesGrid", "swiperSize", "activeIndex", "spv", "slideSize", "breakLoop", "i", "snapGrid", "setTranslate", "translateValue", "newTranslate", "translated", "newDirection", "needUpdate", "currentDirection", "$el", "getWrapperSelector", "$wrapperEl", "res", "options", "wrapper", "getDocument", "deleteInstance", "cleanStyles", "deleteProps", "newDefaults", "modules", "module", "m", "prototypeGroup", "protoMethod", "Resize", "Observer", "core_default", "Virtual", "swiper", "extendParams", "on", "cssModeTimeout", "renderSlide", "slide", "index", "params", "$slideEl", "dom_default", "update", "force", "slidesPerView", "slidesPerGroup", "centeredSlides", "addSlidesBefore", "addSlidesAfter", "previousFrom", "previousTo", "slides", "previousSlidesGrid", "previousOffset", "activeIndex", "offsetProp", "slidesAfter", "slidesBefore", "from", "to", "offset", "onRendered", "slidesToRender", "i", "prependIndexes", "appendIndexes", "a", "b", "appendSlide", "prependSlide", "newActiveIndex", "numberOfNewSlides", "cache", "newCache", "cachedIndex", "$cachedEl", "cachedElIndex", "removeSlide", "slidesIndexes", "removeAllSlides", "setCSSProperty", "Keyboard", "swiper", "extendParams", "on", "emit", "document", "getDocument", "window", "getWindow", "handle", "event", "rtl", "e", "kc", "pageUpDown", "isPageUp", "isPageDown", "isArrowLeft", "isArrowRight", "isArrowUp", "isArrowDown", "inView", "$el", "swiperWidth", "swiperHeight", "windowWidth", "windowHeight", "swiperOffset", "swiperCoord", "i", "point", "enable", "dom_default", "disable", "Mousewheel", "swiper", "extendParams", "on", "emit", "window", "getWindow", "timeout", "lastScrollTime", "now", "lastEventBeforeSnap", "recentWheelEvents", "normalize", "e", "sX", "sY", "pX", "pY", "handleMouseEnter", "handleMouseLeave", "animateSlider", "newEvent", "releaseScroll", "params", "handle", "event", "disableParentSwiper", "target", "dom_default", "delta", "rtlFactor", "data", "positions", "prevEvent", "ignoreWheelEvents", "position", "wasBeginning", "wasEnd", "firstEvent", "snapToThreshold", "nextTick", "events", "method", "enable", "disable", "createElementIfNotDefined", "swiper", "originalParams", "params", "checkProps", "document", "getDocument", "key", "element", "Navigation", "swiper", "extendParams", "on", "emit", "getEl", "el", "$el", "dom_default", "toggleEl", "disabled", "params", "update", "$nextEl", "$prevEl", "onPrevClick", "e", "onNextClick", "init", "createElementIfNotDefined", "destroy", "_s", "targetEl", "isHidden", "classesToSelector", "classes", "Pagination", "swiper", "extendParams", "on", "emit", "pfx", "number", "bulletSize", "dynamicBulletIndex", "isPaginationDisabled", "setSideBullets", "$bulletEl", "position", "bulletActiveClass", "update", "rtl", "params", "slidesLength", "$el", "current", "total", "bullets", "firstIndex", "lastIndex", "midIndex", "suffix", "bullet", "$bullet", "dom_default", "bulletIndex", "$firstDisplayedBullet", "$lastDisplayedBullet", "i", "dynamicBulletsLength", "bulletsOffset", "offsetProp", "classesToSelector", "progressbarDirection", "scale", "scaleX", "scaleY", "render", "paginationHTML", "numberOfBullets", "init", "createElementIfNotDefined", "el", "e", "index", "destroy", "_s", "targetEl", "isHidden", "Scrollbar", "swiper", "extendParams", "on", "emit", "document", "getDocument", "isTouched", "timeout", "dragTimeout", "dragStartPos", "dragSize", "trackSize", "divider", "setTranslate", "scrollbar", "rtl", "progress", "$dragEl", "$el", "params", "newSize", "newPos", "setTransition", "duration", "updateSize", "getPointerPosition", "e", "setDragPosition", "positionRatio", "position", "onDragStart", "$wrapperEl", "onDragMove", "onDragEnd", "nextTick", "events", "method", "touchEventsTouch", "touchEventsDesktop", "support", "target", "activeListener", "passiveListener", "eventMethod", "enableDraggable", "disableDraggable", "init", "$swiperEl", "createElementIfNotDefined", "dom_default", "destroy", "_s", "Parallax", "swiper", "extendParams", "on", "setTransform", "el", "progress", "rtl", "$el", "dom_default", "rtlFactor", "p", "x", "y", "scale", "opacity", "currentOpacity", "currentScale", "setTranslate", "slides", "snapGrid", "slideEl", "slideIndex", "slideProgress", "setTransition", "duration", "parallaxEl", "$parallaxEl", "parallaxDuration", "_swiper", "Zoom", "swiper", "extendParams", "on", "emit", "window", "getWindow", "currentScale", "isScaling", "gesturesEnabled", "fakeGestureTouched", "fakeGestureMoved", "gesture", "image", "velocity", "scale", "value", "imageEl", "slideEl", "getDistanceBetweenTouches", "e", "x1", "y1", "x2", "y2", "__pow", "onGestureStart", "support", "params", "dom_default", "onGestureChange", "zoom", "onGestureEnd", "device", "onTouchStart", "onTouchMove", "getTranslate", "scaledWidth", "scaledHeight", "onTouchEnd", "momentumDurationX", "momentumDurationY", "momentumDistanceX", "newPositionX", "momentumDistanceY", "newPositionY", "momentumDuration", "onTransitionEnd", "zoomIn", "touchX", "touchY", "offsetX", "offsetY", "diffX", "diffY", "translateX", "translateY", "imageWidth", "imageHeight", "translateMinX", "translateMinY", "translateMaxX", "translateMaxY", "slideWidth", "slideHeight", "zoomOut", "zoomToggle", "getListeners", "passiveListener", "activeListenerWithCapture", "getSlideSelector", "toggleGestures", "method", "slideSelector", "enableGestures", "disableGestures", "enable", "disable", "_s", "Lazy", "swiper", "extendParams", "on", "emit", "scrollHandlerAttached", "initialImageLoaded", "loadInSlide", "index", "loadInDuplicate", "params", "$slideEl", "$images", "imageEl", "$imageEl", "dom_default", "background", "src", "srcset", "sizes", "$pictureEl", "sourceEl", "$source", "slideOriginalIndex", "originalSlide", "duplicatedSlide", "load", "$wrapperEl", "swiperParams", "slides", "activeIndex", "isVirtual", "slidesPerView", "slideExist", "slideIndex", "slideEl", "i", "amount", "spv", "maxIndex", "minIndex", "nextSlide", "prevSlide", "checkInViewOnLoad", "window", "getWindow", "$scrollElement", "isWindow", "scrollElementWidth", "scrollElementHeight", "swiperOffset", "rtl", "inView", "swiperCoord", "point", "passiveListener", "lazy", "cssMode", "watchSlidesProgress", "touchReleaseOnEdges", "resistanceRatio", "Controller", "swiper", "extendParams", "on", "LinearSpline", "x", "y", "binarySearch", "maxIndex", "minIndex", "guess", "array", "val", "i1", "i3", "x2", "getInterpolateFunction", "c", "setTranslate", "_t", "byController", "controlled", "multiplier", "controlledTranslate", "Swiper", "setControlledTranslate", "translate", "i", "setTransition", "duration", "setControlledTransition", "nextTick", "removeSpline", "_s", "A11y", "swiper", "extendParams", "on", "liveRegion", "notify", "message", "notification", "getRandomNumber", "size", "randomChar", "makeElFocusable", "$el", "makeElNotFocusable", "addElRole", "role", "addElRoleDescription", "description", "addElControls", "controls", "addElLabel", "label", "addElId", "id", "addElLive", "live", "disableEl", "enableEl", "onEnterOrSpaceKey", "e", "params", "$targetEl", "dom_default", "classesToSelector", "updateNavigation", "$nextEl", "$prevEl", "hasPagination", "hasClickablePagination", "updatePagination", "bulletEl", "$bulletEl", "initNavEl", "wrapperId", "init", "$containerEl", "$wrapperEl", "slidesLength", "el", "slideEl", "index", "$slideEl", "slideIndex", "ariaLabelMessage", "destroy", "History", "swiper", "extendParams", "on", "initialized", "paths", "slugify", "text", "getPathValues", "urlOverride", "window", "getWindow", "location", "pathArray", "part", "total", "key", "value", "setHistory", "index", "slide", "root", "currentState", "scrollToSlide", "speed", "runCallbacks", "i", "length", "setHistoryPopState", "init", "destroy", "HashNavigation", "swiper", "extendParams", "emit", "on", "initialized", "document", "getDocument", "window", "getWindow", "onHashChange", "newHash", "activeSlideHash", "newIndex", "setHash", "slide", "hash", "init", "i", "length", "index", "dom_default", "destroy", "Autoplay", "swiper", "extendParams", "on", "emit", "timeout", "run", "$activeSlideEl", "delay", "nextTick", "autoplayResult", "stop", "start", "pause", "speed", "event", "onTransitionEnd", "onVisibilityChange", "document", "getDocument", "e", "onMouseEnter", "onMouseLeave", "attachMouseEvents", "detachMouseEvents", "_s", "internal", "Thumb", "swiper", "extendParams", "on", "initialized", "swiperCreated", "onThumbClick", "thumbsSwiper", "clickedIndex", "clickedSlide", "dom_default", "slideToIndex", "currentIndex", "prevIndex", "nextIndex", "init", "thumbsParams", "SwiperClass", "isObject", "thumbsSwiperParams", "update", "initial", "slidesPerView", "autoScrollOffset", "useOffset", "currentThumbsIndex", "newThumbsIndex", "direction", "prevThumbsIndex", "nextThumbsIndex", "thumbsToActivate", "thumbActiveClass", "i", "thumbs", "_s", "duration", "freeMode", "swiper", "extendParams", "emit", "once", "onTouchMove", "data", "touches", "now", "onTouchEnd", "currentPos", "params", "$wrapperEl", "rtl", "snapGrid", "timeDiff", "lastMoveEvent", "velocityEvent", "distance", "time", "momentumDuration", "momentumDistance", "newPosition", "doBounce", "afterBouncePosition", "bounceAmount", "needsLoopFix", "nextSlide", "j", "moveDistance", "currentSlideSize", "Grid", "swiper", "extendParams", "slidesNumberEvenToRows", "slidesPerRow", "numFullColumns", "initSlides", "slidesLength", "slidesPerView", "rows", "fill", "updateSlide", "i", "slide", "getDirectionLabel", "slidesPerGroup", "spaceBetween", "newSlideOrderIndex", "column", "row", "groupIndex", "slideIndexInGroup", "columnsInGroup", "updateWrapperSize", "slideSize", "snapGrid", "centeredSlides", "roundLengths", "newSlidesGrid", "slidesGridItem", "appendSlide", "slides", "swiper", "$wrapperEl", "params", "prependSlide", "slides", "swiper", "params", "$wrapperEl", "activeIndex", "newActiveIndex", "i", "addSlide", "index", "slides", "swiper", "$wrapperEl", "params", "activeIndex", "activeIndexBuffer", "baseLength", "newActiveIndex", "slidesBuffer", "i", "currentSlide", "removeSlide", "slidesIndexes", "swiper", "params", "$wrapperEl", "activeIndex", "activeIndexBuffer", "newActiveIndex", "indexToRemove", "i", "removeAllSlides", "swiper", "slidesIndexes", "i", "Manipulation", "swiper", "appendSlide", "prependSlide", "addSlide", "removeSlide", "removeAllSlides", "effectInit", "params", "effect", "swiper", "on", "setTranslate", "setTransition", "overwriteParams", "perspective", "overwriteParamsResult", "_s", "duration", "effectTarget", "effectParams", "$slideEl", "effectVirtualTransitionEnd", "swiper", "duration", "transformEl", "allSlides", "slides", "activeIndex", "$wrapperEl", "eventTriggered", "$transitionEndTarget", "triggerEvents", "i", "EffectFade", "swiper", "extendParams", "on", "effectInit", "slides", "params", "i", "$slideEl", "tx", "ty", "slideOpacity", "effectTarget", "duration", "transformEl", "effectVirtualTransitionEnd", "EffectCube", "swiper", "extendParams", "on", "effectInit", "$el", "$wrapperEl", "slides", "swiperWidth", "swiperHeight", "rtl", "swiperSize", "browser", "params", "isHorizontal", "isVirtual", "wrapperRotate", "$cubeShadowEl", "dom_default", "i", "$slideEl", "slideIndex", "slideAngle", "round", "progress", "tx", "ty", "tz", "transform", "shadowBefore", "shadowAfter", "shadowAngle", "multiplier", "scale1", "scale2", "offset", "zFactor", "duration", "createShadow", "params", "$slideEl", "side", "shadowClass", "$shadowContainer", "$shadowEl", "dom_default", "EffectFlip", "swiper", "extendParams", "on", "effectInit", "slides", "rtl", "params", "i", "$slideEl", "progress", "offset", "rotateY", "rotateX", "tx", "ty", "shadowBefore", "shadowAfter", "createShadow", "transform", "effectTarget", "duration", "transformEl", "effectVirtualTransitionEnd", "EffectCoverflow", "swiper", "extendParams", "on", "effectInit", "swiperWidth", "swiperHeight", "slides", "slidesSizesGrid", "params", "isHorizontal", "transform", "center", "rotate", "translate", "i", "length", "$slideEl", "slideSize", "slideOffset", "offsetMultiplier", "rotateY", "rotateX", "translateZ", "stretch", "translateY", "translateX", "scale", "slideTransform", "effectTarget", "$shadowBeforeEl", "$shadowAfterEl", "createShadow", "duration", "transformEl", "EffectCreative", "swiper", "extendParams", "on", "getTranslateValue", "value", "effectInit", "slides", "$wrapperEl", "slidesSizesGrid", "params", "multiplier", "isCenteredSlides", "margin", "i", "$slideEl", "slideProgress", "progress", "originalProgress", "offset", "t", "r", "custom", "data", "index", "translateString", "rotateString", "scaleString", "opacityString", "transform", "$shadowEl", "createShadow", "shadowOpacity", "$targetEl", "effectTarget", "duration", "transformEl", "effectVirtualTransitionEnd", "EffectCards", "swiper", "extendParams", "on", "effectInit", "slides", "activeIndex", "params", "startTranslate", "isTouched", "currentTranslate", "i", "$slideEl", "slideProgress", "progress", "offset", "tX", "tY", "tZ", "scale", "rotate", "tXAdd", "isSwipeToNext", "isSwipeToPrev", "subProgress", "__pow", "prevY", "scaleString", "transform", "$shadowEl", "createShadow", "effectTarget", "duration", "transformEl", "effectVirtualTransitionEnd", "modules", "Virtual", "Keyboard", "Mousewheel", "Navigation", "Pagination", "Scrollbar", "Parallax", "Zoom", "Lazy", "Controller", "A11y", "History", "HashNavigation", "Autoplay", "Thumb", "freeMode", "Grid", "Manipulation", "EffectFade", "EffectCube", "EffectFlip", "EffectCoverflow", "EffectCreative", "EffectCards", "core_default", "__defProp", "__getOwnPropSymbols", "__hasOwnProp", "__propIsEnum", "__defNormalProp", "obj", "key", "value", "__spreadValues", "a", "b", "prop", "src_default", "Controller", "core_default", "component_controller_default", "Controller", "useClickOutside", "tooltip", "event", "ignoreElement", "item", "clickedItem", "heckin_fast", "classes", "__publicField", "component_controller_default", "Controller", "event", "ignore", "element", "__publicField", "component_controller_default", "Controller", "currentTarget", "submenuId", "submenu", "itemTop", "itemWidth", "parentMenuTop", "toggleHeight", "event", "component_controller_default", "ApplicationController", "useClickOutside", "rect", "event", "calendar", "target", "__publicField", "component_controller_default", "Controller", "event", "place", "street", "city", "state", "zip", "country", "components", "street_number", "component", "route", "__publicField", "component_controller_default", "Controller", "file", "url", "__publicField", "component_controller_default", "Controller", "success", "textNode", "child", "inputNode", "target", "controller_name", "__publicField", "component_controller_default", "Controller", "controllerName", "__publicField", "component_controller_default", "Controller", "event", "success", "card", "opts", "name", "result", "errorElement", "tokenize", "_tokenTarget", "vault", "STRIPE_PUBLIC_KEY", "STRIPE_ACCOUNT_TOKEN", "secondaryColor", "Pallette", "invalidColor", "elements", "displayError", "__publicField", "component_controller_default", "Controller", "event", "success", "tokenize", "_tokenTarget", "resp", "resolve", "result", "secondaryColor", "Pallette", "invalidColor", "basysPublicKey", "component_controller_default", "Controller", "event", "success", "tokenize", "tokenTarget", "result", "USA_EPAY_PUBLIC_TOKEN", "secondaryColor", "Pallette", "invalidColor", "style", "errorMessage", "errorContainer", "__publicField", "component_controller_default", "Controller", "__publicField", "import_intl_tel_input", "component_controller_default", "Controller", "intlTelInput", "__publicField", "component_controller_default", "Controller", "useClickOutside", "__publicField", "component_controller_default", "Controller", "__publicField", "import_tom_select", "component_controller_default", "Controller", "TomSelect", "pluralType", "value", "query", "callback", "url", "response", "data", "item", "escape", "__publicField", "component_controller_default", "Controller", "event", "today", "expirationDate", "setCookie", "__publicField", "component_controller_default", "ApplicationController", "_a", "_b", "useClickOutside", "useHotkeys", "currentWidth", "event", "calendar", "tooltips", "tooltip", "target", "__publicField", "component_controller_default", "ApplicationController", "event", "detail", "defaultRendering", "currentElement", "newElement", "__async", "_a", "_b", "newDialogClasses", "oldContent", "newContent", "__publicField", "component_controller_default", "Controller", "animation", "event", "component_controller_default", "ApplicationController", "text", "unhighlighted", "highlighted", "events", "event", "__publicField", "component_controller_default", "Controller", "hidden", "text", "__publicField", "component_controller_default", "Controller", "url", "searchParams", "frame", "turbo_es2017_esm_exports", "i", "dataset", "params", "currentSelectedFilters", "category", "item", "target", "__publicField", "component_controller_default", "Controller", "width", "__publicField", "scheduler_controller_default", "Controller", "event", "calendarEvent", "item", "target", "dataset", "student_controller_default", "Controller", "initializeTooltips", "initializeStudentStatusDropdowns", "initializeStudentAttendanceLog", "initializeSelectAllCheckboxes", "initializeStudentRestore", "scroll_to_controller_default", "Controller", "locationTarget", "__publicField", "toggleable_input_controller_default", "Controller", "__publicField", "toggleable_frame_controller_default", "Controller", "event", "animation", "__publicField", "copyable_input_controller_default", "Controller", "isHidden", "textValue", "__publicField", "turbo_pagination_controller_default", "Controller", "event", "element", "bottom", "_keepDisabled", "_shouldViewAll", "_requestSent", "__publicField", "transitionPersonIntoDisabledState", "checkedCheckBoxes", "bulkCheckbox", "findCheckedPersonIds", "personIds", "personId", "handleAdditionalInfoNeededUpdateProspectResponse", "container", "path", "button", "data", "e", "updateProspectLeadState", "handleUpdateProspectLeadStateResponse", "initializeProspectLeadStateDropdowns", "initializeAssignedToFields", "initializeProspectNoting", "token", "xhr", "parent", "$this", "$target", "$parentButton", "handleTruncatedProspectNotes", "ps", "p", "initializeProspectDelete", "element", "initializeBulkEdit", "bulkAction", "selectedPersonIds", "checkBoxes", "bulkActions", "prospect_controller_default", "Controller", "initializeTooltips", "initializeDropdownTabs", "initializeProspectLeadStateDropdowns", "initializeAssignedToFields", "initializeProspectNoting", "initializeSelectAllCheckboxes", "duplicate_fieldset_controller_default", "Controller", "newFieldset", "newInputs", "newSelects", "input", "select", "label", "newId", "_a", "nextSibling", "wrappers", "wrapper", "selects", "__publicField", "auto_sort_controller_default", "Controller", "child", "left", "right", "leftCode", "rightCode", "value", "rights", "__publicField", "component_controller_default", "Controller", "enableApplyToPreviewButton", "add_on_select_controller_default", "Controller", "component_controller_default", "Controller", "_style", "_title", "__publicField", "component_controller_default", "auto_sort_controller_default", "useMutation", "entries", "mutation", "addedNodes", "__publicField", "component_controller_default", "ApplicationController", "__publicField", "useMutation", "event", "input", "dispatch", "_a", "key", "text", "options", "__pow", "component_controller_default", "Controller", "__publicField", "event", "_a", "withoutDecimal", "key", "text", "result", "__pow", "component_controller_default", "Controller", "event", "value", "__publicField", "required_field_checkbox_controller_default", "Controller", "__publicField", "toggle_select_controller_default", "Controller", "__publicField", "isEven", "num", "roundHalfEven", "strNm", "integer", "decimal", "i", "line_item_calculate_controller_default", "Controller", "__publicField", "target", "option", "paymentReasonSelect", "quantity", "price", "amountField", "taxRate", "roundHalfEven", "control", "calculate_invoice_totals_controller_default", "Controller", "__publicField", "outlet", "value", "target", "_a", "accumulator", "currentValue", "calculate_invoice_due_date_controller_default", "Controller", "theDate", "dueDate", "index", "termsOffset", "__publicField", "change_due_controller_default", "Controller", "__publicField", "turbo_stream_controller_default", "Controller", "target", "getStream", "value", "base", "__publicField", "payment_processing_controller_default", "Controller", "event", "sourceIsToken", "sourceElement", "success", "i", "controllerName", "__publicField", "stripe_controller_default", "Controller", "event", "tokenTarget", "success", "card", "opts", "cardholderName", "t", "result", "errorElement", "tokenize", "STRIPE_PUBLIC_KEY", "STRIPE_ACCOUNT_TOKEN", "currentTarget", "url", "payerId", "payerType", "post", "response", "data", "secondaryColor", "Pallette", "invalidColor", "elements", "displayError", "value", "__publicField", "basys_controller_default", "Controller", "event", "success", "tokenize", "tokenTarget", "resp", "resolve", "result", "secondaryColor", "Pallette", "invalidColor", "basysPublicKey", "self", "element", "formId", "__publicField", "usa_epay_controller_default", "Controller", "event", "success", "tokenize", "tokenTarget", "result", "USA_EPAY_PUBLIC_TOKEN", "secondaryColor", "Pallette", "invalidColor", "style", "errorMessage", "errorContainer", "__publicField", "print_controller_default", "Controller", "__publicField", "money_distributor_controller_default", "ApplicationController", "item", "distributeSum", "totalRemaining", "remaining", "amount", "target", "checked", "element", "render", "Item", "sel", "amt", "check", "allSelected", "i", "total", "selectedItem", "value", "__publicField", "id", "selected", "distributed", "money_controller_default", "ApplicationController", "options", "result", "__pow", "__publicField", "remove_line_item_controller_default", "Controller", "target", "newInputs", "input", "selects", "select", "__publicField", "recurring_billings_controller_default", "ApplicationController", "event", "payerType", "payerId", "params", "src", "frame", "__publicField", "component_controller_default", "Controller", "__publicField", "event", "__async", "file", "zoom", "matrix", "sourceX", "sourceY", "sourceWidth", "sourceHeight", "blob", "dataTransfer", "fileReader", "e", "boundingRect", "scale", "zoomAmount", "touch1", "touch2", "distance", "__pow", "zoomFactor", "singleTouchHandler", "rect", "inverseMatrix", "clientPosition", "position", "normalized", "x", "y", "import_actioncable", "consumer_default", "quick_action_progress_controller_default", "ApplicationController", "__publicField", "html", "self", "consumer_default", "data", "personHtml", "state_transitions_controller_default", "ApplicationController", "selected", "__publicField", "remove_notice_controller_default", "Controller", "component_controller_default", "ApplicationController", "event", "element", "value", "applyFilters", "bannerText", "id", "entityId", "checkbox", "path", "fullPath", "action", "__publicField", "component_controller_default", "ApplicationController", "currentTarget", "params", "sortElement", "direction", "__publicField", "component_controller_default", "ApplicationController", "useDebounce", "_a", "event", "__publicField", "_selectAction", "selectAction_fn", "_resetList", "resetList_fn", "_selectFilters", "selectFilters_fn", "_removeFilters", "removeFilters_fn", "component_controller_default", "ApplicationController", "__privateAdd", "__privateMethod", "filters", "filter", "checkbox", "filterGroup", "__publicField", "component_controller_default", "ApplicationController", "_a", "selectedAction", "title", "path", "amount", "total", "perPage", "atLeastOnePageSelected", "__publicField", "attendances_controller_default", "Controller", "checkbox", "target", "parent", "programTarget", "rankItem", "rankTarget", "__publicField", "share_and_sign_agreement_controller_default", "Controller", "value", "__publicField", "DEFAULT_TIMEOUT", "component_controller_default", "ApplicationController", "previewFilePromise", "waitPromise", "ms", "resolve", "pdfPromise", "__publicField", "import_froala_editor", "import_align_min", "import_colors_min", "import_image_min", "import_link_min", "import_special_characters_min", "import_draggable_min", "import_font_size_min", "import_lists_min", "import_paragraph_format_min", "import_help_min", "import_quick_insert_min", "import_video_min", "import_table_min", "import_url_min", "FroalaEditor", "_", "value", "staticOptions", "textButtons", "paragraphButtons", "miscButtons", "component_controller_default", "ApplicationController", "__spreadProps", "__spreadValues", "_a", "buttons", "button", "__publicField", "PREVIEW_WIDTH_IN_PX", "THIRTY_MB", "agreement_preview_controller_default", "ApplicationController", "__async", "target", "selectedOption", "signatureType", "content", "token", "value", "id", "type", "src", "get", "response", "json", "dataTransfer", "file", "fileReader", "event", "checkbox", "fileSizeInKB", "tokenRegex", "tokenValue", "style", "pdfStyle", "__publicField", "trial_membership_form_controller_default", "Controller", "endDate", "attendance", "__publicField", "signup_membership_controller_default", "ApplicationController", "target", "selectedOption", "ranks", "rank", "params", "src", "frame", "firstValue", "__publicField", "_selectedBadge", "selectedBadge_get", "_formTarget", "formTarget_get", "component_controller_default", "ApplicationController", "__privateAdd", "useDebounce", "__privateGet", "filterGroup", "formData", "temp", "keysToDelete", "key", "value", "amountSelected", "__publicField", "component_controller_default", "ApplicationController", "dispatch", "destroyChildren", "checkbox", "filterSectionFilter", "childName", "childAll", "allTarget", "detail", "_a", "currentTarget", "allChecked", "allUnchecked", "allChildrenChecked", "allChildrenUnchecked", "__publicField", "component_controller_default", "ApplicationController", "child", "_a", "newElement", "newCheckbox", "allElement", "allCheckbox", "id", "filterNamesToDisable", "filterGroupElement", "filterName", "filterToDisable", "__publicField", "recurring_billings_index_controller_default", "Controller", "event", "checkbox", "__publicField", "edit_membership_controller_default", "Controller", "event", "inputTarget", "__publicField", "backdated_payments_controller_default", "Controller", "dateValue", "currentDate", "__publicField", "reactivate_membership_controller_default", "Controller", "__publicField", "form_controller_default", "ApplicationController", "__publicField", "input", "component_controller_default", "ApplicationController", "target", "tab", "element", "input", "__publicField", "adjust_invoice_balance_controller_default", "Controller", "total", "adjustment", "defaultValue", "newTotal", "options", "__pow", "__publicField", "reecurring_billing_duration_controller_default", "ApplicationController", "value", "__publicField", "membership_attendance_controller_default", "ApplicationController", "value", "__publicField", "new_student_controller_default", "ApplicationController", "__publicField", "component_controller_default", "ApplicationController", "useDebounce", "useClickOutside", "__publicField", "classes_details_controller_default", "Controller", "currentTarget", "currentElement", "promotions_controller_default", "Controller", "checkbox", "__publicField", "promotions_progress_controller_default", "ApplicationController", "__publicField", "self", "consumer_default", "data", "isArray", "value", "getTag", "INFINITY", "baseToString", "result", "toString", "isString", "isNumber", "isBoolean", "isObjectLike", "isObject", "isDefined", "isBlank", "INCORRECT_INDEX_TYPE", "LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY", "key", "PATTERN_LENGTH_TOO_LARGE", "max", "MISSING_KEY_PROPERTY", "name", "INVALID_KEY_WEIGHT_VALUE", "hasOwn", "KeyStore", "keys", "totalWeight", "obj", "createKey", "keyId", "path", "id", "src", "weight", "getFn", "isString", "isArray", "createKeyPath", "createKeyId", "get", "list", "arr", "deepGet", "index", "isDefined", "value", "isNumber", "isBoolean", "toString", "i", "len", "MatchOptions", "BasicOptions", "a", "b", "FuzzyOptions", "AdvancedOptions", "Config", "__spreadValues", "SPACE", "norm", "mantissa", "cache", "m", "numTokens", "n", "FuseIndex", "fieldNormWeight", "docs", "records", "idx", "doc", "docIndex", "item", "isBlank", "record", "keyIndex", "subRecords", "stack", "nestedArrIndex", "subRecord", "k", "createIndex", "myIndex", "parseIndex", "data", "computeScore$1", "pattern", "errors", "currentLocation", "expectedLocation", "distance", "ignoreLocation", "accuracy", "proximity", "convertMaskToIndices", "matchmask", "minMatchCharLength", "indices", "start", "end", "match", "MAX_BITS", "search", "text", "patternAlphabet", "location", "threshold", "findAllMatches", "includeMatches", "patternLen", "textLen", "currentThreshold", "bestLocation", "computeMatches", "matchMask", "score", "lastBitArr", "finalScore", "binMax", "mask", "binMin", "binMid", "finish", "bitArr", "j", "charMatch", "result", "createPatternAlphabet", "char", "BitapSearch", "isCaseSensitive", "addChunk", "startIndex", "remainder", "allIndices", "totalScore", "hasMatches", "alphabet", "isMatch", "BaseMatch", "getMatch", "exp", "matches", "ExactMatch", "InverseExactMatch", "PrefixExactMatch", "InversePrefixExactMatch", "SuffixExactMatch", "InverseSuffixExactMatch", "FuzzyMatch", "IncludeMatch", "searchers", "searchersLen", "SPACE_RE", "OR_TOKEN", "parseQuery", "options", "query", "results", "queryItem", "found", "searcher", "token", "MultiMatchSet", "ExtendedSearch", "_", "numMatches", "qLen", "pLen", "type", "registeredSearchers", "register", "args", "createSearcher", "searcherClass", "LogicalOperator", "KeyType", "isExpression", "isPath", "isLeaf", "isObject", "convertToExplicit", "parse", "auto", "next", "isQueryPath", "node", "computeScore", "ignoreFieldNorm", "transformMatches", "transformScore", "format", "includeScore", "transformers", "transformer", "Fuse", "predicate", "limit", "shouldSort", "sortFn", "expression", "evaluate", "res", "child", "resultMap", "expResults", "quicklinks_controller_default", "ApplicationController", "useHotkeys", "event", "tagName", "disallowedField", "useClickOutside", "results", "Fuse", "result", "element", "section", "divider", "shownElementAboveDivider", "shownElementAbove", "shownElementBelowDivider", "shownElementBelow", "link", "__publicField", "previousElement", "nextElement", "_focusPersonField", "focusPersonField_fn", "new_attendance_controller_default", "Controller", "__privateAdd", "__privateMethod", "form", "params", "src", "turbo_es2017_esm_exports", "__publicField", "edit_person_attendances_controller_default", "Controller", "event", "params", "src", "turbo_es2017_esm_exports", "__publicField", "THIRTY_MEGABYTES", "_validateFileSize", "validateFileSize_fn", "_validateFileType", "validateFileType_fn", "_addFiles", "addFiles_fn", "_removeFile", "removeFile_fn", "_render", "render_fn", "_buildFileData", "buildFileData_fn", "_renderFile", "renderFile_fn", "_renderWithProgressBar", "renderWithProgressBar_fn", "_updateProgressBar", "updateProgressBar_fn", "_markUploaded", "markUploaded_fn", "_showBanner", "showBanner_fn", "_hideBanner", "hideBanner_fn", "_humanizeFileSize", "humanizeFileSize_fn", "_enableForm", "enableForm_fn", "_disableForm", "disableForm_fn", "component_controller_default", "Controller", "__privateAdd", "__privateMethod", "dataTransfer", "index", "id", "file", "progress", "type", "accept", "t", "acceptedType", "typePrefix", "otherFiles", "files", "i", "fileData", "error", "wrapper", "html", "element", "fileIndex", "target", "size", "unit", "__pow", "__publicField", "new_family_member_controller_default", "Controller", "__publicField", "sides", "alignments", "placements", "acc", "side", "min", "max", "round", "floor", "createCoords", "v", "oppositeSideMap", "oppositeAlignmentMap", "clamp", "start", "value", "end", "evaluate", "param", "getSide", "placement", "getAlignment", "getOppositeAxis", "axis", "getAxisLength", "getSideAxis", "getAlignmentAxis", "getAlignmentSides", "rects", "rtl", "alignment", "alignmentAxis", "length", "mainAlignmentSide", "getOppositePlacement", "getExpandedPlacements", "oppositePlacement", "getOppositeAlignmentPlacement", "getSideList", "isStart", "lr", "rl", "tb", "bt", "getOppositeAxisPlacements", "flipAlignment", "direction", "list", "expandPaddingObject", "padding", "__spreadValues", "getPaddingObject", "rectToClientRect", "rect", "__spreadProps", "computeCoordsFromPlacement", "_ref", "placement", "rtl", "reference", "floating", "sideAxis", "getSideAxis", "alignmentAxis", "getAlignmentAxis", "alignLength", "getAxisLength", "side", "getSide", "isVertical", "commonX", "commonY", "commonAlign", "coords", "getAlignment", "computePosition", "config", "__async", "strategy", "middleware", "platform", "validMiddleware", "rects", "x", "y", "statefulPlacement", "middlewareData", "resetCount", "i", "name", "fn", "nextX", "nextY", "data", "reset", "__spreadProps", "__spreadValues", "detectOverflow", "state", "options", "_await$platform$isEle", "elements", "boundary", "rootBoundary", "elementContext", "altBoundary", "padding", "evaluate", "paddingObject", "getPaddingObject", "element", "clippingClientRect", "rectToClientRect", "rect", "offsetParent", "offsetScale", "elementClientRect", "arrow", "axis", "length", "arrowDimensions", "isYAxis", "minProp", "maxProp", "clientProp", "endDiff", "startDiff", "arrowOffsetParent", "clientSize", "centerToReference", "largestPossiblePadding", "minPadding", "min", "maxPadding", "min$1", "max", "center", "offset", "clamp", "shouldAddOffset", "alignmentOffset", "getPlacementList", "alignment", "autoAlignment", "allowedPlacements", "getOppositeAlignmentPlacement", "autoPlacement", "_middlewareData$autoP", "_middlewareData$autoP2", "_placementsThatFitOnE", "_a", "crossAxis", "placements", "detectOverflowOptions", "__objRest", "placements$1", "overflow", "currentIndex", "currentPlacement", "alignmentSides", "getAlignmentSides", "currentOverflows", "allOverflows", "nextPlacement", "placementsSortedByMostSpace", "d", "acc", "v", "a", "b", "resetPlacement", "flip", "_middlewareData$arrow", "_middlewareData$flip", "initialPlacement", "checkMainAxis", "checkCrossAxis", "specifiedFallbackPlacements", "fallbackStrategy", "fallbackAxisSideDirection", "flipAlignment", "isBasePlacement", "fallbackPlacements", "getOppositePlacement", "getExpandedPlacements", "getOppositeAxisPlacements", "overflows", "overflowsData", "sides", "_middlewareData$flip2", "_overflowsData$filter", "nextIndex", "_overflowsData$map$so", "convertValueToCoords", "state", "options", "__async", "placement", "platform", "elements", "rtl", "side", "getSide", "alignment", "getAlignment", "isVertical", "getSideAxis", "mainAxisMulti", "crossAxisMulti", "rawValue", "evaluate", "mainAxis", "crossAxis", "alignmentAxis", "__spreadValues", "offset", "_middlewareData$offse", "_middlewareData$arrow", "x", "y", "middlewareData", "diffCoords", "__spreadProps", "getNodeName", "node", "isNode", "getWindow", "_node$ownerDocument", "getDocumentElement", "_ref", "value", "isElement", "isHTMLElement", "isShadowRoot", "isOverflowElement", "element", "overflow", "overflowX", "overflowY", "display", "getComputedStyle", "isTableElement", "isContainingBlock", "webkit", "isWebKit", "css", "getContainingBlock", "currentNode", "getParentNode", "isLastTraversableNode", "getNodeScroll", "result", "getNearestOverflowAncestor", "parentNode", "getOverflowAncestors", "list", "traverseIframes", "_node$ownerDocument2", "scrollableAncestor", "isBody", "win", "getCssDimensions", "element", "css", "getComputedStyle", "width", "height", "hasOffset", "isHTMLElement", "offsetWidth", "offsetHeight", "shouldFallback", "round", "unwrapElement", "isElement", "getScale", "domElement", "createCoords", "rect", "$", "x", "y", "noOffsets", "getVisualOffsets", "win", "getWindow", "isWebKit", "shouldAddVisualOffsets", "isFixed", "floatingOffsetParent", "getBoundingClientRect", "includeScale", "isFixedStrategy", "offsetParent", "clientRect", "scale", "visualOffsets", "offsetWin", "currentWin", "currentIFrame", "iframeScale", "iframeRect", "left", "top", "rectToClientRect", "topLayerSelectors", "isTopLayer", "floating", "selector", "e", "convertOffsetParentRelativeRectToViewportRelativeRect", "_ref", "elements", "strategy", "documentElement", "getDocumentElement", "topLayer", "scroll", "offsets", "isOffsetParentAnElement", "getNodeName", "isOverflowElement", "getNodeScroll", "offsetRect", "getClientRects", "getWindowScrollBarX", "getDocumentRect", "html", "body", "max", "getViewportRect", "visualViewport", "visualViewportBased", "getInnerBoundingClientRect", "getClientRectFromClippingAncestor", "clippingAncestor", "__spreadProps", "__spreadValues", "hasFixedPositionAncestor", "stopNode", "parentNode", "getParentNode", "isLastTraversableNode", "getClippingElementAncestors", "cache", "cachedResult", "result", "getOverflowAncestors", "el", "currentContainingBlockComputedStyle", "elementIsFixed", "currentNode", "computedStyle", "currentNodeIsContaining", "isContainingBlock", "ancestor", "getClippingRect", "boundary", "rootBoundary", "clippingAncestors", "firstClippingAncestor", "clippingRect", "accRect", "min", "getDimensions", "getRectRelativeToOffsetParent", "getTrueOffsetParent", "polyfill", "getOffsetParent", "window", "isTableElement", "getContainingBlock", "getElementRects", "data", "__async", "getOffsetParentFn", "getDimensionsFn", "isRTL", "platform", "observeMove", "onMove", "io", "timeoutId", "root", "cleanup", "_io", "refresh", "skip", "threshold", "insetTop", "floor", "insetRight", "insetBottom", "insetLeft", "options", "isFirstUpdate", "handleObserve", "entries", "ratio", "autoUpdate", "reference", "update", "ancestorScroll", "ancestorResize", "elementResize", "layoutShift", "animationFrame", "referenceEl", "ancestors", "cleanupIo", "reobserveFrame", "resizeObserver", "firstEntry", "_resizeObserver", "frameId", "prevRefRect", "frameLoop", "nextRefRect", "_resizeObserver2", "autoPlacement", "flip", "arrow", "computePosition", "reference", "floating", "options", "cache", "mergedOptions", "__spreadValues", "platform", "platformWithCache", "__spreadProps", "_timeoutId", "_showBody", "showBody_fn", "_positionBodyAnchoredTo", "positionBodyAnchoredTo_fn", "person_hovercard_controller_default", "Controller", "__privateAdd", "useClickOutside", "target", "placement", "id", "__privateSet", "__privateMethod", "__privateGet", "turbo_es2017_esm_exports", "elementIsVisible", "element", "autoUpdate", "computePosition", "offset", "flip", "x", "y", "__publicField", "_focusModule", "focusModule_fn", "_showAllModules", "showAllModules_fn", "_hideAllModules", "hideAllModules_fn", "_highlightTab", "highlightTab_fn", "_getTab", "getTab_fn", "_getModule", "getModule_fn", "_updateProfileNav", "updateProfileNav_fn", "modules_nav_controller_default", "Controller", "__privateAdd", "module", "tab", "__privateMethod", "mod", "url", "searchParams", "target", "id", "member", "__publicField", "accounts_controller_default", "Controller", "el", "__publicField", "family_management_invites_send_modal_controller_default", "ApplicationController", "target", "emailInput", "candidateSelectors", "candidateSelector", "join", "NoElement", "Element", "matches", "prototype", "msMatchesSelector", "webkitMatchesSelector", "getRootNode", "element", "_element$getRootNode", "call", "ownerDocument", "isInert", "node", "lookUp", "_node$getAttribute", "inertAtt", "getAttribute", "inert", "result", "parentNode", "isContentEditable", "_node$getAttribute2", "attValue", "getCandidates", "el", "includeContainer", "filter", "candidates", "Array", "slice", "apply", "querySelectorAll", "unshift", "getCandidatesIteratively", "elements", "options", "elementsToCheck", "from", "length", "shift", "tagName", "assigned", "assignedElements", "content", "children", "nestedCandidates", "flatten", "push", "scopeParent", "validCandidate", "includes", "shadowRoot", "getShadowRoot", "validShadowRoot", "shadowRootFilter", "hasTabIndex", "isNaN", "parseInt", "getTabIndex", "Error", "tabIndex", "test", "getSortOrderTabIndex", "isScope", "sortOrderedTabbables", "a", "b", "documentOrder", "isInput", "isHiddenInput", "type", "isDetailsWithSummary", "r", "some", "child", "getCheckedRadio", "nodes", "form", "i", "checked", "isTabbableRadio", "name", "radioScope", "queryRadios", "radioSet", "window", "CSS", "escape", "err", "console", "error", "message", "isRadio", "isNonTabbableRadio", "isNodeAttached", "_nodeRoot", "nodeRoot", "nodeRootHost", "host", "attached", "_nodeRootHost", "_nodeRootHost$ownerDo", "_node$ownerDocument", "contains", "_nodeRoot2", "_nodeRootHost2", "_nodeRootHost2$ownerD", "isZeroArea", "_node$getBoundingClie", "getBoundingClientRect", "width", "height", "isHidden", "_ref", "displayCheck", "getComputedStyle", "visibility", "isDirectSummary", "nodeUnderDetails", "parentElement", "originalNode", "rootNode", "assignedSlot", "getClientRects", "isDisabledFromFieldset", "disabled", "item", "isNodeMatchingSelectorFocusable", "isNodeMatchingSelectorTabbable", "isValidShadowRootTabbable", "shadowHostNode", "sortByOrder", "regularTabbables", "orderedTabbables", "forEach", "candidateTabindex", "sort", "reduce", "acc", "sortable", "concat", "tabbable", "container", "bind", "focusable", "isTabbable", "focusableCandidateSelector", "isFocusable", "activeFocusTraps", "activateTrap", "trapStack", "trap", "length", "activeTrap", "pause", "trapIndex", "indexOf", "splice", "push", "deactivateTrap", "unpause", "isSelectableInput", "node", "tagName", "toLowerCase", "select", "isEscapeEvent", "e", "key", "keyCode", "isTabEvent", "isKeyForward", "shiftKey", "isKeyBackward", "delay", "fn", "setTimeout", "findIndex", "arr", "idx", "every", "value", "i", "valueOrHandler", "_len", "arguments", "params", "Array", "_key", "apply", "getActualTarget", "event", "target", "shadowRoot", "composedPath", "internalTrapStack", "createFocusTrap", "elements", "userOptions", "doc", "document", "config", "_objectSpread", "returnFocusOnDeactivate", "escapeDeactivates", "delayInitialFocus", "state", "containers", "containerGroups", "tabbableGroups", "nodeFocusedBeforeActivation", "mostRecentlyFocusedNode", "active", "paused", "delayInitialFocusTimer", "undefined", "recentNavEvent", "getOption", "configOverrideOptions", "optionName", "configOptionName", "findContainerIndex", "element", "_ref", "container", "tabbableNodes", "contains", "includes", "find", "getNodeForOption", "optionValue", "_len2", "_key2", "Error", "concat", "querySelector", "getInitialFocusNode", "isFocusable", "tabbableOptions", "activeElement", "firstTabbableGroup", "firstTabbableNode", "updateTabbableNodes", "map", "tabbable", "focusableNodes", "focusable", "lastTabbableNode", "firstDomTabbableNode", "isTabbable", "lastDomTabbableNode", "slice", "reverse", "posTabIndexesFound", "getTabIndex", "nextTabbableNode", "forward", "nodeIdx", "el", "filter", "group", "g", "getActiveElement", "tryFocus", "focus", "preventScroll", "getReturnFocusNode", "previousActiveElement", "findNextNavNode", "_ref2", "_ref2$isBackward", "isBackward", "destinationNode", "containerIndex", "containerGroup", "startOfGroupIndex", "_ref3", "destinationGroupIndex", "destinationGroup", "lastOfGroupIndex", "_ref4", "checkPointerDown", "clickOutsideDeactivates", "deactivate", "returnFocus", "allowOutsideClick", "preventDefault", "checkFocusIn", "targetContained", "Document", "stopImmediatePropagation", "nextNode", "navAcrossContainers", "mruContainerIdx", "mruTabIdx", "some", "n", "checkKeyNav", "checkKey", "checkClick", "addListeners", "addEventListener", "capture", "passive", "removeListeners", "removeEventListener", "checkDomRemoval", "mutations", "isFocusedNodeRemoved", "mutation", "removedNodes", "from", "mutationObserver", "window", "MutationObserver", "updateObservedNodes", "disconnect", "observe", "subtree", "childList", "activate", "activateOptions", "onActivate", "onPostActivate", "checkCanFocusTrap", "finishActivation", "then", "deactivateOptions", "options", "onDeactivate", "onPostDeactivate", "checkCanReturnFocus", "clearTimeout", "finishDeactivation", "pauseOptions", "onPause", "onPostPause", "unpauseOptions", "onUnpause", "onPostUnpause", "updateContainerElements", "containerElements", "elementsAsArray", "Boolean", "_openBody", "openBody_fn", "_closeBody", "closeBody_fn", "_computePosition", "computePosition_fn", "_allowClickOutside", "allowClickOutside_fn", "_halfArrowWidth", "halfArrowWidth_get", "component_controller_default", "Controller", "__privateAdd", "createFocusTrap", "__privateMethod", "opened", "_", "prevPosition", "middleware", "offset", "autoPlacement", "arrow", "autoUpdate", "computePosition", "x", "y", "middlewareData", "placement", "parsedPlacement", "arrowX", "arrowY", "position", "__privateGet", "target", "__publicField", "component_controller_default", "Controller", "collapsed", "__publicField", "turbo_form_submit_redirect_controller_default", "Controller", "event", "turbo_es2017_esm_exports", "import_tom_select", "_type", "type_set", "_renderItem", "renderItem_fn", "_renderOption", "renderOption_fn", "component_controller_default", "Controller", "__privateAdd", "TomSelect", "__privateMethod", "pluralType", "__privateSet", "value", "item", "escape", "__publicField", "toggle_visibility_controller_default", "Controller", "value", "container", "__publicField", "hideable_form_controller_default", "toggle_visibility_controller_default", "values", "key", "value", "input", "inp", "container", "element", "_a", "t", "select", "__publicField", "_fuseList", "fuseList_get", "searchable_list_default", "Controller", "__privateAdd", "value", "results", "Fuse", "__privateGet", "result", "target", "element", "__publicField", "toggle_save_visibility_controller_default", "Controller", "newData", "oldValues", "arr", "newValues", "symmetricDifference", "__publicField", "safe_submit_controller_default", "Controller", "input", "_a", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "AddressField", "address", "addressChange", "required", "id", "controllerRef", "A", "addressRefs", "hiddenFields", "addressChangeCallback", "_a", "_b", "newAddress", "name", "y", "controllerElement", "_", "el", "init_compat_module", "init_preact_module", "init_hooks_module", "init_hooks_module", "BRAND_SYMBOL", "Symbol", "endBatch", "batchDepth", "error", "hasError", "batchedEffect", "effect", "batchIteration", "next", "_nextBatchedEffect", "_flags", "needsToRecompute", "_callback", "err", "evalContext", "batchedEffect", "batchDepth", "batchIteration", "globalVersion", "addDependency", "signal", "evalContext", "node", "_node", "_target", "_version", "_source", "_prevSource", "_sources", "_nextSource", "_prevTarget", "_nextTarget", "_rollbackNode", "_flags", "_subscribe", "Signal", "value", "this", "_value", "_targets", "prototype", "brand", "BRAND_SYMBOL", "_refresh", "_unsubscribe", "prev", "next", "subscribe", "fn", "_this", "effect", "prevContext", "valueOf", "toString", "toJSON", "peek", "Object", "defineProperty", "get", "set", "Error", "_notify", "endBatch", "needsToRecompute", "target", "prepareSources", "rollbackNode", "cleanupSources", "head", "Computed", "call", "undefined", "_fn", "_globalVersion", "OUTDATED", "err", "computed", "cleanupEffect", "cleanup", "_cleanup", "disposeEffect", "endEffect", "Effect", "_nextBatchedEffect", "_callback", "finish", "_start", "bind", "_dispose", "currentComponent", "finishUpdate", "hook", "hookName", "hookFn", "options", "bind", "setCurrentUpdater", "updater", "_start", "SignalValue", "_ref", "_this", "this", "data", "currentSignal", "useSignal", "value", "s", "useMemo", "v", "__v", "__", "__c", "_updateFlags", "_updater", "_callback", "_this$base", "isValidElement", "peek", "base", "nodeType", "setState", "computed", "displayName", "Object", "defineProperties", "Signal", "prototype", "constructor", "configurable", "undefined", "type", "props", "get", "__b", "old", "vnode", "signalProps", "i", "__np", "component", "update", "effect", "createUpdater", "error", "oldVNode", "dom", "__e", "renderedProps", "updaters", "_updaters", "prop", "_dispose", "signal", "createPropUpdater", "_update", "propSignal", "setAsProperty", "ownerSVGElement", "changeSignal", "newSignal", "newProps", "setAttribute", "removeAttribute", "index", "Component", "shouldComponentUpdate", "state", "_sources", "HAS_PENDING_UPDATE", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "_defineProperty", "r", "t", "_toPropertyKey", "ownKeys", "r", "t", "o", "_objectSpread2", "_defineProperty", "_toPrimitive", "t", "r", "e", "i", "_toPropertyKey", "noop", "_WINDOW", "_DOCUMENT", "_MUTATION_OBSERVER", "_PERFORMANCE", "userAgent", "WINDOW", "DOCUMENT", "MUTATION_OBSERVER", "PERFORMANCE", "IS_BROWSER", "IS_DOM", "IS_IE", "p", "g", "S", "A", "P", "s", "t", "r", "o", "L", "G", "lt", "pt", "xt", "Ft", "St", "At", "Ct", "Lt", "Wt", "Et", "t$1", "r$1", "bt$1", "Yt", "po", "I$1", "co", "x", "xo", "m$1", "c$1", "F$1", "Fo", "ko", "NAMESPACE_IDENTIFIER", "UNITS_IN_GRID", "DEFAULT_CSS_PREFIX", "DEFAULT_REPLACEMENT_CLASS", "DATA_FA_I2SVG", "DATA_FA_PSEUDO_ELEMENT", "DATA_FA_PSEUDO_ELEMENT_PENDING", "DATA_PREFIX", "DATA_ICON", "HTML_CLASS_I2SVG_BASE_CLASS", "MUTATION_APPROACH_ASYNC", "TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS", "PRODUCTION", "e$$1", "familyProxy", "obj", "target", "prop", "_PREFIX_TO_STYLE", "_objectSpread2", "PREFIX_TO_STYLE", "_STYLE_TO_PREFIX", "STYLE_TO_PREFIX", "_PREFIX_TO_LONG_STYLE", "PREFIX_TO_LONG_STYLE", "_LONG_STYLE_TO_PREFIX", "LONG_STYLE_TO_PREFIX", "ICON_SELECTION_SYNTAX_PATTERN", "LAYERS_TEXT_CLASSNAME", "FONT_FAMILY_PATTERN", "_FONT_WEIGHT_TO_PREFIX", "FONT_WEIGHT_TO_PREFIX", "ATTRIBUTES_WATCHED_FOR_MUTATION", "DUOTONE_CLASSES", "RESERVED_CLASSES", "initial", "getAttrConfig", "attr", "element", "coerce", "val", "_ref", "key", "_default", "_config", "config", "_onChangeCb", "cb", "onChange", "d$2", "meaninglessTransform", "insertCss", "css", "style", "headChildren", "beforeChild", "child", "tagName", "idPool", "nextUniqueId", "size", "id", "toArray", "array", "i", "classArray", "node", "htmlEscape", "str", "joinAttributes", "attributes", "acc", "attributeName", "joinStyles", "styles", "styleName", "transformIsMeaningful", "transform", "transformForSvg", "containerWidth", "iconWidth", "outer", "innerTranslate", "innerScale", "innerRotate", "inner", "path", "transformForCss", "_ref2", "width", "height", "startCentered", "baseStyles", "dcp", "drc", "fp", "rc", "dPatt", "customPropPatt", "rPatt", "_cssInserted", "ensureCss", "InjectCSS", "w", "namespace", "functions", "listener", "loaded", "fn", "domready", "toHtml", "abstractNodes", "tag", "children", "iconFromMapping", "mapping", "prefix", "iconName", "bindInternal4", "func", "thisContext", "a", "b", "c", "d", "reduce", "subject", "initialValue", "keys", "length", "iterator", "result", "ucs2decode", "string", "output", "counter", "value", "extra", "toHex", "unicode", "decoded", "codePointAt", "index", "first", "second", "normalizeIcons", "icons", "icon", "defineIcons", "params", "skipHooks", "normalized", "styles", "shims", "namespace", "FAMILY_NAMES", "PREFIX_TO_LONG_STYLE", "PREFIXES_FOR_FAMILY", "acc", "familyId", "_defaultUsablePrefix", "_byUnicode", "_byLigature", "_byOldName", "_byOldUnicode", "_byAlias", "isReserved", "name", "RESERVED_CLASSES", "getIconName", "cssPrefix", "cls", "parts", "prefix", "iconName", "build", "lookup", "reducer", "reduce", "o$$1", "style", "icon", "a$$1", "alias", "aliases", "hasRegular", "config", "shimLookups", "shim", "maybeNameMaybeUnicode", "getCanonicalPrefix", "onChange", "c$$1", "byUnicode", "unicode", "byLigature", "ligature", "byAlias", "byOldName", "byOldUnicode", "oldUnicode", "newUnicode", "getDefaultUsablePrefix", "emptyCanonicalIcon", "getFamilyId", "values", "family", "s", "famProps", "L", "v$$1", "styleOrPrefix", "params", "PREFIX_TO_STYLE", "t", "STYLE_TO_PREFIX", "defined", "moveNonFaClassesToRest", "classNames", "rest", "result", "sortedUniqueValues", "arr", "value", "index", "getCanonicalIcon", "skipLookups", "givenPrefix", "faCombinedClasses", "xo", "bt$1", "faStyleOrFamilyClasses", "nonStyleOrFamilyClasses", "faStyles", "P", "styleFromValues", "canonical", "_objectSpread2", "getDefaultCanonicalPrefix", "applyShimAndAlias", "aliasIconName", "newCanonicalFamilies", "newCanonicalStyles", "co", "key", "prefixOptions", "config$$1", "isDuotoneFamily", "valuesHasDuotone", "defaultFamilyIsDuotone", "canonicalPrefixIsDuotone", "defaultPrefix", "pt", "Library", "_len", "definitions", "_key", "additions", "defineIcons", "longPrefix", "definition", "normalized", "_plugins", "_hooks", "providers", "defaultProviderKeys", "registerPlugins", "nextPlugins", "_ref", "obj", "k", "plugin", "mixout", "tk", "sk", "hooks", "hook", "chainHooks", "accumulator", "args", "hookFn", "callHooks", "_len2", "_key2", "callProvided", "findIconDefinition", "iconLookup", "iconFromMapping", "library", "noAuto", "dom", "IS_DOM", "autoReplaceSvgRoot", "domready", "autoReplace", "parse", "ICON_SELECTION_SYNTAX_PATTERN", "canonicalIcon", "api", "toHtml", "DOCUMENT", "domVariants", "val", "abstractCreator", "a", "container", "asIcon", "children", "main", "mask", "attributes", "transform", "transformIsMeaningful", "width", "height", "offset", "joinStyles", "asSymbol", "symbol", "id", "makeInlineSvgAbstract", "title", "maskId", "titleId", "extra", "watchable", "isUploadedIcon", "Lt", "attrClass", "content", "uploadedIconWidthStyle", "DATA_FA_I2SVG", "nextUniqueId", "makeLayersTextAbstract", "transformForCss", "styleString", "makeLayersCounterAbstract", "styles$1", "asFoundIcon", "vectorData", "element", "DUOTONE_CLASSES", "missingIconResolutionMixin", "maybeNotifyMissing", "PRODUCTION", "findIcon", "resolve", "reject", "noop$1", "p$2", "PERFORMANCE", "preamble", "begin", "end", "perf", "noop$2", "isWatched", "node", "hasPrefixAndIcon", "DATA_PREFIX", "DATA_ICON", "hasBeenReplaced", "getMutator", "mutators", "createElementNS", "tag", "createElement", "convertSVG", "abstractObj", "ceFn", "child", "nodeAsComment", "comment", "mutation", "abstract", "classArray", "forSvg", "splitClasses", "newInnerHTML", "performOperationSync", "op", "perform", "mutations", "callback", "callbackFunction", "frame", "MUTATION_APPROACH_ASYNC", "WINDOW", "mutator", "mark", "disabled", "disableObservation", "enableObservation", "mo$1", "observe", "options", "MUTATION_OBSERVER", "treeCallback", "nodeCallback", "pseudoElementsCallback", "observeMutationsRoot", "objects", "toArray", "mutationRecord", "ATTRIBUTES_WATCHED_FOR_MUTATION", "disconnect", "styleParser", "prop", "classParser", "existingPrefix", "existingIconName", "innerText", "toHex", "attributesParser", "extraAttributes", "attr", "blankMeta", "meaninglessTransform", "parseMeta", "parser", "extraClasses", "pluginMeta", "extraStyles", "styles$2", "generateMutation", "nodeMeta", "LAYERS_TEXT_CLASSNAME", "getKnownPrefixes", "Ft", "onTree", "root", "htmlClassList", "hclAdd", "suffix", "HTML_CLASS_I2SVG_BASE_CLASS", "hclRemove", "prefixes", "prefixesDomQuery", "p$$1", "candidates", "e$$1", "resolvedMutations", "onNode", "resolveIcons", "next", "maybeIconDefinition", "iconDefinition", "render", "classes", "ReplaceElements", "providers$$1", "_ref2", "nextChild", "Layers", "assembler", "LayersCounter", "LayersText", "IS_IE", "computedFontSize", "boundingClientRect", "CLEAN_CONTENT_PATTERN", "SECONDARY_UNICODE_RANGE", "_FONT_FAMILY_WEIGHT_TO_PREFIX", "lt", "ko", "Yt", "FONT_FAMILY_WEIGHT_TO_PREFIX", "FONT_FAMILY_WEIGHT_FALLBACK", "fontFamily", "weights", "hexValueFromContent", "cleaned", "codePoint", "codePointAt", "isPrependTen", "isDoubled", "getPrefix", "fontWeight", "fontFamilySanitized", "fontWeightInteger", "fontWeightSanitized", "replaceForPosition", "position", "pendingAttribute", "DATA_FA_PSEUDO_ELEMENT_PENDING", "alreadyProcessedPseudoElement", "DATA_FA_PSEUDO_ELEMENT", "fontFamilyMatch", "FONT_FAMILY_PATTERN", "hexValue", "isSecondary", "isV4", "iconIdentifier", "iconName4", "meta", "replace", "processable", "TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS", "searchPseudoElements", "operations", "PseudoElements", "_unwatched", "MutationObserver$1", "parseTransformString", "transformString", "n", "first", "PowerTransforms", "containerWidth", "iconWidth", "outer", "innerTranslate", "innerScale", "innerRotate", "inner", "path", "ALL_SPACE", "fillBlack", "force", "deGroup", "Masks", "maskData", "explicitMaskId", "mainWidth", "mainPath", "maskWidth", "maskPath", "trans", "transformForSvg", "maskRect", "maskInnerGroupChildrenMixin", "maskInnerGroup", "maskOuterGroup", "clipId", "maskTag", "defs", "MissingIconIndicator", "reduceMotion", "gChildren", "FILL", "ANIMATION_BASE", "OPACITY_ANIMATE", "dot", "SvgSymbols", "symbolData", "plugins", "InjectCSS", "noAuto$1", "config$1", "library$1", "dom$1", "parse$1", "findIconDefinition$1", "toHtml$1", "layer", "text", "counter", "import_prop_types", "init_compat_module", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "key", "_defineProperty", "_typeof", "obj", "value", "_objectWithoutPropertiesLoose", "excluded", "sourceKeys", "_objectWithoutProperties", "sourceSymbolKeys", "_toConsumableArray", "arr", "_arrayWithoutHoles", "_iterableToArray", "_unsupportedIterableToArray", "_nonIterableSpread", "_arrayLikeToArray", "iter", "o", "minLen", "len", "arr2", "classList", "props", "_classes", "beat", "fade", "beatFade", "bounce", "shake", "flash", "spin", "spinPulse", "spinReverse", "pulse", "fixedWidth", "inverse", "border", "listItem", "flip", "size", "rotation", "pull", "classes", "_isNumerical", "camelize", "string", "match", "chr", "_excluded", "capitalize", "val", "styleToObject", "style", "s", "acc", "pair", "prop", "convert", "createElement", "element", "extraProps", "children", "child", "mixins", "_extraProps$style", "existingStyle", "remaining", "PRODUCTION", "log", "_console", "normalizeIconArgs", "icon", "parse$1", "objectWithKey", "defaultProps", "FontAwesomeIcon", "xn", "ref", "allProps", "iconArgs", "maskArgs", "symbol", "className", "title", "titleId", "maskId", "iconLookup", "transform", "mask", "renderedIcon", "abstract", "convertCurry", "PropTypes", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_hooks_module", "init_compat_module", "init_preact_module", "Error", "message", "_", "b", "ExclamationTriangle", "props", "d", "__spreadValues", "init_compat_module", "init_preact_module", "Select", "_a", "_b", "children", "props", "__objRest", "chevronClasses", "_", "__spreadValues", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_hooks_module", "init_hooks_module", "init_compat_module", "init_preact_module", "import_react_stripe_js", "init_compat_module", "init_preact_module", "init_hooks_module", "init_hooks_module", "init_compat_module", "init_preact_module", "init_compat_module", "init_preact_module", "init_hooks_module", "LandingPageState", "G", "d", "useError", "errors", "x", "LandingPageState", "setError", "value", "clearError", "key", "init_compat_module", "init_preact_module", "PhoneFieldWithSms", "number", "sendSms", "numberChange", "smsChange", "required", "errors", "id", "errorPresent", "_", "b", "target", "Error", "PhoneField", "init_hooks_module", "LeadCaptureForm", "member", "leadCaptureForm", "errors", "useError", "id", "g", "_", "b", "field", "renderField", "_a", "_b", "_c", "PhoneFieldWithSms", "number", "sendSms", "PhoneField", "AddressField", "address", "LCFSelect", "target", "Select", "option", "_render", "render_fn", "lcf_preview_controller_default", "Controller", "__privateAdd", "__publicField", "d", "__privateMethod", "formData", "baseKey", "fieldsOrdered", "key", "index", "acc", "_a", "formKey", "name", "order", "label", "type", "required", "fields", "colors", "color", "__spreadValues", "__spreadProps", "data", "style", "_", "LeadCaptureForm", "BoundPreview", "B", "new_promotion_controller_default", "Controller", "form", "params", "src", "turbo_es2017_esm_exports", "event", "selectedOption", "__publicField", "profile_setting_controller_default", "Controller", "outlet", "event", "travelingIndex", "putBeforeIndex", "breakpoint", "tab", "index", "target", "listItem", "input", "sectionName", "isHidden", "__publicField", "_trySync", "trySync_fn", "_massageIntoHex", "massageIntoHex_fn", "component_controller_default", "Controller", "__privateAdd", "syncValue", "value", "__privateMethod", "target", "realValue", "hex", "validChars", "char", "r", "g", "b", "__publicField", "keyed_visibility_controller_default", "Controller", "key", "container", "input", "__publicField", "swap_visibility_controller_default", "Controller", "container", "value", "index", "__publicField", "required_checkbox_group_controller_default", "Controller", "event", "item", "__publicField", "_emitChange", "emitChange_fn", "mark_checked_controller_default", "Controller", "__privateAdd", "target", "__privateMethod", "__publicField", "sync_checkboxes_controller_default", "Controller", "child", "__publicField", "account_registrations_controller_default", "Controller", "event", "ownerPhone", "ownerFullPhone", "ownerTelInput", "adminPhone", "adminFullPhone", "adminTelInput", "sourceIsToken", "sourceElement", "success", "controllerName", "__publicField", "landing_page_programs_controller_default", "Controller", "target", "membershipTemplateInput", "membershipPrograms", "mp", "program", "pt", "programInputs", "programInput", "value", "container", "input", "__publicField", "application", "ApplicationController", "ClickOutsideController", "confirmation_submit_controller_default", "dashboard_module_controller_default", "DropSortableController", "dropzone_controller_default", "lp_navigation_controller_default", "lp_payment_controller_default", "lp_scheduler_controller_default", "program_signup_controller_default", "public_controller_default", "recent_activity_filter_controller_default", "focus_controller_default", "FormSortableController", "icon_loading_controller_default", "imask_controller_default", "inline_edit_controller_default", "modal_controller_default", "preferences_controller_default", "radio_btn_controller_default", "radio_btn_group_controller_default", "class_events_controller_default", "class_registrations_controller_default", "event_type_toggler_controller_default", "hovercard_controller_default", "MembershipTemplatesController", "mini_calendar_controller_default", "pagination_controller_default", "PrettyCheckboxController", "programs_controller_default", "ranks_controller_default", "RecurringClassesController", "StudentsFilterController", "select2_controller_default", "component_default", "ToggleClassController", "programs_and_ranks_step_controller_default", "calculate_membership_totals_controller_default", "toggle_disable_controller_default", "toggle_form_submit_controller_default", "tom_select_controller_default", "tooltip_controller_default", "url_field_controller_default", "replace_on_change_controller_default", "payment_form_controller_default", "lazy_image_controller_default", "pwa_controller_default", "beacon_controller_default", "flatpickr_controller_default", "src_default", "component_controller_default", "scheduler_controller_default", "student_controller_default", "scroll_to_controller_default", "toggleable_input_controller_default", "toggleable_frame_controller_default", "copyable_input_controller_default", "turbo_pagination_controller_default", "prospect_controller_default", "duplicate_fieldset_controller_default", "auto_sort_controller_default", "add_on_select_controller_default", "required_field_checkbox_controller_default", "toggle_select_controller_default", "line_item_calculate_controller_default", "calculate_invoice_totals_controller_default", "calculate_invoice_due_date_controller_default", "change_due_controller_default", "turbo_stream_controller_default", "payment_processing_controller_default", "stripe_controller_default", "basys_controller_default", "usa_epay_controller_default", "print_controller_default", "money_distributor_controller_default", "money_controller_default", "remove_line_item_controller_default", "recurring_billings_controller_default", "quick_action_progress_controller_default", "state_transitions_controller_default", "remove_notice_controller_default", "attendances_controller_default", "share_and_sign_agreement_controller_default", "agreement_preview_controller_default", "trial_membership_form_controller_default", "signup_membership_controller_default", "recurring_billings_index_controller_default", "edit_membership_controller_default", "backdated_payments_controller_default", "reactivate_membership_controller_default", "form_controller_default", "adjust_invoice_balance_controller_default", "reecurring_billing_duration_controller_default", "membership_attendance_controller_default", "new_student_controller_default", "classes_details_controller_default", "promotions_controller_default", "promotions_progress_controller_default", "quicklinks_controller_default", "new_attendance_controller_default", "edit_person_attendances_controller_default", "new_family_member_controller_default", "person_hovercard_controller_default", "modules_nav_controller_default", "accounts_controller_default", "family_management_invites_send_modal_controller_default", "turbo_form_submit_redirect_controller_default", "toggle_visibility_controller_default", "hideable_form_controller_default", "searchable_list_default", "toggle_save_visibility_controller_default", "safe_submit_controller_default", "lcf_preview_controller_default", "new_promotion_controller_default", "profile_setting_controller_default", "keyed_visibility_controller_default", "swap_visibility_controller_default", "required_checkbox_group_controller_default", "mark_checked_controller_default", "sync_checkboxes_controller_default", "account_registrations_controller_default", "landing_page_programs_controller_default", "import_cable", "import_jstz", "jstz", "e", "regex", "str", "validCharacter", "adminIsOwner", "capitalize", "input", "luhn", "num", "numArray", "n", "checksum", "acc", "i", "creditCardTypeFromNumber", "quickCards", "fullCards", "parsedNum", "quickType", "type", "fullType", "camelCase", "match", "group1", "isFormFieldValidationImmediate", "field", "customvalidationMethod", "isFormFieldValid", "markActiveFormSectionIncomplete", "markActiveFormSectionComplete", "isActiveFormSectionValid", "isValid", "focusFirstFormField", "container", "activePiece", "nextPiece", "activeFooterItem", "prevPiece", "nextButton", "accountCreationSubdomainCheck", "parent", "before", "data", "activateClipboard", "schoolButton", "inputField", "personalButton", "calendar", "updateDate", "info", "updatedStartDate", "updatedEndDate", "moduloDistanceStartDate", "moduloDistanceEndDate", "eventType", "eventId", "updatedData", "updatePath", "closePopoverWithOutsideClick", "e", "tooltip", "centerPosition", "dynamicPositionPopover", "jsEvent", "left", "top", "dynamicPositionScrollablePopover", "currentMousePos", "editEvent", "path", "fullCalendar", "$updateEventModal", "$globalAlerts", "data", "response", "CustomViewConfig", "props", "segs", "currentDate", "start", "end", "customListView", "event", "closeDiv", "toolTipDiv", "getCookie", "date", "activateTodayButton", "startDate", "eventsMarkup", "button", "id", "details", "updateCalendarDate", "options", "endDate", "shouldShowYear", "trayFrame", "frame", "src", "selectors", "selector", "$target", "newDate", "setCookie", "checkbox", "$newEventModal", "closeModalAndAlertForSuccess", "modal", "xhr", "alertForFailure", "e", "openModalFromHash", "hash", "newProfileToggleBehavior", "newProfileToggle", "behavior", "bindClickableDays", "binds", "e", "$this", "$target", "path", "bindMonthTransitions", "collapseExpandWidgetIfUserHasNoPreference", "userPreferenceSelector", "windowWidth", "collapseExpandVitalsWidgetIfUserHasNoPreference", "updateVitalsWidgetDisplayPreference", "path", "isDisplayed", "xhr", "$this", "$target", "$collapsiblePanel", "initializeCollapsibleDropdowns", "initializeCollapsibleDropdown", "$dropdownName", "e", "dropdownNames", "dropdownName", "fixableHeader", "fixableHeaderAltitude", "fixableHeaderHeight", "fixableHeaderBuffer", "distanceFromTop", "desiredWidth", "desiredClass", "$this", "$reminder", "path", "token", "xhr", "alertsToHide", "$$$schoolSearchResponse", "e", "query", "$this", "$target", "path", "before", "toggleSearch", "event", "handleLCFNewFieldCreationSubmission", "element", "lastOrder", "$createBtn", "$customFieldTarget", "nameValue", "path", "token", "xhr", "data", "initializeLeadCaptureFormFields", "collection", "updateLeadCaptureFormStatus", "container", "button", "initializeLeadCaptureFormStatusDropdowns", "parent", "$this", "$target", "$parentButton", "$actualFormField", "$widget", "$sibling", "$parent", "$hiddenFormField", "hiddenFormFieldValue", "$hiddenFormFieldDos", "hiddenFormFieldDosValue", "$selectedFormField", "$keyField", "splittedString", "key", "$lastField", "e", "$confirmationEmailToggle", "$quickConnectToggle", "$phoneNumberRequiredField", "e", "$quickConnectEmailToggle", "$redirectIframeToggle", "form", "hasInvalidURL", "$hiddenFormField", "event", "$target", "path", "profilePhotoUploader", "putFile", "e", "file", "dt", "fileList", "i", "formData", "token", "xhr", "data", "cw", "width", "preferences", "section_name", "toggleSidebarSection", "pref_update", "updateProfileSidebarPreferences", "path", "data", "$this", "section", "content", "chevron", "icon", "tabletSize", "sidebar", "agreementToggle", "behavior", "toggleButton", "dropzoneComp", "button", "buttons", "disabledButtons", "item", "btn", "agreementToggleBehavior", "selectAgreementBehavior", "templateText", "trix", "initializeShareAndSign", "modal", "response", "shareUrl", "emailBtn", "smsBtn", "emailDiv", "smsDiv", "sms_field", "email_field", "smsIntlInput", "agreementId", "sendSelectors", "selector", "option", "sms_value", "$email_modal", "$sms_modal", "saveAndShareBehavior", "selectedTemplate", "signatureType", "personId", "personType", "data", "shareModal", "goBackBehavior", "templateSelectBehavior", "agreementPreviewLoading", "templateId", "studentId", "previewPath", "csrfToken", "override_tokens", "xhr", "_data", "cancelClickBehavior", "agreementClickBehavior", "path", "title", "token", "pdfViewer", "form", "toggleTokenOverrideChevron", "promoId", "studentId", "initializeSelect2", "initializeProgramRows", "$row", "e", "hidden_field", "i", "v", "icon", "loadRanksForProgram", "selectedProgram", "ranks", "id_name", "createElementFromSelections", "program_id", "program_name", "rank_id", "rank_name", "belt_html", "getBeltHtml", "div", "path", "token", "html", "xhr", "data", "_idx", "row", "$modal", "$globalAlerts", "$target", "closeBtns", "btn", "schoolId", "userId", "isStudentsView", "isStudentProfileView", "data", "validId", "$attendanceLogItems", "$attendanceLogItemsParent", "bulkCheckbox", "id", "schoolId", "userId", "isStudentProfileView", "isProspectProfileView", "onProfileView", "data", "validId", "$commentsModule", "$this", "path", "id", "schoolId", "userId", "isProspectsView", "data", "validId", "$prospectContainer", "bulkCheckbox", "id", "schoolId", "userId", "isStudentsView", "data", "validId", "$studentContainer", "id", "schoolId", "userId", "isStudentsView", "data", "validId", "$studentContainer", "bulkCheckbox", "id", "basysOnLoad", "secondaryColor", "tertiaryColor", "invalidColor", "BASYS_PUBLIC_KEY", "FORM", "$basysSubmitButton", "BASYS_FORM_SUBMIT_DISABLE_WITH_VALUE", "BASYS_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE", "BASYS_CHARGE_FORM_READY_FOR_SUBMISSION", "tokenizer", "resp", "event", "stripeOnLoad", "FORM", "STRIPE_PUBLIC_KEY", "STRIPE_ACCOUNT_TOKEN", "secondaryColor", "tertiaryColor", "invalidColor", "stripe", "elements", "card", "event", "displayError", "$stripeSubmitButton", "STRIPE_FORM_SUBMIT_DISABLE_WITH_VALUE", "STRIPE_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE", "STRIPE_CHARGE_FORM_READY_FOR_SUBMISSION", "$form", "xhr", "data", "result", "errorElement", "ePayOnLoad", "FORM", "USA_EPAY_PUBLIC_TOKEN", "$usaEpaySubmitButton", "USA_EPAY_FORM_SUBMIT_DISABLE_WITH_VALUE", "USA_EPAY_FORM_SUBMIT_DISABLE_WITH_ORIGINAL_VALUE", "USA_EPAY_CHARGE_FORM_READY_FOR_SUBMISSION", "secondaryColor", "tertiaryColor", "invalidColor", "client", "paymentCard", "style", "errorMessage", "baseErrorContainer", "errorContainer", "event", "result", "import_local_time", "escape", "unsafe", "setupConfirmations", "turbo_es2017_esm_exports", "message", "element", "confirmationModal", "tooltips", "modalBody", "trigger", "escape", "title", "acceptText", "cancelText", "acceptStyle", "acceptData", "denyData", "denyStyle", "thingToDelete", "thingToDeleteElement", "tooltip", "setModalSize", "toggleThingToDelete", "setModalText", "setModalAttributes", "resolve", "detail", "acceptButton", "denyButton", "key", "value", "size", "core_exports", "__export", "JsonPatchError", "_areEquals", "applyOperation", "applyPatch", "applyReducer", "deepClone", "getValueByPointer", "validate", "validator", "__extends", "extendStatics", "d", "b", "p", "__", "_hasOwnProperty", "hasOwnProperty", "obj", "key", "_objectKeys", "keys_1", "k", "keys", "_deepClone", "isInteger", "str", "i", "len", "charCode", "escapePathComponent", "path", "unescapePathComponent", "hasUndefined", "obj", "i_1", "len", "objKeys", "_objectKeys", "objKeysLength", "i", "patchErrorMessageFormatter", "message", "args", "messageParts", "key", "value", "PatchError", "_super", "__extends", "name", "index", "operation", "tree", "_newTarget", "_this", "JsonPatchError", "PatchError", "deepClone", "_deepClone", "objOps", "obj", "key", "document", "removed", "getValueByPointer", "originalValue", "applyOperation", "valueToCopy", "_areEquals", "arrOps", "arr", "i", "isInteger", "removedList", "pointer", "getOriginalDestination", "operation", "validateOperation", "mutateDocument", "banPrototypeModifications", "index", "validator", "returnValue", "path", "keys", "t", "len", "existingPathFragment", "validateFunction", "unescapePathComponent", "applyPatch", "patch", "results", "length_1", "applyReducer", "operationResult", "hasUndefined", "pathLen", "existingPathLen", "existingValue", "error", "validate", "sequence", "externalValidator", "e", "a", "b", "arrA", "arrB", "length", "duplex_exports", "__export", "compare", "generate", "observe", "unobserve", "beforeDict", "Mirror", "obj", "ObserverInfo", "callback", "observer", "getMirror", "getObserverFromMirror", "mirror", "removeObserverFromMirror", "unobserve", "root", "observe", "patches", "observerInfo", "_deepClone", "dirtyCheck", "generate", "fastCheck", "invertible", "_generate", "applyPatch", "temp", "path", "newKeys", "_objectKeys", "oldKeys", "changed", "deleted", "t", "key", "oldVal", "hasOwnProperty", "newVal", "escapePathComponent", "compare", "tree1", "tree2", "fast_json_patch_default", "core_exports", "duplex_exports", "PatchError", "_deepClone", "escapePathComponent", "unescapePathComponent", "vega_module_exports", "__export", "Bounds", "CanvasHandler", "CanvasRenderer", "DATE", "DAY", "DAYOFYEAR", "Dataflow", "Debug", "Error$1", "EventStream", "Gradient", "GroupItem", "HOURS", "Handler", "HybridHandler", "HybridRenderer", "Info", "Item", "MILLISECONDS", "MINUTES", "MONTH", "Marks", "MultiPulse", "None", "Operator", "Parameters", "Pulse", "QUARTER", "RenderType", "Renderer", "ResourceLoader", "SECONDS", "SVGHandler", "SVGRenderer", "SVGStringRenderer", "Scenegraph", "TIME_UNITS", "Transform", "View", "WEEK", "Warn", "YEAR", "accessor", "accessorFields", "accessorName", "array", "ascending", "estimateBandwidth", "bin", "bootstrapCI", "boundClip", "boundContext", "boundItem", "boundMark", "boundStroke", "changeset", "clampRange", "codegen", "compare", "constant", "cumulativeLogNormal", "cumulativeNormal", "cumulativeUniform", "dayofyear", "debounce", "defaultLocale", "definition", "densityLogNormal", "densityNormal", "densityUniform", "domChild", "domClear", "domCreate", "domFind", "dotbin", "error", "expressionFunction", "extend", "extent", "extentIndex", "falsy", "fastmap", "field", "flush", "font", "fontFamily", "fontSize", "format", "numberFormatDefaultLocale", "formats", "has", "id", "identity", "inferType", "inferTypes", "ingest$1", "inherits", "inrange", "interpolate", "interpolateColors", "interpolateRange", "intersect", "intersectBoxLine", "intersectPath", "intersectPoint", "intersectRule", "isArray", "isBoolean", "isDate", "isFunction", "isIterable", "isNumber", "isObject", "isRegExp", "isString", "isTuple", "key", "lerp", "lineHeight", "loader", "locale", "logger", "lruCache", "markup", "merge", "mergeConfig", "multiLineOffset", "one", "pad", "panLinear", "panLog", "panPow", "panSymlog", "parse", "parser", "eventSelector", "path", "curves", "pathEqual", "vg_rect", "pathRender", "symbols", "vg_trail", "peek", "point", "projection", "quantileLogNormal", "quantileNormal", "quantileUniform", "quantiles", "quantizeInterpolator", "quarter", "quartiles", "random", "integer", "kde", "lcg", "lognormal", "mixture", "gaussian", "uniform", "read", "exp", "linear", "loess", "log", "poly", "pow", "quad", "renderModule", "repeat", "resetDefaultLocale", "resetSVGClipId", "resetSVGDefIds", "responseType", "context", "sampleCurve", "sampleLogNormal", "sampleNormal", "sampleUniform", "scale", "sceneEqual", "sceneFromJSON", "pickVisit", "sceneToJSON", "visit", "zorder", "scheme", "serializeXML", "setHybridRendererOptions", "setRandom", "span", "splitAccessPath", "$", "textMetrics", "timeFloor", "timeFormatDefaultLocale", "timeInterval", "timeOffset", "timeSequence", "timeUnitSpecifier", "timeUnits", "toBoolean", "toDate", "toNumber", "toSet", "toString", "transform", "transforms", "truncate", "truthy", "tupleid", "typeParsers", "utcFloor", "utcInterval", "utcOffset", "utcSequence", "utcdayofyear", "utcquarter", "utcweek", "version", "visitArray", "week", "writeConfig", "zero", "zoomLinear", "zoomLog", "zoomPow", "zoomSymlog", "accessor", "fn", "fields", "name", "accessorName", "accessorFields", "getter", "path", "get1", "getN", "field", "obj", "len", "i", "error", "message", "splitAccessPath", "p", "q", "b", "s", "j", "c", "push", "opt", "id", "identity", "_", "zero", "one", "truthy", "falsy", "log$1", "method", "level", "input", "args", "None", "Error$1", "Warn", "Info", "Debug", "logger", "handler", "isArray", "isObject", "isLegalKey", "key", "mergeConfig", "_len", "configs", "_key", "out", "source", "mergeNamed", "r", "writeConfig", "output", "value", "recurse", "k", "a", "map", "add", "peek", "array", "toNumber", "exp", "sign", "x", "log", "symlog", "symexp", "pow", "exponent", "pan", "domain", "delta", "lift", "ground", "d0", "d1", "dd", "panLinear", "panLog", "panPow", "panSymlog", "constant", "zoom", "anchor", "scale", "da", "zoomLinear", "zoomLog", "zoomPow", "zoomSymlog", "quarter", "date", "utcquarter", "clampRange", "range", "min", "max", "lo", "hi", "span", "isFunction", "DESCENDING", "compare", "orders", "ord", "get", "fmap", "gen", "comparator", "f", "ascending", "u", "v", "compare1", "compareN", "order", "debounce", "delay", "tid", "e", "extend", "extent", "n", "extentIndex", "hop", "has", "object", "property", "NULL", "fastmap", "test", "has$1", "next", "size", "flush", "threshold", "left", "right", "center", "t", "l", "inherits", "child", "parent", "members", "proto", "inrange", "r0", "r1", "isBoolean", "isDate", "isIterable", "isNumber", "isRegExp", "isString", "flat", "lerp", "frac", "DEFAULT_MAX_SIZE", "lruCache", "maxsize", "curr", "prev", "clear", "update", "merge", "array0", "array1", "n0", "n1", "merged", "i0", "i1", "repeat", "str", "reps", "pad", "length", "padchar", "align", "$", "toBoolean", "defaultParser", "toDate", "parser", "toString", "toSet", "truncate", "ellipsis", "visitArray", "filter", "visitor", "EOL", "EOF", "QUOTE", "NEWLINE", "RETURN", "objectConverter", "columns", "name", "i", "customConverter", "f", "object", "row", "inferColumns", "rows", "columnSet", "column", "pad", "value", "width", "s", "length", "formatYear", "year", "formatDate", "date", "hours", "minutes", "seconds", "milliseconds", "dsv_default", "delimiter", "reFormat", "DELIMITER", "parse", "text", "convert", "parseRows", "N", "I", "n", "t", "eof", "eol", "token", "j", "c", "preformatBody", "formatValue", "format", "formatBody", "formatRows", "formatRow", "identity_default", "x", "transform_default", "transform", "identity_default", "x0", "y0", "kx", "ky", "dx", "dy", "input", "i", "j", "n", "output", "reverse_default", "array", "n", "t", "j", "feature_default", "topology", "o", "feature", "id", "bbox", "properties", "geometry", "object", "transformPoint", "transform_default", "arcs", "arc", "i", "points", "a", "k", "n", "reverse_default", "point", "p", "line", "ring", "polygon", "type", "coordinates", "stitch_default", "topology", "arcs", "stitchedArcs", "fragmentByStart", "fragmentByEnd", "fragments", "emptyIndex", "i", "j", "arc", "t", "e", "ends", "start", "end", "f", "fg", "gf", "p0", "p1", "dp", "flush", "k", "mesh_default", "topology", "object", "meshArcs", "filter", "arcs", "n", "extractArcs", "stitch_default", "geomsByArc", "geom", "extract0", "i", "j", "extract1", "extract2", "extract3", "geometry", "o", "geoms", "ascending", "a", "b", "descending", "a", "b", "bisector", "f", "compare1", "compare2", "delta", "ascending", "d", "x", "descending", "zero", "left", "lo", "hi", "mid", "right", "center", "i", "number", "x", "numbers", "values", "valueof", "value", "index", "ascendingBisect", "bisector", "ascending", "bisectRight", "bisectLeft", "bisectCenter", "number", "bisect_default", "variance", "values", "valueof", "count", "delta", "mean", "sum", "value", "index", "deviation", "values", "valueof", "v", "variance", "Adder", "x", "p", "i", "j", "y", "hi", "lo", "InternMap", "entries", "key", "keyof", "value", "intern_get", "intern_set", "intern_delete", "InternSet", "values", "_intern", "_key", "permute", "source", "keys", "key", "compareDefined", "compare", "ascending", "ascendingDefined", "a", "b", "x", "e10", "e5", "e2", "tickSpec", "start", "stop", "count", "step", "power", "error", "factor", "i1", "i2", "inc", "ticks", "reverse", "n", "i", "tickIncrement", "tickStep", "max", "values", "valueof", "value", "index", "min", "values", "valueof", "value", "index", "quickselect", "array", "k", "left", "right", "compare", "ascendingDefined", "compareDefined", "n", "m", "z", "s", "sd", "newLeft", "newRight", "t", "i", "j", "swap", "quantile", "values", "p", "valueof", "numbers", "n", "min", "max", "i0", "value0", "quickselect", "value1", "quantileSorted", "number", "mean", "values", "valueof", "count", "sum", "value", "index", "median", "values", "valueof", "quantile", "flatten", "arrays", "array", "merge", "range", "start", "stop", "step", "n", "i", "sum", "values", "valueof", "value", "index", "intersection", "values", "others", "InternSet", "set", "out", "value", "other", "union", "others", "set", "InternSet", "other", "o", "formatDecimal_default", "x", "formatDecimalParts", "p", "i", "coefficient", "exponent_default", "x", "formatDecimalParts", "formatGroup_default", "grouping", "thousands", "value", "width", "t", "j", "g", "length", "formatNumerals_default", "numerals", "value", "i", "re", "formatSpecifier", "specifier", "match", "FormatSpecifier", "formatTrim_default", "s", "out", "n", "i", "i0", "i1", "prefixExponent", "formatPrefixAuto_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "i", "n", "formatRounded_default", "x", "p", "d", "formatDecimalParts", "coefficient", "exponent", "formatTypes_default", "x", "p", "formatDecimal_default", "formatRounded_default", "formatPrefixAuto_default", "identity_default", "x", "map", "prefixes", "locale_default", "locale", "group", "identity_default", "formatGroup_default", "currencyPrefix", "currencySuffix", "decimal", "numerals", "formatNumerals_default", "percent", "minus", "nan", "newFormat", "specifier", "formatSpecifier", "fill", "align", "sign", "symbol", "zero", "width", "comma", "precision", "trim", "type", "formatTypes_default", "prefix", "suffix", "formatType", "maybeSuffix", "format", "value", "valuePrefix", "valueSuffix", "i", "n", "c", "valueNegative", "formatTrim_default", "prefixExponent", "length", "padding", "formatPrefix", "f", "e", "exponent_default", "k", "locale", "format", "formatPrefix", "defaultLocale", "definition", "locale_default", "precisionFixed_default", "step", "exponent_default", "precisionPrefix_default", "step", "value", "exponent_default", "precisionRound_default", "step", "max", "exponent_default", "t0", "t1", "timeInterval", "floori", "offseti", "count", "field", "interval", "date", "d0", "d1", "step", "start", "stop", "range", "previous", "test", "end", "d", "millisecond", "timeInterval", "date", "step", "start", "end", "k", "milliseconds", "second", "timeInterval", "date", "step", "start", "end", "seconds", "timeMinute", "timeInterval", "date", "step", "start", "end", "timeMinutes", "utcMinute", "utcMinutes", "timeHour", "timeInterval", "date", "step", "start", "end", "timeHours", "utcHour", "utcHours", "timeDay", "timeInterval", "date", "step", "start", "end", "timeDays", "utcDay", "utcDays", "unixDay", "unixDays", "timeWeekday", "i", "timeInterval", "date", "step", "start", "end", "timeSunday", "timeMonday", "timeTuesday", "timeWednesday", "timeThursday", "timeFriday", "timeSaturday", "timeSundays", "timeMondays", "timeTuesdays", "timeWednesdays", "timeThursdays", "timeFridays", "timeSaturdays", "utcWeekday", "utcSunday", "utcMonday", "utcTuesday", "utcWednesday", "utcThursday", "utcFriday", "utcSaturday", "utcSundays", "utcMondays", "utcTuesdays", "utcWednesdays", "utcThursdays", "utcFridays", "utcSaturdays", "timeMonth", "timeInterval", "date", "step", "start", "end", "timeMonths", "utcMonth", "utcMonths", "timeYear", "timeInterval", "date", "step", "start", "end", "k", "timeYears", "utcYear", "utcYears", "ticker", "year", "month", "week", "day", "hour", "minute", "tickIntervals", "second", "ticks", "start", "stop", "count", "reverse", "interval", "tickInterval", "target", "i", "bisector", "step", "tickStep", "millisecond", "t", "utcTicks", "utcTickInterval", "utcYear", "utcMonth", "utcSunday", "unixDay", "utcHour", "utcMinute", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "YEAR", "QUARTER", "MONTH", "WEEK", "DATE", "DAY", "DAYOFYEAR", "HOURS", "MINUTES", "SECONDS", "MILLISECONDS", "TIME_UNITS", "UNITS", "o", "u", "i", "timeUnits", "units", "array", "m", "error", "unit", "has", "a", "b", "defaultSpecifiers", "timeUnitSpecifier", "specifiers", "s", "extend", "n", "fmt", "start", "end", "key", "t0", "localYear", "y", "dayofyear", "d", "localDayOfYear", "week", "localWeekNum", "timeDay", "timeSunday", "localFirst", "localDate", "H", "M", "S", "L", "date", "utcdayofyear", "utcDayOfYear", "utcweek", "utcWeekNum", "utcDay", "utcSunday", "utcFirst", "utcDate", "floor", "step", "get", "inv", "newDate", "peek", "_", "p", "getUnit", "t", "toSet", "constant", "zero", "one", "v", "year", "f", "phase", "weekday", "day", "firstDay", "localGet", "localInv", "q", "w", "timeFloor", "utcGet", "utcInv", "utcFloor", "timeIntervals", "timeYear", "timeMonth", "timeHour", "timeMinute", "second", "millisecond", "utcIntervals", "utcYear", "utcMonth", "utcHour", "utcMinute", "timeInterval", "utcInterval", "offset", "ival", "timeOffset", "utcOffset", "sequence", "stop", "timeSequence", "utcSequence", "durationSecond", "durationMinute", "durationHour", "durationDay", "durationWeek", "durationMonth", "durationYear", "Milli", "Seconds", "Minutes", "Hours", "Day", "Week", "Month", "Year", "intervals", "bin", "opt", "ext", "max", "target", "span", "bisector", "tickStep", "localDate", "d", "date", "utcDate", "newDate", "y", "m", "formatLocale", "locale", "locale_dateTime", "locale_date", "locale_time", "locale_periods", "locale_weekdays", "locale_shortWeekdays", "locale_months", "locale_shortMonths", "periodRe", "formatRe", "periodLookup", "formatLookup", "weekdayRe", "weekdayLookup", "shortWeekdayRe", "shortWeekdayLookup", "monthRe", "monthLookup", "shortMonthRe", "shortMonthLookup", "formats", "formatShortWeekday", "formatWeekday", "formatShortMonth", "formatMonth", "formatDayOfMonth", "formatMicroseconds", "formatYearISO", "formatFullYearISO", "formatHour24", "formatHour12", "formatDayOfYear", "formatMilliseconds", "formatMonthNumber", "formatMinutes", "formatPeriod", "formatQuarter", "formatUnixTimestamp", "formatUnixTimestampSeconds", "formatSeconds", "formatWeekdayNumberMonday", "formatWeekNumberSunday", "formatWeekNumberISO", "formatWeekdayNumberSunday", "formatWeekNumberMonday", "formatYear", "formatFullYear", "formatZone", "formatLiteralPercent", "utcFormats", "formatUTCShortWeekday", "formatUTCWeekday", "formatUTCShortMonth", "formatUTCMonth", "formatUTCDayOfMonth", "formatUTCMicroseconds", "formatUTCYearISO", "formatUTCFullYearISO", "formatUTCHour24", "formatUTCHour12", "formatUTCDayOfYear", "formatUTCMilliseconds", "formatUTCMonthNumber", "formatUTCMinutes", "formatUTCPeriod", "formatUTCQuarter", "formatUTCSeconds", "formatUTCWeekdayNumberMonday", "formatUTCWeekNumberSunday", "formatUTCWeekNumberISO", "formatUTCWeekdayNumberSunday", "formatUTCWeekNumberMonday", "formatUTCYear", "formatUTCFullYear", "formatUTCZone", "parses", "parseShortWeekday", "parseWeekday", "parseShortMonth", "parseMonth", "parseLocaleDateTime", "parseDayOfMonth", "parseMicroseconds", "parseYear", "parseFullYear", "parseHour24", "parseDayOfYear", "parseMilliseconds", "parseMonthNumber", "parseMinutes", "parsePeriod", "parseQuarter", "parseUnixTimestamp", "parseUnixTimestampSeconds", "parseSeconds", "parseWeekdayNumberMonday", "parseWeekNumberSunday", "parseWeekNumberISO", "parseWeekdayNumberSunday", "parseWeekNumberMonday", "parseLocaleDate", "parseLocaleTime", "parseZone", "parseLiteralPercent", "newFormat", "specifier", "string", "i", "j", "n", "c", "pad", "format", "pads", "newParse", "Z", "parseSpecifier", "week", "day", "utcMonday", "utcDay", "timeMonday", "timeDay", "parse", "f", "p", "numberRe", "percentRe", "requoteRe", "value", "fill", "width", "sign", "length", "requote", "s", "names", "name", "timeYear", "timeSunday", "dISO", "timeThursday", "z", "utcYear", "dow", "utcSunday", "UTCdISO", "utcThursday", "locale", "timeFormat", "timeParse", "utcFormat", "utcParse", "defaultLocale", "definition", "formatLocale", "memoize", "method", "cache", "spec", "trimZeroes", "numberFormat", "decimalChar", "x", "str", "dec", "idx", "rightmostDigit", "end", "i", "c", "numberLocale", "locale", "format", "formatPrefix", "s", "formatSpecifier", "start", "stop", "count", "specifier", "step", "tickStep", "value", "precision", "precisionPrefix_default", "precisionRound_default", "precisionFixed_default", "defaultNumberLocale", "resetNumberFormatDefaultLocale", "numberFormatLocale", "definition", "locale_default", "numberFormatDefaultLocale", "timeMultiFormat", "interval", "isObject", "error", "second", "SECONDS", "minute", "MINUTES", "hour", "HOURS", "day", "DATE", "week", "WEEK", "month", "MONTH", "quarter", "QUARTER", "year", "YEAR", "L", "MILLISECONDS", "S", "M", "H", "d", "DAY", "w", "m", "q", "y", "date", "timeLocale", "timeFormat", "utcFormat", "isString", "timeInterval", "utcInterval", "defaultTimeLocale", "resetTimeFormatDefaultLocale", "timeParse", "utcParse", "timeFormatLocale", "formatLocale", "timeFormatDefaultLocale", "createLocale", "number", "time", "extend", "numberSpec", "timeSpec", "defaultLocale", "args", "resetDefaultLocale", "protocol_re", "allowed_re", "whitespace_re", "fileProtocol", "loaderFactory", "fetch", "fs", "options", "sanitize", "load", "fileLoader", "httpLoader", "uri", "__async", "opt", "url", "extend", "fileAccess", "result", "isFile", "loadFile", "base", "isAllowed", "error", "$", "hasProtocol", "filename", "accept", "reject", "data", "fileReject", "type", "response", "isFunction", "httpReject", "isValid", "_", "isBoolean", "isDate", "isNumber", "isInteger", "typeParsers", "toBoolean", "toNumber", "toDate", "toString", "identity", "typeTests", "typeList", "inferType", "values", "field", "m", "a", "i", "t", "j", "value", "u", "v", "inferTypes", "fields", "types", "delimitedFormat", "delimiter", "parse", "format", "delim", "dsv", "dsv_default", "isBuffer", "json", "prop", "isObject", "parseJSON", "isArray", "isIterable", "filters", "b", "topojson", "method", "object", "property", "filter", "feature_default", "mesh_default", "formats", "name", "reader", "has", "responseType", "f", "read", "schema", "timeParser", "utcParser", "locale", "timeFormatDefaultLocale", "datum", "n", "parsers", "parts", "pattern", "loader", "UniqueList", "idFunc", "$", "identity", "list", "ids", "_", "id", "idx", "asyncCallback", "df", "callback", "__async", "err", "TUPLE_ID_KEY", "TUPLE_ID", "isTuple", "t", "tupleid", "setid", "ingest$1", "datum", "derive", "rederive", "d", "k", "replace", "stableCompare", "cmp", "f", "a", "b", "isChangeSet", "v", "changeset", "add", "rem", "mod", "remp", "modp", "clean", "reflow", "array", "n", "i", "isFunction", "field", "value", "m", "constant", "set", "pulse", "tuples", "cur", "out", "modify", "CACHE", "Parameters", "name", "index", "force", "o", "isArray", "OP_ID", "PULSE", "NO_PARAMS", "SKIP$1", "MODIFIED", "Operator", "init", "update", "params", "react", "flag", "bit", "state", "initonly", "argval", "argops", "deps", "op", "error", "stamp", "item", "rv", "shift", "connect", "target", "sources", "targetRank", "STREAM_ID", "EventStream", "filter", "apply", "receive", "stream", "truthy", "evt", "val", "trg", "s", "pause", "now", "delay", "debounce", "e", "active", "events", "source", "type", "send", "parse", "data", "format", "locale", "read", "ingest", "request", "url", "status", "responseType", "preload", "pending", "loadPending", "res", "accept", "SKIP", "on", "options", "onOperator", "onStream", "opt", "extend", "func", "updater", "rank", "rerank", "queue", "StopPropagation", "ADD", "REM", "MOD", "ADD_REM", "ADD_MOD", "ALL", "REFLOW", "SOURCE", "NO_SOURCE", "NO_FIELDS", "Pulse", "dataflow", "encode", "materialize", "visitArray", "flags", "map", "addFilter", "p", "src", "fork", "len", "hash", "nomod", "fields", "visitor", "sum", "MultiPulse", "pulses", "c", "inherits", "evaluate", "prerun", "postrun", "async", "reentrant", "count", "next", "pr", "cb", "runAsync", "clear", "run", "runAfter", "enqueue", "priority", "q", "getPulse", "singlePulse", "NO_OPT", "touch", "Heap", "nodes", "x", "siftdown", "last", "siftup", "start", "parent", "pidx", "end", "cidx", "ridx", "Dataflow", "logger", "Error$1", "defaultLocale", "loader", "logMethod", "method", "Transform", "transforms", "definition", "transform", "has", "vega_transforms_module_exports", "__export", "Aggregate", "Bin", "Collect", "Compare", "CountPattern", "Cross", "Density", "DotBin", "Expression", "Extent", "Facet", "Field", "Filter", "Flatten", "Fold", "Formula", "Generate", "Impute", "JoinAggregate", "KDE", "Key", "Load", "Lookup", "MultiExtent", "MultiValues", "Params", "Pivot", "PreFacet", "Project", "Proxy", "Quantile", "Relay", "Sample", "Sequence", "Sieve", "Subflow", "TimeUnit", "TupleIndex", "Values", "Window", "numbers", "values", "valueof", "value", "index", "quantiles", "array", "p", "f", "ascending", "_", "quantileSorted", "quartiles", "estimateBandwidth", "d", "deviation", "q", "h", "v", "bin", "maxb", "base", "logb", "div", "min", "max", "step", "level", "minstep", "i", "n", "span", "precision", "eps", "random", "setRandom", "r", "bootstrapCI", "samples", "alpha", "m", "j", "mu", "quantile", "dotbin", "smooth", "a", "b", "w", "x", "smoothing", "thresh", "c", "lcg", "seed", "integer", "dist", "SQRT2PI", "SQRT2", "nextSample", "sampleNormal", "mean", "stdev", "y", "rds", "densityNormal", "z", "cumulativeNormal", "Z", "cd", "exp", "sum", "quantileNormal", "erfinv", "gaussian", "sigma", "kde", "support", "bandwidth", "kernel", "sampleLogNormal", "densityLogNormal", "cumulativeLogNormal", "quantileLogNormal", "lognormal", "mixture", "dists", "weights", "normalize", "sampleUniform", "densityUniform", "cumulativeUniform", "quantileUniform", "uniform", "constant", "data", "val", "ols", "uX", "uY", "uXY", "uX2", "delta", "slope", "points", "sort", "u", "X", "Y", "ux", "uy", "xv", "yv", "visitPoints", "callback", "rSquared", "predict", "SSE", "SST", "dx", "dy", "sse", "sst", "linear", "XY", "X2", "coef", "log", "YL", "XYL", "X2Y", "ly", "xy", "c0", "c1", "pow", "YS", "lx", "quad", "X3", "X4", "x2", "X2X2", "poly", "order", "lhs", "rhs", "k", "l", "gaussianElimination", "uncenter", "matrix", "t", "maxiters", "epsilon", "loess", "bw", "yhat", "residuals", "robustWeights", "iter", "interval", "i0", "i1", "edge", "W", "denom", "xk", "yk", "tricube", "xkw", "updateInterval", "medianResidual", "median", "arg", "output", "left", "right", "out", "cnt", "prev", "MIN_RADIANS", "sampleCurve", "extent", "minSteps", "maxSteps", "point", "minX", "maxX", "stop", "next", "p0", "p1", "sx", "sy", "scaleY", "pm", "angleDelta", "init", "ymin", "ymax", "a0", "a1", "multikey", "f", "x", "i", "k", "groupkey", "fields", "measureName", "op", "field", "as", "noop", "base_op", "AggregateOps", "m", "v", "t", "r", "__pow", "ValidAggregateOps", "d", "measure", "key", "value", "out", "aggregate_param", "extend", "createMeasure", "param", "name", "compareIndex", "a", "b", "resolve", "agg", "map", "getreqs", "init", "add", "rem", "set", "compileMeasures", "get", "identity", "ops", "ctr", "cell", "TupleStore", "tupleid", "prototype$1", "n", "j", "count", "s", "has", "extentIndex", "quartiles", "bootstrapCI", "Aggregate", "params", "Transform", "inherits", "_", "pulse", "aggr", "mod", "curr", "dims", "vals", "collect", "cells", "generate", "base", "tuple", "index", "inputs", "outputs", "inputMap", "inputVisit", "array", "accessorFields", "dname", "accessorName", "aggregate_params", "mname", "outname", "error", "measures", "p", "names", "replace", "ingest$1", "counts", "adds", "mods", "prev", "drop", "EPSILON$1", "Bin", "band", "bins", "start", "step", "b0", "b1", "flag", "bin", "stop", "toNumber", "accessor", "SortedList", "idFunc", "source", "input", "$", "data", "cnt", "compare", "resort", "merge", "Collect", "list", "sort", "stableCompare", "Compare", "Operator", "update$5", "CountPattern", "tokenize", "text", "tcase", "match", "process", "update", "tokens", "tuples", "w", "c", "Cross", "reset", "cross", "truthy", "filter", "left", "Distributions", "kde", "mixture", "gaussian", "lognormal", "uniform", "DISTRIBUTIONS", "FUNCTION", "FIELD", "parse", "def", "func", "Density", "distributions", "dist", "minsteps", "maxsteps", "method", "domain", "extent", "values", "sampleCurve", "fieldNames", "partition$1", "groupby", "groups", "g", "Output", "DotBin", "autostep", "span", "smooth", "min", "max", "dotbin", "Expression", "update$4", "expr", "datum", "Extent", "Subflow", "parent", "target", "Facet", "fastmap", "flow", "flows", "sf", "df", "detached", "detach", "active", "act", "cache", "rekey", "subflow", "id", "k0", "k1", "Field", "update$3", "isArray", "Filter", "output", "test", "isMod", "revisit", "Flatten", "arrays", "maxlen", "l", "derive", "Fold", "fnames", "Formula", "Generate", "gen", "num", "Methods", "median", "mean", "Empty", "Impute", "getValue", "getField", "impute", "fName", "kName", "gNames", "partition", "group", "gVals", "kVal", "keyvals", "kMap", "gMap", "gKey", "JoinAggregate", "KDE", "bandwidth", "density", "scale", "local", "Key", "update$2", "Load", "res", "Lookup", "keys", "defaultValue", "MultiExtent", "update$1", "ext", "e", "MultiValues", "Params", "Pivot", "aggregateParams", "pivotKeys", "limit", "ascending", "PreFacet", "Project", "project", "rederive", "lut", "dt", "Proxy", "Quantile", "EPSILON", "range", "q", "quantiles", "Relay", "Sample", "cap", "idx", "random", "Sequence", "Sieve", "TimeUnit", "OUTPUT", "TIME_UNITS", "utc", "floor", "offset", "utcInterval", "timeInterval", "u0", "u1", "units", "tunits", "timeUnits", "utcFloor", "timeFloor", "peek", "TupleIndex", "Values", "WindowOp", "fn", "WindowOps", "zero", "rank", "drank", "next", "cume", "nth", "find", "ValidWindowOps", "WindowState", "windows", "countOnly", "visitInputs", "prototype", "wind", "store", "Window", "cmp", "state", "processPartition", "frame", "bisector", "constant", "setWindow", "adjustRange", "bisect", "r0", "r1", "vega_view_transforms_module_exports", "__export", "Bound", "Identifier", "Mark", "Overlap", "Render", "ViewLayout", "constant_default", "x", "abs", "atan2", "cos", "max", "min", "sin", "sqrt", "epsilon", "pi", "halfPi", "tau", "acos", "x", "asin", "pi", "tau", "epsilon", "tauEpsilon", "append", "strings", "i", "appendRound", "digits", "d", "k", "__pow", "n", "Path", "x", "y", "x1", "y1", "x2", "y2", "r", "x0", "y0", "x21", "y21", "x01", "y01", "l01_2", "x20", "y20", "l21_2", "l20_2", "l21", "l01", "l", "t01", "t21", "a0", "a1", "ccw", "dx", "dy", "cw", "da", "w", "h", "path", "withPath", "shape", "digits", "_", "d", "Path", "arcInnerRadius", "d", "arcOuterRadius", "arcStartAngle", "arcEndAngle", "arcPadAngle", "intersect", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x10", "y10", "x32", "y32", "t", "epsilon", "cornerTangents", "r1", "rc", "cw", "x01", "y01", "lo", "sqrt", "ox", "oy", "x11", "y11", "x00", "y00", "dx", "dy", "d2", "r", "D", "max", "cx0", "cy0", "cx1", "cy1", "dx0", "dy0", "dx1", "dy1", "arc_default", "innerRadius", "outerRadius", "cornerRadius", "constant_default", "padRadius", "startAngle", "endAngle", "padAngle", "context", "path", "withPath", "arc", "buffer", "r0", "a0", "halfPi", "a1", "da", "abs", "tau", "cos", "sin", "a01", "a11", "a00", "a10", "da0", "da1", "ap", "rp", "min", "rc0", "rc1", "t0", "t1", "p0", "asin", "p1", "oc", "pi", "ax", "ay", "bx", "by", "kc", "acos", "lc", "atan2", "a", "_", "slice", "array_default", "x", "Linear", "context", "x", "y", "linear_default", "x", "p", "y", "line_default", "x", "y", "defined", "constant_default", "context", "curve", "linear_default", "output", "path", "withPath", "line", "data", "i", "n", "array_default", "d", "defined0", "buffer", "_", "area_default", "x0", "y0", "y1", "x1", "defined", "constant_default", "context", "curve", "linear_default", "output", "path", "withPath", "area", "x", "y", "data", "i", "j", "k", "n", "array_default", "d", "defined0", "buffer", "x0z", "y0z", "arealine", "line_default", "_", "circle_default", "context", "size", "r", "sqrt", "pi", "tau", "Symbol", "type", "size", "context", "path", "withPath", "symbol", "constant_default", "circle_default", "buffer", "_", "noop_default", "point", "that", "x", "y", "Basis", "context", "basis_default", "BasisClosed", "context", "noop_default", "x", "y", "point", "basisClosed_default", "BasisOpen", "context", "x", "y", "x0", "y0", "point", "basisOpen_default", "Bundle", "context", "beta", "Basis", "x", "y", "j", "x0", "y0", "dx", "dy", "i", "t", "bundle_default", "custom", "bundle", "point", "that", "x", "y", "Cardinal", "context", "tension", "cardinal_default", "custom", "cardinal", "CardinalClosed", "context", "tension", "noop_default", "x", "y", "point", "cardinalClosed_default", "custom", "cardinal", "CardinalOpen", "context", "tension", "x", "y", "point", "cardinalOpen_default", "custom", "cardinal", "point", "that", "x", "y", "x1", "y1", "x2", "y2", "epsilon", "n", "b", "m", "CatmullRom", "context", "alpha", "x23", "y23", "catmullRom_default", "custom", "catmullRom", "Cardinal", "CatmullRomClosed", "context", "alpha", "noop_default", "x", "y", "x23", "y23", "point", "catmullRomClosed_default", "custom", "catmullRom", "CardinalClosed", "CatmullRomOpen", "context", "alpha", "x", "y", "x23", "y23", "point", "catmullRomOpen_default", "custom", "catmullRom", "CardinalOpen", "LinearClosed", "context", "noop_default", "x", "y", "linearClosed_default", "sign", "x", "slope3", "that", "x2", "y2", "h0", "h1", "s0", "s1", "p", "slope2", "h", "point", "t0", "t1", "x0", "y0", "x1", "y1", "dx", "MonotoneX", "context", "y", "MonotoneY", "ReflectContext", "monotoneX", "monotoneY", "Natural", "context", "x", "y", "px", "controlPoints", "py", "i0", "i1", "i", "m", "a", "b", "r", "natural_default", "Step", "context", "x", "y", "x1", "step_default", "stepBefore", "stepAfter", "domCanvas", "w", "h", "c", "domImage", "initRange", "domain", "range", "initInterpolator", "interpolator", "implicit", "ordinal", "index", "InternMap", "domain", "range", "unknown", "scale", "d", "i", "_", "value", "initRange", "src_exports", "__export", "value_default", "array_default", "basis_default", "basisClosed_default", "cubehelix_default", "cubehelixLong", "date_default", "discrete_default", "hcl_default", "hclLong", "hsl_default", "hslLong", "hue_default", "lab", "number_default", "numberArray_default", "object_default", "rgb_default", "rgbBasis", "rgbBasisClosed", "round_default", "string_default", "interpolateTransformCss", "interpolateTransformSvg", "zoom_default", "piecewise", "quantize_default", "define_default", "constructor", "factory", "prototype", "extend", "parent", "definition", "key", "Color", "darker", "brighter", "reI", "reN", "reP", "reHex", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "reHslaPercent", "named", "define_default", "color", "channels", "color_formatHex", "color_formatHex8", "color_formatHsl", "color_formatRgb", "hslConvert", "format", "m", "l", "rgbn", "Rgb", "rgba", "hsla", "n", "r", "g", "b", "a", "rgbConvert", "o", "rgb", "opacity", "extend", "k", "clampi", "clampa", "rgb_formatHex", "rgb_formatHex8", "rgb_formatRgb", "hex", "value", "h", "s", "Hsl", "min", "max", "hsl", "m2", "m1", "hsl2rgb", "clamph", "clampt", "radians", "degrees", "K", "Xn", "Yn", "Zn", "t0", "t1", "t2", "t3", "labConvert", "o", "Lab", "Hcl", "hcl2lab", "Rgb", "rgbConvert", "r", "rgb2lrgb", "g", "b", "y", "xyz2lab", "x", "z", "lab", "l", "a", "b", "opacity", "labConvert", "Lab", "define_default", "extend", "Color", "k", "K", "y", "x", "z", "Xn", "lab2xyz", "Yn", "Zn", "Rgb", "lrgb2rgb", "xyz2lab", "t", "t3", "t2", "t0", "t1", "rgb2lrgb", "hclConvert", "o", "Hcl", "h", "degrees", "hcl", "h", "c", "l", "opacity", "hclConvert", "Hcl", "hcl2lab", "o", "Lab", "radians", "define_default", "extend", "Color", "k", "K", "A", "B", "C", "D", "E", "ED", "EB", "BC_DA", "cubehelixConvert", "o", "Cubehelix", "Rgb", "rgbConvert", "r", "g", "b", "l", "bl", "k", "s", "h", "degrees", "cubehelix", "opacity", "define_default", "extend", "Color", "brighter", "darker", "radians", "a", "cosh", "sinh", "basis", "t1", "v0", "v1", "v2", "v3", "t2", "t3", "basis_default", "values", "n", "t", "i", "basisClosed_default", "values", "n", "t", "i", "v0", "v1", "v2", "v3", "basis", "constant_default", "x", "linear", "a", "d", "t", "exponential", "b", "y", "hue", "constant_default", "gamma", "nogamma", "rgb_default", "rgbGamma", "y", "color", "gamma", "rgb", "start", "end", "r", "g", "b", "opacity", "nogamma", "t", "rgbSpline", "spline", "colors", "i", "rgbBasis", "basis_default", "rgbBasisClosed", "basisClosed_default", "numberArray_default", "a", "b", "c", "t", "isNumberArray", "x", "array_default", "a", "b", "isNumberArray", "numberArray_default", "genericArray", "nb", "na", "x", "c", "i", "value_default", "t", "date_default", "a", "b", "d", "t", "number_default", "a", "b", "t", "object_default", "a", "b", "i", "c", "k", "value_default", "t", "reA", "reB", "zero", "b", "one", "string_default", "a", "bi", "am", "bm", "bs", "i", "s", "q", "number_default", "t", "o", "value_default", "a", "b", "t", "c", "constant_default", "number_default", "color", "rgb_default", "string_default", "date_default", "isNumberArray", "numberArray_default", "genericArray", "object_default", "discrete_default", "range", "n", "t", "hue_default", "a", "b", "i", "hue", "t", "x", "round_default", "a", "b", "t", "degrees", "identity", "decompose_default", "a", "b", "c", "d", "e", "f", "scaleX", "scaleY", "skewX", "svgNode", "parseCss", "value", "m", "identity", "decompose_default", "parseSvg", "interpolateTransform", "parse", "pxComma", "pxParen", "degParen", "pop", "s", "translate", "xa", "ya", "xb", "yb", "q", "i", "number_default", "rotate", "a", "b", "skewX", "scale", "t", "n", "o", "interpolateTransformCss", "parseCss", "interpolateTransformSvg", "parseSvg", "epsilon2", "cosh", "x", "sinh", "tanh", "zoom_default", "zoomRho", "rho", "rho2", "rho4", "zoom", "p0", "p1", "ux0", "uy0", "w0", "ux1", "uy1", "w1", "dx", "dy", "d2", "i", "S", "t", "d1", "b0", "b1", "r0", "r1", "s", "coshr0", "u", "_", "_1", "_2", "_4", "hsl", "hue", "start", "end", "h", "s", "nogamma", "l", "opacity", "t", "hsl_default", "hslLong", "lab", "start", "end", "l", "nogamma", "a", "b", "opacity", "t", "hcl", "hue", "start", "end", "h", "c", "nogamma", "l", "opacity", "t", "hcl_default", "hclLong", "cubehelix", "hue", "cubehelixGamma", "y", "start", "end", "h", "s", "nogamma", "opacity", "t", "cubehelix_default", "cubehelixLong", "piecewise", "interpolate", "values", "value_default", "i", "n", "v", "I", "t", "quantize_default", "interpolator", "n", "samples", "i", "constants", "x", "number", "x", "unit", "identity", "x", "normalize", "a", "b", "constants", "clamper", "t", "bimap", "domain", "range", "interpolate", "d0", "d1", "r0", "r1", "polymap", "j", "d", "r", "i", "bisect_default", "copy", "source", "target", "transformer", "value_default", "transform", "untransform", "unknown", "clamp", "piecewise", "output", "input", "rescale", "n", "scale", "y", "number_default", "_", "number", "round_default", "u", "continuous", "tickFormat", "start", "stop", "count", "specifier", "step", "tickStep", "precision", "formatSpecifier", "value", "precisionPrefix_default", "formatPrefix", "precisionRound_default", "precisionFixed_default", "format", "linearish", "scale", "domain", "count", "d", "ticks", "specifier", "tickFormat", "i0", "i1", "start", "stop", "prestep", "step", "maxIter", "tickIncrement", "linear", "continuous", "copy", "initRange", "identity", "domain", "unknown", "scale", "x", "_", "number", "linearish", "nice", "domain", "interval", "i0", "i1", "x0", "x1", "t", "transformLog", "x", "transformExp", "transformLogn", "transformExpn", "pow10", "powp", "base", "logp", "reflect", "f", "k", "loggish", "transform", "scale", "domain", "logs", "pows", "rescale", "_", "count", "d", "v", "r", "i", "j", "t", "n", "z", "ticks", "specifier", "formatSpecifier", "format", "nice", "log", "transformer", "copy", "initRange", "transformSymlog", "c", "x", "transformSymexp", "symlogish", "transform", "scale", "_", "linearish", "symlog", "transformer", "copy", "initRange", "transformPow", "exponent", "x", "transformSqrt", "transformSquare", "powish", "transform", "scale", "identity", "rescale", "_", "linearish", "pow", "transformer", "copy", "initRange", "sqrt", "quantile", "domain", "range", "thresholds", "unknown", "rescale", "i", "n", "quantileSorted", "scale", "x", "bisect_default", "y", "_", "d", "ascending", "initRange", "quantize", "x0", "x1", "domain", "range", "unknown", "scale", "x", "bisect_default", "rescale", "i", "_", "y", "initRange", "linearish", "threshold", "domain", "range", "unknown", "n", "scale", "x", "bisect_default", "_", "y", "i", "initRange", "date", "t", "number", "calendar", "ticks", "tickInterval", "year", "month", "week", "day", "hour", "minute", "second", "format", "scale", "continuous", "invert", "domain", "formatMillisecond", "formatSecond", "formatMinute", "formatHour", "formatDay", "formatWeek", "formatMonth", "formatYear", "tickFormat", "y", "_", "interval", "d", "count", "specifier", "nice", "copy", "time", "initRange", "timeTicks", "timeTickInterval", "timeYear", "timeMonth", "timeSunday", "timeDay", "timeHour", "timeMinute", "timeFormat", "utcTime", "initRange", "calendar", "utcTicks", "utcTickInterval", "utcYear", "utcMonth", "utcSunday", "utcDay", "utcHour", "utcMinute", "second", "utcFormat", "transformer", "x0", "x1", "t0", "t1", "k10", "transform", "interpolator", "identity", "clamp", "unknown", "scale", "x", "_", "range", "interpolate", "r0", "r1", "value_default", "round_default", "t", "copy", "source", "target", "sequential", "linearish", "initInterpolator", "sequentialLog", "loggish", "sequentialSymlog", "symlogish", "sequentialPow", "powish", "sequentialSqrt", "transformer", "x0", "x1", "x2", "s", "t0", "t1", "t2", "k10", "k21", "interpolator", "identity", "transform", "clamp", "unknown", "scale", "x", "_", "range", "interpolate", "r0", "r1", "r2", "piecewise", "value_default", "round_default", "t", "diverging", "linearish", "copy", "initInterpolator", "divergingLog", "loggish", "divergingSymlog", "symlogish", "divergingPow", "powish", "divergingSqrt", "bandSpace", "count", "paddingInner", "paddingOuter", "space", "Identity", "Linear", "Log", "Pow", "Sqrt", "Symlog", "Time", "UTC", "Sequential", "Diverging", "Quantile", "Quantize", "Threshold", "Ordinal", "Point", "Band", "BinOrdinal", "Continuous", "Discrete", "Discretizing", "Interpolating", "Temporal", "invertRange", "scale", "_", "lo", "hi", "t", "invertRangeExtent", "range", "min", "max", "i", "n", "band", "ordinal", "domain", "ordinalRange", "range$1", "step", "bandwidth", "round", "align", "rescale", "reverse", "stop", "start", "values", "a", "b", "bisectRight", "value", "pointish", "copy", "point", "map", "numbers", "toNumber", "slice", "scaleBinOrdinal", "x", "bisect_default", "specifier", "tickFormat", "peek", "scales", "VEGA_SCALE", "registerScale", "isRegisteredScale", "create", "type", "constructor", "metadata", "ctr", "s", "toSet", "array", "isValidScaleType", "identity", "linear", "log", "pow", "sqrt", "symlog", "time", "utcTime", "sequential", "sequentialLog", "sequentialPow", "sequentialSqrt", "sequentialSymlog", "diverging", "divergingLog", "divergingPow", "divergingSqrt", "divergingSymlog", "quantile", "quantize", "threshold", "hasType", "key", "isContinuous", "isDiscrete", "isDiscretizing", "isLogarithmic", "isTemporal", "isInterpolating", "isQuantile", "scaleProps", "interpolateRange", "interpolator", "span", "interpolateColors", "colors", "gamma", "piecewise", "interpolate", "quantizeInterpolator", "samples", "scaleFraction", "scale$1", "min", "max", "delta", "t", "constant", "scale", "scaleProps", "m", "interpolate", "type", "gamma", "interp", "src_exports", "method", "s", "continuous", "discrete", "colors", "palette", "n", "c", "i", "apply", "_", "f", "k", "scheme", "schemes", "interpolateColors", "name", "SymbolLegend", "DiscreteLegend", "GradientLegend", "defaultFormatter", "value", "isArray", "v", "ascending", "a", "b", "descending", "tickCount", "count", "minStep", "step", "isNumber", "span", "isObject", "isString", "Time", "timeInterval", "UTC", "utcInterval", "error", "validTicks", "ticks", "range", "lo", "hi", "peek", "cmp", "endpoints", "tickValues", "tickFormat", "locale", "specifier", "formatType", "noSkip", "format", "isLogarithmic", "varfmt", "test", "tickLog", "d", "values", "base", "logb", "symbols", "Quantile", "Quantize", "Threshold", "formats", "labelValues", "binValues", "Log", "thresholdValues", "thresholdFormat", "thresholds", "bins", "isDiscreteRange", "labelFormat", "formatRange", "formatDiscrete", "formatPoint", "index", "array", "limit", "get", "formatValue", "dflt", "labelFraction", "domain", "adjust", "isTemporal", "domainCaption", "opt", "fmt", "isDiscretizing", "isDiscrete", "gradient_id", "resetSVGGradientId", "patternPrefix", "isGradient", "value", "gradientRef", "g", "defs", "base", "type", "id", "prefix", "get", "val", "def", "Gradient", "p0", "p1", "stops", "gradient", "offset", "color", "lookup", "basis_default", "basisClosed_default", "basisOpen_default", "bundle_default", "cardinal_default", "cardinalOpen_default", "cardinalClosed_default", "catmullRom_default", "catmullRomClosed_default", "catmullRomOpen_default", "linear_default", "linearClosed_default", "monotoneY", "monotoneX", "natural_default", "step_default", "stepAfter", "stepBefore", "curves", "orientation", "tension", "entry", "has", "curve", "paramCounts", "commandPattern", "numberPattern", "spacePattern", "flagPattern", "parse", "path", "commands", "str", "cmd", "paramCount", "params", "parseParams", "count", "i", "segment", "index", "pattern", "match", "ws", "DegToRad", "Epsilon", "HalfPi", "Tau", "HalfSqrt3", "segmentCache", "bezierCache", "join", "segments", "x", "y", "rx", "ry", "large", "sweep", "rotateX", "ox", "oy", "key", "th", "sin_th", "cos_th", "px", "py", "pl", "a00", "a01", "a10", "a11", "x0", "y0", "x1", "y1", "d", "sfactor_sq", "sfactor", "xc", "yc", "th0", "th_arc", "segs", "result", "th2", "th3", "bezier", "cx", "cy", "th1", "cos_th0", "sin_th0", "cos_th1", "sin_th1", "th_half", "sin_th_h2", "t", "x3", "y3", "x2", "y2", "temp", "scale$1", "current", "sX", "sY", "c", "n", "pathRender", "context", "l", "previous", "controlX", "controlY", "tempX", "tempY", "tempControlX", "tempControlY", "anchorX", "anchorY", "len", "drawArc", "coords", "seg", "bez", "Tan30", "builtins", "size", "r", "s", "w", "v", "h", "o", "b", "symbols", "_", "customSymbol", "custom", "parsed", "C", "rectangleX", "rectangleY", "rectangleWidth", "rectangleHeight", "number", "clamp", "min", "max", "vg_rect", "width", "height", "crTL", "crTR", "crBL", "crBR", "rectangle", "buffer", "tl", "tr", "bl", "br", "vg_trail", "defined", "ready", "r1", "point", "w2", "r2", "ux", "uy", "ud", "trail", "data", "defined0", "value$1", "a", "item", "xw", "yh", "sa", "ea", "pa", "ir", "or", "cr", "sz", "ts", "arcShape", "arc_default", "areavShape", "area_default", "areahShape", "lineShape", "line_default", "rectShape", "symbolShape", "Symbol", "trailShape", "hasCornerRadius", "arc$1", "area$1", "items", "interp", "line$1", "shape$1", "symbol$1", "trail$1", "clip_id", "resetSVGClipId", "clip$1", "renderer", "clip", "isFunction", "Bounds", "dx", "dy", "angle", "p", "cos", "sin", "Item", "mark", "GroupItem", "inherits", "ResourceLoader", "customLoader", "loader", "increment", "decrement", "uri", "opt", "Image", "domImage", "url", "img", "cors", "e", "accept", "poll", "boundStroke", "bounds", "miter", "sw", "miterAdjustment", "strokeWidth", "circleThreshold", "lx", "ly", "rot", "ma", "mb", "mc", "md", "add", "addL", "addX", "addY", "addp", "addpL", "boundContext", "deg", "context$1", "px1", "py1", "px2", "py2", "quadExtrema", "px3", "py3", "cubicExtrema", "ccw", "update", "cb", "t0", "t1", "cubic", "s2", "t2", "domCanvas", "intersectPath", "draw", "brush", "intersectPoint", "box", "intersectRect", "intersectRule", "intersectBoxLine", "u", "q", "blend", "dflt", "addStops", "spec", "image", "ictx", "fill", "opacity", "Empty", "stroke", "lw", "compare", "zorder", "scene", "output", "visit", "visitor", "zitems", "pickVisit", "hit", "drawAll", "drawPath", "drawOne", "pick$1", "test", "truthy", "gx", "gy", "hitPath", "filled", "lc", "pickPath", "translate", "rotate", "scale", "scaleX", "scaleY", "translateItem", "rotateItem", "transformItem", "markItemPath", "shape", "isect", "attr", "emit", "bound", "arc", "pickArea", "z", "pickLine", "dd", "pickTrail", "markMultiItemPath", "tip", "pick", "area", "clipGroup", "group", "offset$1", "attr$5", "emitRectangle", "off", "background", "foreground", "content", "bound$5", "m", "j", "rectanglePath", "hitBackground", "hitForeground", "hitCorner", "draw$4", "markTypes", "fore", "dw", "dh", "ix", "pickMark", "metadata", "getImage", "imageWidth", "imageHeight", "imageXOffset", "align", "imageYOffset", "baseline", "attr$4", "bound$4", "draw$3", "ar0", "ar1", "line", "attr$3", "sx", "sy", "path$1", "cache", "bound$3", "path$2", "attr$2", "bound$2", "draw$2", "rect", "attr$1", "bound$1", "draw$1", "hit$1", "rule", "symbol", "widthCache", "lruCache", "textMetrics", "fontSize", "measureWidth", "estimateWidth", "useCanvas", "use", "text", "_estimateWidth", "textValue", "currentFontHeight", "_measureWidth", "font", "currentFont", "lineHeight", "lineArray", "isArray", "textLines", "multiLineOffset", "truncate", "widthGetter", "limit", "ellipsis", "rtl", "lo", "hi", "mid", "fontFamily", "quote", "textAlign", "tempBounds", "anchorPoint", "mode", "lh", "ax", "ay", "intersectText", "Marks", "boundItem", "func", "DUMMY", "boundMark", "hasItems", "keys", "sceneToJSON", "indent", "sceneFromJSON", "json", "initialize", "parent", "Scenegraph", "createMark", "markdef", "domCreate", "doc", "tag", "ns", "domFind", "el", "nodes", "domChild", "domClear", "curr", "cssClass", "event", "resolveItem", "origin", "mdef", "Handler", "customTooltip", "defaultTooltip", "handler", "obj", "k", "name", "href", "show", "Renderer", "scaleFactor", "bgcolor", "method", "call", "redraw", "KeyDownEvent", "KeyPressEvent", "KeyUpEvent", "DragEnterEvent", "DragLeaveEvent", "DragOverEvent", "PointerDownEvent", "PointerUpEvent", "PointerMoveEvent", "PointerOutEvent", "PointerOverEvent", "MouseDownEvent", "MouseUpEvent", "MouseMoveEvent", "MouseOutEvent", "MouseOverEvent", "ClickEvent", "DoubleClickEvent", "WheelEvent", "MouseWheelEvent", "TouchStartEvent", "TouchMoveEvent", "TouchEndEvent", "Events", "TooltipShowEvent", "TooltipHideEvent", "HrefEvent", "CanvasHandler", "tooltip", "eventBundle", "eventListenerCheck", "addEventListener", "canvas", "evt", "fireAll", "types", "move", "moveEvents", "overEvents", "outEvents", "inactive", "touch", "devicePixelRatio", "pixelRatio", "resize", "inDOM", "ratio", "CanvasRenderer", "base$2", "viewBounds", "clipToBounds", "options", "ctx", "error", "db", "vb", "SVGHandler", "listener", "svg", "ARIA_HIDDEN", "ARIA_LABEL", "ARIA_ROLE", "ARIA_ROLEDESCRIPTION", "GRAPHICS_OBJECT", "GRAPHICS_SYMBOL", "bundle", "role", "roledesc", "label", "AriaIgnore", "toSet", "AriaGuides", "axisCaption", "legendCaption", "titleCaption", "AriaEncode", "ariaItemAttributes", "hide", "prop", "ariaMarkAttributes", "ariaGuide", "ariaMark", "recurse", "caption", "err", "array", "datum", "orient", "title", "extractTitle", "locale", "isDiscrete", "domainCaption", "scales", "props", "capitalize", "channelCaption", "peek", "innerText", "attrText", "markup", "buf", "outer", "inner", "stack", "clear", "push", "_len", "attrs", "_key", "set", "serializeXML", "node", "_serialize", "children", "child", "stylesAttr", "stylesCss", "rootAttributes", "RootIndex", "xmlns", "svgns", "SVGRenderer", "base$1", "setAttributes", "bg", "dirtyParents", "prev", "markType", "events", "isGroup", "bind", "aria", "setAttribute", "sibling", "process", "dirty", "element", "values", "extra", "mark_extras", "setStyle", "updateGradient", "updateClipping", "grad", "stop", "pt", "mask", "idx", "cg", "fg", "siblingCheck", "setAttributeNS", "loc", "SVGStringRenderer", "extend", "attrList", "object", "prefixed", "fn", "style", "clipping", "styleList", "OPTS", "setHybridRendererOptions", "_a", "_b", "_c", "HybridRenderer", "bottomEl", "topEl", "canvasMarkTypes", "HybridHandler", "Canvas", "Hybrid", "PNG", "SVG", "None", "RenderType", "modules", "renderModule", "intersect", "filter", "hits", "intersectMark", "intersectGroup", "visitMark", "intersectItem", "marks", "clipBounds", "boundClip", "TOLERANCE", "sceneEqual", "pathEqual", "isNumber", "isObject", "objectEqual", "ka", "kb", "resetSVGDefIds", "Top", "Left", "Right", "Bottom", "TopLeft", "TopRight", "BottomLeft", "BottomRight", "Start", "Middle", "End", "X", "Y", "Group", "AxisRole", "TitleRole", "FrameRole", "ScopeRole", "LegendRole", "RowHeader", "RowFooter", "RowTitle", "ColHeader", "ColFooter", "ColTitle", "Padding", "Symbols", "Fit", "FitX", "FitY", "Pad", "None", "All", "Each", "Flush", "Column", "Row", "Bound", "params", "Transform", "inherits", "_", "pulse", "view", "mark", "type", "entry", "Marks", "bound", "markBounds", "rebound", "boundItem", "item", "boundClip", "opt", "COUNTER_NAME", "Identifier", "counter", "getCounter", "as", "id", "t", "Mark", "lookup$1", "Init", "GroupItem", "Item", "g", "p", "Overlap", "methods", "items", "i", "sep", "a", "b", "intersect", "hasOverlap", "pad", "n", "hasBounds", "boundTest", "scale", "orient", "tolerance", "range", "Bounds", "reset", "source", "reflow", "reduce", "test", "peek", "bounds", "Render", "tempBounds", "set", "property", "value", "isYAxis", "axisIndices", "datum", "index", "axisLayout", "axis", "width", "height", "delta", "indices", "offset", "position", "minExtent", "maxExtent", "title", "titlePadding", "dl", "multiLineOffset", "x", "y", "s", "axisTitleLayout", "boundStroke", "sign", "v", "dx", "dy", "min", "max", "gridLayoutGroups", "group", "groups", "views", "bboxFlush", "bboxFull", "get", "key", "d", "isObject", "offsetValue", "gridLayout", "dirty", "bbox", "alignCol", "alignRow", "padCol", "padRow", "ncols", "nrows", "xOffset", "xExtent", "xMax", "yOffset", "yExtent", "yMax", "boxes", "m", "c", "r", "px", "py", "trellisLayout", "boundFlush", "boundFull", "off", "cells", "x2", "y2", "anchor", "band", "layoutHeaders", "layoutTitle", "field", "headers", "limit", "agg", "isX", "bf", "start", "stride", "back", "init", "edge", "j", "k", "h", "lookup", "config", "offsets", "legends", "legendParams", "xb", "yb", "w", "mult", "legendLayout", "legend", "legendGroupLayout", "legendBounds", "legendEntryLayout", "ex", "ey", "translate", "tpad", "tx", "ty", "legendTitleOffset", "lr", "noBar", "grad", "vgrad", "e", "u", "o", "entries", "widths", "titleLayout", "viewBounds", "frame", "padding", "subtitle", "end", "sx", "sy", "pos", "ViewLayout", "layoutGroup", "shouldReflow", "xBounds", "yBounds", "l", "viewSizeLayout", "auto", "viewWidth", "viewHeight", "left", "top", "right", "bottom", "vega_encode_module_exports", "__export", "AxisTicks", "DataJoin", "Encode", "LegendEntries", "LinkPath", "Pie", "Scale", "SortItems", "Stack", "AxisTicks", "params", "Transform", "inherits", "_", "pulse", "locale", "out", "ticks", "scale", "tally", "count", "tickCount", "format", "tickFormat", "values", "validTicks", "tickValues", "value", "i", "ingest$1", "DataJoin", "defaultItemCreate", "newMap", "key", "map", "fastmap", "t", "df", "item", "tupleid", "isArray", "error", "k", "x", "Encode", "fmod", "encoders", "encode", "e", "reenter", "update", "falsy", "enter", "exit", "set", "flag", "mod", "LegendEntries", "items", "type", "SymbolLegend", "limit", "lskip", "labelFormat", "labelValues", "domain", "fraction", "size", "offset", "ellipsis", "isFunction", "max", "constant", "index", "GradientLegend", "scaleFraction", "peek", "labelFraction", "sourceX", "sourceY", "targetX", "targetY", "LinkPath", "sx", "sy", "tx", "ty", "as", "orient", "shape", "path", "Paths", "line", "lineR", "sa", "sr", "ta", "tr", "arc", "dx", "dy", "rr", "ra", "arcR", "curve", "ix", "iy", "curveR", "orthoX", "orthoY", "orthoR", "sc", "ss", "tc", "ts", "sf", "diagonalX", "m", "diagonalY", "diagonalR", "mr", "Pie", "startAngle", "endAngle", "field", "one", "start", "stop", "data", "n", "a", "sum", "range", "v", "b", "DEFAULT_COUNT", "includeZero", "Linear", "Pow", "Sqrt", "includePad", "isContinuous", "Sequential", "SKIP", "toSet", "Scale", "scale$1", "scaleKey", "configureRange", "configureBins", "configureDomain", "d", "isContinuousColor", "Diverging", "Time", "UTC", "isString", "raw", "rawDomain", "zero", "mid", "padDomain", "domainCheck", "Ordinal", "implicit", "pad", "exponent", "span", "frac", "Log", "zoomLog", "zoomPow", "Symlog", "zoomSymlog", "zoomLinear", "isLogarithmic", "s", "$", "bins", "lo", "hi", "step", "BinOrdinal", "round", "configureRangeStep", "configureScheme", "isInterpolating", "interpolateColors", "flip", "interpolate", "round_default", "value_default", "Band", "Point", "outer", "inner", "bandSpace", "extent", "name", "scheme$1", "scheme", "Threshold", "Quantile", "Quantize", "adjustScheme", "quantizeInterpolator", "reverse", "interpolateRange", "array", "SortItems", "stableCompare", "Zero", "Center", "Normalize", "DefOutput", "Stack", "y0", "y1", "sort", "stack", "stackCenter", "stackNormalize", "stackZero", "groups", "partition", "group", "last", "j", "lastPos", "lastNeg", "groupby", "get", "f", "g", "vega_geo_module_exports", "__export", "Contour", "GeoJSON", "GeoPath", "GeoPoint", "GeoShape", "Graticule", "Heatmap", "Isocontour", "KDE2D", "Projection", "epsilon", "epsilon2", "pi", "halfPi", "quarterPi", "tau", "degrees", "radians", "abs", "atan", "atan2", "cos", "ceil", "exp", "hypot", "log", "pow", "sin", "sign", "x", "sqrt", "tan", "acos", "pi", "asin", "halfPi", "noop", "streamGeometry", "geometry", "stream", "streamGeometryType", "streamObjectType", "object", "features", "i", "n", "coordinates", "streamLine", "streamPolygon", "geometries", "closed", "coordinate", "stream_default", "areaRingSum", "Adder", "areaSum", "lambda00", "phi00", "lambda0", "cosPhi0", "sinPhi0", "areaStream", "noop", "areaRingStart", "areaRingEnd", "areaRing", "tau", "areaPointFirst", "areaPoint", "lambda", "phi", "radians", "cos", "quarterPi", "sin", "dLambda", "sdLambda", "adLambda", "cosPhi", "sinPhi", "k", "u", "v", "atan2", "area_default", "object", "stream_default", "spherical", "cartesian", "atan2", "asin", "lambda", "phi", "cosPhi", "cos", "sin", "cartesianDot", "a", "b", "cartesianCross", "cartesianAddInPlace", "cartesianScale", "vector", "k", "cartesianNormalizeInPlace", "d", "l", "sqrt", "lambda0", "phi0", "lambda1", "phi1", "lambda2", "lambda00", "phi00", "p0", "deltaSum", "ranges", "range", "boundsStream", "boundsPoint", "boundsLineStart", "boundsLineEnd", "boundsRingPoint", "boundsRingStart", "boundsRingEnd", "Adder", "areaStream", "areaRingSum", "epsilon", "lambda", "phi", "linePoint", "p", "cartesian", "radians", "normal", "cartesianCross", "equatorial", "inflection", "cartesianNormalizeInPlace", "spherical", "delta", "sign", "lambdai", "degrees", "phii", "antimeridian", "abs", "angle", "rangeCompare", "a", "b", "rangeContains", "x", "bounds_default", "feature", "i", "merged", "deltaMax", "stream_default", "W0", "W1", "X0", "Y0", "Z0", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "lambda00", "phi00", "x0", "y0", "z0", "centroidStream", "noop", "centroidPoint", "centroidLineStart", "centroidLineEnd", "centroidRingStart", "centroidRingEnd", "lambda", "phi", "radians", "cosPhi", "cos", "centroidPointCartesian", "sin", "x", "y", "z", "centroidLinePointFirst", "centroidLinePoint", "w", "atan2", "sqrt", "centroidRingPointFirst", "centroidRingPoint", "cx", "cy", "cz", "m", "hypot", "asin", "v", "centroid_default", "object", "Adder", "stream_default", "epsilon2", "epsilon", "degrees", "compose_default", "a", "b", "compose", "x", "y", "rotationIdentity", "lambda", "phi", "abs", "pi", "tau", "rotateRadians", "deltaLambda", "deltaPhi", "deltaGamma", "compose_default", "rotationLambda", "rotationPhiGamma", "forwardRotationLambda", "rotation", "cosDeltaPhi", "cos", "sinDeltaPhi", "sin", "cosDeltaGamma", "sinDeltaGamma", "cosPhi", "x", "y", "z", "k", "atan2", "asin", "rotation_default", "rotate", "radians", "forward", "coordinates", "degrees", "circleStream", "stream", "radius", "delta", "direction", "t0", "t1", "cosRadius", "cos", "sinRadius", "sin", "step", "tau", "circleRadius", "point", "t", "spherical", "cartesian", "cartesianNormalizeInPlace", "acos", "epsilon", "buffer_default", "lines", "line", "x", "y", "m", "noop", "result", "pointEqual_default", "a", "b", "abs", "epsilon", "Intersection", "point", "points", "other", "entry", "rejoin_default", "segments", "compareIntersection", "startInside", "interpolate", "stream", "subject", "clip", "i", "n", "segment", "p0", "p1", "x", "pointEqual_default", "epsilon", "link", "start", "current", "isSubject", "array", "a", "b", "longitude", "point", "abs", "pi", "sign", "tau", "polygonContains_default", "polygon", "lambda", "phi", "sinPhi", "sin", "normal", "cos", "angle", "winding", "sum", "Adder", "halfPi", "epsilon", "i", "n", "m", "ring", "point0", "lambda0", "phi0", "quarterPi", "sinPhi0", "cosPhi0", "j", "lambda1", "sinPhi1", "cosPhi1", "point1", "phi1", "delta", "absDelta", "antimeridian", "k", "atan2", "arc", "cartesianCross", "cartesian", "cartesianNormalizeInPlace", "intersection", "phiArc", "asin", "epsilon2", "clip_default", "pointVisible", "clipLine", "interpolate", "start", "sink", "line", "ringBuffer", "buffer_default", "ringSink", "polygonStarted", "polygon", "segments", "ring", "clip", "point", "lineStart", "lineEnd", "pointRing", "ringStart", "ringEnd", "merge", "startInside", "polygonContains_default", "rejoin_default", "compareIntersection", "lambda", "phi", "pointLine", "clean", "ringSegments", "i", "n", "m", "segment", "validSegment", "a", "b", "halfPi", "epsilon", "antimeridian_default", "clip_default", "clipAntimeridianLine", "clipAntimeridianInterpolate", "pi", "halfPi", "stream", "lambda0", "phi0", "sign0", "clean", "lambda1", "phi1", "sign1", "delta", "abs", "epsilon", "clipAntimeridianIntersect", "cosPhi0", "cosPhi1", "sinLambda0Lambda1", "sin", "atan", "cos", "from", "to", "direction", "phi", "lambda", "circle_default", "radius", "cr", "cos", "delta", "radians", "smallRadius", "notHemisphere", "abs", "epsilon", "interpolate", "from", "to", "direction", "stream", "circleStream", "visible", "lambda", "phi", "clipLine", "point0", "c0", "v0", "v00", "clean", "point1", "point2", "v", "c", "code", "pi", "intersect", "pointEqual_default", "t", "a", "b", "two", "pa", "cartesian", "pb", "n1", "n2", "cartesianCross", "n2n2", "cartesianDot", "n1n2", "determinant", "c1", "c2", "n1xn2", "A", "cartesianScale", "B", "cartesianAddInPlace", "u", "w", "uu", "t2", "sqrt", "q", "spherical", "lambda0", "lambda1", "phi0", "phi1", "z", "polar", "meridian", "q1", "r", "clip_default", "line_default", "a", "b", "x0", "y0", "x1", "y1", "ax", "ay", "bx", "by", "t0", "t1", "dx", "dy", "r", "clipMax", "clipMin", "clipRectangle", "x0", "y0", "x1", "y1", "visible", "x", "y", "interpolate", "from", "to", "direction", "stream", "a", "a1", "corner", "comparePoint", "p", "abs", "epsilon", "compareIntersection", "b", "ca", "cb", "activeStream", "bufferStream", "buffer_default", "segments", "polygon", "ring", "x__", "y__", "v__", "x_", "y_", "v_", "first", "clean", "clipStream", "point", "lineStart", "lineEnd", "polygonStart", "polygonEnd", "polygonInside", "winding", "i", "n", "j", "m", "a0", "b0", "b1", "startInside", "cleanInside", "merge", "rejoin_default", "linePoint", "v", "line_default", "graticuleX", "y0", "y1", "dy", "y", "range", "epsilon", "x", "graticuleY", "x0", "x1", "dx", "graticule", "X1", "X0", "Y1", "Y0", "DX", "DY", "X", "Y", "precision", "lines", "ceil", "abs", "coordinates", "_", "identity_default", "x", "areaSum", "Adder", "areaRingSum", "x00", "y00", "x0", "y0", "areaStream", "noop", "areaRingStart", "areaRingEnd", "abs", "area", "areaPointFirst", "x", "y", "areaPoint", "area_default", "x0", "y0", "x1", "y1", "boundsStream", "boundsPoint", "noop", "bounds", "x", "y", "bounds_default", "X0", "Y0", "Z0", "X1", "Y1", "Z1", "X2", "Y2", "Z2", "x00", "y00", "x0", "y0", "centroidStream", "centroidPoint", "centroidLineStart", "centroidLineEnd", "centroidRingStart", "centroidRingEnd", "centroid", "x", "y", "centroidPointFirstLine", "centroidPointLine", "dx", "dy", "z", "sqrt", "centroidPointFirstRing", "centroidPointRing", "centroid_default", "PathContext", "context", "_", "x", "y", "tau", "noop", "lengthSum", "Adder", "lengthRing", "x00", "y00", "x0", "y0", "lengthStream", "noop", "lengthPointFirst", "lengthPoint", "length", "x", "y", "sqrt", "measure_default", "cacheDigits", "cacheAppend", "cacheRadius", "cacheCircle", "PathString", "digits", "append", "appendRound", "_", "x", "y", "s", "result", "strings", "i", "j", "d", "k", "__pow", "path_default", "projection", "context", "digits", "pointRadius", "projectionStream", "contextStream", "path", "object", "stream_default", "area_default", "measure_default", "bounds_default", "centroid_default", "_", "identity_default", "PathString", "PathContext", "d", "transformer", "methods", "stream", "s", "TransformStream", "key", "x", "y", "fit", "projection", "fitBounds", "object", "clip", "stream_default", "bounds_default", "fitExtent", "extent", "b", "w", "h", "k", "x", "y", "fitSize", "size", "fitWidth", "width", "fitHeight", "height", "maxDepth", "cosMinDistance", "cos", "radians", "resample_default", "project", "delta2", "resample", "resampleNone", "transformer", "x", "y", "resampleLineTo", "x0", "y0", "lambda0", "a0", "b0", "c0", "x1", "y1", "lambda1", "a1", "b1", "c1", "depth", "stream", "dx", "dy", "d2", "a", "b", "c", "m", "sqrt", "phi2", "asin", "lambda2", "abs", "epsilon", "atan2", "p", "x2", "y2", "dx2", "dy2", "dz", "lambda00", "x00", "y00", "a00", "b00", "c00", "resampleStream", "point", "lineStart", "lineEnd", "ringStart", "linePoint", "lambda", "phi", "cartesian", "ringPoint", "ringEnd", "transformRadians", "transformer", "x", "y", "radians", "transformRotate", "rotate", "scaleTranslate", "k", "dx", "dy", "sx", "sy", "transform", "scaleTranslateRotate", "alpha", "cosAlpha", "cos", "sinAlpha", "sin", "a", "b", "ai", "bi", "ci", "fi", "projection", "project", "projectionMutator", "projectAt", "lambda", "phi", "deltaLambda", "deltaPhi", "deltaGamma", "theta", "preclip", "antimeridian_default", "x0", "y0", "x1", "y1", "postclip", "identity_default", "delta2", "projectResample", "projectTransform", "projectRotateTransform", "cache", "cacheStream", "point", "invert", "degrees", "stream", "_", "reset", "circle_default", "clipRectangle", "recenter", "resample_default", "sqrt", "extent", "object", "fitExtent", "size", "fitSize", "width", "fitWidth", "height", "fitHeight", "center", "rotateRadians", "compose_default", "conicProjection", "projectAt", "phi0", "phi1", "pi", "m", "projectionMutator", "p", "_", "radians", "degrees", "cylindricalEqualAreaRaw", "phi0", "cosPhi0", "cos", "forward", "lambda", "phi", "sin", "x", "y", "asin", "conicEqualAreaRaw", "y0", "y1", "sy0", "sin", "n", "abs", "epsilon", "cylindricalEqualAreaRaw", "c", "r0", "sqrt", "project", "x", "y", "r", "cos", "r0y", "l", "atan2", "sign", "pi", "asin", "conicEqualArea_default", "conicProjection", "albers_default", "conicEqualArea_default", "multiplex", "streams", "n", "x", "y", "i", "albersUsa_default", "cache", "cacheStream", "lower48", "albers_default", "lower48Point", "alaska", "conicEqualArea_default", "alaskaPoint", "hawaii", "hawaiiPoint", "point", "pointStream", "albersUsa", "coordinates", "k", "t", "stream", "_", "reset", "epsilon", "extent", "object", "fitExtent", "size", "fitSize", "width", "fitWidth", "height", "fitHeight", "azimuthalRaw", "scale", "x", "y", "cx", "cos", "cy", "k", "sin", "azimuthalInvert", "angle", "z", "sqrt", "c", "sc", "cc", "atan2", "asin", "azimuthalEqualAreaRaw", "azimuthalRaw", "cxcy", "sqrt", "azimuthalInvert", "z", "asin", "azimuthalEqualArea_default", "projection", "azimuthalEquidistantRaw", "azimuthalRaw", "c", "acos", "sin", "azimuthalInvert", "z", "azimuthalEquidistant_default", "projection", "mercatorRaw", "lambda", "phi", "log", "tan", "halfPi", "x", "y", "atan", "exp", "mercator_default", "mercatorProjection", "tau", "project", "m", "projection", "center", "scale", "translate", "clipExtent", "x0", "y0", "x1", "y1", "_", "reclip", "k", "pi", "t", "rotation_default", "tany", "y", "tan", "halfPi", "conicConformalRaw", "y0", "y1", "cy0", "cos", "n", "sin", "log", "f", "pow", "mercatorRaw", "project", "x", "epsilon", "r", "fy", "sign", "sqrt", "l", "atan2", "abs", "pi", "atan", "conicConformal_default", "conicProjection", "equirectangularRaw", "lambda", "phi", "equirectangular_default", "projection", "conicEquidistantRaw", "y0", "y1", "cy0", "cos", "n", "sin", "g", "abs", "epsilon", "equirectangularRaw", "project", "x", "y", "gy", "nx", "l", "atan2", "sign", "pi", "sqrt", "conicEquidistant_default", "conicProjection", "A1", "A2", "A3", "A4", "M", "sqrt", "iterations", "equalEarthRaw", "lambda", "phi", "l", "asin", "sin", "l2", "l6", "cos", "x", "y", "i", "delta", "fy", "fpy", "abs", "epsilon2", "equalEarth_default", "projection", "gnomonicRaw", "x", "y", "cy", "cos", "k", "sin", "azimuthalInvert", "atan", "gnomonic_default", "projection", "identity_default", "k", "tx", "ty", "sx", "sy", "alpha", "ca", "sa", "x0", "y0", "x1", "y1", "kx", "ky", "transform", "transformer", "x", "y", "p", "projection", "postclip", "cache", "cacheStream", "reset", "t", "stream", "_", "clipRectangle", "radians", "sin", "cos", "degrees", "extent", "object", "fitExtent", "size", "fitSize", "width", "fitWidth", "height", "fitHeight", "naturalEarth1Raw", "lambda", "phi", "phi2", "phi4", "x", "y", "i", "delta", "abs", "epsilon", "naturalEarth1_default", "projection", "orthographicRaw", "x", "y", "cos", "sin", "azimuthalInvert", "asin", "orthographic_default", "projection", "epsilon", "stereographicRaw", "x", "y", "cy", "cos", "k", "sin", "azimuthalInvert", "z", "atan", "stereographic_default", "projection", "transverseMercatorRaw", "lambda", "phi", "log", "tan", "halfPi", "x", "y", "atan", "exp", "transverseMercator_default", "m", "mercatorProjection", "center", "rotate", "_", "abs", "cos", "sin", "epsilon", "pi", "halfPi", "quarterPi", "sqrt2", "sqrt", "sqrtPi", "pi", "tau", "degrees", "radians", "asin", "x", "halfPi", "sqrt", "x", "mollweideBromleyTheta", "cp", "phi", "cpsinPhi", "sin", "i", "delta", "cos", "abs", "epsilon", "mollweideBromleyRaw", "cx", "cy", "forward", "lambda", "x", "y", "asin", "mollweideRaw", "sqrt2", "halfPi", "pi", "mollweide_default", "projection", "defaultPath", "path_default", "projectionProperties", "create", "type", "constructor", "projection", "p", "c", "prop", "registerScale", "proj", "projections", "getProjectionPath", "albers_default", "albersUsa_default", "azimuthalEqualArea_default", "azimuthalEquidistant_default", "conicConformal_default", "conicEqualArea_default", "conicEquidistant_default", "equalEarth_default", "equirectangular_default", "gnomonic_default", "identity_default", "mercator_default", "mollweide_default", "naturalEarth1_default", "orthographic_default", "stereographic_default", "transverseMercator_default", "key", "noop", "cases", "contours", "dx", "dy", "smooth", "smoothLinear", "values", "tz", "value", "contour", "polygons", "holes", "isorings", "ring", "area", "hole", "i", "n", "polygon", "contains", "callback", "fragmentByStart", "fragmentByEnd", "x", "y", "t0", "t1", "t2", "t3", "stitch", "line", "start", "end", "startIndex", "index", "endIndex", "f", "g", "point", "xt", "yt", "v0", "v1", "_", "_0", "_1", "error", "c", "ringContains", "j", "pi", "xi", "yi", "pj", "xj", "yj", "segmentContains", "a", "b", "collinear", "within", "p", "q", "r", "quantize", "k", "nice", "zero", "ex", "extent", "stop", "span", "step", "tickStep", "range", "Isocontour", "params", "Transform", "inherits", "pulse", "out", "source", "field", "identity", "levels", "as", "t", "grid", "paths", "isArray", "transformPaths", "rederive", "ingest$1", "max", "datum", "s", "isFunction", "sx", "isNumber", "sy", "tx", "ty", "transform", "x1", "y1", "flip", "transformPolygon", "coordinates", "transformRing", "transformPoint", "geometry", "radius", "bw", "data", "v", "estimateBandwidth", "number", "constant", "density2D", "d", "weight", "one", "bandwidth", "density", "counts", "rx", "ry", "ox", "oy", "m", "values0", "values1", "blurX", "blurY", "sum", "sz", "array", "target", "w", "sr", "KDE2D", "PARAMS", "obj", "param", "groups", "partition", "names", "accessorName", "kde", "set", "vals", "groupby", "get", "map", "Contour", "thresh", "size", "post", "Feature", "FeatureCollection", "MultiPoint", "GeoJSON", "features", "points", "fields", "lon", "lat", "geojson", "flag", "mod", "accessorFields", "GeoPath", "path", "getProjectionPath", "prev", "initPath", "pointRadius", "GeoPoint", "proj", "xy", "GeoShape", "shape", "shapeGenerator", "Graticule", "graticule", "src", "gen", "prop", "replace", "Heatmap", "shared", "opacity", "opacity_", "color", "color_", "o", "extend", "toCanvas", "rgb", "dependency", "toSet", "x2", "y2", "val", "can", "domCanvas", "ctx", "img", "pix", "Projection", "create", "projectionProperties", "fit", "collectGeoJSON", "type", "constructor", "projection", "key", "featurize", "vega_force_module_exports", "__export", "Force", "center_default", "x", "y", "nodes", "strength", "force", "i", "n", "node", "sx", "sy", "_", "add_default", "d", "x", "y", "add", "tree", "parent", "node", "leaf", "x0", "y0", "x1", "y1", "xm", "ym", "xp", "yp", "right", "bottom", "i", "j", "addAll", "data", "n", "xz", "yz", "cover_default", "x", "y", "x0", "y0", "x1", "y1", "z", "node", "parent", "i", "data_default", "data", "node", "extent_default", "_", "quad_default", "node", "x0", "y0", "x1", "y1", "find_default", "x", "y", "radius", "data", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "quads", "node", "q", "i", "quad_default", "xm", "ym", "dx", "dy", "d2", "d", "remove_default", "d", "x", "y", "parent", "node", "retainer", "previous", "next", "x0", "y0", "x1", "y1", "xm", "ym", "right", "bottom", "i", "j", "removeAll", "data", "root_default", "size_default", "size", "node", "visit_default", "callback", "quads", "q", "node", "child", "x0", "y0", "x1", "y1", "quad_default", "xm", "ym", "visitAfter_default", "callback", "quads", "next", "q", "quad_default", "node", "child", "x0", "y0", "x1", "y1", "xm", "ym", "defaultX", "d", "x_default", "_", "defaultY", "d", "y_default", "_", "quadtree", "nodes", "x", "y", "tree", "Quadtree", "defaultX", "defaultY", "x0", "y0", "x1", "y1", "leaf_copy", "leaf", "copy", "next", "treeProto", "node", "child", "add_default", "addAll", "cover_default", "data_default", "extent_default", "find_default", "remove_default", "removeAll", "root_default", "size_default", "visit_default", "visitAfter_default", "x_default", "y_default", "constant_default", "x", "jiggle_default", "random", "x", "d", "y", "collide_default", "radius", "nodes", "radii", "random", "strength", "iterations", "constant_default", "force", "i", "n", "tree", "node", "xi", "yi", "ri", "ri2", "k", "quadtree", "prepare", "apply", "quad", "x0", "y0", "x1", "y1", "data", "rj", "r", "l", "jiggle_default", "initialize", "_nodes", "_random", "_", "index", "d", "find", "nodeById", "nodeId", "node", "link_default", "links", "id", "strength", "defaultStrength", "strengths", "distance", "constant_default", "distances", "nodes", "count", "bias", "random", "iterations", "link", "force", "alpha", "k", "n", "i", "source", "target", "x", "y", "l", "b", "jiggle_default", "initialize", "m", "initializeStrength", "initializeDistance", "_nodes", "_random", "_", "noop", "dispatch", "i", "n", "_", "t", "Dispatch", "parseTypenames", "typenames", "types", "name", "typename", "callback", "T", "get", "set", "copy", "type", "that", "args", "c", "dispatch_default", "frame", "timeout", "interval", "pokeDelay", "taskHead", "taskTail", "clockLast", "clockNow", "clockSkew", "clock", "setFrame", "f", "now", "clearNow", "Timer", "timer", "callback", "delay", "time", "sleep", "t", "timerFlush", "e", "wake", "nap", "poke", "t0", "t1", "t2", "interval_default", "callback", "delay", "time", "t", "Timer", "total", "now", "tick", "elapsed", "lcg_default", "s", "x", "d", "y", "initialRadius", "initialAngle", "simulation_default", "nodes", "simulation", "alpha", "alphaMin", "alphaDecay", "alphaTarget", "velocityDecay", "forces", "stepper", "timer", "step", "event", "dispatch_default", "random", "lcg_default", "tick", "iterations", "i", "n", "node", "k", "force", "initializeNodes", "radius", "angle", "initializeForce", "_", "name", "dx", "dy", "d2", "closest", "manyBody_default", "nodes", "node", "random", "alpha", "strength", "constant_default", "strengths", "distanceMin2", "distanceMax2", "theta2", "force", "_", "i", "n", "tree", "quadtree", "x", "y", "accumulate", "apply", "initialize", "quad", "q", "c", "weight", "x1", "x2", "w", "l", "jiggle_default", "_nodes", "_random", "x_default", "x", "strength", "constant_default", "nodes", "strengths", "xz", "force", "alpha", "i", "n", "node", "initialize", "_", "y_default", "y", "strength", "constant_default", "nodes", "strengths", "yz", "force", "alpha", "i", "n", "node", "initialize", "_", "ForceMap", "center_default", "collide_default", "manyBody_default", "link_default", "x_default", "y_default", "Forces", "ForceParams", "ForceConfig", "ForceOutput", "Force", "params", "Transform", "inherits", "_", "pulse", "sim", "change", "iters", "setup", "simulation", "rerun", "dataflow", "args", "j", "m", "arg", "ops", "n", "op", "df", "nodes", "simulation_default", "stop", "restart", "stopped", "init", "f", "array", "i", "p", "name", "getForce", "modified", "k", "v", "isFunction", "accessorFields", "has", "error", "setForceParam", "d", "vega_hierarchy_module_exports", "__export", "Nest", "Pack", "Partition", "Stratify", "Tree", "TreeLinks", "Treemap", "defaultSeparation", "a", "b", "meanX", "children", "meanXReduce", "x", "c", "maxY", "maxYReduce", "y", "leafLeft", "node", "leafRight", "cluster_default", "separation", "dx", "dy", "nodeSize", "cluster", "root", "previousNode", "left", "right", "x0", "x1", "count", "node", "sum", "children", "i", "count_default", "each_default", "callback", "that", "index", "node", "eachBefore_default", "callback", "that", "node", "nodes", "children", "i", "index", "eachAfter_default", "callback", "that", "node", "nodes", "next", "children", "i", "n", "index", "find_default", "callback", "that", "index", "node", "sum_default", "value", "node", "sum", "children", "sort_default", "compare", "node", "path_default", "end", "start", "ancestor", "leastCommonAncestor", "nodes", "k", "a", "b", "aNodes", "bNodes", "c", "ancestors_default", "node", "nodes", "descendants_default", "leaves_default", "leaves", "node", "links_default", "root", "links", "node", "iterator_default", "node", "current", "next", "children", "n", "hierarchy", "data", "children", "mapChildren", "objectChildren", "root", "Node", "node", "nodes", "child", "childs", "i", "n", "computeHeight", "node_copy", "copyData", "d", "height", "count_default", "each_default", "eachAfter_default", "eachBefore_default", "find_default", "sum_default", "sort_default", "path_default", "ancestors_default", "descendants_default", "leaves_default", "links_default", "iterator_default", "optional", "f", "required", "constantZero", "constant_default", "x", "lcg_default", "s", "array_default", "x", "shuffle", "array", "random", "m", "t", "packEncloseRandom", "circles", "random", "i", "n", "shuffle", "B", "p", "e", "enclosesWeak", "encloseBasis", "extendBasis", "j", "enclosesWeakAll", "enclosesNot", "encloseBasis2", "encloseBasis3", "a", "b", "dr", "dx", "dy", "encloseBasis1", "x1", "y1", "r1", "x2", "y2", "r2", "x21", "y21", "r21", "l", "c", "x3", "y3", "r3", "a2", "a3", "b2", "b3", "c2", "c3", "d1", "d2", "d3", "ab", "xa", "xb", "ya", "yb", "A", "C", "r", "place", "b", "a", "c", "dx", "x", "a2", "dy", "y", "b2", "d2", "intersects", "dr", "score", "node", "ab", "Node", "circle", "packSiblingsRandom", "circles", "random", "n", "array_default", "aa", "ca", "i", "j", "k", "sj", "sk", "pack", "packEncloseRandom", "defaultRadius", "d", "pack_default", "radius", "dx", "dy", "padding", "constantZero", "pack", "root", "random", "lcg_default", "radiusLeaf", "packChildrenRandom", "translateChild", "x", "optional", "constant_default", "node", "k", "children", "i", "n", "r", "e", "packSiblingsRandom", "parent", "round_default", "node", "dice_default", "parent", "x0", "y0", "x1", "y1", "nodes", "node", "i", "n", "k", "partition_default", "dx", "dy", "padding", "round", "partition", "root", "n", "positionNode", "round_default", "node", "dice_default", "x0", "y0", "x1", "y1", "x", "preroot", "ambiguous", "imputed", "defaultId", "d", "defaultParentId", "stratify_default", "id", "parentId", "path", "stratify", "data", "nodes", "currentId", "currentParentId", "n", "i", "root", "parent", "node", "nodeId", "nodeKey", "nodeByKey", "I", "normalize", "P", "parentof", "_", "Node", "computeHeight", "x", "optional", "slash", "k", "defaultSeparation", "a", "b", "nextLeft", "v", "children", "nextRight", "moveSubtree", "wm", "wp", "shift", "change", "executeShifts", "w", "nextAncestor", "vim", "ancestor", "TreeNode", "node", "i", "Node", "treeRoot", "root", "tree", "nodes", "child", "n", "tree_default", "separation", "dx", "dy", "nodeSize", "t", "firstWalk", "secondWalk", "sizeNode", "left", "right", "bottom", "s", "tx", "kx", "ky", "siblings", "midpoint", "apportion", "vip", "vop", "vom", "sip", "sop", "sim", "som", "x", "slice_default", "parent", "x0", "y0", "x1", "y1", "nodes", "node", "i", "n", "k", "phi", "squarifyRatio", "ratio", "parent", "x0", "y0", "x1", "y1", "rows", "nodes", "row", "nodeValue", "i0", "i1", "n", "dx", "dy", "value", "sumValue", "minValue", "maxValue", "newRatio", "minRatio", "alpha", "beta", "dice_default", "slice_default", "squarify_default", "custom", "squarify", "x", "treemap_default", "tile", "squarify_default", "round", "dx", "dy", "paddingStack", "paddingInner", "constantZero", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "treemap", "root", "positionNode", "round_default", "node", "x0", "y0", "x1", "y1", "x", "required", "constant_default", "binary_default", "parent", "x0", "y0", "x1", "y1", "nodes", "i", "n", "sum", "sums", "partition", "j", "value", "node", "valueOffset", "valueTarget", "k", "hi", "mid", "valueLeft", "valueRight", "xk", "yk", "sliceDice_default", "parent", "x0", "y0", "x1", "y1", "slice_default", "dice_default", "resquarify_default", "custom", "ratio", "resquarify", "parent", "x0", "y0", "x1", "y1", "rows", "row", "nodes", "i", "j", "n", "m", "value", "dice_default", "slice_default", "squarifyRatio", "x", "phi", "lookup", "tree", "key", "filter", "map", "node", "t", "Nest", "params", "Transform", "children", "n", "inherits", "_", "pulse", "error", "gen", "mod", "out", "isTuple", "hierarchy", "array", "k", "nest", "ingest$1", "tupleid", "keys", "entries", "apply", "d", "depth", "valuesByKey", "result", "i", "keyValue", "value", "values", "HierarchyLayout", "defaultSeparation", "a", "b", "layout", "fields", "root", "as", "stableCompare", "setParams", "one", "err", "setFields", "p", "Output$3", "Pack", "pack_default", "Output$2", "Partition", "partition_default", "Stratify", "run", "stratify_default", "truthy", "Layouts", "tree_default", "cluster_default", "Output$1", "Tree", "method", "m", "has", "TreeLinks", "links", "lut", "link", "Tiles", "binary_default", "dice_default", "slice_default", "sliceDice_default", "squarify_default", "resquarify_default", "Output", "Treemap", "x", "treemap_default", "vega_label_module_exports", "__export", "Label", "ALPHA_MASK", "baseBitmaps", "$", "data", "bitmap", "d", "markBitmaps", "baseMark", "avoidMarks", "labelInside", "isGroupArea", "width", "height", "border", "context", "domCanvas", "baseMarkContext", "strokeContext", "items", "draw", "buffer", "getBuffer", "baseMarkBuffer", "strokeBuffer", "layer1", "layer2", "x", "u", "v", "index", "alpha", "strokeAlpha", "baseMarkAlpha", "interior", "type", "group", "mark", "Marks", "prepare", "source", "item", "rederive", "__spreadProps", "__spreadValues", "DIV", "MOD", "SIZE", "RIGHT0", "RIGHT1", "i", "Bitmap", "w", "h", "array", "_set", "mask", "_clear", "y", "x2", "y2", "r", "start", "end", "indexStart", "indexEnd", "scaler", "padding", "ratio", "scale", "_", "placeAreaLabelNaive", "bitmaps", "avoidBaseMark", "markIndex", "n", "textHeight", "textWidth", "textMetrics", "maxAreaWidth", "x1", "y1", "areaWidth", "outOfBounds", "collision", "bm0", "bm1", "placeAreaLabelReducedSearch", "tryLabel", "_x", "_y", "maxSize", "lo", "hi", "mid", "labelPlaced", "labelPlaced2", "_x1", "_xMid", "_x2", "_y1", "_yMid", "_y2", "result", "swapTmp", "X_DIR", "Y_DIR", "placeAreaLabelFloodFill", "bm2", "stack", "j", "Aligns", "Baselines", "placeMarkLabel", "anchors", "offsets", "_a", "boundary", "dx", "dy", "isInside", "sizeFactor", "insideFactor", "xc", "yc", "test", "TOP", "MIDDLE", "BOTTOM", "LEFT", "CENTER", "RIGHT", "anchorCode", "placeAreaLabel", "labelLayout", "texts", "size", "compare", "offset", "anchor", "lineAnchor", "method", "positions", "getOffsets", "getAnchors", "marktype", "markType", "grouptype", "markBoundary", "infPadding", "isNaiveGroupArea", "maxTextWidth", "maxTextHeight", "a", "b", "place", "count", "xy", "Output", "Anchors", "Label", "params", "Transform", "inherits", "pulse", "modp", "param", "p", "isFunction", "mod", "error", "as", "l", "t", "vega_regression_module_exports", "__export", "Loess", "Regression", "partition", "data", "groupby", "groups", "get", "f", "t", "map", "i", "n", "k", "g", "Loess", "params", "Transform", "inherits", "_", "pulse", "out", "source", "names", "accessorName", "m", "as", "values", "loess", "p", "ingest$1", "Methods", "constant", "linear", "log", "exp", "pow", "quad", "poly", "degreesOfFreedom", "method", "order", "Regression", "dof", "fit", "domain", "has", "error", "model", "dom", "extent", "add", "x", "sampleCurve", "vega_voronoi_module_exports", "__export", "Voronoi", "epsilon", "splitter", "resulterrbound", "sum", "elen", "e", "flen", "f", "h", "Q", "Qnew", "hh", "bvirt", "enow", "fnow", "eindex", "findex", "hindex", "estimate", "elen", "e", "Q", "i", "vec", "n", "ccwerrboundA", "epsilon", "ccwerrboundB", "ccwerrboundC", "B", "vec", "C1", "C2", "D", "u", "orient2dadapt", "ax", "ay", "bx", "by", "cx", "cy", "detsum", "acxtail", "acytail", "bcxtail", "bcytail", "bvirt", "c", "ahi", "alo", "bhi", "blo", "_i", "_j", "_0", "s1", "s0", "t1", "t0", "u3", "acx", "bcx", "acy", "bcy", "splitter", "det", "estimate", "errbound", "resulterrbound", "C1len", "sum", "C2len", "Dlen", "orient2d", "detleft", "detright", "o3derrboundA", "epsilon", "o3derrboundB", "o3derrboundC", "bc", "vec", "ca", "ab", "at_b", "at_c", "bt_c", "bt_a", "ct_a", "ct_b", "bct", "cat", "abt", "u", "_8", "_8b", "_16", "_12", "fin", "fin2", "iccerrboundA", "epsilon", "iccerrboundB", "iccerrboundC", "bc", "vec", "ca", "ab", "aa", "bb", "cc", "u", "v", "axtbc", "aytbc", "bxtca", "bytca", "cxtab", "cytab", "abt", "bct", "cat", "abtt", "bctt", "catt", "_8", "_16", "_16b", "_16c", "_32", "_32b", "_48", "_64", "fin", "fin2", "isperrboundA", "epsilon", "isperrboundB", "isperrboundC", "ab", "vec", "bc", "cd", "de", "ea", "ac", "bd", "ce", "da", "eb", "abc", "bcd", "cde", "dea", "eab", "abd", "bce", "cda", "deb", "eac", "adet", "bdet", "cdet", "ddet", "edet", "abdet", "cddet", "cdedet", "deter", "_8", "_8b", "_8c", "_16", "_24", "_48", "_48b", "_96", "_192", "_384x", "_384y", "_384z", "_768", "xdet", "vec", "ydet", "zdet", "fin", "EPSILON", "EDGE_STACK", "Delaunator", "points", "getX", "defaultGetX", "getY", "defaultGetY", "n", "coords", "i", "p", "maxTriangles", "hullPrev", "hullNext", "hullTri", "hullHash", "minX", "minY", "maxX", "maxY", "x", "y", "cx", "cy", "minDist", "i0", "i1", "i2", "d", "dist", "i0x", "i0y", "i1x", "i1y", "minRadius", "r", "circumradius", "i2x", "i2y", "quicksort", "hull", "j", "d0", "id", "orient2d", "center", "circumcenter", "hullSize", "k", "xp", "yp", "start", "key", "e", "q", "t", "pseudoAngle", "a", "triangles", "halfedges", "ar", "b", "a0", "b0", "al", "bl", "p0", "pr", "pl", "p1", "inCircle", "hbl", "br", "c", "dx", "dy", "ax", "ay", "bx", "by", "px", "py", "ex", "ey", "fx", "fy", "ap", "bp", "cp", "cl", "ids", "dists", "left", "right", "temp", "tempDist", "median", "swap", "arr", "tmp", "Path", "x", "y", "x0", "y0", "w", "h", "Polygon", "x", "y", "Voronoi", "delaunay", "xmin", "ymin", "xmax", "ymax", "points", "hull", "triangles", "vectors", "bx", "by", "circumcenters", "i", "j", "n", "x", "y", "t1", "t2", "t3", "x1", "y1", "x2", "y2", "x3", "y3", "dx", "dy", "ex", "ey", "ab", "a", "d", "bl", "cl", "h", "p0", "p1", "x0", "y0", "context", "buffer", "Path", "halfedges", "inedges", "ti", "tj", "xi", "yi", "xj", "yj", "h0", "h1", "t", "v", "p", "cell", "polygon", "Polygon", "S", "c0", "c1", "ci", "cj", "loop", "ai", "li", "aj", "lj", "e0", "e", "V", "P", "e1", "sx0", "sy0", "sx1", "sy1", "flip", "c", "vx0", "vy0", "vxn", "vyn", "vx", "vy", "k", "tau", "pow", "pointX", "p", "pointY", "collinear", "d", "triangles", "coords", "i", "a", "b", "c", "jitter", "x", "y", "r", "Delaunay", "points", "fx", "fy", "that", "flatArray", "flatIterable", "Delaunator", "_", "j", "e", "f", "bounds", "n", "halfedges", "hull", "inedges", "hullIndex", "Voronoi", "_hullIndex", "l", "e0", "p0", "i0", "dc", "t", "dt", "context", "buffer", "Path", "ti", "tj", "h", "polygon", "Polygon", "t0", "t1", "t2", "array", "Voronoi", "params", "Transform", "defaultExtent", "inherits", "_", "pulse", "as", "data", "s", "voronoi", "Delaunay", "i", "n", "polygon", "isPoint", "toPathString", "p", "x", "y", "vega_wordcloud_module_exports", "__export", "Wordcloud", "cloudRadians", "cw", "ch", "cloud", "size", "text", "font", "fontSize", "fontStyle", "fontWeight", "rotate", "padding", "spiral", "archimedeanSpiral", "words", "random", "contextAndRatio", "getContext", "domCanvas", "board", "zeroArray", "bounds", "n", "i", "tags", "data", "d", "a", "b", "cloudSprite", "place", "cloudBounds", "canvas", "ratio", "context", "tag", "startX", "startY", "maxDelta", "s", "dt", "t", "dxdy", "dx", "dy", "cloudCollide", "collideRects", "sprite", "w", "sw", "lx", "sx", "msx", "h", "x", "last", "j", "_", "functor", "spirals", "di", "c", "y", "maxh", "w32", "sr", "cr", "wcr", "wsr", "hcr", "hsr", "pixels", "seen", "seenRow", "k", "m", "b0", "b1", "e", "rectangularSpiral", "sign", "Output", "Params", "Wordcloud", "params", "Transform", "inherits", "pulse", "error", "modp", "param", "p", "isFunction", "mod", "layout", "as", "range", "constant", "fsize", "sizeScale", "scale", "extent", "vega_crossfilter_module_exports", "__export", "CrossFilter", "ResolveFilter", "array8", "n", "array16", "array32", "Bitmaps", "width", "data", "seen", "curr", "array", "prev", "lengthen", "i", "j", "t", "num", "map", "copy", "reindex", "k", "one", "m", "length", "Dimension", "index", "query", "bit", "added", "dim", "range", "idx", "lo", "hi", "n1", "SortedIndex", "value", "size", "insert", "key", "base", "n0", "addi", "addv", "oldv", "oldi", "sort", "merge", "remove", "bisect", "bisectLeft", "bisectRight", "values", "a", "b", "x", "y", "permute", "value0", "index0", "value1", "index1", "i0", "i1", "CrossFilter", "params", "Transform", "inherits", "_", "pulse", "init", "f", "fields", "indices", "dims", "output", "bits", "all", "out", "mod", "adds", "add", "mods", "remMap", "modMap", "mask", "tuples", "indexMap", "stamp", "q", "old", "lo1", "hi1", "lo0", "hi0", "rem", "ResolveFilter", "ignore", "bitmap", "pass", "c", "RawCode", "Literal", "Property", "Identifier", "ArrayExpression", "BinaryExpression", "CallExpression", "ConditionalExpression", "LogicalExpression", "MemberExpression", "ObjectExpression", "UnaryExpression", "ASTNode", "type", "visitor", "c", "i", "n", "children", "node", "TokenName", "source", "index", "length", "lookahead", "TokenBooleanLiteral", "TokenEOF", "TokenIdentifier", "TokenKeyword", "TokenNullLiteral", "TokenNumericLiteral", "TokenPunctuator", "TokenStringLiteral", "TokenRegularExpression", "SyntaxArrayExpression", "SyntaxBinaryExpression", "SyntaxCallExpression", "SyntaxConditionalExpression", "SyntaxIdentifier", "SyntaxLiteral", "SyntaxLogicalExpression", "SyntaxMemberExpression", "SyntaxObjectExpression", "SyntaxProperty", "SyntaxUnaryExpression", "MessageUnexpectedToken", "MessageUnexpectedNumber", "MessageUnexpectedString", "MessageUnexpectedIdentifier", "MessageUnexpectedReserved", "MessageUnexpectedEOS", "MessageInvalidRegExp", "MessageUnterminatedRegExp", "MessageStrictOctalLiteral", "MessageStrictDuplicateProperty", "ILLEGAL", "DISABLED", "RegexNonAsciiIdentifierStart", "RegexNonAsciiIdentifierPart", "assert", "condition", "message", "isDecimalDigit", "ch", "isHexDigit", "isOctalDigit", "isWhiteSpace", "isLineTerminator", "isIdentifierStart", "isIdentifierPart", "keywords", "skipComment", "scanHexEscape", "prefix", "len", "code", "throwError", "scanUnicodeCodePointEscape", "cu1", "cu2", "getEscapedIdentifier", "id", "getIdentifier", "start", "scanIdentifier", "scanPunctuator", "code2", "ch1", "ch2", "ch3", "ch4", "scanHexLiteral", "number", "scanOctalLiteral", "scanNumericLiteral", "scanStringLiteral", "str", "quote", "octal", "testRegExp", "pattern", "flags", "tmp", "$0", "$1", "e", "exception", "scanRegExpBody", "classMarker", "terminated", "body", "scanRegExpFlags", "scanRegExp", "value", "isIdentifierName", "token", "advance", "lex", "peek", "pos", "finishArrayExpression", "elements", "finishBinaryExpression", "operator", "left", "right", "finishCallExpression", "callee", "args", "finishConditionalExpression", "test", "consequent", "alternate", "finishIdentifier", "name", "finishLiteral", "finishMemberExpression", "accessor", "object", "property", "finishObjectExpression", "properties", "finishProperty", "kind", "key", "finishUnaryExpression", "argument", "messageFormat", "error", "msg", "whole", "throwUnexpected", "expect", "match", "matchKeyword", "keyword", "parseArrayInitialiser", "parseConditionalExpression", "parseObjectPropertyKey", "parseObjectProperty", "parseObjectInitialiser", "map", "toString", "parseGroupExpression", "expr", "parseExpression", "legalKeywords", "parsePrimaryExpression", "parseArguments", "parseNonComputedProperty", "parseNonComputedMember", "parseComputedMember", "parseLeftHandSideExpressionAllowCall", "parsePostfixExpression", "parseUnaryExpression", "binaryPrecedence", "prec", "parseBinaryExpression", "marker", "markers", "stack", "parser", "Constants", "Functions", "codegen", "fncall", "cast", "obj", "fn", "DATE", "STRING", "REGEXP", "stripQuotes", "s", "opt", "allowed", "toSet", "forbidden", "constants", "functions", "visit", "globalvar", "fieldvar", "outputGlobal", "isFunction", "globals", "fields", "memberDepth", "ast", "isString", "generator", "Generators", "has", "d", "o", "p", "k", "result", "SELECTION_GETTER", "getter", "f", "field", "Intersect", "Union", "VlMulti", "VlPoint", "Or", "And", "SelectionId", "$selectionId", "TYPE_ENUM", "TYPE_RANGE_INC", "TYPE_RANGE_EXC", "TYPE_RANGE_LE", "TYPE_RANGE_RE", "UNIT_INDEX", "testPoint", "datum", "entry", "fields", "values", "n", "i", "dval", "isDate", "toNumber", "isArray", "inrange", "selectionTest", "name", "op", "data", "entries", "unitIdx", "intersect", "miss", "count", "unit", "b", "bisect", "bisector", "bisectLeft", "bisectRight", "selectionIdTest", "value", "index", "selectionTuples", "array", "base", "x", "extend", "selectionResolve", "isMulti", "vl5", "resolved", "multiRes", "types", "res", "resUnit", "type", "union", "j", "m", "ops", "obj", "curr", "acc", "key", "k", "intersection", "v", "lo", "hi", "DataPrefix", "IndexPrefix", "selectionVisitor", "args", "scope", "params", "Literal", "error", "peek", "indexName", "dataName", "has", "data", "name", "indata", "field", "value", "index", "entry", "setdata", "tuples", "df", "input", "truthy", "encode", "item", "retval", "target", "wrap", "method", "spec", "format", "timeFormat", "utcFormat", "timeParse", "utcParse", "dateObj", "time", "month", "day", "specifier", "monthFormat", "monthAbbrevFormat", "dayFormat", "dayAbbrevFormat", "DataPrefix", "IndexPrefix", "ScalePrefix", "SignalPrefix", "dataVisitor", "args", "scope", "params", "Literal", "error", "dataName", "has", "err", "indataVisitor", "indexName", "scaleVisitor", "addScaleDependency", "scaleName", "getScale", "nameOrFunction", "ctx", "isFunction", "isString", "maybeScale", "isRegisteredScale", "internalScaleFunctions", "codegen", "fnctx", "visitors", "s", "ref", "arg", "$", "geoMethod", "methodName", "globalMethod", "projection", "geojson", "group", "p", "geoArea", "area_default", "geoBounds", "bounds_default", "geoCentroid", "centroid_default", "geoScale", "inScope", "log", "warn", "info", "debug", "channel_luminance_value", "channelValue", "val", "luminance", "color", "c", "rgb", "r", "g", "b", "contrast", "color1", "color2", "lum1", "lum2", "lumL", "lumD", "merge", "extend", "equal", "a", "isArray", "equalArray", "isObject", "equalObject", "i", "n", "key", "removePredicate", "props", "_", "modify", "insert", "remove", "toggle", "values", "stamp", "changes", "predicate", "isTuple", "pinchDistance", "event", "dx", "dy", "pinchAngle", "accessors", "pluck", "accessor", "array", "seq", "sequence", "join", "_len", "_key", "indexof", "_len2", "_key2", "lastindexof", "_len3", "_key3", "slice", "_len4", "_key4", "replace", "str", "pattern", "repl", "reverse", "bandspace", "count", "paddingInner", "paddingOuter", "bandSpace", "bandwidth", "copy", "domain", "invert", "range", "scale", "scaleGradient", "p0", "p1", "gradient", "Gradient", "stops", "min", "max", "peek", "fraction", "identity", "scaleFraction", "geoShape", "context", "pathShape", "path", "pathRender", "parse", "datum", "d", "treeNodes", "tree", "treePath", "source", "nodes", "t", "treeAncestors", "node", "_window", "screen", "w", "windowSize", "containerSize", "view", "el", "intersect", "opt", "u", "v", "box", "Bounds", "scene", "filter", "types", "names", "lassoAppend", "lasso", "x", "y", "minDist", "last", "lassoPath", "svg", "_ref", "intersectLasso", "markname", "pixelLasso", "unit", "mark", "bb", "px", "py", "tuple", "pointInPolygon", "testx", "testy", "polygon", "intersections", "j", "prevX", "prevY", "functionContext", "random", "cumulativeNormal", "cumulativeLogNormal", "cumulativeUniform", "densityNormal", "densityLogNormal", "densityUniform", "quantileNormal", "quantileLogNormal", "quantileUniform", "sampleNormal", "sampleLogNormal", "sampleUniform", "isBoolean", "isDate", "isNumber", "isRegExp", "toBoolean", "toDate", "toNumber", "toString", "flush", "lerp", "pad", "span", "inrange", "truncate", "lab", "hcl", "hsl", "utcOffset", "utcSequence", "timeOffset", "timeSequence", "timeUnitSpecifier", "quarter", "utcquarter", "week", "utcweek", "dayofyear", "utcdayofyear", "extent", "clampRange", "panLinear", "panLog", "panPow", "panSymlog", "zoomLinear", "zoomLog", "zoomPow", "zoomSymlog", "eventFunctions", "eventPrefix", "thisPrefix", "astVisitors", "codegenParams", "id", "buildFunctions", "Constants", "codeGenerator", "fn", "Functions", "expressionFunction", "visitor", "selectionTest", "selectionVisitor", "selectionIdTest", "selectionResolve", "selectionTuples", "parser", "expr", "ast", "CallExpression", "visit", "gen", "signalName", "parse", "spec", "ctx", "operators", "entry", "Skip", "toSet", "Swap", "adjustSpatial", "encode", "marktype", "code", "canonicalType", "type", "isOperator", "isCollect", "expression", "args", "fn", "_compare", "u", "v", "lt", "gt", "expressionCodegen", "expr", "channels", "name", "o", "$", "path", "ref", "get", "fields", "orders", "t", "map", "f", "i", "parseOperator", "parseOperatorParameters", "op", "error", "parseParameters", "params", "key", "value", "isArray", "parseParameter", "isObject", "n", "PARSERS", "p", "has", "getOperator", "getKey", "getExpression", "getField", "getEncode", "getCompare", "getContext", "getSubflow", "getTupleId", "_", "k", "accessor", "field", "c", "array", "tupleid", "compare", "enc", "dataflow", "parent", "subctx", "parseStream", "filter", "stream", "parseUpdate", "srcid", "source", "target", "update", "SKIP", "getState", "options", "state", "signals", "data", "dataset", "setState", "df", "truthy", "substate", "context", "transforms", "functions", "Context", "Subcontext", "keys", "id", "node", "role", "initializeAria", "view", "el", "ariaLabel", "desc", "background", "_", "Default", "cursor", "event", "value", "user", "isString", "item", "setCursor", "dataref", "name", "data", "has", "error", "values", "change", "changeset", "truthy", "changes", "isChangeSet", "dataset", "insert", "remove", "width", "padding", "height", "offset", "origin", "resizeRenderer", "w", "h", "handler", "eventExtend", "p", "e", "translate", "point", "extension", "itemGroup", "group", "g", "i", "xy", "constant", "VIEW", "TIMER", "WINDOW", "NO_TRAP", "initializeEventConfig", "config", "events", "extend", "unpack", "obj", "keys", "k", "isArray", "toSet", "trackEventListener", "sources", "type", "array", "prevent", "def", "allow", "permit", "key", "rule", "isObject", "source", "filter", "s", "EventStream", "send", "n", "itemFilter", "markTarget", "invoke", "hover", "hoverSet", "leaveSet", "finalize", "tooltip", "timers", "listeners", "m", "element", "tag", "attr", "text", "BindClass", "NameClass", "RadioClass", "bind", "binding", "param", "debounce", "target", "generate", "node", "div", "wrapper", "input", "form", "checkbox", "select", "radio", "range", "labels", "option", "valuesEqual", "label", "nodes", "max", "min", "step", "tickStep", "span", "update", "a", "b", "initializeRenderer", "r", "constructor", "scaleFactor", "opt", "trap", "fn", "initializeHandler", "prevHandler", "initialize", "elBind", "module", "renderModule", "lookup", "Handler", "CanvasHandler", "Renderer", "clear", "number", "paddingObject", "renderHeadless", "__async", "ctr", "renderToImageURL", "RenderType", "toBlobURL", "mime", "blob", "renderToCanvas", "renderToSVG", "runtime", "spec", "expr", "context", "transforms", "functionContext", "scale", "scales", "Width", "Height", "Padding", "Skip", "viewWidth", "viewHeight", "initializeResize", "resetSize", "resizePadding", "resizeView", "auto", "rerun", "v", "getState", "options", "dataTest", "signalTest", "op", "setState", "state", "timer", "callback", "delay", "tick", "elapsed", "interval_default", "defaultTooltip", "formatTooltip", "formatArray", "isDate", "formatObject", "formatValue", "View", "Dataflow", "loc", "locale", "Scenegraph", "root", "ctx", "lookupSignal", "$", "findOperatorHandler", "addOperatorListener", "removeOperatorListener", "inherits", "encode", "prerun", "postrun", "asyncCallback", "loader", "handlers", "t", "l", "prev", "VIEW", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "COLON", "COMMA", "NAME", "GT", "ILLEGAL", "DEFAULT_MARKS", "DEFAULT_SOURCE", "MARKS", "eventSelector", "selector", "source", "marks", "parseMerge", "parseSelector", "isMarkType", "type", "find", "s", "i", "endChar", "pushChar", "popChar", "n", "count", "c", "output", "start", "parseBetween", "parseStream", "b", "stream", "throttle", "markname", "j", "filter", "parseThrottle", "e", "a", "_", "x", "parseAutosize", "spec", "isObject", "number", "_", "paddingObject", "parsePadding", "encoder", "isArray", "extend", "addEncode", "object", "name", "value", "set", "addEncoders", "enter", "update", "extendEncode", "encode", "extra", "skip", "has", "key", "MarkRole", "FrameRole", "ScopeRole", "AxisRole", "AxisDomainRole", "AxisGridRole", "AxisLabelRole", "AxisTickRole", "AxisTitleRole", "LegendRole", "LegendBandRole", "LegendEntryRole", "LegendGradientRole", "LegendLabelRole", "LegendSymbolRole", "LegendTitleRole", "TitleRole", "TitleTextRole", "TitleSubtitleRole", "applyDefaults", "type", "role", "style", "config", "defaults", "props", "applyDefault", "array", "scaleRef", "scale", "isString", "$", "field", "entry$1", "enc", "gradient", "color", "property", "_color", "x", "y", "z", "args", "peek", "ref", "resolveField", "level", "error", "splitAccessPath", "rule", "code", "parseEncode", "scope", "params", "parseBlock", "block", "marktype", "channels", "fields", "parse$1", "expr", "parser", "OUTER", "OUTER_INVALID", "outerError", "prefix", "parseSignal", "signal", "prop", "op", "Entry", "parent", "entry", "operator", "fieldRef$1", "keyFieldRef", "compareRef", "orders", "keyRef", "flat", "Ascending", "Descending", "sortKey", "sort", "aggrField", "Scope$1", "View", "isSignal", "isExpr$1", "hasSignal", "specValue", "defaultValue", "deref", "v", "Timer", "parseStream", "stream", "mergeStream", "nestedStream", "eventStream", "eventSource", "source", "list", "s", "streamParameters", "id", "param", "filterMark", "item", "OP_VALUE_EXPR", "parseUpdate", "target", "events", "sources", "eventSelector", "mergeSources", "streamSource", "parseSignalUpdates", "transform", "Aggregate", "AxisTicks", "Bound", "Collect", "Compare", "DataJoin", "Encode", "Expression", "Facet", "Field", "Key", "LegendEntries", "Load", "Mark", "MultiExtent", "MultiValues", "Overlap", "Params", "PreFacet", "Projection", "Proxy", "Relay", "Render", "Scale", "Sieve", "SortItems", "ViewLayout", "Values", "FIELD_REF_ID", "MULTIDOMAIN_SORT_OPS", "initScale", "isValidScaleType", "parseScale", "parseScaleDomain", "parseScaleRange", "parseScaleInterpolate", "parseScaleNice", "parseScaleBins", "parseLiteral", "parseArray", "dataLookupError", "domain", "explicitDomain", "multipleDomain", "singularDomain", "data", "isDiscrete", "parseSort", "isQuantile", "dom", "d", "fieldRef", "ordinalMultipleDomain", "quantileMultipleDomain", "numericMultipleDomain", "coll", "a", "counts", "f", "p", "c", "multidomain", "values", "extents", "nice", "interpolate", "range", "parseProjection", "proj", "parseParameter$1", "Top", "Left", "Right", "Bottom", "Center", "Vertical", "Start", "Middle", "End", "Index", "Label", "Offset", "Perc", "Perc2", "Value", "GuideLabelStyle", "GuideTitleStyle", "GroupTitleStyle", "GroupSubtitleStyle", "Symbols", "Gradient", "Discrete", "Size", "Shape", "Fill", "Stroke", "StrokeWidth", "StrokeDash", "Opacity", "LegendScales", "Skip", "zero", "one", "GroupMark", "RectMark", "RuleMark", "SymbolMark", "TextMark", "guideGroup", "mark", "lookup", "dflt", "getEncoding", "getStyle", "anchorExpr", "e", "m", "alignExpr$1", "tickBand", "offset", "band", "extendOffset", "guideMark", "extras", "legendGradient", "userEncode", "vertical", "thickness", "length", "start", "stop", "width", "height", "legendGradientDiscrete", "dataRef", "uu", "vv", "adjust", "alignExpr", "baselineExpr", "legendGradientLabels", "overlap", "u", "legendSymbolGroups", "columns", "entries", "interactive", "symbolOffset", "valueRef", "xSignal", "yEncode", "index", "ncols", "nrows", "baseFill", "baseStroke", "symbols", "labelOffset", "labels", "legendSymbolLayout", "isL", "isR", "isLR", "isVG", "baseline", "alignFlip", "exprAlign", "exprAnchor", "exprAngle", "exprBaseline", "legendTitle", "clip", "getRole", "definition", "parseTransform", "def", "t", "parseParameters", "n", "i", "pdef", "parseParameter", "parseIndexParameter", "parseSubParameters", "parameterValue", "isExpr", "isField", "isCompare", "outerExpr", "outerField", "isData", "parseSubParameter", "k", "parseData$1", "from", "group", "facet", "getDataRef", "DataScope", "input", "output", "aggr", "fieldKey", "addSortField", "as", "cache", "ds", "optype", "parseFacet", "subscope", "parseSubflow", "parseTrigger", "remove", "insert", "toggle", "modify", "parseMark", "layout", "ops", "store", "layoutRef", "boundRef", "nested", "joinRef", "markRef", "tx", "md", "encodeRef", "bound", "parseOverlap", "render", "sieve", "on", "method", "sep", "tol", "parseLegend", "legendEncode", "scales", "entryLayout", "children", "legendType", "datum", "entryEncode", "entryRef", "sizeExpression", "buildLegendEncode", "scaleType", "scaleCount", "isContinuous", "isDiscretizing", "count", "marks", "size", "getChannel", "strokeWidth", "fontSize", "getFontSize", "angleExpr", "parseTitle", "buildTitle", "titleEncode", "buildSubTitle", "groupEncode", "text", "parseData", "transforms", "analyze", "generate", "upstream", "load", "collect", "isX", "orient", "getSign", "b", "ifLeftTopExpr", "ifX", "ifXEnc", "ifY", "ifYEnc", "ifTop", "ifTopExpr", "ifRight", "ifRightExpr", "$orient", "ifEnc", "ifExpr", "test", "isSimple", "toExpr", "ifOrient", "l", "r", "mult", "sign", "patch", "base", "fallback", "axisConfig", "styleProp", "keys", "objects", "map", "obj", "axis", "xy", "or", "xyKeys", "orientKeys", "axisDomain", "pos0", "position", "pos1", "pos", "axisGrid", "vscale", "offsetValue", "exit", "tickPos", "sz", "gridStart", "gridEnd", "axisTicks", "tickSize", "flushExpr", "threshold", "axisLabels", "flush", "flushOffset", "labelAlign", "labelBaseline", "flushOn", "align", "offsetExpr", "axisTitle", "titlePos", "autoLayout", "auto", "dim", "autoY", "autoX", "parseAxis", "axisEncode", "ticksRef", "buildAxisEncode", "parseScope", "preprocessed", "signals", "rootEncode", "parseView", "root", "collectSignals", "signalObject", "pre", "Scope", "options", "Subscope", "vref", "annotate", "cmp", "check", "sig", "o", "propertyLambda", "bind", "dataScope", "arrayLambda", "objectLambda", "defaultFont", "defaultColor", "black", "gray", "lightGray", "parse", "mergeConfig", "version", "extend", "transforms", "vega_transforms_module_exports", "vega_view_transforms_module_exports", "vega_encode_module_exports", "vega_geo_module_exports", "vega_force_module_exports", "vega_label_module_exports", "vega_hierarchy_module_exports", "vega_regression_module_exports", "vega_voronoi_module_exports", "vega_wordcloud_module_exports", "vega_crossfilter_module_exports", "adjustSpatial", "item", "encode", "swap", "t", "Constants", "Ops", "a", "b", "Unary", "slice", "apply", "m", "args", "cast", "obj", "datetime", "y", "d", "H", "M", "S", "ms", "Functions", "c", "x", "r", "EventFunctions", "DisallowedMethods", "Visitors", "$", "n", "id", "o", "p", "name", "k", "interpret", "ast", "fn", "params", "datum", "event", "f", "expression", "ctx", "expr", "_", "marktype", "channels", "v", "src_exports", "__export", "accessPathDepth", "accessPathWithDatum", "compile", "contains", "deepEqual", "deleteNestedProperty", "duplicate", "entries", "every", "fieldIntersection", "flatAccessWithDatum", "getFirstDefined", "hasIntersection", "hash", "internalField", "isBoolean", "isEmpty", "isEqual", "isInternalField", "isNullOrFalse", "isNumeric", "keys", "logicalExpr", "mergeDeep", "never", "normalize", "normalizeAngle", "omit", "pick", "prefixGenerator", "removePathFromField", "replaceAll", "replacePathInField", "resetIdCounter", "setEqual", "some", "stringify", "titleCase", "unique", "uniqueId", "vals", "varName", "version", "isLogicalOr", "op", "isLogicalAnd", "isLogicalNot", "forEachLeaf", "fn", "subop", "normalizeLogicalComposition", "normalizer", "o", "duplicate", "never", "message", "pick", "obj", "props", "copy", "prop", "has", "omit", "__spreadValues", "x", "stringify", "hash", "a", "isNumber", "str", "isString", "h", "i", "char", "isNullOrFalse", "contains", "array", "item", "some", "arr", "f", "k", "every", "mergeDeep", "dest", "src", "s", "deepMerge_", "property", "keys", "writeConfig", "unique", "values", "results", "u", "v", "val", "isEqual", "dict", "other", "dictKeys", "otherKeys", "key", "setEqual", "b", "e", "hasIntersection", "prefixGenerator", "prefixes", "wrappedWithAccessors", "splitAccessPath", "y", "computedPrefixes", "_", "fieldIntersection", "isEmpty", "vals", "entries", "isBoolean", "varName", "alphanumericS", "logicalExpr", "op", "cb", "isLogicalNot", "isLogicalAnd", "and", "isLogicalOr", "or", "deleteNestedProperty", "orderedProps", "titleCase", "accessPathWithDatum", "path", "datum", "pieces", "prefix", "$", "flatAccessWithDatum", "escapePathAccess", "string", "replacePathInField", "replaceAll", "find", "replacement", "removePathFromField", "accessPathDepth", "getFirstDefined", "args", "arg", "idCounter", "uniqueId", "id", "resetIdCounter", "internalField", "name", "isInternalField", "normalizeAngle", "angle", "isNumeric", "value", "clonedProto", "deepEqual", "length", "ks", "data", "seen", "_stringify", "node", "out", "seenIndex", "ROW", "COLUMN", "FACET", "X", "Y", "X2", "Y2", "XOFFSET", "YOFFSET", "RADIUS", "RADIUS2", "THETA", "THETA2", "LATITUDE", "LONGITUDE", "LATITUDE2", "LONGITUDE2", "COLOR", "FILL", "STROKE", "SHAPE", "SIZE", "ANGLE", "OPACITY", "FILLOPACITY", "STROKEOPACITY", "STROKEWIDTH", "STROKEDASH", "TEXT", "ORDER", "DETAIL", "KEY", "TOOLTIP", "HREF", "URL", "DESCRIPTION", "POSITION_CHANNEL_INDEX", "POLAR_POSITION_CHANNEL_INDEX", "isPolarPositionChannel", "c", "GEO_POSIITON_CHANNEL_INDEX", "getPositionChannelFromLatLong", "channel", "isGeoPositionChannel", "GEOPOSITION_CHANNELS", "keys", "UNIT_CHANNEL_INDEX", "__spreadProps", "__spreadValues", "isColorChannel", "FACET_CHANNEL_INDEX", "FACET_CHANNELS", "CHANNEL_INDEX", "CHANNELS", "_a", "_o", "_d", "_tt1", "SINGLE_DEF_CHANNEL_INDEX", "__objRest", "_r", "_c", "_f", "SINGLE_DEF_UNIT_CHANNEL_INDEX", "SINGLE_DEF_CHANNELS", "SINGLE_DEF_UNIT_CHANNELS", "isSingleDefUnitChannel", "str", "isChannel", "SECONDARY_RANGE_CHANNEL", "isSecondaryRangeChannel", "getMainRangeChannel", "getVgPositionChannel", "getSecondaryRangeChannel", "getSizeChannel", "getOffsetChannel", "getOffsetScaleChannel", "getMainChannelFromOffsetChannel", "UNIT_CHANNELS", "_x", "_y", "_x2", "_y2", "_xo", "_yo", "_latitude", "_longitude", "_latitude2", "_longitude2", "_theta", "_theta2", "_radius", "_radius2", "NONPOSITION_CHANNEL_INDEX", "NONPOSITION_CHANNELS", "POSITION_SCALE_CHANNEL_INDEX", "POSITION_SCALE_CHANNELS", "isXorY", "POLAR_POSITION_SCALE_CHANNEL_INDEX", "POLAR_POSITION_SCALE_CHANNELS", "getPositionScaleChannel", "sizeType", "OFFSET_SCALE_CHANNEL_INDEX", "OFFSET_SCALE_CHANNELS", "isXorYOffset", "_t", "_tt", "_hr", "_u", "_al", "_dd", "_k", "_oo", "NONPOSITION_SCALE_CHANNEL_INDEX", "NONPOSITION_SCALE_CHANNELS", "isNonPositionScaleChannel", "supportLegend", "SCALE_CHANNEL_INDEX", "SCALE_CHANNELS", "isScaleChannel", "supportMark", "mark", "getSupportedMark", "ALL_MARKS", "_g", "ALL_MARKS_EXCEPT_GEOSHAPE", "rangeType", "AGGREGATE_OP_INDEX", "MULTIDOMAIN_SORT_OP_INDEX", "isArgminDef", "a", "isArgmaxDef", "isAggregateOp", "isString", "COUNTING_OPS", "isCountingAggregateOp", "aggregate", "isMinMaxOp", "contains", "SUM_OPS", "SHARED_DOMAIN_OPS", "binToString", "bin", "isBoolean", "normalizeBin", "keys", "p", "isParameterExtent", "varName", "entries", "isBinning", "isBinParams", "isBinned", "isObject", "extent", "autoMaxBins", "channel", "ROW", "COLUMN", "SIZE", "COLOR", "FILL", "STROKE", "STROKEWIDTH", "OPACITY", "FILLOPACITY", "STROKEOPACITY", "SHAPE", "STROKEDASH", "isExprRef", "o", "replaceExprRef", "index", "props", "keys", "newIndex", "prop", "signalRefOrValue", "extractTitleConfig", "titleConfig", "_a", "anchor", "frame", "offset", "orient", "angle", "limit", "color", "subtitleColor", "subtitleFont", "subtitleFontSize", "subtitleFontStyle", "subtitleFontWeight", "subtitleLineHeight", "subtitlePadding", "rest", "__objRest", "titleMarkConfig", "__spreadValues", "nonMarkTitleProperties", "subtitle", "subtitleMarkConfig", "pick", "isText", "v", "isString", "isArray", "isSignalRef", "o", "isVgRangeStep", "range", "isDataRefUnionedDomain", "domain", "isArray", "isFieldRefUnionDomain", "isDataRefDomain", "VG_MARK_CONFIG_INDEX", "VG_MARK_CONFIGS", "keys", "VG_MARK_INDEX", "VG_CORNERRADIUS_CHANNELS", "signalOrValueRefWithCondition", "val", "condition", "isArray", "conditionalSignalRefOrValue", "__spreadProps", "__spreadValues", "signalRefOrValue", "value", "isExprRef", "_a", "expr", "rest", "__objRest", "signalOrValueRef", "isSignalRef", "exprFromSignalRefOrValue", "ref", "$", "exprFromValueRefOrSignalRef", "signalOrStringValue", "v", "applyMarkConfig", "model", "propsList", "property", "getMarkConfig", "getStyles", "mark", "getMarkPropOrConfig", "channel", "config", "opt", "vgChannel", "ignoreVgConfig", "getFirstDefined", "getMarkStyleConfig", "prop", "styleConfigIndex", "getStyleConfig", "p", "styles", "array", "style", "styleConfig", "sortParams", "orderDef", "fieldRefOption", "s", "orderChannelDef", "vgField", "mergeTitleFieldDefs", "f1", "f2", "merged", "fdToMerge", "fieldDef1", "deepEqual", "mergeTitle", "title1", "title2", "mergeTitleComponent", "v1", "v2", "v1Val", "v2Val", "isText", "message_exports", "__export", "ADD_SAME_CHILD_TWICE", "CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN", "CONCAT_CANNOT_SHARE_AXIS", "FACETED_INDEPENDENT_DIFFERENT_SOURCES", "FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES", "FACETED_INDEPENDENT_SAME_SOURCE", "FIT_NON_SINGLE", "INTERVAL_INITIALIZED_WITH_POS", "INVALID_CHANNEL_FOR_AXIS", "LEGEND_BINDINGS_MUST_HAVE_PROJECTION", "LINE_WITH_VARYING_SIZE", "MORE_THAN_ONE_SORT", "NEEDS_SAME_SELECTION", "NO_FIELDS_NEEDS_AS", "REPLACE_ANGLE_WITH_THETA", "SCALE_BINDINGS_CONTINUOUS", "cannotApplySizeToNonOrientedMark", "cannotLookupVariableParameter", "cannotProjectAggregate", "cannotProjectOnChannelWithoutField", "cannotStackNonLinearScale", "cannotStackRangedMark", "cannotUseRelativeBandSizeWithNonBandScale", "cannotUseScalePropertyWithNonColor", "channelRequiredForBinned", "channelShouldBeDiscrete", "channelShouldBeDiscreteOrDiscretizing", "channelShouldNotBeUsedForBinned", "columnsNotSupportByRowCol", "containerSizeNonSingle", "containerSizeNotCompatibleWithAutosize", "customFormatTypeNotAllowed", "differentParse", "discreteChannelCannotEncode", "domainRequiredForThresholdScale", "domainSortDropped", "droppedDay", "droppingColor", "droppingFit", "emptyFieldDef", "errorBand1DNotSupport", "errorBarCenterAndExtentAreNotNeeded", "errorBarCenterIsUsedWithWrongExtent", "errorBarContinuousAxisHasCustomizedAggregate", "facetChannelDropped", "incompatibleChannel", "independentScaleMeansIndependentGuide", "invalidAggregate", "invalidEncodingChannel", "invalidFieldType", "invalidFieldTypeForCountAggregate", "invalidSpec", "invalidTimeUnit", "invalidTransformIgnored", "lineWithRange", "mergeConflictingDomainProperty", "mergeConflictingProperty", "missingFieldType", "nearestNotSupportForContinuous", "noSameUnitLookup", "noSuchRepeatedValue", "offsetEncodingScaleIgnored", "offsetNestedInsideContinuousPositionScaleDropped", "orientOverridden", "primitiveChannelDef", "projectionOverridden", "rangeMarkAlignmentCannotBeExpression", "relativeBandSizeNotSupported", "scalePropertyNotWorkWithScaleType", "scaleTypeNotWorkWithChannel", "scaleTypeNotWorkWithFieldDef", "scaleTypeNotWorkWithMark", "selectionNotFound", "selectionNotSupported", "stackNonSummativeAggregate", "stepDropped", "unaggregateDomainHasNoEffectForRawField", "unaggregateDomainWithNonSharedDomainOp", "unaggregatedDomainWithLogScale", "unknownField", "unrecognizedParse", "invalidSpec", "spec", "stringify", "FIT_NON_SINGLE", "containerSizeNonSingle", "name", "containerSizeNotCompatibleWithAutosize", "uName", "fitDirection", "droppingFit", "channel", "getSizeChannel", "unknownField", "cannotProjectOnChannelWithoutField", "cannotProjectAggregate", "aggregate", "nearestNotSupportForContinuous", "mark", "selectionNotSupported", "selectionNotFound", "SCALE_BINDINGS_CONTINUOUS", "LEGEND_BINDINGS_MUST_HAVE_PROJECTION", "cannotLookupVariableParameter", "noSameUnitLookup", "NEEDS_SAME_SELECTION", "INTERVAL_INITIALIZED_WITH_POS", "noSuchRepeatedValue", "field", "columnsNotSupportByRowCol", "type", "CONCAT_CANNOT_SHARE_AXIS", "unrecognizedParse", "p", "differentParse", "local", "ancestor", "ADD_SAME_CHILD_TWICE", "invalidTransformIgnored", "transform", "NO_FIELDS_NEEDS_AS", "customFormatTypeNotAllowed", "projectionOverridden", "opt", "parentProjection", "projection", "REPLACE_ANGLE_WITH_THETA", "offsetNestedInsideContinuousPositionScaleDropped", "mainChannel", "primitiveChannelDef", "value", "invalidFieldType", "invalidFieldTypeForCountAggregate", "invalidAggregate", "missingFieldType", "newType", "droppingColor", "fill", "stroke", "relativeBandSizeNotSupported", "sizeChannel", "emptyFieldDef", "fieldDef", "LINE_WITH_VARYING_SIZE", "incompatibleChannel", "markOrFacet", "when", "offsetEncodingScaleIgnored", "invalidEncodingChannel", "channelShouldBeDiscrete", "channelShouldBeDiscreteOrDiscretizing", "facetChannelDropped", "channels", "discreteChannelCannotEncode", "rangeMarkAlignmentCannotBeExpression", "align", "lineWithRange", "hasX2", "hasY2", "orientOverridden", "original", "actual", "CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN", "cannotUseScalePropertyWithNonColor", "prop", "cannotUseRelativeBandSizeWithNonBandScale", "scaleType", "unaggregateDomainHasNoEffectForRawField", "unaggregateDomainWithNonSharedDomainOp", "unaggregatedDomainWithLogScale", "cannotApplySizeToNonOrientedMark", "scaleTypeNotWorkWithChannel", "defaultScaleType", "scaleTypeNotWorkWithFieldDef", "scalePropertyNotWorkWithScaleType", "propName", "scaleTypeNotWorkWithMark", "stepDropped", "mergeConflictingProperty", "property", "propertyOf", "v1", "v2", "mergeConflictingDomainProperty", "independentScaleMeansIndependentGuide", "domainSortDropped", "sort", "MORE_THAN_ONE_SORT", "FACETED_INDEPENDENT_DIFFERENT_SOURCES", "FACETED_INDEPENDENT_SAME_FIELDS_DIFFERENT_SOURCES", "FACETED_INDEPENDENT_SAME_SOURCE", "INVALID_CHANNEL_FOR_AXIS", "cannotStackRangedMark", "cannotStackNonLinearScale", "stackNonSummativeAggregate", "invalidTimeUnit", "unitName", "droppedDay", "d", "errorBarCenterAndExtentAreNotNeeded", "center", "extent", "errorBarCenterIsUsedWithWrongExtent", "errorBarContinuousAxisHasCustomizedAggregate", "compositeMark", "errorBand1DNotSupport", "channelRequiredForBinned", "channelShouldNotBeUsedForBinned", "domainRequiredForThresholdScale", "main", "logger", "Warn", "current", "set", "newLogger", "current", "reset", "main", "warn", "args", "current", "debug", "args", "current", "isDateTime", "o", "isObject", "part", "TIMEUNIT_PARTS", "MONTHS", "SHORT_MONTHS", "m", "DAYS", "SHORT_DAYS", "d", "normalizeQuarter", "q", "isNumeric", "isNumber", "warn", "message_exports", "normalizeMonth", "lowerM", "monthIndex", "shortM", "shortMonthIndex", "normalizeDay", "lowerD", "dayIndex", "shortD", "shortDayIndex", "dateTimeParts", "normalize", "parts", "keys", "duplicate", "month", "quarter", "day", "timeUnit", "unit", "dateTimeToExpr", "string", "dateTimeExprToExpr", "dateTimeToTimestamp", "LOCAL_SINGLE_TIMEUNIT_INDEX", "TIMEUNIT_PARTS", "keys", "isLocalSingleTimeUnit", "timeUnit", "BINNED_LOCAL_TIMEUNIT_INDEX", "BINNED_UTC_TIMEUNIT_INDEX", "BINNED_TIMEUNIT_INDEX", "__spreadValues", "isBinnedTimeUnit", "timeUnit", "isObject", "isBinnedTimeUnitString", "isUTCTimeUnit", "t", "getLocalTimeUnitFromUTCTimeUnit", "VEGALITE_TIMEFORMAT", "getTimeUnitParts", "timeUnit", "TIMEUNIT_PARTS", "part", "containsTimeUnit", "getSmallestTimeUnitPart", "parts", "fullTimeUnit", "index", "fieldExpr", "field", "end", "fieldRef", "accessPathWithDatum", "utc", "func", "lastTimeUnit", "dateExpr", "dateTimeExprToExpr", "timeUnitSpecifierExpression", "timeUnitParts", "stringify", "formatExpression", "isUTCScale", "expr", "normalizeTimeUnit", "params", "isString", "isBinnedTimeUnitString", "isObject", "__spreadValues", "timeUnitToString", "tu", "_a", "rest", "__objRest", "keys", "p", "varName", "durationExpr", "wrap", "x", "normalizedTimeUnit", "smallestUnitPart", "startDate", "step", "getDateTimePartAndStep", "endDate", "__spreadProps", "dateTimeToExpr", "DATE_PARTS", "isDatePart", "isSelectionPredicate", "predicate", "isFieldEqualPredicate", "isFieldLTPredicate", "isFieldLTEPredicate", "isFieldGTPredicate", "isFieldGTEPredicate", "isFieldRangePredicate", "isArray", "isSignalRef", "isFieldOneOfPredicate", "isFieldValidPredicate", "isFieldPredicate", "predicateValueExpr", "v", "timeUnit", "valueExpr", "predicateValuesExpr", "vals", "fieldFilterExpression", "useInRange", "field", "normalizedTimeUnit", "normalizeTimeUnit", "unit", "binned", "rawFieldExpr", "vgField", "fieldExpr", "upper", "lower", "fieldValidPredicate", "range", "exprs", "stringify", "valid", "normalizePredicate", "f", "__spreadProps", "__spreadValues", "Type", "isContinuous", "type", "isDiscrete", "QUANTITATIVE", "Type", "ORDINAL", "TEMPORAL", "NOMINAL", "GEOJSON", "TYPES", "keys", "getFullName", "ScaleType", "SCALE_CATEGORY_INDEX", "SCALE_TYPES", "keys", "scaleCompatible", "scaleType1", "scaleType2", "scaleCategory1", "scaleCategory2", "SCALE_PRECEDENCE_INDEX", "scaleTypePrecedence", "scaleType", "QUANTITATIVE_SCALES", "CONTINUOUS_TO_CONTINUOUS_SCALES", "isQuantitative", "type", "CONTINUOUS_TO_DISCRETE_SCALES", "CONTINUOUS_DOMAIN_SCALES", "DISCRETE_DOMAIN_SCALES", "hasDiscreteDomain", "type", "DISCRETE_DOMAIN_SCALES", "hasContinuousDomain", "CONTINUOUS_DOMAIN_SCALES", "isContinuousToContinuous", "CONTINUOUS_TO_CONTINUOUS_SCALES", "isContinuousToDiscrete", "CONTINUOUS_TO_DISCRETE_SCALES", "defaultScaleConfig", "isExtendedScheme", "scheme", "isString", "isParameterDomain", "domain", "isDomainUnionWith", "isFieldRange", "range", "isObject", "SCALE_PROPERTY_INDEX", "SCALE_PROPERTIES", "keys", "_a", "rangeMax", "rangeMin", "NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTY_INDEX", "__objRest", "NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES", "scaleTypeSupportProperty", "scaleType", "propName", "contains", "channelScalePropertyIncompatability", "channel", "isColorChannel", "message_exports", "scaleTypeSupportDataType", "specifiedType", "fieldDefType", "ORDINAL", "NOMINAL", "TEMPORAL", "ScaleType", "QUANTITATIVE", "isQuantitative", "channelSupportScaleType", "hasNestedOffsetScale", "isScaleChannel", "X", "Y", "XOFFSET", "YOFFSET", "THETA", "RADIUS", "SIZE", "STROKEWIDTH", "OPACITY", "FILLOPACITY", "STROKEOPACITY", "ANGLE", "COLOR", "FILL", "STROKE", "STROKEDASH", "SHAPE", "Mark", "ARC", "AREA", "BAR", "IMAGE", "LINE", "POINT", "RECT", "RULE", "TEXT", "TICK", "TRAIL", "CIRCLE", "SQUARE", "GEOSHAPE", "isPathMark", "m", "isRectBasedMark", "PRIMITIVE_MARKS", "keys", "Mark", "isMarkDef", "mark", "STROKE_CONFIG", "FILL_CONFIG", "FILL_STROKE_CONFIG", "VL_ONLY_MARK_CONFIG_INDEX", "VL_ONLY_MARK_CONFIG_PROPERTIES", "keys", "VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX", "defaultMarkConfig", "MARK_CONFIG_INDEX", "MARK_CONFIGS", "isRelativeBandSize", "o", "BAR_CORNER_RADIUS_INDEX", "DEFAULT_RECT_BAND_SIZE", "defaultBarConfig", "defaultRectConfig", "defaultTickConfig", "getMarkType", "m", "isMarkDef", "midPointRefWithPositionInvalidTest", "params", "channel", "channelDef", "markDef", "scale", "config", "ref", "midPoint", "isFieldDef", "isCountingAggregateOp", "isContinuousToContinuous", "wrapPositionInvalidTest", "fieldDef", "isPathMark", "getMarkPropOrConfig", "fieldInvalidTestValueRef", "test", "fieldInvalidPredicate", "zeroValueRef", "getMainRangeChannel", "__spreadValues", "field", "invalid", "fieldValidPredicate", "isString", "vgField", "datumDefToExpr", "datumDef", "datum", "isDateTime", "dateTimeToExpr", "stringify", "valueRefForFieldOrDatumDef", "scaleName", "opt", "encode", "isDatumDef", "isSignalRef", "isExprRef", "offset", "band", "interpolatedSignalRef", "fieldOrDatumDef", "fieldOrDatumDef2", "startSuffix", "endSuffix", "bandPosition", "expr", "start", "end", "binSizeExpr", "channel2Def", "stack", "defaultRef", "_a", "isFieldOrDatumDef", "scaleType", "isTypedFieldDef", "getBandPosition", "bin", "timeUnit", "type", "isBinning", "TEMPORAL", "hasDiscreteDomain", "binRequiresRange", "isBinned", "channel2", "X", "X2", "Y2", "warn", "message_exports", "isValueDef", "value", "offsetMixins", "widthHeightValueOrSignalRef", "isFunction", "contains", "signalOrValueRef", "isCustomFormatType", "formatType", "customFormatExpr", "field", "format", "stringify", "BIN_RANGE_DELIMITER", "formatSignalRef", "fieldOrDatumDef", "expr", "normalizeStack", "config", "_a", "_b", "formatCustomType", "fieldToFormat", "type", "channelDefType", "isFieldDef", "isFieldOrDatumDefForTimeFormat", "signal", "timeFormatExpression", "normalizeTimeUnit", "isScaleFieldDef", "ScaleType", "numberFormat", "isBinning", "endField", "vgField", "binFormatExpression", "formatExpr", "datumDefToExpr", "guideFormat", "omitTimeFormatConfig", "isString", "isPositionFieldOrDatumDef", "timeUnit", "timeFormat", "guideFormatType", "scaleType", "isSignalRef", "specifiedFormat", "QUANTITATIVE", "timeUnitSpecifierExpression", "binNumberFormatExpr", "startField", "start", "end", "fieldValidPredicate", "rawTimeFormat", "isUTCScale", "formatExpression", "DEFAULT_SORT_OP", "SORT_BY_CHANNEL_INDEX", "isSortByChannel", "c", "isSortByEncoding", "sort", "isSortField", "isSortArray", "isArray", "isFacetMapping", "f", "isFacetFieldDef", "channelDef", "isFacetSpec", "spec", "isConditionalParameter", "c", "isRepeatRef", "field", "isString", "toFieldDefBase", "fieldDef", "timeUnit", "bin", "aggregate", "__spreadProps", "__spreadValues", "isSortableFieldDef", "getBandPosition", "fieldDef2", "mark", "config", "isFieldOrDatumDef", "isFieldDef", "getMarkConfig", "isBinning", "getBandSize", "channel", "scaleType", "useVlSizeChannel", "_a", "_b", "_c", "sizeChannel", "getSizeChannel", "size", "getMarkPropOrConfig", "hasDiscreteDomain", "isRectBasedMark", "hasBandEnd", "markDef", "isTypedFieldDef", "isOrderOnlyDef", "orderDef", "isConditionalDef", "channelDef", "hasConditionalFieldDef", "condition", "isArray", "hasConditionalFieldOrDatumDef", "hasConditionalValueDef", "isValueDef", "channelDefType", "isDatumDef", "isContinuousFieldOrDatumDef", "cd", "isDiscrete", "isNumericDataDef", "isUnbinnedQuantitativeFieldOrDatumDef", "isNumber", "isScaleFieldDef", "isPositionFieldOrDatumDef", "isMarkPropFieldOrDatumDef", "isStringFieldOrDatumDef", "toStringFieldDef", "omit", "isOpFieldDef", "vgField", "opt", "prefix", "suffix", "argAccessor", "isCount", "internalField", "fn", "binToString", "isArgmaxDef", "isArgminDef", "isBinnedTimeUnit", "timeUnitToString", "removePathFromField", "flatAccessWithDatum", "replacePathInField", "def", "message_exports", "isDiscretizing", "isContinuousToDiscrete", "verbalTitleFormatter", "unit", "normalizeTimeUnit", "getTimeUnitParts", "titleCase", "functionalTitleFormatter", "timeUnitParams", "defaultTitleFormatter", "titleFormatter", "setTitleFormatter", "formatter", "resetTitleFormatter", "title", "fieldOrDatumDef", "allowDisabling", "includeDefault", "guideTitle", "getGuide", "defaultTitle", "getFirstDefined", "isFacetFieldDef", "getFormatMixins", "format", "formatType", "guide", "defaultType", "SCALE_CATEGORY_INDEX", "getFieldDef", "getFieldOrDatumDef", "initChannelDef", "isBoolean", "primitiveType", "warn", "initFieldOrDatumDef", "fd", "rest", "__objRest", "isCustomFormatType", "guideType", "newGuide", "initFieldDef", "initDatumDef", "datumDef", "type", "datum", "isDateTime", "compositeMark", "isAggregateOp", "normalizeBin", "isBinned", "isXorY", "fullType", "getFullName", "isCountingAggregateOp", "isSecondaryRangeChannel", "newType", "compatible", "warning", "channelCompatibility", "sort", "isSortByChannel", "sub", "header", "orient", "autoMaxBins", "COMPATIBLE", "ROW", "COLUMN", "FACET", "X", "Y", "XOFFSET", "YOFFSET", "COLOR", "FILL", "STROKE", "TEXT", "DETAIL", "KEY", "TOOLTIP", "HREF", "URL", "ANGLE", "THETA", "RADIUS", "DESCRIPTION", "LONGITUDE", "LONGITUDE2", "LATITUDE", "LATITUDE2", "QUANTITATIVE", "OPACITY", "FILLOPACITY", "STROKEOPACITY", "STROKEWIDTH", "SIZE", "THETA2", "RADIUS2", "X2", "Y2", "SHAPE", "STROKEDASH", "ORDER", "isFieldOrDatumDefForTimeFormat", "isTimeFieldDef", "valueExpr", "v", "wrapTime", "undefinedIfExprNotRequired", "isTime", "expr", "isExprRef", "isSignalRef", "dateTimeToExpr", "stringify", "isLocalSingleTimeUnit", "valueArray", "values", "binRequiresRange", "isScaleChannel", "CONDITIONAL_AXIS_PROP_INDEX", "isConditionalAxisValue", "v", "AXIS_PARTS", "AXIS_PROPERTY_TYPE", "COMMON_AXIS_PROPERTIES_INDEX", "AXIS_PROPERTIES_INDEX", "__spreadProps", "__spreadValues", "isAxisProperty", "prop", "AXIS_PROPERTIES", "keys", "AXIS_CONFIGS_INDEX", "AXIS_CONFIGS", "isUnitSpec", "spec", "CompositeMarkNormalizer", "name", "run", "spec", "isUnitSpec", "getMarkType", "channelHasField", "encoding", "channel", "channelDef", "isArray", "some", "fieldDef", "isFieldDef", "hasConditionalFieldDef", "channelHasFieldOrDatum", "isDatumDef", "hasConditionalFieldOrDatumDef", "channelHasNestedOffsetScale", "isXorY", "isDiscrete", "offsetChannel", "getOffsetScaleChannel", "isAggregate", "CHANNELS", "getFieldDef", "extractTransformsFromEncoding", "oldEncoding", "config", "groupby", "bins", "timeUnits", "aggregate", "forEach", "_a", "field", "aggOp", "bin", "timeUnit", "remaining", "__objRest", "guide", "getGuide", "isTitleDefined", "newField", "vgField", "newFieldDef", "__spreadProps", "__spreadValues", "title", "op", "isArgmaxDef", "isArgminDef", "aggregateEntry", "isTypedFieldDef", "isBinning", "binRequiresRange", "secondaryChannel", "isSecondaryRangeChannel", "QUANTITATIVE", "isBinnedTimeUnit", "formatType", "TEMPORAL", "TEXT", "TOOLTIP", "isNonPositionScaleChannel", "markChannelCompatible", "mark", "markSupported", "supportMark", "primaryFieldDef", "X2", "X", "Y", "isBinned", "initEncoding", "filled", "normalizedEncoding", "key", "keys", "isChannel", "warn", "message_exports", "UNIT_CHANNELS", "isXorYOffset", "mainChannel", "getMainChannelFromOffsetChannel", "positionDef", "isContinuous", "THETA", "SIZE", "COLOR", "DETAIL", "ORDER", "isValueDef", "def", "isOrderOnlyDef", "array", "defs", "initFieldDef", "isConditionalDef", "isSignalRef", "initChannelDef", "normalizeEncoding", "newChannelDef", "fieldDefs", "arr", "channelDefArray", "mapping", "f", "thisArg", "el", "reduce", "init", "r", "map", "r1", "pathGroupingFields", "details", "HREF", "DESCRIPTION", "URL", "Y2", "XOFFSET", "YOFFSET", "THETA2", "RADIUS", "RADIUS2", "LATITUDE", "LONGITUDE", "LATITUDE2", "LONGITUDE2", "SHAPE", "ANGLE", "KEY", "FILL", "STROKE", "OPACITY", "FILLOPACITY", "STROKEOPACITY", "STROKEDASH", "STROKEWIDTH", "filterTooltipWithAggregatedField", "oldEncoding", "_a", "tooltip", "filteredEncoding", "__objRest", "customTooltipWithAggregatedField", "customTooltipWithoutAggregatedField", "isArray", "t", "getCompositeMarkTooltip", "tooltipSummary", "continuousAxisChannelDef", "encodingWithoutContinuousAxis", "withFieldName", "fiveSummaryTooltip", "fieldPrefix", "titlePrefix", "mainTitle", "getTitle", "isSignalRef", "tooltipFieldDefs", "fieldDefs", "toStringFieldDef", "unique", "hash", "title", "field", "getFirstDefined", "makeCompositeAggregatePartFactory", "compositeMarkDef", "continuousAxis", "sharedEncoding", "compositeMarkConfig", "scale", "axis", "partName", "mark", "positionPrefix", "endPositionPrefix", "extraEncoding", "partLayerMixins", "__spreadValues", "isString", "markDef", "part", "partBaseSpec", "clip", "color", "opacity", "__spreadProps", "isMarkDef", "isBoolean", "compositeMarkContinuousAxis", "spec", "orient", "compositeMark", "encoding", "continuousAxisChannelDef2", "continuousAxisChannelDefError", "continuousAxisChannelDefError2", "filterAggregateFromChannelDef", "aggregate", "continuousAxisWithoutAggregate", "warn", "message_exports", "compositeMarkOrient", "x", "y", "isContinuousFieldOrDatumDef", "xAggregate", "isFieldDef", "yAggregate", "isFieldOrDatumDefForTimeFormat", "BOXPLOT", "BOXPLOT_PARTS", "boxPlotNormalizer", "CompositeMarkNormalizer", "normalizeBoxPlot", "getBoxPlotType", "extent", "isNumber", "spec", "config", "_b", "_d", "__spreadProps", "__spreadValues", "normalizeEncoding", "_a", "mark", "_encoding", "params", "_p", "outerSpec", "__objRest", "markDef", "isMarkDef", "warn", "message_exports", "sizeValue", "getMarkPropOrConfig", "invalid", "boxPlotType", "bins", "timeUnits", "transform", "continuousAxisChannelDef", "continuousAxis", "groupby", "aggregate", "encodingWithoutContinuousAxis", "ticksOrient", "boxOrient", "customTooltipWithoutAggregatedField", "boxParams", "_c", "color", "size", "encodingWithoutSizeColorAndContinuousAxis", "makeBoxPlotPart", "sharedEncoding", "makeCompositeAggregatePartFactory", "makeBoxPlotExtent", "makeBoxPlotBox", "makeBoxPlotMidTick", "fiveSummaryTooltipEncoding", "getCompositeMarkTooltip", "endTick", "whiskerTooltipEncoding", "whiskerLayers", "boxLayers", "isObject", "lowerBoxExpr", "upperBoxExpr", "iqrExpr", "lowerWhiskerExpr", "upperWhiskerExpr", "fieldExpr", "joinaggregateTransform", "boxParamsQuartiles", "filteredWhiskerSpec", "_e", "tooltip", "encodingWithoutSizeColorContinuousAxisAndTooltip", "scale", "axis", "title", "getTitle", "axisWithoutTitle", "omit", "outlierLayersMixins", "partLayerMixins", "isEmpty", "filteredLayersMixins", "filteredLayersMixinsTransforms", "continousAxisField", "orient", "compositeMarkOrient", "compositeMarkContinuousAxis", "continuousFieldName", "boxplotSpecificAggregate", "postAggregateCalculates", "oldContinuousAxisChannelDef", "oldEncodingWithoutContinuousAxis", "__restKey", "filteredEncoding", "filterTooltipWithAggregatedField", "extractTransformsFromEncoding", "ERRORBAR", "ERRORBAR_PARTS", "errorBarNormalizer", "CompositeMarkNormalizer", "normalizeErrorBar", "spec", "config", "__spreadProps", "__spreadValues", "normalizeEncoding", "transform", "continuousAxisChannelDef", "continuousAxis", "encodingWithoutContinuousAxis", "ticksOrient", "markDef", "outerSpec", "tooltipEncoding", "errorBarParams", "makeErrorBarPart", "makeCompositeAggregatePartFactory", "thickness", "size", "tick", "layer", "errorBarOrientAndInputType", "compositeMark", "encoding", "errorBarIsInputTypeRaw", "compositeMarkOrient", "isTypeAggregatedUpperLower", "errorBarIsInputTypeAggregatedUpperLower", "isTypeAggregatedError", "errorBarIsInputTypeAggregatedError", "x", "y", "x2", "y2", "isFieldOrDatumDef", "isContinuousFieldOrDatumDef", "xError", "xError2", "yError", "yError2", "_b", "_c", "_d", "_f", "_a", "mark", "params", "_p", "__objRest", "isMarkDef", "warn", "message_exports", "orient", "inputType", "continuousAxisChannelDef2", "continuousAxisChannelDefError", "continuousAxisChannelDefError2", "compositeMarkContinuousAxis", "errorBarSpecificAggregate", "postAggregateCalculates", "tooltipSummary", "tooltipTitleWithFieldName", "errorBarAggregationAndCalculation", "_e", "oldContinuousAxisChannelDef", "oldContinuousAxisChannelDef2", "oldContinuousAxisChannelDefError", "oldContinuousAxisChannelDefError2", "oldEncodingWithoutContinuousAxis", "__restKey", "bins", "timeUnits", "oldAggregate", "oldGroupBy", "extractTransformsFromEncoding", "aggregate", "groupby", "getCompositeMarkTooltip", "continuousFieldName", "center", "extent", "titleCase", "getTitlePrefix", "centerOp", "lowerExtentOp", "upperExtentOp", "title", "postAggregateCalculate", "replaceAll", "operation", "ERRORBAND", "ERRORBAND_PARTS", "errorBandNormalizer", "CompositeMarkNormalizer", "normalizeErrorBand", "spec", "config", "__spreadProps", "__spreadValues", "normalizeEncoding", "transform", "continuousAxisChannelDef", "continuousAxis", "encodingWithoutContinuousAxis", "markDef", "outerSpec", "tooltipEncoding", "errorBarParams", "errorBandDef", "makeErrorBandPart", "makeCompositeAggregatePartFactory", "is2D", "bandMark", "bordersMark", "interpolate", "warn", "message_exports", "compositeMarkRegistry", "add", "mark", "run", "parts", "normalizer", "CompositeMarkNormalizer", "getAllCompositeMarks", "keys", "compositeMarkRegistry", "add", "BOXPLOT", "normalizeBoxPlot", "BOXPLOT_PARTS", "ERRORBAR", "normalizeErrorBar", "ERRORBAR_PARTS", "ERRORBAND", "normalizeErrorBand", "ERRORBAND_PARTS", "VL_ONLY_LEGEND_CONFIG", "HEADER_TITLE_PROPERTIES_MAP", "HEADER_LABEL_PROPERTIES_MAP", "HEADER_TITLE_PROPERTIES", "keys", "HEADER_LABEL_PROPERTIES", "HEADER_CONFIGS_INDEX", "HEADER_CONFIGS", "LEGEND_SCALE_CHANNELS", "defaultLegendConfig", "COMMON_LEGEND_PROPERTY_INDEX", "LEGEND_PROPERTIES", "keys", "SELECTION_ID", "defaultConfig", "isLegendBinding", "bind", "isLegendStreamBinding", "isObject", "isSelectionParameter", "param", "assembleParameterSignals", "params", "signals", "param", "isSelectionParameter", "_a", "expr", "bind", "rest", "__objRest", "signal", "__spreadProps", "__spreadValues", "isAnyConcatSpec", "spec", "isVConcatSpec", "isHConcatSpec", "isConcatSpec", "getStepFor", "step", "offsetIsDiscrete", "_a", "isStep", "size", "isObject", "isFrameMixins", "o", "DEFAULT_SPACING", "COMPOSITION_LAYOUT_INDEX", "COMPOSITION_LAYOUT_PROPERTIES", "keys", "extractCompositionLayout", "spec", "specType", "config", "_b", "compositionConfig", "layout", "spacingConfig", "columns", "isFacetSpec", "isFacetMapping", "isConcatSpec", "isVConcatSpec", "prop", "spacing", "isNumber", "getViewConfigContinuousSize", "viewConfig", "channel", "_a", "getViewConfigDiscreteStep", "size", "getViewConfigDiscreteSize", "isStep", "DEFAULT_STEP", "getFirstDefined", "defaultViewConfig", "defaultConfig", "defaultViewConfig", "defaultMarkConfig", "defaultBarConfig", "defaultRectConfig", "defaultTickConfig", "defaultScaleConfig", "defaultLegendConfig", "DEFAULT_SPACING", "tab10", "DEFAULT_FONT_SIZE", "DEFAULT_COLOR", "colorSignalConfig", "color", "isObject", "__spreadValues", "fontSizeSignalConfig", "fontSize", "fontConfig", "font", "getAxisConfigInternal", "axisConfig", "props", "keys", "axisConfigInternal", "prop", "val", "isConditionalAxisValue", "signalOrValueRefWithCondition", "signalRefOrValue", "getStyleConfigInternal", "styleConfig", "styleConfigInternal", "configPropsWithExpr", "MARK_CONFIGS", "AXIS_CONFIGS", "HEADER_CONFIGS", "initConfig", "specifiedConfig", "_a", "selection", "restConfig", "__objRest", "mergedConfig", "mergeConfig", "duplicate", "writeConfig", "outputConfig", "omit", "markConfigType", "replaceExprRef", "axisConfigType", "headerConfigType", "MARK_STYLES", "PRIMITIVE_MARKS", "VL_ONLY_CONFIG_PROPERTIES", "VL_ONLY_ALL_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX", "VL_ONLY_MARK_SPECIFIC_CONFIG_PROPERTY_INDEX", "stripAndRedirectConfig", "config", "VL_ONLY_LEGEND_CONFIG", "VL_ONLY_MARK_CONFIG_PROPERTIES", "assembleParameterSignals", "markType", "vlOnlyMarkSpecificConfigs", "redirectConfigToStyleConfig", "m", "getAllCompositeMarks", "redirectTitleConfig", "isEmpty", "titleMarkConfig", "subtitleMarkConfig", "subtitle", "extractTitleConfig", "toProp", "compositeMarkPart", "propConfig", "style", "isLayerSpec", "spec", "isRepeatSpec", "spec", "isLayerRepeatSpec", "isArray", "SpecMapper", "spec", "params", "isFacetSpec", "isRepeatSpec", "isHConcatSpec", "isVConcatSpec", "isConcatSpec", "isLayerSpec", "isUnitSpec", "message_exports", "__spreadProps", "__spreadValues", "subspec", "_a", "concat", "rest", "__objRest", "STACK_OFFSET_INDEX", "isStackOffset", "s", "STACKABLE_MARKS", "ARC", "BAR", "AREA", "RULE", "POINT", "CIRCLE", "SQUARE", "LINE", "TEXT", "TICK", "STACK_BY_DEFAULT_MARKS", "isUnbinnedQuantitative", "channelDef", "isFieldDef", "channelDefType", "potentialStackedChannel", "encoding", "x", "orient", "mark", "y", "isCartesianBarOrArea", "xDef", "yDef", "xAggregate", "yAggregate", "getDimensionChannel", "channel", "stack", "m", "_a", "_b", "markDef", "isMarkDef", "fieldChannel", "stackedFieldDef", "stackedField", "vgField", "dimensionChannel", "groupbyChannels", "groupbyFields", "dimensionDef", "dimensionField", "dimensionOffsetChannel", "dimensionOffsetDef", "dimensionOffsetField", "stackBy", "NONPOSITION_CHANNELS", "sc", "channelHasField", "cDef", "array", "fieldDef", "getFieldDef", "f", "offset", "isBoolean", "isAggregate", "ScaleType", "warn", "message_exports", "isFieldOrDatumDef", "getSecondaryRangeChannel", "SUM_OPS", "isPathMark", "initMarkdef", "originalMarkDef", "encoding", "config", "markDef", "replaceExprRef", "specifiedOrient", "getMarkPropOrConfig", "orient", "warn", "message_exports", "cornerRadiusEnd", "newProps", "BAR_CORNER_RADIUS_INDEX", "newProp", "opacity", "cursor", "mark", "contains", "POINT", "TICK", "CIRCLE", "SQUARE", "isAggregate", "defaultFilled", "graticule", "filledConfig", "getMarkConfig", "getFirstDefined", "LINE", "RULE", "TEXT", "RECT", "IMAGE", "x", "y", "x2", "y2", "BAR", "isFieldDef", "isBinned", "QUANTITATIVE", "isBinning", "isNumericDataDef", "AREA", "xIsMeasure", "isUnbinnedQuantitativeFieldOrDatumDef", "yIsMeasure", "xIsTemporal", "isTypedFieldDef", "TEMPORAL", "yIsTemporal", "dropLineAndPoint", "markDef", "_a", "_point", "_line", "mark", "__objRest", "keys", "dropLineAndPointFromConfig", "config", "__spreadProps", "__spreadValues", "omit", "getPointOverlay", "markConfig", "encoding", "isObject", "getLineOverlay", "PathOverlayNormalizer", "spec", "isUnitSpec", "isMarkDef", "normParams", "normalize", "params", "projection", "name", "e", "outerSpec", "normalizeEncoding", "pointOverlay", "lineOverlay", "layer", "stackProps", "stack", "initMarkdef", "overlayEncoding", "stackFieldChannel", "offset", "pick", "replaceRepeaterInFacet", "facet", "repeater", "isFacetMapping", "replaceRepeaterInMapping", "replaceRepeaterInFieldDef", "replaceRepeaterInEncoding", "encoding", "replaceRepeatInProp", "prop", "o", "val", "isRepeatRef", "__spreadProps", "__spreadValues", "warn", "message_exports", "fieldDef", "isSortableFieldDef", "isSortField", "sort", "replaceRepeaterInFieldOrDatumDef", "def", "isFieldDef", "datumDef", "replaceRepeaterInChannelDef", "channelDef", "isFieldOrDatumDef", "fd", "isConditionalDef", "hasConditionalFieldOrDatumDef", "_a", "condition", "__objRest", "mapping", "out", "channel", "has", "isArray", "cd", "RuleForRangedLineNormalizer", "spec", "isUnitSpec", "encoding", "mark", "isMarkDef", "channel", "SECONDARY_RANGE_CHANNEL", "mainChannel", "getMainRangeChannel", "mainChannelDef", "isFieldDef", "isBinned", "isDatumDef", "params", "normalize", "warn", "message_exports", "__spreadProps", "__spreadValues", "isObject", "CoreNormalizer", "SpecMapper", "boxPlotNormalizer", "errorBarNormalizer", "errorBandNormalizer", "PathOverlayNormalizer", "RuleForRangedLineNormalizer", "spec", "params", "isUnitSpec", "hasRow", "channelHasField", "ROW", "hasColumn", "COLUMN", "hasFacet", "FACET", "parentEncoding", "parentProjection", "encoding", "replaceRepeaterInEncoding", "specWithReplacedEncoding", "__spreadValues", "n", "normalizeLayerOrUnit", "unitNormalizer", "isLayerRepeatSpec", "_a", "repeat", "childSpec", "rest", "__objRest", "row", "column", "layer", "repeater", "repeaterPrefix", "__spreadProps", "layerValue", "childRepeater", "childName", "varName", "child", "_b", "data", "remainingProperties", "isArray", "omit", "warn", "message_exports", "concat", "repeatValues", "repeatValue", "rowValue", "columnValue", "columns", "facet", "isFacetMapping", "projection", "config", "mergedProjection", "mergeProjection", "mergedEncoding", "mergeEncoding", "normParams", "mark", "width", "height", "view", "_", "outerSpec", "facetMapping", "layout", "newEncoding", "facets", "channel", "def", "align", "center", "spacing", "defWithoutLayout", "prop", "_c", "replaceRepeaterInFacet", "otherParams", "merged", "channels", "keys", "channelDef", "parentChannelDef", "isFieldOrDatumDef", "mergedChannelDef", "hasConditionalFieldOrDatumDef", "isValueDef", "isSignalRef", "isEmpty", "opt", "isFilter", "t", "isImputeSequence", "isLookup", "isLookupData", "from", "isLookupSelection", "isPivot", "isDensity", "isQuantile", "isRegression", "isLoess", "isSample", "isWindow", "isJoinAggregate", "isFlatten", "isCalculate", "isBin", "isImpute", "isTimeUnit", "isAggregate", "isStack", "isFold", "isExtent", "normalizeTransform", "transform", "normalizeLogicalComposition", "normalizePredicate", "SelectionCompatibilityNormalizer", "SpecMapper", "spec", "normParams", "_a", "_b", "normalizeTransforms", "encoding", "channel", "enc", "entries", "normalizeChannelDef", "__spreadProps", "__spreadValues", "selection", "rest", "__objRest", "name", "selDef", "value", "bind", "empty", "select", "pred", "vals", "tx", "transform", "t", "isFilter", "normalizePredicate", "isBin", "isBinParams", "normalizeBinExtent", "isLookup", "param", "from", "obj", "duplicate", "isFieldDef", "isScaleFieldDef", "_c", "domain", "isConditionalDef", "isArray", "c", "test", "cond", "_d", "bin", "ext", "op", "normalizeSelectionComposition", "o", "normalizeLogicalComposition", "TopLevelSelectionsNormalizer", "SpecMapper", "spec", "normParams", "_a", "selections", "isUnitSpec", "params", "param", "isSelectionParameter", "path", "selection", "view", "isString", "isArray", "v", "i", "arr", "method", "proto", "addSpecNameToParams", "__spreadProps", "__spreadValues", "normalize", "spec", "config", "initConfig", "normalizedSpec", "normalizeGenericSpec", "width", "height", "autosize", "normalizeAutoSize", "__spreadValues", "coreNormalizer", "CoreNormalizer", "selectionCompatNormalizer", "SelectionCompatibilityNormalizer", "topLevelSelectionNormalizer", "TopLevelSelectionsNormalizer", "normParams", "_normalizeAutoSize", "isString", "sizeInfo", "isFitCompatible", "isUnitSpec", "isLayerSpec", "autosizeDefault", "warn", "message_exports", "deepEqual", "isFitType", "autoSizeType", "getFitType", "sizeType", "getPositionScaleChannel", "TOP_LEVEL_PROPERTIES", "extractTopLevelProperties", "t", "includeParams", "o", "p", "signalRefOrValue", "Split", "explicit", "implicit", "duplicate", "__spreadValues", "key", "getFirstDefined", "value", "s", "other", "keys", "val", "makeExplicit", "makeImplicit", "tieBreakByComparing", "compare", "v1", "v2", "property", "propertyOf", "diff", "defaultTieBreaker", "warn", "message_exports", "mergeValuesWithExplicit", "tieBreaker", "deepEqual", "AncestorParse", "Split", "explicit", "implicit", "parseNothing", "clone", "isUrlData", "data", "isInlineData", "isNamedData", "isGenerator", "isSequenceGenerator", "isSphereGenerator", "isGraticuleGenerator", "DataSourceType", "assembleProjection", "proj", "_a", "signals", "hasLegend", "index", "rest", "__objRest", "replacePathInField", "assembleInit", "init", "isExpr", "wrap", "identity", "isArray", "assembled", "v", "isDateTime", "dateTimeToExpr", "dateTimeToTimestamp", "stringify", "assembleUnitSelectionSignals", "model", "selCmpt", "vals", "name", "modifyExpr", "TUPLE", "unitName", "c", "selectionCompilers", "MODIFY", "$", "STORE", "cleanupEmptyOnArray", "assembleFacetSignals", "keys", "eventSelector", "assembleTopLevelSignals", "hasSelections", "store", "s", "resolve", "isPoint", "VL_SELECTION_RESOLVE", "assembleUnitSelectionData", "data", "dataCopy", "unit", "SELECTION_ID", "fields", "i", "d", "assembleUnitSelectionMarks", "marks", "assembleLayerSelectionMarks", "child", "isUnitModel", "assembleSelectionScaleDomain", "extent", "scaleCmpt", "domain", "parsedExtent", "parseSelectionExtent", "hasContinuousDomain", "DataFlowNode", "parent", "debugName", "child", "loc", "warn", "message_exports", "oldChild", "other", "newParent", "OutputNode", "cloneObj", "source", "type", "refCounts", "uniqueId", "isTimeUnitTransformComponent", "timeUnitComponent", "offsetAs", "field", "TimeUnitNode", "DataFlowNode", "duplicate", "parent", "timeUnits", "model", "formula", "fieldDef", "channel", "timeUnit", "component", "isBinnedTimeUnit", "isUnitModel", "mark", "markDef", "config", "bandPosition", "getBandPosition", "isRectBasedMark", "normalizeTimeUnit", "vgField", "isXorY", "hash", "isEmpty", "t", "_a", "__spreadValues", "other", "__objRest", "normalizedTimeUnit", "__spreadProps", "key", "child", "fields", "newFormula", "entries", "fieldAs", "vals", "f", "transforms", "rectBandPosition", "as", "unit", "utc", "params", "startEnd", "replacePathInField", "getTimeUnitParts", "offsetedRectFormulas", "escapedField", "expr", "offsetExpr", "endAs", "OFFSETTED_RECT_START_SUFFIX", "OFFSETTED_RECT_END_SUFFIX", "reverse", "smallestUnit", "getSmallestTimeUnitPart", "part", "step", "getDateTimePartAndStep", "startField", "endField", "startExpr", "endExpr", "interpolateExpr", "start", "end", "fraction", "TUPLE_FIELDS", "SelectionProjectionComponent", "items", "project", "model", "selCmpt", "selDef", "_a", "name", "proj", "parsed", "timeUnits", "signals", "signalName", "p", "range", "suffix", "sg", "varName", "counter", "type", "cfg", "init", "array", "fields", "encodings", "isObject", "initVal", "key", "keys", "isSingleDefUnitChannel", "warn", "message_exports", "channel", "fieldDef", "field", "isBinnedTimeUnit", "component", "hash", "tplType", "isScaleChannel", "hasContinuousDomain", "__spreadValues", "SELECTION_ID", "isGeoPositionChannel", "getPositionChannelFromLatLong", "isEmpty", "TimeUnitNode", "allSignals", "s", "assembleProjection", "project_default", "scaleBindings", "selCmpt", "model", "bound", "proj", "channel", "isScaleChannel", "scale", "scaleType", "hasContinuousDomain", "warn", "message_exports", "signals", "s", "isTopLevelLayer", "namedSg", "update", "VL_SELECTION_RESOLVE", "$", "replacePathInField", "mapping", "signal", "scales_default", "domain", "isLayerModel", "BRUSH", "SCALE_TRIGGER", "GEO_INIT_TICK", "INIT", "CENTER", "interval", "selCmpt", "model", "selDef", "_a", "def", "__spreadValues", "isObject", "SELECTION_ID", "keys", "LONGITUDE", "LATITUDE", "scales_default", "filterExpr", "$", "evt", "warn", "filters", "array", "signals", "name", "tupleSg", "TUPLE", "channels", "vals", "p", "X", "Y", "init", "arr", "proj", "channelSignals", "projection", "centerSg", "x", "y", "xvname", "yvname", "xinit", "yinit", "sizeSg", "layout", "bbox", "s", "intersect", "base", "unitName", "update", "visualSignals", "triggerSg", "scaleTriggers", "channel", "dname", "vname", "scaleName", "scaleType", "toNum", "hasContinuousDomain", "dataSignals", "TUPLE_FIELDS", "assembleInit", "isUnitModel", "marks", "store", "STORE", "key", "fill", "fillOpacity", "cursor", "stroke", "__objRest", "vgStroke", "k", "t", "__spreadProps", "interval_default", "scaledInterval", "scaled", "str", "size", "coord", "von", "hasScales", "scale", "vinit", "initIdx", "initSg", "point", "selCmpt", "model", "signals", "_a", "name", "fieldsSg", "TUPLE_FIELDS", "project", "datum", "brushes", "vals", "acc", "cmpt", "BRUSH", "b", "test", "update", "unitName", "SELECTION_ID", "$", "values", "fieldDef", "events", "TUPLE", "point_default", "wrapCondition", "model", "channelDef", "vgChannel", "refFn", "condition", "isConditionalDef", "valueRef", "vgConditions", "array", "c", "conditionValueRef", "isConditionalParameter", "param", "empty", "test", "parseSelectionPredicate", "__spreadValues", "expression", "text", "model", "channel", "channelDef", "wrapCondition", "cDef", "textRef", "config", "expr", "isValueDef", "signalOrValueRef", "isFieldOrDatumDef", "format", "formatType", "getFormatMixins", "formatSignalRef", "tooltip", "model", "opt", "encoding", "markDef", "config", "stack", "channelDef", "isArray", "tooltipRefForEncoding", "datum", "wrapCondition", "cDef", "tooltipRefFromChannelDef", "textRef", "markTooltip", "getMarkPropOrConfig", "isString", "isObject", "isSignalRef", "tooltipData", "reactiveGeom", "formatConfig", "__spreadValues", "toSkip", "expr", "tuples", "add", "fDef", "channel", "mainChannel", "getMainRangeChannel", "fieldDef", "isTypedFieldDef", "__spreadProps", "title", "defaultTitle", "key", "array", "value", "isXorY", "channel2", "fieldDef2", "getFieldDef", "isBinned", "startField", "vgField", "endField", "format", "formatType", "getFormatMixins", "binFormatExpression", "THETA", "RADIUS", "formatSignalRef", "forEach", "isFieldDef", "hasConditionalFieldDef", "out", "data", "keyValues", "entries", "aria", "model", "markDef", "config", "enableAria", "getMarkPropOrConfig", "__spreadValues", "ariaRoleDescription", "description", "mark", "ariaRoleDesc", "VG_MARK_INDEX", "encoding", "stack", "channelDef", "wrapCondition", "cDef", "textRef", "descriptionValue", "signalOrValueRef", "data", "tooltipData", "isEmpty", "entries", "key", "value", "index", "nonPosition", "channel", "model", "opt", "markDef", "encoding", "config", "vgChannel", "defaultRef", "defaultValue", "getMarkPropOrConfig", "signalOrValueRef", "channelDef", "wrapCondition", "cDef", "midPoint", "color", "model", "opt", "_a", "_b", "_c", "_d", "markDef", "encoding", "config", "markType", "filled", "getMarkPropOrConfig", "transparentIfNeeded", "contains", "defaultFill", "defaultStroke", "colorVgChannel", "fillStrokeMarkDefAndConfig", "__spreadValues", "signalOrValueRef", "warn", "message_exports", "nonPosition", "zindex", "model", "encoding", "mark", "order", "isPathMark", "isValueDef", "wrapCondition", "cd", "signalOrValueRef", "positionOffset", "baseChannel", "markDef", "encoding", "model", "bandPosition", "channel", "defaultValue", "channelDef", "ref", "midPoint", "signalOrValueRef", "markDefOffsetValue", "pointPosition", "channel", "model", "defaultPos", "vgChannel", "encoding", "markDef", "config", "stack", "channelDef", "channel2Def", "getSecondaryRangeChannel", "scaleName", "scale", "offset", "offsetType", "positionOffset", "defaultRef", "pointPositionDefaultRef", "valueRef", "isXorY", "positionRef", "params", "isFieldOrDatumDef", "isFieldDef", "bandPosition", "interpolatedSignalRef", "valueRefForFieldOrDatumDef", "midPointRefWithPositionInvalidTest", "mainChannel", "getMainRangeChannel", "getVgPositionChannel", "definedValueOrConfig", "getMarkPropOrConfig", "widthHeightValueOrSignalRef", "scaleType", "contains", "ScaleType", "sizeRef", "getSizeChannel", "__spreadProps", "__spreadValues", "ALIGNED_X_CHANNEL", "BASELINED_Y_CHANNEL", "vgAlignedPositionChannel", "channel", "markDef", "config", "defaultAlign", "getVgPositionChannel", "alignChannel", "align", "getMarkPropOrConfig", "alignExcludingSignal", "isSignalRef", "warn", "message_exports", "pointOrRangePosition", "channel", "model", "defaultPos", "defaultPos2", "range", "rangePosition", "pointPosition", "markDef", "config", "channel2", "getSecondaryRangeChannel", "sizeChannel", "getSizeChannel", "pos2Mixins", "pointPosition2OrSize", "vgChannel", "vgAlignedPositionChannel", "getVgPositionChannel", "__spreadValues", "encoding", "mark", "stack", "baseChannel", "getMainRangeChannel", "channelDef", "scaleName", "scale", "offset", "positionOffset", "vgSizeChannel", "size", "valueRef", "position2Ref", "position2orSize", "getMarkStyleConfig", "pointPositionDefaultRef", "channel2Def", "defaultRef", "isFieldOrDatumDef", "valueRefForFieldOrDatumDef", "midPointRefWithPositionInvalidTest", "widthHeightValueOrSignalRef", "dimensionSize", "isRelativeBandSize", "warn", "message_exports", "rectPosition", "model", "channel", "_a", "_b", "config", "encoding", "markDef", "mark", "channel2", "getSecondaryRangeChannel", "sizeChannel", "getSizeChannel", "channelDef", "channelDef2", "scale", "scaleType", "orient", "hasSizeDef", "getMarkPropOrConfig", "offsetScaleChannel", "getOffsetChannel", "isBarBand", "isFieldDef", "isBinning", "isBinned", "isRelativeBandSize", "hasDiscreteDomain", "rectBinPosition", "isFieldOrDatumDef", "positionAndSize", "rangePosition", "defaultSizeRef", "scaleName", "bandSize", "hasFieldDef", "bandWidth", "minBandSize", "getMarkConfig", "signalOrStringValue", "warn", "message_exports", "isSignalRef", "scaleRange", "isVgRangeStep", "isNumber", "bandPaddingInner", "barBandPaddingInner", "rectBandPaddingInner", "padding", "getFirstDefined", "getViewConfigDiscreteStep", "fieldDef", "stack", "vgSizeChannel", "offsetScaleName", "offsetScale", "getOffsetScaleChannel", "useVlSizeChannel", "sizeMixins", "nonPosition", "signalOrValueRef", "hasSizeFromMarkOrEncoding", "getBandSize", "defaultBandAlign", "vgChannel", "vgAlignedPositionChannel", "center", "offset", "offsetType", "positionOffset", "posRef", "midPointRefWithPositionInvalidTest", "pointPositionDefaultRef", "__spreadValues", "vgChannel2", "getVgPositionChannel", "sizeRef", "sizeOffset", "__spreadProps", "isArray", "getBinSpacing", "spacing", "reverse", "axisTranslate", "bandSizeExpr", "isPolarPositionChannel", "isEnd", "spacingOffset", "reverseExpr", "offsetExpr", "axisTranslateExpr", "minBandSizeExpr", "spacingAndSizeOffset", "t", "r", "o", "fieldDef2", "_c", "axis", "isXorY", "offset2", "binSizeExpr", "binSpacingOffset", "binSpacingOffset2", "bandPositionForBandSize", "bandPosition", "getBandPosition", "useRectOffsetField", "rectBinRef", "startRef", "valueRefForFieldOrDatumDef", "isBinParams", "vgField", "interpolatedSignalRef", "OFFSETTED_RECT_START_SUFFIX", "OFFSETTED_RECT_END_SUFFIX", "ALWAYS_IGNORE", "baseEncodeEntry", "model", "ignore", "fill", "stroke", "color", "__spreadValues", "markDefProperties", "wrapAllFieldsInvalid", "nonPosition", "zindex", "tooltip", "text", "aria", "channel", "valueRef", "config", "mark", "markDef", "getMarkPropOrConfig", "isPathMark", "test", "allFieldsInvalidPredicate", "SCALE_CHANNELS", "array", "VG_MARK_CONFIGS", "m", "prop", "signalOrValueRef", "invalid", "channels", "filterIndex", "aggregator", "scaleComponent", "scaleType", "field", "hasContinuousDomain", "fields", "keys", "op", "fieldInvalidPredicate", "defined", "model", "config", "markDef", "getMarkPropOrConfig", "signal", "allFieldsInvalidPredicate", "POSITION_SCALE_CHANNELS", "invalid", "channels", "filterIndex", "aggregator", "channel", "_a", "scaleComponent", "scaleType", "field", "hasContinuousDomain", "fields", "keys", "op", "fieldInvalidPredicate", "valueIfDefined", "prop", "value", "signalOrValueRef", "VORONOI", "nearest", "selCmpt", "model", "s", "marks", "x", "y", "markType", "isPathMark", "warn", "message_exports", "cellDef", "__spreadValues", "tooltip", "index", "exists", "mark", "i", "_a", "name", "nearest_default", "inputBindings", "selCmpt", "isLegendBinding", "model", "selDef", "disableDirectManipulation", "signals", "name", "proj", "bind", "init", "datum", "nearest_default", "p", "i", "_a", "_b", "sgname", "varName", "s", "__spreadProps", "__spreadValues", "assembleInit", "$", "signal", "TUPLE", "fields", "TUPLE_FIELDS", "values", "valid", "v", "inputs_default", "TOGGLE", "toggle", "selCmpt", "model", "signals", "tpl", "TUPLE", "signal", "unitName", "toggle_default", "clear", "selCmpt", "model", "isString", "eventSelector", "signals", "inputs_default", "proj", "idx", "n", "varName", "addClear", "update", "vIdx", "dIdx", "tIdx", "TUPLE", "toggle_default", "TOGGLE", "clear_default", "legendBindings", "selCmpt", "spec", "isLegendBinding", "projLen", "SELECTION_ID", "warn", "message_exports", "model", "selDef", "_a", "selDef_", "duplicate", "isString", "__spreadProps", "__spreadValues", "disableDirectManipulation", "isObject", "legendFilter", "evt", "array", "isLegendStreamBinding", "stream", "eventSelector", "signals", "selName", "markName", "name", "s", "ds", "proj", "prefix", "varName", "sgName", "events", "tuple", "TUPLE", "fields", "TUPLE_FIELDS", "values", "p", "update", "v", "signal", "toggle", "TOGGLE", "legends_default", "parseInteractiveLegend", "channel", "legendCmpt", "_b", "_c", "_d", "field", "vals", "legendSelections", "ANCHOR", "DELTA", "translate", "selCmpt", "model", "signals", "name", "boundScales", "scales_default", "anchor", "x", "y", "events", "eventSelector", "e", "BRUSH", "domain", "X", "Y", "onDelta", "translate_default", "proj", "size", "_a", "_b", "delta", "channel", "signal", "s", "sizeSg", "scaleCmpt", "scaleType", "reversed", "sign", "extent", "offset", "panFn", "arg", "update", "ANCHOR", "DELTA", "zoom", "selCmpt", "model", "signals", "name", "boundScales", "scales_default", "delta", "x", "y", "sx", "$", "X", "sy", "Y", "events", "eventSelector", "e", "BRUSH", "expr", "onDelta", "zoom_default", "proj", "size", "_a", "_b", "channel", "signal", "s", "sizeSg", "scaleCmpt", "scaleType", "base", "domain", "anchor", "zoomFn", "arg", "update", "STORE", "TUPLE", "MODIFY", "VL_SELECTION_RESOLVE", "selectionCompilers", "point_default", "interval_default", "project_default", "toggle_default", "inputs_default", "scales_default", "legends_default", "clear_default", "translate_default", "zoom_default", "nearest_default", "getFacetModel", "model", "parent", "isFacetModel", "unitName", "escape", "name", "$", "facetModel", "facet", "channel", "FACET_CHANNELS", "requiresSelectionId", "_a", "vals", "identifier", "selCmpt", "disableDirectManipulation", "selDef", "isString", "getName", "node", "name", "startsWithDatum", "getDependentFields", "expression", "ast", "parser", "dependents", "FilterNode", "DataFlowNode", "duplicate", "parent", "model", "filter", "expression", "getDependentFields", "parseUnitSelection", "model", "selDefs", "_a", "selCmpts", "selectionConfig", "def", "name", "varName", "selDef", "type", "isString", "defaults", "isObject", "duplicate", "cfg", "key", "__spreadValues", "selCmpt", "__spreadProps", "eventSelector", "array", "def_", "c", "selectionCompilers", "parseSelectionPredicate", "pred", "dfnode", "datum", "vname", "store", "$", "STORE", "e", "child", "tunode", "fn", "resolve", "test", "length", "parseSelectionExtent", "extent", "encoding", "field", "warn", "encodings", "p", "replacePathInField", "materializeSelections", "main", "selection", "entries", "lookupName", "OutputNode", "FilterNode", "DataSourceType", "expression", "model", "filterOp", "node", "logicalExpr", "predicate", "isString", "isSelectionPredicate", "parseSelectionPredicate", "fieldFilterExpression", "assembleTitle", "title", "config", "isArray", "isText", "fieldDef", "defaultTitle", "setAxisEncode", "axis", "part", "vgProp", "vgRef", "_a", "_b", "_c", "assembleAxis", "axisCmpt", "kind", "opt", "_d", "disable", "orient", "scale", "labelExpr", "zindex", "__objRest", "prop", "propType", "AXIS_PROPERTY_TYPE", "propValue", "isConditionalAxisValue", "condition", "valueOrSignalRef", "conditions", "array", "propIndex", "CONDITIONAL_AXIS_PROP_INDEX", "c", "test", "valueOrSignalCRef", "__spreadValues", "expression", "signalRef", "exprFromValueRefOrSignalRef", "isSignalRef", "contains", "grid", "isEmpty", "__spreadProps", "getFirstDefined", "expr", "replaceAll", "AXIS_PARTS", "titleString", "assembleAxisSignals", "model", "axes", "signals", "channel", "POSITION_SCALE_CHANNELS", "sizeType", "update", "assembleAxes", "axisComponents", "x", "y", "a", "getAxisConfigFromConfigTypes", "configTypes", "config", "channel", "orient", "configType", "orient1", "orientConfig1", "orientConfig2", "props", "keys", "conditionalOrientAxisConfig", "prop", "signalOrStringValue", "getAxisConfigs", "scaleType", "typeBasedConfigTypes", "isQuantitative", "axisChannel", "axisOrient", "isSignalRef", "titleCase", "vlOnlyConfigTypes", "c", "vgConfigTypes", "getAxisConfigStyle", "axisConfigTypes", "_a", "toMerge", "style", "array", "getAxisConfig", "property", "styleConfigIndex", "axisConfigs", "styleConfig", "getStyleConfig", "configFrom", "axisRules", "model", "channel", "format", "formatType", "fieldOrDatumDef", "axis", "scaleType", "_a", "defaultGrid", "gridScale", "labelAngle", "orient", "defaultLabelAlign", "defaultLabelBaseline", "defaultLabelFlush", "defaultLabelOverlap", "isFieldDef", "sizeType", "size", "defaultTickCount", "defaultTickMinStep", "fieldDefTitle", "getFieldDefTitle", "fieldDef", "channel2", "fieldDef2", "mergeTitleFieldDefs", "toFieldDefBase", "values", "mark", "defaultZindex", "hasDiscreteDomain", "isBinning", "isBinned", "gridChannel", "getLabelAngle", "styleConfig", "axisConfigs", "isSignalRef", "normalizeAngle", "angle", "getAxisConfig", "X", "contains", "NOMINAL", "ORDINAL", "normalizeAngleExpr", "alwaysIncludeMiddle", "a", "orientIsTop", "op", "orientIsLeft", "isX", "startAngle", "mainOrient", "orientIsMain", "type", "hasTimeUnit", "sort", "isObject", "defaultOrient", "vals", "normalizeTimeUnit", "timeUnit", "signal", "durationExpr", "title1", "title2", "mergeTitle", "isArray", "valueArray", "isDiscrete", "CalculateNode", "DataFlowNode", "duplicate", "parent", "transform", "getDependentFields", "model", "fieldDef", "channel", "isScaleFieldDef", "isSortArray", "field", "timeUnit", "sort", "calculate", "sortValue", "i", "fieldFilterExpression", "sortArrayIndexField", "hash", "opt", "vgField", "__spreadValues", "getHeaderChannel", "channel", "orient", "contains", "getHeaderProperty", "prop", "header", "config", "headerSpecificConfig", "getFirstDefined", "getHeaderProperties", "properties", "props", "value", "HEADER_CHANNELS", "HEADER_TYPES", "assembleTitleGroup", "model", "channel", "title", "config", "facetFieldDef", "titleAnchor", "ta", "titleOrient", "getHeaderProperties", "headerChannel", "getHeaderChannel", "titleAngle", "normalizeAngle", "__spreadValues", "__spreadProps", "defaultHeaderGuideBaseline", "defaultHeaderGuideAlign", "assembleHeaderProperties", "HEADER_TITLE_PROPERTIES", "HEADER_TITLE_PROPERTIES_MAP", "angle", "anchor", "align", "defaultLabelAlign", "baseline", "defaultLabelBaseline", "assembleHeaderGroups", "layoutHeader", "groups", "headerType", "HEADER_TYPES", "headerComponent", "group", "assembleHeaderGroup", "getSort", "_a", "sort", "isSortField", "vgField", "isArray", "sortArrayIndexField", "assembleLabelTitle", "format", "formatType", "labelAngle", "labelAnchor", "labelOrient", "labelExpr", "titleTextExpr", "formatSignalRef", "replaceAll", "HEADER_LABEL_PROPERTIES", "HEADER_LABEL_PROPERTIES_MAP", "contains", "isFacetWithoutRowCol", "isFacetModel", "isFacetMapping", "axes", "hasAxes", "sizeChannel", "LAYOUT_TITLE_BAND", "getLayoutTitleBand", "assembleLayoutTitleBand", "headerComponentIndex", "titleBand", "FACET_CHANNELS", "band", "isEmpty", "properties", "propertiesMap", "props", "prop", "value", "getHeaderProperty", "assembleLayoutSignals", "model", "sizeSignals", "sizeType", "channel", "size", "name", "scaleComponent", "type", "range", "hasDiscreteDomain", "isVgRangeStep", "scaleName", "isFacetModel", "stepSignal", "sizeExpr", "isWidth", "expr", "defaultValue", "getViewConfigContinuousSize", "safeExpr", "isSignalRef", "cardinality", "padding", "paddingOuter", "getFirstDefined", "paddingInner", "signalOrStringValue", "getSizeTypeFromLayoutSizeType", "layoutSizeType", "guideEncodeEntry", "encoding", "model", "keys", "encode", "channel", "valueDef", "__spreadValues", "wrapCondition", "def", "signalOrValueRef", "defaultScaleResolve", "channel", "model", "isFacetModel", "isLayerModel", "isConcatModel", "isXorY", "parseGuideResolve", "resolve", "channelScaleResolve", "guide", "warn", "message_exports", "LEGEND_COMPONENT_PROPERTY_INDEX", "__spreadProps", "__spreadValues", "COMMON_LEGEND_PROPERTY_INDEX", "LEGEND_COMPONENT_PROPERTIES", "keys", "LegendComponent", "Split", "legendEncodeRules", "symbols", "gradient", "labels", "entries", "symbolsSpec", "fieldOrDatumDef", "model", "channel", "legendCmpt", "legendType", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "markDef", "encoding", "config", "mark", "filled", "out", "__spreadValues", "applyMarkConfig", "FILL_STROKE_CONFIG", "color", "symbolOpacity", "symbolFillColor", "symbolStrokeColor", "opacity", "getMaxValue", "COLOR", "signalOrValueRef", "isArray", "fill", "getFirstConditionValue", "stroke", "getFirstDefined", "OPACITY", "condition", "isFieldDef", "selectedCondition", "isEmpty", "gradientSpec", "specifiedlabelsSpec", "legend", "format", "formatType", "text", "isCustomFormatType", "formatCustomType", "labelsSpec", "entriesSpec", "selections", "__spreadProps", "channelDef", "getConditionValue", "v", "conditionalDef", "reducer", "hasConditionalValueDef", "array", "isValueDef", "fieldDef", "field", "$", "name", "varName", "STORE", "legendRules", "direction", "fieldOrDatumDef", "legend", "config", "format", "formatType", "guideFormat", "scaleType", "guideFormatType", "params", "_a", "_b", "legendConfig", "defaultGradientLength", "defaultLabelOverlap", "markDef", "channel", "encoding", "defaultSymbolType", "title", "legendType", "isColorChannel", "isContinuousToContinuous", "values", "vals", "isArray", "valueArray", "isSignalRef", "mark", "shapeChannelDef", "markShape", "shape", "getFirstConditionValue", "getLegendType", "params", "legend", "getFirstDefined", "defaultType", "channel", "timeUnit", "scaleType", "isColorChannel", "contains", "isContinuousToContinuous", "getDirection", "legendConfig", "legendType", "orient", "_a", "_b", "defaultDirection", "defaultGradientLength", "model", "direction", "gradientHorizontalMaxLength", "gradientHorizontalMinLength", "gradientVerticalMaxLength", "gradientVerticalMinLength", "gradientLengthSignal", "sizeType", "min", "max", "defaultLabelOverlap", "parseLegend", "model", "legendComponent", "isUnitModel", "parseUnitLegend", "parseNonUnitLegend", "encoding", "channel", "COLOR", "LEGEND_SCALE_CHANNELS", "def", "getFieldOrDatumDef", "SHAPE", "isFieldDef", "GEOJSON", "parseLegendForChannel", "getLegendDefWithScale", "scale", "isExplicit", "value", "property", "legend", "fieldDef", "_a", "_b", "_c", "markDef", "config", "legendConfig", "legendCmpt", "LegendComponent", "parseInteractiveLegend", "disable", "scaleType", "fieldOrDatumDef", "timeUnit", "normalizeTimeUnit", "orient", "legendType", "getLegendType", "direction", "getDirection", "ruleParams", "LEGEND_COMPONENT_PROPERTIES", "legendRules", "explicit", "legendEncoding", "selections", "legendEncode", "legendEncodeParams", "part", "legendEncodingPart", "guideEncodeEntry", "legendEncodeRules", "isEmpty", "__spreadProps", "__spreadValues", "varName", "legends", "resolve", "child", "keys", "parseGuideResolve", "mergeLegendComponent", "mergedLegend", "childLegend", "_d", "mergedOrient", "childOrient", "typeMerged", "prop", "mergedValueWithExplicit", "mergeValuesWithExplicit", "v1", "v2", "mergeSymbolType", "mergeTitleComponent", "makeImplicit", "defaultTieBreaker", "deleteNestedProperty", "st1", "st2", "setLegendEncode", "legend", "part", "vgProp", "vgRef", "_a", "_b", "_c", "assembleLegends", "model", "legendComponentIndex", "legendByDomain", "channel", "keys", "scaleComponent", "domainHash", "stringify", "mergedLegendComponent", "mergeLegendComponent", "vals", "l", "assembleLegend", "legendCmpt", "config", "_d", "disable", "labelExpr", "selections", "__objRest", "out", "property", "LEGEND_SCALE_CHANNELS", "expr", "isSignalRef", "replaceAll", "assembleProjections", "model", "isLayerModel", "isConcatModel", "assembleProjectionsForModelAndChildren", "assembleProjectionForModel", "projections", "child", "component", "projection", "name", "size", "ref", "fits", "sources", "data", "source", "isSignalRef", "contains", "__spreadValues", "PROJECTION_PROPERTIES", "ProjectionComponent", "Split", "name", "specifiedProjection", "size", "data", "__spreadValues", "parseProjection", "model", "isUnitModel", "parseUnitProjection", "parseNonUnitProjections", "_a", "proj", "replaceExprRef", "fit", "size", "data", "gatherFitData", "projComp", "ProjectionComponent", "__spreadValues", "encoding", "posssiblePair", "LONGITUDE", "LATITUDE", "LONGITUDE2", "LATITUDE2", "getFieldOrDatumDef", "SHAPE", "GEOJSON", "DataSourceType", "mergeIfNoConflict", "first", "second", "allPropertiesShared", "every", "PROJECTION_PROPERTIES", "prop", "has", "deepEqual", "nonUnitProjection", "child", "mergable", "projection", "merge", "name", "modelProjection", "duplicate", "rangeFormula", "model", "fieldDef", "channel", "config", "_a", "_b", "binRequiresRange", "guide", "isUnitModel", "startField", "vgField", "endField", "binFormatExpression", "binKey", "bin", "field", "binToString", "getSignalsFromModel", "key", "getBinSignalName", "normalizedBin", "normalizeBin", "isBinTransform", "t", "createBinComponent", "as", "span", "isString", "__spreadValues", "signal", "extentSignal", "isParameterExtent", "ext", "parseSelectionExtent", "binComponent", "BinNode", "DataFlowNode", "duplicate", "parent", "bins", "binComponentIndex", "isTypedFieldDef", "isBinning", "isEmpty", "other", "renameSignal", "keys", "unique", "hash", "child", "vals", "c", "transform", "binAs", "remainingAs", "extent", "params", "__objRest", "binTrans", "replacePathInField", "i", "addDimension", "dims", "channel", "fieldDef", "model", "_a", "channelDef2", "isUnitModel", "getSecondaryRangeChannel", "isTypedFieldDef", "hasBandEnd", "vgField", "mark", "markDef", "config", "bandPosition", "getBandPosition", "isRectBasedMark", "isXorY", "OFFSETTED_RECT_START_SUFFIX", "OFFSETTED_RECT_END_SUFFIX", "binRequiresRange", "isGeoPositionChannel", "posChannel", "getPositionChannelFromLatLong", "isScaleFieldDef", "isFieldRange", "mergeMeasures", "parentMeasures", "childMeasures", "field", "keys", "ops", "op", "AggregateNode", "DataFlowNode", "duplicate", "parent", "dimensions", "measures", "isAggregate", "fd", "meas", "_b", "_c", "_d", "aggregate", "isArgminDef", "isArgmaxDef", "argField", "isScaleChannel", "t", "s", "as", "other", "setEqual", "debug", "fields", "out", "m", "hash", "alias", "replacePathInField", "FacetNode", "DataFlowNode", "parent", "model", "name", "data", "channel", "FACET_CHANNELS", "fieldDef", "bin", "sort", "__spreadValues", "vgField", "isBinning", "isSortField", "isArray", "sortArrayIndexField", "out", "hash", "_a", "f", "depFields", "childIndependentFieldsWithStep", "POSITION_SCALE_CHANNELS", "childScaleComponent", "type", "range", "hasDiscreteDomain", "isVgRangeStep", "domain", "assembleDomain", "field", "getFieldFromDomain", "warn", "message_exports", "crossedDataName", "childChannel", "fields", "ops", "as", "sortField", "sortIndexField", "op", "DEFAULT_SORT_OP", "_b", "columns", "layoutHeaders", "hasSharedAxis", "headerChannel", "HEADER_CHANNELS", "headerType", "HEADER_TYPES", "headers", "header", "cardinality", "stop", "row", "column", "facet", "COLUMN", "ROW", "facetData", "unquote", "pattern", "parseExpression", "field", "parse", "f", "accessPathWithDatum", "specifier", "warn", "message_exports", "getImplicitFromFilterTransform", "transform", "implicit", "forEachLeaf", "filter", "_a", "isFieldPredicate", "val", "isFieldEqualPredicate", "signalRefOrValue", "isFieldLTEPredicate", "isFieldLTPredicate", "isFieldGTPredicate", "isFieldGTEPredicate", "isFieldRangePredicate", "isFieldOneOfPredicate", "isDateTime", "isNumber", "isString", "getImplicitFromEncoding", "model", "add", "fieldDef", "isFieldOrDatumDefForTimeFormat", "isMinMaxOp", "accessPathDepth", "isScaleFieldDef", "isSortField", "isUnitModel", "isFacetModel", "channel", "isTypedFieldDef", "mainChannel", "getMainRangeChannel", "mainFieldDef", "__spreadProps", "__spreadValues", "mark", "markDef", "encoding", "isPathMark", "dimensionChannel", "dimensionChannelDef", "isFieldDef", "getImplicitFromSelection", "name", "keys", "selCmpt", "proj", "ParseNode", "DataFlowNode", "duplicate", "parent", "hash", "ancestorParse", "explicit", "data", "isGenerator", "parsedAs", "Split", "p", "key", "other", "formatParse", "onlyNested", "expr", "removePathFromField", "t", "IdentifierNode", "DataFlowNode", "parent", "SELECTION_ID", "GraticuleNode", "DataFlowNode", "parent", "params", "hash", "__spreadValues", "SequenceNode", "DataFlowNode", "parent", "params", "_a", "hash", "__spreadValues", "SourceNode", "DataFlowNode", "data", "format", "isGenerator", "__spreadValues", "omit", "isInlineData", "isUrlData", "defaultExtension", "contains", "isSphereGenerator", "isNamedData", "isEmpty", "name", "parent", "__spreadProps", "isDataSourceNode", "node", "SourceNode", "GraticuleNode", "SequenceNode", "Optimizer", "_Optimizer_modified", "__classPrivateFieldSet", "__classPrivateFieldGet", "BottomUpOptimizer", "depth", "depths", "child", "topologicalSort", "a", "b", "tuple", "TopDownOptimizer", "MergeIdenticalNodes", "TopDownOptimizer", "parent", "nodes", "mergedNode", "node", "hashes", "x", "buckets", "k", "keys", "RemoveUnnecessaryIdentifierNodes", "model", "requiresSelectionId", "IdentifierNode", "isDataSourceNode", "AggregateNode", "ParseNode", "RemoveDuplicateTimeUnits", "Optimizer", "timeUnitFields", "producedFields", "TimeUnitNode", "hasIntersection", "child", "RemoveUnnecessaryOutputNodes", "OutputNode", "MoveParseUp", "BottomUpOptimizer", "fieldIntersection", "MergeParse", "originalChildren", "parseChildren", "commonParse", "conflictingParse", "parseNode", "parse", "field", "isEmpty", "mergedParseNode", "childNode", "key", "RemoveUnusedSubtrees", "FacetNode", "SourceNode", "MergeTimeUnits", "timeUnitChildren", "combination", "timeUnit", "MergeAggregates", "aggChildren", "groupedAggregates", "agg", "groupBys", "hash", "group", "mergeableAggs", "mergedAggs", "MergeBins", "moveBinsUp", "FilterNode", "promotableBins", "remainingBins", "BinNode", "promotedBin", "bin", "remainingBin", "MergeOutputs", "children", "some", "otherChildren", "mainOutput", "lastOutput", "theChild", "JoinAggregateTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "fields", "unique", "d", "out", "w", "f", "joinAggregateFieldDef", "_a", "vgField", "hash", "ops", "as", "joinaggregate", "groupby", "__spreadValues", "getStackByFields", "model", "fields", "by", "fieldDef", "_field", "vgField", "isValidAsArray", "as", "isArray", "s", "isString", "StackNode", "DataFlowNode", "duplicate", "parent", "stack", "stackTransform", "groupby", "offset", "sortFields", "sortOrder", "sortField", "getFirstDefined", "sort", "normalizedAs", "stackProperties", "encoding", "groupbyChannels", "fieldChannel", "impute", "dimensionFieldDefs", "groupbyChannel", "cDef", "getFieldDef", "def", "stackby", "orderDef", "isFieldDef", "sortParams", "isOrderOnlyDef", "field", "out", "hash", "dimensionFieldDef", "transform", "facetby", "bandPosition", "bin", "binStart", "binEnd", "WindowTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "fields", "unique", "d", "_a", "_b", "out", "m", "w", "f", "windowFieldDef", "vgField", "hash", "ops", "as", "params", "window", "frame", "groupby", "o", "isAggregateOp", "__spreadValues", "sortFields", "sortOrder", "sortField", "sort", "ignorePeers", "cloneSubtree", "facet", "clone", "node", "FacetNode", "copy", "OutputNode", "newName", "FACET_SCALE_PREFIX", "AggregateNode", "StackNode", "WindowTransformNode", "JoinAggregateTransformNode", "n", "moveFacetDown", "child", "facetMain", "moveMainDownToFacet", "cloner", "c", "DataSourceType", "FACET_SCALE_PREFIX", "MAX_OPTIMIZATION_RUNS", "checkLinks", "nodes", "node", "child", "runOptimizer", "optimizer", "modified", "optimizationDataflowHelper", "dataComponent", "model", "firstPass", "roots", "RemoveUnnecessaryOutputNodes", "RemoveUnnecessaryIdentifierNodes", "r", "RemoveUnusedSubtrees", "MoveParseUp", "MergeBins", "RemoveDuplicateTimeUnits", "MergeParse", "MergeAggregates", "MergeTimeUnits", "MergeIdenticalNodes", "MergeOutputs", "optimizeDataflow", "data", "firstPassCounter", "secondPassCounter", "moveFacetDown", "warn", "SignalRefWrapper", "exprGenerator", "rename", "signalName", "parseScaleDomain", "model", "isUnitModel", "parseUnitScaleDomain", "parseNonUnitScaleDomain", "localScaleComponents", "channel", "keys", "domains", "parseDomainForChannel", "parseSelectionDomain", "facetParent", "isFacetModel", "domain", "isDataRefDomain", "FACET_SCALE_PREFIX", "child", "selectionExtent", "childComponent", "mergeValuesWithExplicit", "domainsTieBreaker", "se", "warn", "message_exports", "normalizeUnaggregatedDomain", "fieldDef", "scaleType", "scaleConfig", "valid", "reason", "canUseUnaggregatedDomain", "encoding", "__spreadProps", "__spreadValues", "getFieldOrDatumDef", "parseSingleChannelDomain", "mapDomainToDataSignal", "type", "timeUnit", "v", "valueExpr", "convertDomainIfItIsDateTime", "_a", "normalizedTimeUnit", "normalizeTimeUnit", "markDef", "mark", "config", "stack", "fieldOrDatumDef", "isDomainUnionWith", "defaultDomain", "unionWith", "makeExplicit", "isSignalRef", "isParameterDomain", "makeImplicit", "data", "DataSourceType", "sort", "isScaleChannel", "isFieldDef", "domainSort", "isDatumDef", "d", "field", "vgField", "isBinning", "hasDiscreteDomain", "isBoolean", "binRequiresRange", "isObject", "bin", "binSignal", "getBinSignalName", "SignalRefWrapper", "signal", "contains", "fieldDef2", "getSecondaryRangeChannel", "hasBandEnd", "bandPosition", "getBandPosition", "isRectWithOffset", "isRectBasedMark", "isXorY", "OFFSETTED_RECT_START_SUFFIX", "OFFSETTED_RECT_END_SUFFIX", "normalizeSortField", "isStackedMeasure", "op", "order", "DEFAULT_SORT_OP", "replacePathInField", "scale", "spec", "extent", "isBinParams", "isParameterExtent", "isSortArray", "sortArrayIndexField", "stackDimensions", "s", "isSortField", "isSortByEncoding", "fieldDefToSortBy", "aggregate", "isArgminDef", "isArgmaxDef", "isAggregateOp", "isString", "SHARED_DOMAIN_OPS", "v1", "v2", "property", "propertyOf", "mergeDomains", "uniqueDomains", "unique", "_s", "__objRest", "hash", "sorts", "filteredSorts", "sortField", "unionDomainSorts", "MULTIDOMAIN_SORT_OP_INDEX", "allData", "x", "getFieldFromDomain", "isDataRefUnionedDomain", "nonUnionDomain", "isFieldRefUnionDomain", "assembleDomain", "assembleScales", "model", "isLayerModel", "isConcatModel", "scales", "child", "assembleScalesForModel", "keys", "channel", "scaleComponent", "scale", "_a", "name", "type", "selectionExtent", "_d", "_r", "reverse", "otherScaleProps", "__objRest", "range", "assembleScaleRange", "domain", "assembleDomain", "domainRaw", "assembleSelectionScaleDomain", "__spreadValues", "__spreadProps", "scaleRange", "scaleName", "isXorY", "isVgRangeStep", "isObject", "isDataRefDomain", "ScaleComponent", "Split", "name", "typeWithExplicit", "some", "d", "isArray", "isNumber", "RANGE_PROPERTIES", "parseUnitScaleRange", "model", "localScaleComponents", "channel", "SCALE_CHANNELS", "localScaleCmpt", "rangeWithExplicit", "parseRangeForChannel", "getBinStepSignal", "fieldDef", "bin", "field", "sizeType", "getSizeChannel", "sizeSignal", "isObject", "SignalRefWrapper", "scaleName", "binCount", "isBinning", "binSignal", "getBinSignalName", "updatedName", "specifiedScale", "size", "scaleType", "property", "supportedByScaleType", "scaleTypeSupportProperty", "channelIncompatability", "channelScalePropertyIncompatability", "warn", "message_exports", "range", "isArray", "isXorY", "makeExplicit", "getSignalName", "DataSourceType", "parseScheme", "sizeChannel", "X", "sizeValue", "isStep", "hasDiscreteDomain", "step", "getPositionStep", "isXorYOffset", "positionChannel", "XOFFSET", "getOffsetStep", "rangeMin", "rangeMax", "defaultRange", "makeImplicit", "scheme", "isExtendedScheme", "__spreadValues", "omit", "fullWidthOrHeightRange", "center", "Y", "hasContinuousDomain", "name", "config", "mark", "encoding", "type", "getFieldOrDatumDef", "domain", "domainMid", "contains", "positionSize", "getDiscretePositionSize", "YOFFSET", "getOffsetRange", "SIZE", "zero", "sizeRangeMin", "sizeRangeMax", "isContinuousToDiscrete", "interpolateRange", "defaultContinuousToDiscreteCount", "THETA", "ANGLE", "RADIUS", "w", "STROKEWIDTH", "STROKEDASH", "SHAPE", "COLOR", "FILL", "STROKE", "OPACITY", "FILLOPACITY", "STROKEOPACITY", "_a", "_b", "_c", "_d", "_e", "mergedScaleCmpt", "offsetChannel", "getOffsetScaleChannel", "offsetDef", "getStepFor", "isFieldOrDatumDef", "isDiscrete", "channelHasFieldOrDatum", "offsetScaleCmpt", "stepCount", "offsetPaddingInner", "offsetPaddingOuter", "paddingInner", "exprFromSignalRefOrValue", "offsetScaleType", "positionScaleCmpt", "positionScaleType", "positionScaleName", "markDef", "positionDef", "isFieldDef", "duration", "durationExpr", "expr", "padding", "bandPositionOffset", "getBandPosition", "bandPositionOffsetExpr", "startRatio", "isSignalRef", "endRatio", "never", "viewConfig", "getViewConfigDiscreteSize", "cardinality", "f", "rMax", "signalOrStringValue", "rMin", "MAX_SIZE_RANGE_STEP_RATIO", "xyStepSignals", "min", "minXYStep", "isNumber", "pointStep", "widthStep", "getViewConfigDiscreteStep", "heightStep", "parseScaleProperty", "model", "property", "isUnitModel", "parseUnitScaleProperty", "parseNonUnitScaleProperty", "localScaleComponents", "config", "encoding", "markDef", "specifiedScales", "channel", "keys", "specifiedScale", "localScaleCmpt", "mergedScaleCmpt", "fieldOrDatumDef", "getFieldOrDatumDef", "specifiedValue", "scaleType", "scalePadding", "scalePaddingInner", "supportedByScaleType", "scaleTypeSupportProperty", "channelIncompatability", "channelScalePropertyIncompatability", "warn", "message_exports", "timeUnit", "type", "isDateTime", "valueExpr", "value", "scaleRules", "channelHasNestedOffsetScale", "getSecondaryRangeChannel", "isFieldDef", "bins", "interpolate", "domain", "domainMin", "domainMax", "nice", "padding", "hasNestedOffsetScale", "paddingInner", "paddingOuter", "sort", "reverse", "hasSecondaryRangeChannel", "zero", "parseScaleRange", "parseUnitScaleRange", "child", "valueWithExplicit", "childComponent", "childValueWithExplicit", "mergeValuesWithExplicit", "tieBreakByComparing", "v1", "v2", "fieldDef", "bin", "isBinning", "binSignal", "getBinSignalName", "SignalRefWrapper", "isBinned", "isBinParams", "contains", "COLOR", "FILL", "STROKE", "specifiedDomain", "_a", "getFieldDef", "isArray", "ScaleType", "isXorY", "scaleConfig", "barConfig", "isContinuousToContinuous", "orient", "paddingValue", "mark", "bandPaddingInner", "barBandPaddingInner", "rectBandPaddingInner", "bandWithNestedOffsetPaddingInner", "getFirstDefined", "isXorYOffset", "paddingInnerValue", "bandPaddingOuter", "bandWithNestedOffsetPaddingOuter", "isSignalRef", "hasContinuousDomain", "first", "last", "isNumber", "isContinuousToDiscrete", "POSITION_SCALE_CHANNELS", "POLAR_POSITION_SCALE_CHANNELS", "scaleType", "specifiedScale", "channel", "fieldDef", "mark", "hasNestedOffsetScale", "defaultScaleType", "defaultType", "type", "isScaleChannel", "channelSupportScaleType", "isFieldDef", "scaleTypeSupportDataType", "warn", "message_exports", "_a", "isColorChannel", "rangeType", "isXorY", "isXorYOffset", "contains", "POLAR_POSITION_SCALE_CHANNEL_INDEX", "dimensionSize", "getSizeChannel", "isRelativeBandSize", "isPositionFieldOrDatumDef", "normalizeTimeUnit", "isBinning", "parseScales", "model", "ignoreRange", "parseScaleCore", "parseScaleDomain", "prop", "NON_TYPE_DOMAIN_RANGE_VEGA_SCALE_PROPERTIES", "parseScaleProperty", "parseScaleRange", "isUnitModel", "parseUnitScaleCore", "parseNonUnitScaleCore", "encoding", "mark", "markDef", "scaleComponents", "channel", "SCALE_CHANNELS", "fieldOrDatumDef", "getFieldOrDatumDef", "GEOSHAPE", "SHAPE", "GEOJSON", "specifiedScale", "hasNestedOffsetScale", "channelHasNestedOffsetScale", "sType", "scaleType", "ScaleComponent", "scaleTypeTieBreaker", "tieBreakByComparing", "st1", "st2", "scaleTypePrecedence", "_a", "scaleTypeWithExplicitIndex", "resolve", "child", "keys", "defaultScaleResolve", "explicitScaleType", "childScaleType", "scaleCompatible", "mergeValuesWithExplicit", "name", "typeWithExplicit", "childScale", "NameMap", "oldName", "newName", "name", "isUnitModel", "model", "isFacetModel", "isConcatModel", "isLayerModel", "Model", "spec", "type", "parent", "parentGivenName", "config", "resolve", "view", "_a", "_b", "mark", "_c", "replaceExprRef", "isText", "normalizeTransform", "extractCompositionLayout", "isFacetSpec", "Split", "__spreadValues", "duplicate", "parseScales", "parseProjection", "parseLegend", "_", "baseView", "__objRest", "e", "property", "keys", "value", "signalOrValueRef", "isTopLevel", "encodeEntry", "isEmpty", "spacing", "layout", "component", "titleBand", "assembleLayoutTitleBand", "layoutHeaders", "headerMarks", "channel", "FACET_CHANNELS", "assembleTitleGroup", "HEADER_CHANNELS", "assembleHeaderGroups", "assembleAxes", "assembleLegends", "assembleProjections", "_d", "encoding", "titleNoEncoding", "title", "extractTitleConfig", "contains", "signals", "group", "scales", "assembleScales", "axes", "legends", "text", "varName", "DataSourceType", "fullName", "refCounts", "layoutSizeType", "sizeType", "getSizeTypeFromLayoutSizeType", "getPositionScaleChannel", "scaleComponent", "range", "hasDiscreteDomain", "isVgRangeStep", "scaleName", "domain", "assembleDomain", "field", "getFieldFromDomain", "fieldRef", "vgField", "sizeExpr", "warn", "message_exports", "node", "oldSignalName", "originalScaleName", "parse", "isChannel", "isScaleChannel", "localScaleComponent", "variableName", "origName", "sel", "a", "ModelWithField", "opt", "fieldDef", "f", "init", "reduce", "acc", "cd", "c", "getFieldDef", "t", "forEach", "DensityTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "_a", "_b", "_c", "specifiedAs", "hash", "density", "rest", "__objRest", "result", "__spreadValues", "ExtentTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "hash", "extent", "param", "FilterInvalidNode", "DataFlowNode", "__spreadValues", "parent", "filter", "model", "config", "mark", "markDef", "getMarkPropOrConfig", "aggregator", "fieldDef", "channel", "scaleComponent", "isScaleChannel", "scaleType", "hasContinuousDomain", "isPathMark", "keys", "hash", "filters", "vegaFilters", "field", "ref", "vgField", "FlattenTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "flatten", "as", "f", "i", "_a", "hash", "fields", "FoldTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "_a", "_b", "_c", "specifiedAs", "hash", "fold", "as", "GeoJSONNode", "DataFlowNode", "duplicate", "parent", "model", "geoJsonCounter", "coordinates", "LONGITUDE", "LATITUDE", "LONGITUDE2", "LATITUDE2", "pair", "channel", "def", "getFieldOrDatumDef", "isFieldDef", "isDatumDef", "isValueDef", "SHAPE", "fieldDef", "GEOJSON", "fields", "geojson", "signal", "_a", "isString", "hash", "__spreadProps", "__spreadValues", "GeoPointNode", "DataFlowNode", "duplicate", "parent", "projection", "fields", "as", "model", "coordinates", "LONGITUDE", "LATITUDE", "LONGITUDE2", "LATITUDE2", "pair", "channel", "def", "getFieldOrDatumDef", "isFieldDef", "isDatumDef", "isValueDef", "suffix", "isString", "hash", "ImputeNode", "DataFlowNode", "duplicate", "parent", "transform", "_a", "keyvals", "start", "stop", "step", "imputeTransform", "model", "encoding", "xDef", "yDef", "isFieldDef", "imputedChannel", "keyChannel", "method", "value", "frame", "groupbyFields", "pathGroupingFields", "__spreadValues", "hash", "impute", "key", "groupby", "__spreadProps", "isImputeSequence", "deriveNewField", "replaceOriginal", "LoessTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "_a", "_b", "_c", "specifiedAs", "hash", "loess", "on", "rest", "__objRest", "__spreadValues", "LookupNode", "DataFlowNode", "duplicate", "parent", "transform", "secondary", "model", "counter", "sources", "from", "fromOutputNode", "isLookupData", "fromSource", "findSource", "SourceNode", "fromOutputName", "OutputNode", "DataSourceType", "isLookupSelection", "selName", "__spreadValues", "selCmpt", "varName", "e", "message_exports", "array", "hash", "foreign", "asName", "isString", "warn", "QuantileTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "_a", "_b", "_c", "specifiedAs", "hash", "quantile", "rest", "__objRest", "__spreadValues", "RegressionTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "_a", "_b", "_c", "specifiedAs", "hash", "regression", "on", "rest", "__objRest", "__spreadValues", "PivotTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "fields", "_a", "unique", "d", "hash", "pivot", "value", "groupby", "limit", "op", "__spreadValues", "SampleTransformNode", "DataFlowNode", "duplicate", "parent", "transform", "hash", "makeWalkTree", "data", "datasetIndex", "walkTree", "node", "dataSource", "_a", "SourceNode", "isUrlData", "ParseNode", "__spreadProps", "__spreadValues", "FacetNode", "GraticuleNode", "SequenceNode", "FilterInvalidNode", "FilterNode", "CalculateNode", "GeoPointNode", "AggregateNode", "LookupNode", "WindowTransformNode", "JoinAggregateTransformNode", "FoldTransformNode", "FlattenTransformNode", "DensityTransformNode", "LoessTransformNode", "QuantileTransformNode", "RegressionTransformNode", "IdentifierNode", "SampleTransformNode", "PivotTransformNode", "ExtentTransformNode", "BinNode", "TimeUnitNode", "ImputeNode", "StackNode", "GeoJSONNode", "OutputNode", "source", "child", "assembleFacetData", "root", "assembleRootData", "dataComponent", "datasets", "_b", "sourceIndex", "newData", "d", "whereTo", "i", "t", "getHeaderType", "orient", "isSignalRef", "parseFacetHeaders", "model", "channel", "FACET_CHANNELS", "parseFacetHeader", "mergeChildAxis", "_a", "facet", "config", "child", "component", "fieldDef", "titleConfig", "getHeaderProperty", "title", "isArray", "labelOrient", "labels", "getFirstDefined", "headerType", "contains", "makeHeaderComponent", "sizeType", "layoutHeaders", "resolve", "parseGuideResolve", "headerChannel", "layoutHeader", "axisComponent", "mainAxis", "assembleAxis", "parseLayerLayoutSize", "model", "parseChildrenLayoutSize", "parseNonUnitLayoutSizeForChannel", "parseConcatLayoutSize", "widthType", "heightType", "child", "layoutSizeType", "_a", "sizeType", "getSizeTypeFromLayoutSizeType", "channel", "getPositionScaleChannel", "resolve", "layoutSizeCmpt", "mergedSize", "childSize", "scaleResolve", "defaultScaleResolve", "mergeValuesWithExplicit", "parseUnitLayoutSize", "size", "component", "POSITION_SCALE_CHANNELS", "getSizeChannel", "specifiedSize", "isStep", "defaultSize", "defaultUnitSize", "config", "scaleComponent", "scaleType", "range", "hasDiscreteDomain", "getViewConfigDiscreteSize", "isVgRangeStep", "getViewConfigContinuousSize", "facetSortFieldName", "fieldDef", "sort", "opt", "vgField", "__spreadValues", "FacetModel", "ModelWithField", "spec", "parent", "parentGivenName", "config", "buildModel", "facet", "isFacetMapping", "channels", "keys", "normalizedFacet", "channel", "ROW", "COLUMN", "warn", "message_exports", "facetFieldDef", "initFieldDef", "replaceExprRef", "parseData", "parseChildrenLayoutSize", "parseFacetHeaders", "signals", "data", "_a", "_b", "_c", "layoutMixins", "FACET_CHANNELS", "headerType", "HEADER_TYPES", "layoutHeaderComponent", "headerComponent", "titleOrient", "getHeaderProperty", "headerChannel", "getHeaderChannel", "sizeType", "bandType", "column", "row", "columns", "align", "__spreadProps", "fields", "ops", "as", "field", "POSITION_SCALE_CHANNELS", "childScaleComponent", "type", "range", "hasDiscreteDomain", "isVgRangeStep", "domain", "assembleDomain", "getFieldFromDomain", "name", "groupby", "bin", "isBinning", "isSortField", "op", "DEFAULT_SORT_OP", "outputName", "isArray", "sortArrayIndexField", "cross", "assembleLabelTitle", "ORTHOGONAL_ORIENT", "HEADER_CHANNELS", "labelOrient", "child", "facetRoot", "assembleFacetData", "encodeEntry", "title", "style", "c", "assembleFacetSignals", "makeJoinAggregateFromFacet", "parent", "facet", "row", "column", "newParent", "fieldDef", "isSortField", "field", "op", "DEFAULT_SORT_OP", "JoinAggregateTransformNode", "facetSortFieldName", "vgField", "findSource", "data", "sources", "_a", "_b", "_c", "_d", "other", "otherData", "formatMesh", "otherFeature", "formatFeature", "otherMesh", "isInlineData", "deepEqual", "isUrlData", "isNamedData", "parseRoot", "model", "source", "SourceNode", "existingSource", "isGenerator", "mergeDeep", "parseTransformArray", "head", "ancestorParse", "lookupCounter", "t", "derivedType", "transformNode", "isCalculate", "CalculateNode", "isFilter", "implicit", "getImplicitFromFilterTransform", "ParseNode", "FilterNode", "isBin", "BinNode", "isTimeUnit", "TimeUnitNode", "isAggregate", "AggregateNode", "requiresSelectionId", "IdentifierNode", "isLookup", "LookupNode", "isWindow", "WindowTransformNode", "isJoinAggregate", "JoinAggregateTransformNode", "isStack", "StackNode", "isFold", "FoldTransformNode", "isExtent", "ExtentTransformNode", "isFlatten", "FlattenTransformNode", "isPivot", "PivotTransformNode", "isSample", "SampleTransformNode", "isImpute", "ImputeNode", "isDensity", "DensityTransformNode", "isQuantile", "QuantileTransformNode", "isRegression", "RegressionTransformNode", "isLoess", "LoessTransformNode", "warn", "message_exports", "field", "parseData", "_e", "_f", "_g", "_h", "_i", "_j", "outputNodes", "outputNodeRefCounts", "AncestorParse", "isSequenceGenerator", "SequenceNode", "isGraticuleGenerator", "GraticuleNode", "parentIsLayer", "isLayerModel", "isUnitModel", "isFacetModel", "implicitSelection", "getImplicitFromSelection", "implicitEncoding", "getImplicitFromEncoding", "__spreadValues", "GeoJSONNode", "GeoPointNode", "rawName", "DataSourceType", "raw", "OutputNode", "agg", "FilterInvalidNode", "mainName", "main", "materializeSelections", "facetRoot", "facetName", "makeJoinAggregateFromFacet", "FacetNode", "__spreadProps", "ConcatModel", "Model", "spec", "parent", "parentGivenName", "config", "_a", "_b", "_c", "_d", "warn", "message_exports", "child", "i", "buildModel", "parseData", "key", "keys", "isVConcatSpec", "isHConcatSpec", "parseConcatLayoutSize", "signals", "sg", "layoutSignals", "assembleLayoutSignals", "data", "db", "title", "style", "encodeEntry", "__spreadValues", "columns", "__spreadProps", "isFalseOrNull", "v", "AXIS_COMPONENT_PROPERTIES_INDEX", "__spreadProps", "__spreadValues", "COMMON_AXIS_PROPERTIES_INDEX", "AXIS_COMPONENT_PROPERTIES", "keys", "AxisComponent", "Split", "explicit", "implicit", "mainExtracted", "duplicate", "part", "isSignalRef", "labels", "model", "channel", "specifiedLabelsSpec", "_a", "encoding", "config", "fieldOrDatumDef", "getFieldOrDatumDef", "getSecondaryRangeChannel", "axis", "format", "formatType", "isCustomFormatType", "__spreadValues", "formatCustomType", "channelDefType", "isPositionFieldOrDatumDef", "isFieldDef", "parseUnitAxes", "model", "POSITION_SCALE_CHANNELS", "axis", "channel", "parseAxis", "OPPOSITE_ORIENT", "parseLayerAxes", "_a", "axes", "resolve", "axisCount", "child", "keys", "parseGuideResolve", "mergeAxisComponents", "axisComponent", "orient", "explicit", "isSignalRef", "oppositeOrient", "index", "axisCmpt", "mergedAxisCmpts", "childAxisCmpts", "length", "i", "merged", "mergedOrient", "childOrient", "mergeAxisComponent", "prop", "AXIS_COMPONENT_PROPERTIES", "mergedValueWithExplicit", "mergeValuesWithExplicit", "v1", "v2", "mergeTitleComponent", "getFirstDefined", "defaultTieBreaker", "isExplicit", "value", "property", "normalizeAngle", "getFieldDefTitle", "propsToAlwaysIncludeConfig", "_b", "_c", "AxisComponent", "fieldOrDatumDef", "getFieldOrDatumDef", "mark", "config", "defaultOrient", "scaleType", "axisConfigs", "getAxisConfigs", "disable", "getAxisConfig", "labelAngle", "getLabelAngle", "formatType", "guideFormatType", "format", "guideFormat", "ruleParams", "axisRules", "isAxisProperty", "hasValue", "configValue", "configFrom", "hasConfigValue", "isConditionalAxisValue", "axisEncoding", "axisEncode", "AXIS_PARTS", "e", "part", "axisEncodingPart", "guideEncodeEntry", "labels", "isEmpty", "initLayoutSize", "encoding", "size", "channel", "POSITION_SCALE_CHANNELS", "sizeType", "getSizeChannel", "isStep", "isContinuousFieldOrDatumDef", "warn", "message_exports", "arc", "model", "__spreadValues", "baseEncodeEntry", "pointPosition", "rectPosition", "area", "model", "__spreadValues", "baseEncodeEntry", "pointOrRangePosition", "defined", "bar", "model", "__spreadValues", "baseEncodeEntry", "rectPosition", "geoshape", "model", "__spreadValues", "baseEncodeEntry", "encoding", "shapeDef", "isFieldDef", "GEOJSON", "vgField", "image", "model", "__spreadValues", "baseEncodeEntry", "rectPosition", "text", "line", "model", "__spreadValues", "baseEncodeEntry", "pointPosition", "nonPosition", "defined", "trail", "encodeEntry", "model", "fixedShape", "config", "__spreadValues", "baseEncodeEntry", "pointPosition", "nonPosition", "shapeMixins", "point", "circle", "square", "rect", "model", "__spreadValues", "baseEncodeEntry", "rectPosition", "rule", "model", "markDef", "orient", "__spreadValues", "baseEncodeEntry", "pointOrRangePosition", "nonPosition", "text", "model", "config", "encoding", "__spreadValues", "baseEncodeEntry", "pointPosition", "nonPosition", "valueIfDefined", "align", "baseline", "markDef", "getMarkPropOrConfig", "tick", "model", "config", "markDef", "orient", "vgSizeChannel", "vgThicknessChannel", "__spreadProps", "__spreadValues", "baseEncodeEntry", "pointPosition", "nonPosition", "defaultSize", "signalOrValueRef", "getMarkPropOrConfig", "_a", "scale", "markPropOrConfig", "scaleRange", "isVgRangeStep", "isNumber", "getViewConfigDiscreteStep", "markCompiler", "arc", "area", "bar", "circle", "geoshape", "image", "line", "point", "rect", "rule", "square", "text", "tick", "trail", "parseMarkGroups", "model", "contains", "LINE", "AREA", "TRAIL", "details", "pathGroupingFields", "getPathGroups", "BAR", "hasCornerRadius", "VG_CORNERRADIUS_CHANNELS", "prop", "getMarkPropOrConfig", "getGroupsForStackedBarWithCornerRadius", "getMarkGroup", "FACETED_PATH_PREFIX", "DataSourceType", "STACK_GROUP_PREFIX", "_a", "mark", "fieldScale", "stackField", "opt", "stackFieldGroup", "func", "expr", "vgFieldMinMax", "field", "groupUpdate", "innerGroupUpdate", "__spreadProps", "__spreadValues", "pick", "omit", "key", "configValue", "getMarkConfig", "signalOrValueRef", "groupby", "groupbyChannel", "groupByField", "vgField", "encode", "getSort", "encoding", "stack", "markDef", "config", "order", "isArray", "isValueDef", "isNullOrFalse", "isFieldDef", "sortParams", "isPathMark", "dimensionChannel", "dimensionChannelDef", "s", "isSortField", "isAggregate", "isSortByEncoding", "fieldDefToSort", "clip", "getFirstDefined", "scaleClip", "projectionClip", "style", "getStyles", "sort", "interactive", "interactiveFlag", "aria", "postEncodingTransform", "xScale", "yScale", "projection", "unitCount", "keys", "parentCount", "parent", "UnitModel", "ModelWithField", "spec", "parent", "parentGivenName", "parentGivenSize", "config", "_a", "isFrameMixins", "markDef", "isMarkDef", "__spreadValues", "mark", "defaultFilled", "isGraticuleGenerator", "encoding", "initEncoding", "initMarkdef", "initLayoutSize", "stack", "p", "isSelectionParameter", "isGeoShapeMark", "GEOSHAPE", "hasGeoPosition", "GEOPOSITION_CHANNELS", "channel", "isFieldOrDatumDef", "scale", "SCALE_CHANNELS", "scales", "fieldOrDatumDef", "getFieldOrDatumDef", "domain", "range", "scaleInternal", "replaceExprRef", "isArray", "signalRefOrValue", "POSITION_SCALE_CHANNELS", "_axis", "channelDef", "X", "Y", "axisSpec", "axis", "props", "keys", "axisInternal", "prop", "val", "isConditionalAxisValue", "signalOrValueRefWithCondition", "NONPOSITION_SCALE_CHANNELS", "_legend", "supportLegend", "legend", "parseData", "parseUnitLayoutSize", "parseUnitSelection", "parseMarkGroups", "parseUnitAxes", "signals", "assembleTopLevelSignals", "assembleAxisSignals", "assembleUnitSelectionSignals", "data", "assembleUnitSelectionData", "assembleLayoutSignals", "marks", "isLayerModel", "assembleUnitSelectionMarks", "style", "channelHasField", "getFieldDef", "fieldDef", "isTypedFieldDef", "LayerModel", "Model", "spec", "parent", "parentGivenName", "parentGivenSize", "config", "layoutSize", "__spreadValues", "layer", "i", "isLayerSpec", "isUnitSpec", "UnitModel", "message_exports", "parseData", "child", "parseLayerLayoutSize", "key", "keys", "parseLayerAxes", "signals", "sg", "assembleAxisSignals", "assembleLayoutSignals", "data", "db", "uniqueStyles", "style", "array", "styles", "title", "assembleLayerSelectionMarks", "legends", "assembleLegends", "buildModel", "spec", "parent", "parentGivenName", "unitSize", "config", "isFacetSpec", "FacetModel", "isLayerSpec", "LayerModel", "isUnitSpec", "UnitModel", "isAnyConcatSpec", "ConcatModel", "message_exports", "compile", "inputSpec", "opt", "set", "setTitleFormatter", "config", "initConfig", "mergeConfig", "spec", "normalize", "model", "buildModel", "optimizeDataflow", "assembleTopLevelModel", "getTopLevelProperties", "reset", "resetTitleFormatter", "autosize", "width", "height", "isString", "isFitType", "warn", "message_exports", "sizeType", "getPositionScaleChannel", "inverseSizeType", "getFitType", "__spreadValues", "keys", "extractTopLevelProperties", "topLevelProperties", "datasets", "usermeta", "vgConfig", "stripAndRedirectConfig", "data", "assembleRootData", "projections", "title", "style", "encodeEntry", "layoutSignals", "signal", "_a", "params", "otherTopLevelProps", "__objRest", "__spreadProps", "assembleParameterSignals", "version", "package_default", "url", "library", "version", "exec", "slice", "vega_themes_module_exports", "__export", "carbong10", "carbong100", "carbong90", "carbonwhite", "darkTheme", "excelTheme", "fiveThirtyEightTheme", "ggplot2Theme", "googlechartsTheme", "latimesTheme", "powerbiTheme", "quartzTheme", "urbanInstituteTheme", "version", "voxTheme", "name", "version$1", "description", "keywords", "license", "author", "contributors", "main", "module", "unpkg", "jsdelivr", "types", "repository", "files", "scripts", "devDependencies", "peerDependencies", "dependencies", "pkg", "lightColor", "medColor", "markColor$7", "markColor$6", "axisColor$2", "guideLabelColor", "guideTitleColor", "backgroundColor$2", "blackTitle", "markColor$5", "headlineFontSize", "headlineFontWeight", "labelFont$1", "labelFontSize", "labelFontWeight", "markColor$4", "titleFont", "titleFontWeight", "titleFontSize$1", "colorSchemes$1", "markColor$3", "axisColor$1", "markColor$2", "markColor$1", "axisColor", "backgroundColor$1", "font", "labelFont", "sourceFont", "gridColor$1", "titleFontSize", "colorSchemes", "markColor", "gridColor", "defaultFont$1", "ptToPx", "value", "fontSmallPx", "legendFontPx", "fontLargePx", "fontStandard", "fontTitle", "firstLevelElementColor", "secondLevelElementColor", "backgroundColor", "backgroundSecondaryColor", "paletteColor1", "paletteColor2", "paletteColor3", "paletteColor4", "paletteColor5", "paletteColor6", "paletteColor7", "paletteColor8", "divergentColorMax", "divergentColorMin", "divergentPalette", "ordinalPalette", "defaultFont", "fontWeight", "darkCategories", "lightCategories", "genCarbonConfig", "type", "background", "viewbg", "textColor", "category", "formatValue", "value", "valueToHtml", "maxDepth", "isArray", "map", "v", "isString", "stringify", "join", "isObject", "content", "title", "image", "rest", "keys", "Object", "length", "key", "val", "undefined", "replacer", "stack", "pos", "indexOf", "push", "obj", "JSON", "defaultStyle", "EL_ID", "DEFAULT_OPTIONS", "offsetX", "offsetY", "id", "styleId", "theme", "disableDefaultStyle", "sanitize", "escapeHTML", "formatTooltip", "String", "replace", "createDefaultStyle", "test", "Error", "toString", "calculatePosition", "event", "tooltipBox", "x", "clientX", "width", "window", "innerWidth", "y", "clientY", "height", "innerHeight", "Handler", "constructor", "options", "__spreadValues", "elementId", "el", "call", "tooltipHandler", "bind", "document", "getElementById", "style", "createElement", "setAttribute", "innerHTML", "head", "childNodes", "insertBefore", "appendChild", "handler", "item", "classList", "add", "fullscreenElement", "body", "remove", "getBoundingClientRect", "top", "left", "version", "pkg", "_typeof", "obj", "Symbol", "iterator", "constructor", "prototype", "_toPrimitive", "input", "hint", "prim", "toPrimitive", "undefined", "res", "call", "TypeError", "String", "Number", "_toPropertyKey", "arg", "key", "_defineProperty", "value", "toPropertyKey", "Object", "defineProperty", "enumerable", "configurable", "writable", "Yallist", "walker", "head", "next", "yallist", "Node", "create", "list", "self", "tail", "length", "forEach", "item", "push", "arguments", "i", "l", "removeNode", "node", "Error", "prev", "unshiftNode", "pushNode", "unshift", "pop", "shift", "fn", "thisp", "forEachReverse", "get", "n", "getReverse", "map", "mapReverse", "reduce", "initial", "acc", "reduceReverse", "toArray", "arr", "Array", "toArrayReverse", "slice", "from", "to", "ret", "sliceReverse", "splice", "start", "deleteCount", "nodes", "insert", "reverse", "p", "inserted", "require$$0", "er", "MAX", "LENGTH", "LENGTH_CALCULATOR", "ALLOW_STALE", "MAX_AGE", "DISPOSE", "NO_DISPOSE_ON_SET", "LRU_LIST", "CACHE", "UPDATE_AGE_ON_GET", "naiveLength", "LRUCache", "options", "max", "Infinity", "lc", "stale", "maxAge", "dispose", "noDisposeOnSet", "updateAgeOnGet", "reset", "mL", "trim", "allowStale", "mA", "lengthCalculator", "lC", "hit", "itemCount", "rforEach", "forEachStep", "keys", "k", "values", "Map", "dump", "isStale", "v", "e", "now", "filter", "h", "dumpLru", "set", "Date", "len", "has", "del", "Entry", "peek", "load", "expiresAt", "prune", "doUse", "diff", "delete", "lruCache", "looseOption", "freeze", "loose", "emptyOpts", "parseOptions", "parseOptions_1", "SEMVER_SPEC_VERSION", "MAX_LENGTH", "MAX_SAFE_INTEGER", "MAX_SAFE_COMPONENT_LENGTH", "MAX_SAFE_BUILD_LENGTH", "RELEASE_TYPES", "constants", "FLAG_INCLUDE_PRERELEASE", "FLAG_LOOSE", "debug", "process", "env", "NODE_DEBUG", "test", "args", "console", "error", "debug_1", "require$$1", "exports", "module", "re", "safeRe", "src", "t", "R", "LETTERDASHNUMBER", "safeRegexReplacements", "makeSafeRegex", "token", "split", "join", "createToken", "name", "isGlobal", "safe", "index", "RegExp", "NUMERICIDENTIFIER", "NUMERICIDENTIFIERLOOSE", "NONNUMERICIDENTIFIER", "PRERELEASEIDENTIFIER", "PRERELEASEIDENTIFIERLOOSE", "BUILDIDENTIFIER", "MAINVERSION", "PRERELEASE", "BUILD", "FULLPLAIN", "MAINVERSIONLOOSE", "PRERELEASELOOSE", "LOOSEPLAIN", "XRANGEIDENTIFIER", "XRANGEIDENTIFIERLOOSE", "GTLT", "XRANGEPLAIN", "XRANGEPLAINLOOSE", "COERCE", "LONETILDE", "tildeTrimReplace", "LONECARET", "caretTrimReplace", "comparatorTrimReplace", "numeric", "compareIdentifiers", "a", "b", "anum", "bnum", "rcompareIdentifiers", "identifiers", "require$$2", "require$$3", "require$$4", "SemVer", "version", "includePrerelease", "m", "match", "LOOSE", "FULL", "raw", "major", "minor", "patch", "prerelease", "id", "num", "build", "format", "toString", "compare", "other", "compareMain", "comparePre", "compareBuild", "inc", "release", "identifier", "identifierBase", "base", "isNaN", "semver", "compare_1", "eq", "eq_1", "neq", "neq_1", "gt", "gt_1", "gte", "gte_1", "lt", "lt_1", "lte", "lte_1", "require$$5", "cmp", "op", "cmp_1", "ANY", "Comparator", "comp", "parse", "operator", "r", "COMPARATORLOOSE", "COMPARATOR", "intersects", "Range", "startsWith", "includes", "comparator", "range", "parseRange", "c", "first", "isNullSet", "isAny", "comps", "memoKey", "cached", "cache", "hr", "HYPHENRANGELOOSE", "HYPHENRANGE", "replace", "hyphenReplace", "COMPARATORTRIM", "TILDETRIM", "CARETTRIM", "rangeList", "parseComparator", "replaceGTE0", "rangeMap", "comparators", "size", "result", "some", "thisComparators", "isSatisfiable", "rangeComparators", "every", "thisComparator", "rangeComparator", "testSet", "LRU", "require$$6", "remainingComparators", "testComparator", "otherComparator", "replaceCarets", "replaceTildes", "replaceXRanges", "replaceStars", "isX", "toLowerCase", "replaceTilde", "TILDELOOSE", "TILDE", "_", "M", "pr", "replaceCaret", "CARETLOOSE", "CARET", "z", "replaceXRange", "XRANGELOOSE", "XRANGE", "gtlt", "xM", "xm", "xp", "anyX", "STAR", "GTE0PRE", "GTE0", "incPr", "$0", "fM", "fm", "fp", "fpr", "fb", "tM", "tm", "tp", "tpr", "tb", "allowed", "satisfies", "satisfies_1", "post", "window", "url", "data", "editor", "open", "wait", "step", "origin", "URL", "count", "listen", "evt", "source", "removeEventListener", "addEventListener", "send", "postMessage", "setTimeout", "embedStyle", "mergeDeep", "dest", "s", "deepMerge_", "property", "writeConfig", "pkg", "vega", "vegaImport", "vegaLite", "vegaLiteImport", "w", "vl", "compile", "DEFAULT_ACTIONS", "export", "svg", "png", "compiled", "I18N", "CLICK_TO_VIEW_ACTIONS", "COMPILED_ACTION", "EDITOR_ACTION", "PNG_ACTION", "SOURCE_ACTION", "SVG_ACTION", "NAMES", "VERSION", "PREPROCESSOR", "vgSpec", "vega-lite", "vlSpec", "config", "spec", "SVG_CIRCLES", "CHART_WRAPPER_CLASS", "isTooltipHandler", "viewSource", "sourceHeader", "sourceFooter", "mode", "header", "footer", "win", "document", "write", "title", "guessMode", "providedMode", "$schema", "parsed", "schemaParser", "library", "warn", "isLoader", "o", "createLoader", "opts", "loader", "embedOptionsFromUsermeta", "parsedSpec", "usermeta", "embedOptions", "isString", "defaultStyle", "embed", "el", "__async", "JSON", "loadedEmbedOptions", "usermetaLoader", "usermetaOpts", "loadOpts", "parsedOpts", "mergedOpts", "_objectSpread", "mergeConfig", "_embed", "opt", "getRoot", "possibleRoot", "getRootNode", "ShadowRoot", "root", "rootContainer", "body", "theme", "themes", "actions", "isBoolean", "i18n", "renderer", "logLevel", "Warn", "downloadFileName", "element", "querySelector", "ID", "getElementById", "style", "createElement", "innerHTML", "appendChild", "classList", "add", "container", "chartWrapper", "Function", "applyPatch", "newDocument", "formatLocale", "timeFormatLocale", "expressionFunctions", "expressionFunction", "ast", "runtime", "view", "viewClass", "View", "expr", "expressionInterpreter", "addSignalListener", "autosize", "type", "remove", "tooltip", "handler", "Handler", "hover", "hoverSet", "updateSet", "width", "height", "padding", "initialize", "bind", "runAsync", "documentClickHandler", "wrapper", "forceActionsMenu", "details", "append", "summary", "ev", "contains", "target", "removeAttribute", "ctrl", "ext", "i18nExportAction", "toUpperCase", "exportLink", "scaleFactor", "isObject", "text", "href", "download", "preventDefault", "toImageURL", "viewSourceLink", "stringify", "compileLink", "editorUrl", "editorLink", "finalize", "sparkMd5", "module", "exports", "factory", "undefined$1", "hex_chr", "md5cycle", "x", "k", "a", "b", "c", "d", "md5blk", "s", "md5blks", "i", "md5blk_array", "md51", "n", "state", "length", "tail", "tmp", "lo", "hi", "md51_array", "rhex", "j", "hex", "clamp", "val", "from", "to", "begin", "end", "num", "target", "targetArray", "sourceArray", "toUtf8", "str", "utf8Str2ArrayBuffer", "returnUInt8Array", "buff", "arr", "arrayBuffer2Utf8Str", "concatenateArrayBuffers", "first", "second", "result", "hexToBinaryString", "bytes", "SparkMD5", "contents", "raw", "ret", "content", "hash", "fileSlice", "FileChecksum", "file", "callback", "event", "binaryDigest", "base64digest", "start", "getMetaValue", "name", "element", "findElement", "findElements", "root", "selector", "elements", "toArray", "dispatchEvent", "type", "eventInit", "disabled", "bubbles", "cancelable", "detail", "value", "BlobRecord", "checksum", "url", "customHeaders", "headerKey", "csrfToken", "responseType", "response", "direct_upload", "key", "BlobUpload", "blob", "headers", "status", "id", "DirectUpload", "delegate", "error", "notify", "upload", "object", "methodName", "messages", "DirectUploadController", "input", "hiddenInput", "attributes", "progress", "xhr", "inputSelector", "DirectUploadsController", "form", "controllers", "startNextController", "controller", "processingAttribute", "submitButtonsByForm", "started", "didClick", "didSubmitForm", "didSubmitRemoteElement", "button", "handleFormSubmissionEvent", "inputs", "disable", "enable", "submitForm", "autostart", "index", "StreamActions", "LocalTime", "setupConfirmations", "embed", "start"]
}